113571821Stholo #include <stdio.h> 213571821Stholo #include <string.h> 313571821Stholo #include "cvs.h" 4*461cc63eStholo #include "os2inc.h" 5c26070a5Stholo 6c26070a5Stholo /* Only define this if you're testing and want to compile this file 7c26070a5Stholo standalone. */ 8c26070a5Stholo /* #define DIAGNOSTIC */ 9c26070a5Stholo 10c26070a5Stholo /* Turn off keyboard echo. Does not check error returns. */ 11c26070a5Stholo static void EchoOff(void)12c26070a5StholoEchoOff (void) 13c26070a5Stholo { 14c26070a5Stholo KBDINFO KbdInfo; 15c26070a5Stholo 16c26070a5Stholo KbdGetStatus (&KbdInfo, 0); 17c26070a5Stholo KbdInfo.fsMask = (KbdInfo.fsMask & ~KEYBOARD_ECHO_ON) | KEYBOARD_ECHO_OFF; 18c26070a5Stholo KbdSetStatus (&KbdInfo, 0); 19c26070a5Stholo } 20c26070a5Stholo 21c26070a5Stholo /* Turn on keyboard echo. Does not check error returns. */ 22c26070a5Stholo static void EchoOn(void)23c26070a5StholoEchoOn( void ) 24c26070a5Stholo { 25c26070a5Stholo KBDINFO KbdInfo; 26c26070a5Stholo 27c26070a5Stholo KbdGetStatus (&KbdInfo, 0); 28c26070a5Stholo KbdInfo.fsMask = (KbdInfo.fsMask & ~KEYBOARD_ECHO_OFF) | KEYBOARD_ECHO_ON; 29c26070a5Stholo KbdSetStatus (&KbdInfo, 0); 30c26070a5Stholo } 31c26070a5Stholo 3213571821Stholo char * getpass(char * prompt)3313571821Sthologetpass (char *prompt) 3413571821Stholo { 35c26070a5Stholo static char Buf[80]; 36c26070a5Stholo STRINGINBUF StringInBuf; 3713571821Stholo 3813571821Stholo printf ("%s", prompt); 3913571821Stholo fflush (stdout); 4013571821Stholo 41c26070a5Stholo EchoOff (); 4213571821Stholo 43c26070a5Stholo StringInBuf.cb = sizeof (Buf) - 1; 44c26070a5Stholo StringInBuf.cchIn = 0; 45c26070a5Stholo KbdStringIn ((PSZ) Buf, &StringInBuf, IO_WAIT, 0); 46c26070a5Stholo Buf[StringInBuf.cchIn] = '\0'; 47c26070a5Stholo 48c26070a5Stholo EchoOn (); 49c26070a5Stholo 50c26070a5Stholo return Buf; 5113571821Stholo } 52c26070a5Stholo 53c26070a5Stholo 54c26070a5Stholo #ifdef DIAGNOSTIC main()55c26070a5Stholomain() 56c26070a5Stholo { 57c26070a5Stholo char *s; 58c26070a5Stholo s = getpass ("Input password (no echo): "); 59c26070a5Stholo printf ("String was \"%s\"\n", s); 60c26070a5Stholo fflush (stdout); 61c26070a5Stholo } 62c26070a5Stholo #endif /* DIAGNOSTIC */ 63c26070a5Stholo 64