1: #include <stdio.h>
   2: #include <signal.h>
   3: #include <sgtty.h>
   4: 
   5: char *
   6: getpass(prompt)
   7: char *prompt;
   8: {
   9:     struct sgttyb ttyb;
  10:     int flags;
  11:     register char *p;
  12:     register c;
  13:     FILE *fi;
  14:     static char pbuf[9];
  15:     int (*signal())();
  16:     int (*sig)();
  17: 
  18:     if ((fi = fopen("/dev/tty", "r")) == NULL)
  19:         fi = stdin;
  20:     else
  21:         setbuf(fi, (char *)NULL);
  22:     sig = signal(SIGINT, SIG_IGN);
  23:     gtty(fileno(fi), &ttyb);
  24:     flags = ttyb.sg_flags;
  25:     ttyb.sg_flags &= ~ECHO;
  26:     stty(fileno(fi), &ttyb);
  27:     fprintf(stderr, prompt);
  28:     for (p=pbuf; (c = getc(fi))!='\n' && c!=EOF;) {
  29:         if (p < &pbuf[8])
  30:             *p++ = c;
  31:     }
  32:     *p = '\0';
  33:     fprintf(stderr, "\n");
  34:     ttyb.sg_flags = flags;
  35:     stty(fileno(fi), &ttyb);
  36:     signal(SIGINT, sig);
  37:     if (fi != stdin)
  38:         fclose(fi);
  39:     return(pbuf);
  40: }

Defined functions

Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 466
Valid CSS Valid XHTML 1.0 Strict