#define BUFLEN 1024
// === PROTOTYPES ===
-char *GetUsername();
-char *GetPassword();
+char *GetUsername(void);
+char *GetPassword(void);
// === CODE ===
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");
// 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;
mode.InputMode |= PTYIMODE_ECHO;
_SysIOCtl(0, PTY_IOCTL_SETMODE, &mode);
}
-
+
return strdup(ret);
}
*/
char *GetUsername()
{
- char ret[BUFLEN] = {0};
- int pos = 0;
- char ch;
-
// Prompt the user
printf("Username: ");
fflush(stdout);