|
|
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.