|
|
1.1 root 1: #include "ps.h"
2: #include <stdio.h>
3: #include <ndir.h>
4:
5: char *
6: gettty(dev, node)
7: {
8: register char *nm;
9: if (dev == NODEV) { /* cheap hack: assume it's a pipe */
10: static char buf[8];
11: sprintf(buf, "p%4.4x", node&0xffff);
12: return buf;
13: }
14: nm = lookdir(node);
15: if (nm == 0)
16: return "?";
17: if (nm[0] == 't' && nm[1] == 't' && nm[2] == 'y')
18: nm += 3;
19: return nm;
20: }
21:
22: initttys()
23: {
24: char dirname[100]; /* arbitrary size */
25: List *lp;
26: FILE *fp;
27:
28: if ((fp = fopen("/lib/ttydevs", "r")) == NULL) {
29: devlist = getdir("/dev", devlist);
30: return;
31: }
32: while (fgets(dirname, sizeof(dirname), fp)) {
33: dirname[strlen(dirname)-1] = 0;
34: if ((lp = getdir(dirname, devlist)) != NULL)
35: devlist = lp;
36: }
37: fclose(fp);
38: }
39:
40: char *
41: lookdir(node)
42: register node;
43: {
44: register List *lp;
45: register Entry *ep;
46: if (node)
47: for (lp = devlist; lp; lp = lp->next)
48: for (ep = lp->begin; ep; ep = ep->next)
49: if (ep->e_val == node)
50: return ep->e_name;
51: return 0;
52: }
53:
54: List *
55: getdir(dirname, list)
56: char *dirname;
57: List *list;
58: {
59: register List *lp;
60: register Entry *ep;
61: register DIR *dirp;
62: register struct direct *dp;
63:
64: if((dirp = opendir(dirname)) == 0)
65: return 0;
66: if((lp = Malloc(List, 1)) == 0) {
67: closedir(dirp);
68: return 0;
69: }
70: lp->next = list;
71: lp->begin = 0;
72: lp->nentry = 0;
73: for(dp = readdir(dirp); dp; dp = readdir(dirp)) {
74: if(dp->d_name[0] == '.') {
75: if(dp->d_name[1] == '\0')
76: continue;
77: if(dp->d_name[1] == '.' && dp->d_name[2] == '\0')
78: continue;
79: }
80: if((ep = Malloc(Entry, 1)) == 0)
81: break;
82: ep->next = lp->begin;
83: lp->begin = ep;
84: lp->nentry++;
85: ep->e_val = dp->d_ino;
86: strncpy(ep->e_name, dp->d_name, sizeof(ep->e_name));
87: }
88: closedir(dirp);
89: return lp;
90: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.