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
cmd
defined in line
111; used 2 times
cmr
defined in line
123; used 8 times
cmt
defined in line
132; used 2 times
cmx
defined in line
144; used 2 times
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
main
defined in line
7;
never used
optap
defined in line
69; used 1 times
Defined variables
sccsid
defined in line
2;
never used