|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.