home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / radi116c.zip / radius116c / src / radius / getpass.c < prev    next >
C/C++ Source or Header  |  1997-01-30  |  1KB  |  71 lines

  1. /* Get password function - - OS/2 specific */
  2.  
  3. #include <sys/types.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <signal.h>
  7. #include <stdlib.h>
  8. #include <time.h>
  9.  
  10. #define INCL_KBD
  11. #define INCL_NOPM          /* No Presentation manager files */
  12. #define INCL_BASE
  13. #include <os2.h>
  14.  
  15. #include <sys\stat.h>
  16. #include <crypt.h>
  17.  
  18. #define LF 10
  19. #define CR 13
  20. #define STDOUT 1
  21.  
  22. #define MAX_STRING_LEN 256
  23.  
  24. char *tn;
  25.  
  26.  
  27.  
  28. /* ---------------------------------------------------- */
  29. void readln(char *st,int maxnum, int echo)
  30. {
  31. char ch;
  32. int pos;
  33. KBDKEYINFO kbci;
  34.  
  35.   pos=0;
  36.   do {
  37.     KbdCharIn(&kbci, IO_WAIT, 0);
  38.     ch=kbci.chChar;
  39.     if ((ch < 128) && (ch >= 8)) {
  40.       switch (ch) {
  41.         case 8 : if (pos>0) {
  42.                   pos--;
  43.                   printf("%c %c",ch,ch);
  44.                   break;
  45.                 }
  46.         case 13 : st [pos]=0; break;
  47.         case 3  :
  48.         case 27 : st[0]=0; exit(1);
  49.         default : if (pos < maxnum) {
  50.                     st[pos++]=ch;
  51.                     if (echo)
  52.                       putchar(ch);
  53.                     else
  54.                       putchar('*');
  55.                   }
  56.       }
  57.     }
  58.   } while (ch != 13);
  59.   printf("\n");
  60. }
  61.  
  62.  
  63. char * getpass(const char * prompt) {
  64.   static char pw[40];
  65.   printf("%s", prompt);
  66.   readln(pw, sizeof(pw)-1, 0);
  67.   return (pw);
  68. }
  69.  
  70.  
  71.