Commit | Line | Data |
---|---|---|
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 | ||
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 | } |