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: }
Defined functions
cmd
defined in line
106; used 2 times
cmr
defined in line
118; used 8 times
cmt
defined in line
127; used 2 times
cmx
defined in line
139; used 2 times
done
defined in line
155; used 14 times
- in line 83,
101,
146,
152,
174
- in /usr/src/cmd/tp/tp2.c line
95,
170,
182,
210,
226,
280,
327
- in /usr/src/cmd/tp/tp3.c line
152,
172
main
defined in line
3;
never used
optap
defined in line
65; used 1 times