/* *! Change to support the new /etc/ttys format. *! getttys uses blank or tab as a line terminator *! WFJolitz 4/7/80 */ /* * Return the number of the slot in the utmp file * corresponding to the current user: try for file 0, 1, 2. * Definition is the line number in the /etc/ttys file. */ char *ttyname(); char *getttys(); char *rindex(); static char ttys[] = "/etc/ttys"; #define NULL 0 ttyslot() { register char *tp, *p; register s, tf; if ((tp=ttyname(0))==NULL && (tp=ttyname(1))==NULL && (tp=ttyname(2))==NULL) return(0); if ((p = rindex(tp, '/')) == NULL) p = tp; else p++; if ((tf=open(ttys, 0)) < 0) return(0); s = 0; while (tp = getttys(tf)) { s++; if (strcmp(p, tp)==0) { close(tf); return(s); } } close(tf); return(0); } static char * getttys(f) { static char line[32]; register char *lp; lp = line; for (;;) { if (read(f, lp, 1) != 1) return(NULL); if ( *lp == '\t' || *lp == ' ') { while (read(f, lp, 1) == 1 && *lp != '\n'); if(*lp != '\n') return(NULL); } if (*lp =='\n') { *lp = '\0'; return(line+2); } if (lp >= &line[32]) return(line+2); lp++; } }