# 2.11BSD#431 - /usr/src/bin/tp/tp1.c

##### Functions

    check             X
    cmd               X
    cmr               X
    cmt               X
    cmx               X
    decode            X
    done              X
    encode            X
    main              X
    optap             X
    setcom            X
    useerr            X

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

#### Defined functions

check defined in line 154; used 3 times

- in line 120, 129, 141

cmd defined in line 111; used 2 times

- in line 11, 40

cmr defined in line 123; used 8 times

- in line 11-14(2), 48, 54, 71, 80, 97-99(2)

cmt defined in line 132; used 2 times

- in line 11, 52

cmx defined in line 144; used 2 times

- in line 11, 60

decode defined in line 189; used 4 times

- in /usr/src/bin/tp/tp2.c line 139, 312
- in /usr/src/bin/tp/tp3.c line 19, 95

done defined in line 160; used 14 times

- in line 88, 106, 151, 157, 183
- in /usr/src/bin/tp/tp2.c line 98, 174, 186, 214, 230, 284, 331
- in /usr/src/bin/tp/tp3.c line 156, 176

encode defined in line 166; used 2 times

- in /usr/src/bin/tp/tp2.c line 83, 336

main defined in line 7; never used
optap defined in line 69; used 1 times

- in line 65

setcom defined in line 94; used 5 times

- in line 40, 48-54(3), 60

useerr defined in line 103; used 6 times

- in line 62, 99, 115-116(2), 136, 148

#### Defined variables

sccsid defined in line 2; never used

Last modified: 1987-02-08 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1393 |