Usermode/AxWin4 - Server implementation runnable
[tpg/acess2.git] / Usermode / Applications / login_src / main.c
index e151ff9..23d9329 100644 (file)
@@ -9,8 +9,8 @@
 #define BUFLEN 1024
 
 // === PROTOTYPES ===
-char   *GetUsername();
-char   *GetPassword();
+char   *GetUsername(void);
+char   *GetPassword(void);
 
 // === CODE ===
 int main(int argc, char *argv[])
@@ -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);
 }
 
@@ -122,10 +130,6 @@ char *_GetString(int bEcho)
  */
 char *GetUsername()
 {
-       char    ret[BUFLEN] = {0};
-        int    pos = 0;
-       char    ch;
-       
        // Prompt the user
        printf("Username: ");
        fflush(stdout);

UCC git Repository :: git.ucc.asn.au