Annotation of 42BSD/lib/libc/gen/ttyslot.c, revision 1.1.1.1

1.1       root        1: /* @(#)ttyslot.c       4.1 (Berkeley) 12/21/80 */
                      2: /*
                      3:  * Return the number of the slot in the utmp file
                      4:  * corresponding to the current user: try for file 0, 1, 2.
                      5:  * Definition is the line number in the /etc/ttys file.
                      6:  */
                      7: 
                      8: 
                      9: char   *ttyname();
                     10: char   *getttys();
                     11: char   *rindex();
                     12: static char    ttys[]  = "/etc/ttys";
                     13: 
                     14: #define        NULL    0
                     15: 
                     16: ttyslot()
                     17: {
                     18:        register char *tp, *p;
                     19:        register s, tf;
                     20: 
                     21:        if ((tp=ttyname(0))==NULL && (tp=ttyname(1))==NULL && (tp=ttyname(2))==NULL)
                     22:                return(0);
                     23:        if ((p = rindex(tp, '/')) == NULL)
                     24:                p = tp;
                     25:        else
                     26:                p++;
                     27:        if ((tf=open(ttys, 0)) < 0)
                     28:                return(0);
                     29:        s = 0;
                     30:        while (tp = getttys(tf)) {
                     31:                s++;
                     32:                if (strcmp(p, tp)==0) {
                     33:                        close(tf);
                     34:                        return(s);
                     35:                }
                     36:        }
                     37:        close(tf);
                     38:        return(0);
                     39: }
                     40: 
                     41: static char *
                     42: getttys(f)
                     43: {
                     44:        static char line[32];
                     45:        register char *lp;
                     46: 
                     47:        lp = line;
                     48:        for (;;) {
                     49:                if (read(f, lp, 1) != 1)
                     50:                        return(NULL);
                     51:                if (*lp =='\n') {
                     52:                        *lp = '\0';
                     53:                        return(line+2);
                     54:                }
                     55:                if (lp >= &line[32])
                     56:                        return(line+2);
                     57:                lp++;
                     58:        }
                     59: }

unix.superglobalmegacorp.com

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