|
|
1.1 root 1: #include "ps.h"
2:
3: char *
4: lookdir(node)
5: register node;
6: {
7: register Dirnode *np;
8: register struct direct *dp;
9: if (node)
10: for (np = devlist; np; np = np->next)
11: for (dp = np->begin; dp < np->end; dp++)
12: if (dp->d_ino == node)
13: return dp->d_name;
14: return 0;
15: }
16:
17: char *
18: gettty(dev, node)
19: {
20: register char *nm;
21: if (dev == 0xffff) {
22: static char buf[8];
23: sprintf(buf, "p%4.4x", node&0xffff);
24: return buf;
25: }
26: nm = lookdir(node);
27: if (nm == 0)
28: return "?";
29: if (nm[0] == 't' && nm[1] == 't' && nm[2] == 'y')
30: nm += 3;
31: return nm;
32: }
33:
34: Dirnode *
35: getdir(dirname, list)
36: char *dirname; Dirnode *list;
37: {
38: struct stat sbuf;
39: register fd, n;
40: register Dirnode *np; register struct direct *dp;
41:
42: if ((fd = open(dirname, 0)) < 0)
43: return 0;
44: if (fstat(fd, &sbuf) < 0 || (np = Malloc(Dirnode, 1)) == 0) {
45: close(fd); return 0;
46: }
47: n = sbuf.st_size/sizeof(struct direct);
48: if ((dp = Malloc(struct direct, n)) == 0) {
49: free(np); close(fd); return 0;
50: }
51: if (!Read(fd, dp, sbuf.st_size)) {
52: free(np); free(dp); close(fd); return 0;
53: }
54: np->next = list;
55: np->begin = dp;
56: np->end = dp + n;
57: close(fd);
58: return np;
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.