|
|
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.