Annotation of 3BSD/cmd/tp/tp1.c, revision 1.1

1.1     ! root        1: #include "tp.h"
        !             2: 
        !             3: main(argc,argv)
        !             4: char **argv;
        !             5: {
        !             6:        register char c,*ptr;
        !             7:        extern cmd(), cmr(),cmx(), cmt();
        !             8: 
        !             9:        tname = tc;
        !            10:        command = cmr;
        !            11:        if ((narg = rnarg = argc) < 2)  narg = 2;
        !            12:        else {
        !            13:                ptr = argv[1];  /* get first argument */
        !            14:                parg = &argv[2];        /* pointer to second argument */
        !            15:                while (c = *ptr++) switch(c)  {
        !            16:                        case '0':
        !            17:                        case '1':
        !            18:                        case '2':
        !            19:                        case '3':
        !            20:                        case '4':
        !            21:                        case '5':
        !            22:                        case '6':
        !            23:                        case '7':
        !            24:                                tc[8] = c;
        !            25:                                mt[7] = c;
        !            26:                                continue;
        !            27: 
        !            28:                        case 'f':
        !            29:                                tname = *parg++;
        !            30:                                narg--; rnarg--;
        !            31:                                continue;
        !            32:                        case 'c':
        !            33:                                flags |= flc;  continue;
        !            34:                        case 'd':
        !            35:                                setcom(cmd);  continue;
        !            36:                        case 'i':
        !            37:                                flags |= fli;  continue;
        !            38:                        case 'm':
        !            39:                                tname = mt;
        !            40:                                flags |= flm;
        !            41:                                continue;
        !            42:                        case 'r':
        !            43:                                flags &= ~flu;  setcom(cmr);  continue;
        !            44:                        case 's':
        !            45:                                flags |= fls; continue;
        !            46:                        case 't':
        !            47:                                setcom(cmt);  continue;
        !            48:                        case 'u':
        !            49:                                flags |= flu;  setcom(cmr);  continue;
        !            50:                        case 'v':
        !            51:                                flags |= flv;  continue;
        !            52:                        case 'w':
        !            53:                                flags |= flw;  continue;
        !            54:                        case 'x':
        !            55:                                setcom(cmx);  continue;
        !            56:                        default:
        !            57:                                useerr();
        !            58:                }
        !            59:        }
        !            60:        optap();
        !            61:        top = nptr = nameblk = sbrk(0);
        !            62:        (*command)();
        !            63: }
        !            64: 
        !            65: optap()
        !            66: {
        !            67:        extern cmr();
        !            68: 
        !            69:        if ((flags & flm) == 0) {       /*  DECTAPE */
        !            70:                tapsiz = TCSIZ;
        !            71:                ndirent = TCDIRS;
        !            72:                fio =open(tc,2);
        !            73:        } else {                        /* MAGTAPE */
        !            74:                tapsiz = MTSIZ;
        !            75:                ndirent = MDIRENT;
        !            76:                if(command == cmr)
        !            77:                        fio = open(tname,1);
        !            78:                else
        !            79:                        fio = open(tname,0);
        !            80:        }
        !            81:        if (fio < 0)  {
        !            82:                printf("Tape open error\n");
        !            83:                done();
        !            84:        }
        !            85:        ndentb = ndirent/TPB;
        !            86:        edir = &dir[ndirent];
        !            87: }
        !            88: 
        !            89: setcom(newcom)
        !            90: int (*newcom)();
        !            91: {
        !            92:        extern cmr();
        !            93: 
        !            94:        if (command != cmr)     useerr();
        !            95:        command = newcom;
        !            96: }
        !            97: 
        !            98: useerr()
        !            99: {
        !           100:        printf("Bad usage\n");
        !           101:        done();
        !           102: }
        !           103: 
        !           104: /*/* COMMANDS */
        !           105: 
        !           106: cmd()
        !           107: {
        !           108:        extern delete();
        !           109: 
        !           110:        if (flags & (flm|flc))  useerr();
        !           111:        if (narg <= 2)                  useerr();
        !           112:        rddir();
        !           113:        gettape(delete);
        !           114:        wrdir();
        !           115:        check();
        !           116: }
        !           117: 
        !           118: cmr()
        !           119: {
        !           120:        if (flags & (flc|flm))          clrdir();
        !           121:        else                            rddir();
        !           122:        getfiles();
        !           123:        update();
        !           124:        check();
        !           125: }
        !           126: 
        !           127: cmt()
        !           128: {
        !           129:        extern taboc();
        !           130: 
        !           131:        if (flags & (flc|flw))  useerr();
        !           132:        rddir();
        !           133:        if (flags & flv)
        !           134:                printf("   mode    uid gid tapa    size   date    time name\n");
        !           135:        gettape(taboc);
        !           136:        check();
        !           137: }
        !           138: 
        !           139: cmx()
        !           140: {
        !           141:        extern extract();
        !           142: 
        !           143:        if (flags & (flc))              useerr();
        !           144:        rddir();
        !           145:        gettape(extract);
        !           146:        done();
        !           147: }
        !           148: 
        !           149: check()
        !           150: {
        !           151:        usage();
        !           152:        done();
        !           153: }
        !           154: 
        !           155: done()
        !           156: {
        !           157:        printf("End\n");
        !           158:        exit(0);
        !           159: }
        !           160: 
        !           161: encode(pname,dptr)     /* pname points to the pathname
        !           162:                         * nptr points to next location in nameblk
        !           163:                         * dptr points to the dir entry            */
        !           164: char   *pname;
        !           165: struct dent *dptr;
        !           166: {
        !           167:        register  char *np;
        !           168:        register n;
        !           169: 
        !           170:        dptr->d_namep = np = nptr;
        !           171:        if (np > top - NAMELEN)  {
        !           172:                if(sbrk(BRKINCR) == (char *)-1) {
        !           173:                        printf("Out of core\n");
        !           174:                        done();
        !           175:                } else
        !           176:                        top += BRKINCR;
        !           177:        }
        !           178:        if((n=strlen(pname)) > NAMELEN) {
        !           179:                printf("Pathname too long - %s\nFile ignored\n",pname);
        !           180:                clrent(dptr);
        !           181:        }
        !           182:        else {
        !           183:                nptr += n+1;
        !           184:                strcpy(np, pname);
        !           185:        }
        !           186: }
        !           187: 
        !           188: decode(pname,dptr)     /* dptr points to the dir entry
        !           189:                         * name is placed in pname[] */
        !           190: char   *pname;
        !           191: struct dent *dptr;
        !           192: {
        !           193: 
        !           194:        strcpy(pname, dptr->d_namep);
        !           195: }

unix.superglobalmegacorp.com

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