Annotation of researchv10no/cmd/ps/getfs.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.