|
|
1.1 root 1: #include "ps.h"
2: #include <fstab.h>
3: #include <sys/inode.h>
4:
5: static List namelist;
6: static Entry *prev;
7:
8: char *
9: getfs(ip)
10: register struct inode *ip;
11: {
12: register Entry *ep;
13:
14: if (ip->i_fstyp) /* temp */
15: return 0;
16: if((ep = prev) && ep->e_val == ip->i_dev)
17: return ep->e_name;
18: for(ep = namelist.begin; ep; ep = ep->next) {
19: if(ep->e_val == ip->i_dev ||
20: (major(ep->e_val) == major(ip->i_dev) && minor(ep->e_val) == 255)) {
21: prev = ep;
22: return ep->e_name;
23: }
24: }
25: return 0;
26: }
27:
28: getfstab()
29: {
30: register Entry *ep;
31: register struct fstab *fp;
32: register char *p;
33: char *strrchr();
34: struct stat statb;
35:
36: while(fp = getfsent()) {
37: if(stat(fp->fs_spec, &statb) == -1)
38: continue;
39: if((ep = Malloc(Entry, 1)) == 0)
40: break;
41: ep->next = namelist.begin;
42: namelist.begin = ep;
43: namelist.nentry++;
44: ep->e_val = statb.st_rdev;
45: if((p = strrchr(fp->fs_spec, '/')) == 0)
46: p = fp->fs_spec;
47: else
48: p++;
49: strncpy(ep->e_name, p, sizeof(ep->e_name));
50: }
51: endfsent();
52: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.