Annotation of researchv10no/cmd/worm/wmount.c, revision 1.1.1.1

1.1       root        1: #include       <libc.h>
                      2: #include       "worm.h"
                      3: 
                      4: main(argc, argv)
                      5:        char **argv;
                      6: {
                      7:        Superblock s;
                      8:        char *e, *vol_id = 0, *vol;
                      9:        char *dev = "/dev/worm0";
                     10:        int c;
                     11:        long nf = 0;
                     12:        char wflag[512];
                     13:        char buf[512];
                     14:        int i;
                     15:        extern char *optarg;
                     16:        extern int optind;
                     17:        extern long atol();
                     18: 
                     19:        wflag[0] = 0;
                     20:        while((c = getopt(argc, argv, "w:")) != -1)
                     21:                switch(c)
                     22:                {
                     23:                case 'w':       sprint(wflag, "-w%s", optarg); break;
                     24:                case '?':       usage();
                     25:                }
                     26:        if(optind < argc){
                     27:                vol_id = argv[optind++];
                     28:                if(optind != argc)
                     29:                        usage();
                     30:        }
                     31:        if(vol_id == 0){
                     32:                for(i = 0; ; i++){
                     33:                        sprint(buf, "%d", i);
                     34:                        dev = mapdev(buf);
                     35:                        if((s.fd = open(dev, 0)) < 0){
                     36:                                if(errno == ENOENT)
                     37:                                        break;
                     38:                                if(errno == ENXIO)
                     39:                                        continue;
                     40:                                perror(dev);
                     41:                                exit(2);
                     42:                        }
                     43:                        if(e = openinode(&s, SPIN_DOWN)){
                     44:                                fprint(2, "%s: %s\n", dev, e);
                     45:                                exit(2);
                     46:                        }
                     47:                        print("%s: %s\n", dev, s.vol_id);
                     48:                        close(s.fd);
                     49:                }
                     50:                exit(0);
                     51:        }
                     52:        if(isjukebox()){
                     53:                jload(vol_id, wflag);
                     54:                exit(0);
                     55:        }
                     56:        {
                     57:                for(i = 0; ; i++){
                     58:                        sprint(buf, "%d", i);
                     59:                        dev = mapdev(buf);
                     60:                        if((s.fd = open(dev, 0)) < 0){
                     61:                                if(errno == ENOENT)
                     62:                                        break;
                     63:                                if(errno == ENXIO)
                     64:                                        continue;
                     65:                                perror(dev);
                     66:                                exit(2);
                     67:                        }
                     68:                        if(e = openinode(&s, SPIN_DOWN)){
                     69:                                fprint(2, "%s: %s\n", dev, e);
                     70:                                exit(2);
                     71:                        }
                     72:                        if(strcmp(vol_id, s.vol_id) == 0){
                     73:                                print("%s\n", buf);
                     74:                                exit(0);
                     75:                        }
                     76:                        close(s.fd);
                     77:                }
                     78:        }
                     79:        fprint(2, "worm mount: couldn't find %s\n", vol_id);
                     80:        exit(1);
                     81: }
                     82: 
                     83: usage()
                     84: {
                     85:        print("Usage: worm mount [-wsecs] [vol_id]\n");
                     86:        exit(2);
                     87: }
                     88: 
                     89: /*
                     90:        return zero if there isn't a jukebox
                     91: */
                     92: isjukebox()
                     93: {
                     94:        return(access("/dev/scsi", 6) == 0);
                     95: }
                     96: 
                     97: /*
                     98:        secs is the number of seconds to wait
                     99: */
                    100: jload(vol, secs)
                    101:        char *vol, *secs;
                    102: {
                    103:        if(*secs)
                    104:                execlp("/usr/lib/worm/jukebox", "jukebox", secs, "-Rm", vol, (char *)0);
                    105:        else
                    106:                execlp("/usr/lib/worm/jukebox", "jukebox", "-Rm", vol, (char *)0);
                    107:        perror("execlp(/usr/lib/worm/jukebox)");
                    108:        exit(1);
                    109: }

unix.superglobalmegacorp.com

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