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