|
|
1.1 root 1: *** chkpth.c Sun May 27 20:55:39 1979
2: --- chkpth.c.new Sat Apr 2 21:34:39 1983
3: ***************
4: *** 40,45
5: char c;
6: int ret, i;
7:
8: if (Uptfirst) {
9: ret = rdpth(Upt);
10: ASSERT(ret == 0, "INIT USERFILE %d", Nbrusers);
11:
12: --- 40,48 -----
13: char c;
14: int ret, i;
15:
16: + if (prefix("=/usr/lib/news/batch", path))
17: + return(0);
18: +
19: if (Uptfirst) {
20: ret = rdpth(Upt);
21: ASSERT(ret == 0, "INIT USERFILE %d", Nbrusers);
22: *** cntrl.c Sun May 27 20:56:46 1979
23: --- cntrl.c.new Sat Apr 2 21:37:03 1983
24: ***************
25: *** 82,87
26: char Wfile[MAXFULLNAME] = {'\0'};
27: char Dfile[MAXFULLNAME];
28:
29: /*******
30: * cntrl(role, wkpre)
31: * int role;
32:
33: --- 82,89 -----
34: char Wfile[MAXFULLNAME] = {'\0'};
35: char Dfile[MAXFULLNAME];
36:
37: + FILE *pfopen();
38: +
39: /*******
40: * cntrl(role, wkpre)
41: * int role;
42: ***************
43: *** 164,170
44: if (index(W_OPTNS, 'c') == NULL)
45: fp = fopen(Dfile, "r");
46: if (fp == NULL &&
47: ! (fp = fopen(filename, "r")) == NULL) {
48: /* can not read data file */
49: logent("CAN'T READ DATA", "FAILED");
50: unlinkdf(Dfile);
51:
52: --- 166,172 -----
53: if (index(W_OPTNS, 'c') == NULL)
54: fp = fopen(Dfile, "r");
55: if (fp == NULL &&
56: ! (fp = pfopen(filename, "r")) == NULL) {
57: /* can not read data file */
58: logent("CAN'T READ DATA", "FAILED");
59: unlinkdf(Dfile);
60: ***************
61: *** 282,288
62: notify(mailopt, W_USER, W_FILE1, Rmtname, &msg[1]);
63: ASSERT(role == MASTER,
64: "role - %d", role);
65: ! fclose(fp);
66: unlinkdf(W_DFILE);
67: goto top;
68: }
69:
70: --- 284,290 -----
71: notify(mailopt, W_USER, W_FILE1, Rmtname, &msg[1]);
72: ASSERT(role == MASTER,
73: "role - %d", role);
74: ! pfclose(fp);
75: unlinkdf(W_DFILE);
76: goto top;
77: }
78: ***************
79: *** 292,298
80: ASSERT(role == MASTER,
81: "role - %d", role);
82: ret = (*Wrdata)(fp, Ofn);
83: ! fclose(fp);
84: if (ret != 0) {
85: (*Turnoff)();
86: return(FAIL);
87:
88: --- 294,300 -----
89: ASSERT(role == MASTER,
90: "role - %d", role);
91: ret = (*Wrdata)(fp, Ofn);
92: ! pfclose(fp);
93: if (ret != 0) {
94: (*Turnoff)();
95: return(FAIL);
96: *** expfile.c Sun May 27 20:57:47 1979
97: --- expfile.c.new Sat Apr 2 21:39:05 1983
98: ***************
99: *** 19,24
100: int uid;
101:
102: switch(file[0]) {
103: case '/':
104: return;
105: case '~':
106:
107: --- 19,25 -----
108: int uid;
109:
110: switch(file[0]) {
111: + case '=':
112: case '/':
113: return;
114: case '~':
115: *** uux.c Wed Aug 19 16:56:29 1981
116: --- uux.c.new Sat Apr 2 21:40:01 1983
117: ***************
118: *** 231,240
119: expfile(rest);
120: gename(DATAPRE, xsys, 'A', dfile);
121: DEBUG(4, "rest %s\n", rest);
122: ! if ((chkpth(User, "", rest) || anyread(rest)) != 0) {
123: ! fprintf(stderr, "permission denied %s\n", rest);
124: ! cleanup(1);
125: ! }
126: if (xcp(rest, dfile) != 0) {
127: fprintf(stderr, "can't copy %s to %s\n", rest, dfile);
128: cleanup(1);
129:
130: --- 231,241 -----
131: expfile(rest);
132: gename(DATAPRE, xsys, 'A', dfile);
133: DEBUG(4, "rest %s\n", rest);
134: ! if (rest[0] == '/')
135: ! if ((chkpth(User, "", rest) || anyread(rest)) != 0) {
136: ! fprintf(stderr, "permission denied %s\n", rest);
137: ! cleanup(1);
138: ! }
139: if (xcp(rest, dfile) != 0) {
140: fprintf(stderr, "can't copy %s to %s\n", rest, dfile);
141: cleanup(1);
142: ******************
143: pfopen.c:
144: ------------------
145: /*
146: * Routine like fopen, but checks for processes to open.
147: * The process name begins with =, and any underscores
148: * are translated into blanks. We don't do things in the
149: * obvious way (start with | or !, use blanks as themselves)
150: * because getargs can't parse strings containing blanks in
151: * all versions of uucp.
152: */
153:
154: #include <stdio.h>
155:
156: static FILE *prevval = NULL;
157:
158: FILE *popen();
159:
160: FILE *
161: pfopen(name, mode)
162: char *name, *mode;
163: {
164: char cmdbuf[256];
165: register char *p;
166:
167: if (*name != '=') {
168: prevval = NULL;
169: return fopen(name, mode);
170: }
171:
172: strcpy(cmdbuf, name);
173: for (p=cmdbuf; *p; p++)
174: if (*p == '_')
175: *p = ' ';
176: p = cmdbuf+1;
177: prevval = popen(p, mode);
178: return prevval;
179: }
180:
181: pfclose(fd)
182: FILE *fd;
183: {
184: if (fd == prevval) {
185: pclose(fd);
186: prevval = NULL;
187: } else
188: fclose(fd);
189: }
190: ****************
191: Also be sure to add pfopen.o to the list of .o files in the makefile.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.