BSD 4_1c_2 release
[unix-history] / usr / src / lib / libc / gen / ttyslot.c
CommitLineData
4b9ccde7 1/* @(#)ttyslot.c 4.1 (Berkeley) 12/21/80 */
9c8fc5ca
BJ
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
9char *ttyname();
10char *getttys();
11char *rindex();
12static char ttys[] = "/etc/ttys";
13
14#define NULL 0
15
16ttyslot()
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
41static char *
42getttys(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}