Annotation of 43BSD/contrib/xns/morexnslib/auth/getXNSpass.c, revision 1.1.1.1

1.1       root        1: /* $Header: getXNSpass.c,v 2.0 85/11/21 07:22:25 jqj Exp $ */
                      2: /*
                      3:  * contains: getXNSpass
                      4:  * based on the standard library routine getpass(), it is modified
                      5:  * for XNS passwords, which may be of almost arbitrary length
                      6:  */
                      7: 
                      8: /* $Log:       getXNSpass.c,v $
                      9:  * Revision 2.0  85/11/21  07:22:25  jqj
                     10:  * 4.3BSD standard release
                     11:  * 
                     12:  * Revision 1.1  85/03/26  06:29:09  jqj
                     13:  * Initial revision
                     14:  * 
                     15:  * Revision 1.1  85/03/26  06:29:09  jqj
                     16:  * Initial revision
                     17:  * 
                     18:  */
                     19: 
                     20: /* @(#)getpass.c       4.3 (Berkeley) 5/16/84 */
                     21: #include <stdio.h>
                     22: #include <signal.h>
                     23: #include <sgtty.h>
                     24: #define PASSLEN 80
                     25: 
                     26: char *
                     27: getXNSpass(prompt)
                     28: char *prompt;
                     29: {
                     30:        struct sgttyb ttyb;
                     31:        int flags;
                     32:        register char *p;
                     33:        register c;
                     34:        FILE *fi;
                     35:        static char pbuf[PASSLEN+1];
                     36:        int (*signal())();
                     37:        int (*sig)();
                     38: 
                     39:        if ((fi = fdopen(open("/dev/tty", 2), "r")) == NULL)
                     40:                fi = stdin;
                     41:        else
                     42:                setbuf(fi, (char *)NULL);
                     43:        sig = signal(SIGINT, SIG_IGN);
                     44:        ioctl(fileno(fi), TIOCGETP, &ttyb);
                     45:        flags = ttyb.sg_flags;
                     46:        ttyb.sg_flags &= ~ECHO;
                     47:        ioctl(fileno(fi), TIOCSETP, &ttyb);
                     48:        fprintf(stderr, "%s", prompt); fflush(stderr);
                     49:        for (p=pbuf; (c = getc(fi))!='\n' && c!=EOF;) {
                     50:                if (p < &pbuf[PASSLEN])
                     51:                        *p++ = c;
                     52:        }
                     53:        *p = '\0';
                     54:        fprintf(stderr, "\n"); fflush(stderr);
                     55:        ttyb.sg_flags = flags;
                     56:        ioctl(fileno(fi), TIOCSETP, &ttyb);
                     57:        signal(SIGINT, sig);
                     58:        if (fi != stdin)
                     59:                fclose(fi);
                     60:        return(pbuf);
                     61: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.