X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Flogin_src%2Fmain.c;h=86b188420a5d27d82129b4a8d0d699c0b5696da5;hb=3efa0bc1d46a4bcda04763a89d54a6802e717231;hp=e151ff944b9ab053099f74de32031835e42f92b3;hpb=c62d9852a19f6a93ac2c5eaffa823d44b2ef256a;p=tpg%2Facess2.git diff --git a/Usermode/Applications/login_src/main.c b/Usermode/Applications/login_src/main.c index e151ff94..86b18842 100644 --- a/Usermode/Applications/login_src/main.c +++ b/Usermode/Applications/login_src/main.c @@ -29,9 +29,12 @@ int main(int argc, char *argv[]) for(;;) { sUsername = GetUsername(); - if(!sUsername) continue; + if(!sUsername || !sUsername[0]) continue; sPassword = GetPassword(); - if(!sPassword) continue; + if(!sPassword) { + free(sUsername); + continue; + } if( (uid = ValidateUser(sUsername, sPassword)) == -1 ) { printf("\nInvalid username or password\n"); @@ -61,6 +64,11 @@ int main(int argc, char *argv[]) // Wait for child to terminate _SysWaitTID(pid, &status); + + // Clear graphics mode + struct ptymode mode = {.InputMode = PTYIMODE_ECHO|PTYIMODE_CANON,.OutputMode=0}; + _SysIOCtl(0, PTY_IOCTL_SETMODE, &mode); + fprintf(stderr, "\x1b[R"); } return 0; @@ -113,7 +121,7 @@ char *_GetString(int bEcho) mode.InputMode |= PTYIMODE_ECHO; _SysIOCtl(0, PTY_IOCTL_SETMODE, &mode); } - + return strdup(ret); }