|
|
1.1 ! root 1: List of Changes to UUCP ! 2: CHANGES 5.1 83/07/02 ! 3: This is a list of changes made to the base version of uucp. ! 4: An attempt is made to justify the changes made. ! 5: This list may be useful to those implementing yet better versions. ! 6: Tom Truscott ! 7: ! 8: anlwrk.c: lots of changes. See the comments at the top. ! 9: Main efficiency improvement: eliminate stat(II)s. ! 10: Main bug fix: avoid sending files to wrong system. ! 11: ! 12: Uses Berkeley 4.2bsd directory reading subroutines. ! 13: Useful if someone wants to run this uucp under 4.2bsd. ! 14: ! 15: Added uucp subdirectories. See 'README' or 'INSTALL' for details. ! 16: Subdirectories are enabled by #define-ing UUDIR in uucp.h. ! 17: No more assembler code needed. ! 18: grep UUDIR *.[hc] to see how it is implemented. ! 19: ! 20: Times of form 'hh:mm' are uniformly printf-ed with "%d:%02d". ! 21: The %02d guarantees a 2 digit number w/ leading zero if needed. ! 22: ! 23: uucp work files (e.g. spool files) are created with umask==WFMASK (uucp.h). ! 24: WFMASK can disable reading by 'others'. In fact that is the default, ! 25: which might be annoying, but you can change it. ! 26: LOG files (LOGFILE, SYSLOG, ERRLOG) are created with umask=LOGMASK (uucp.h), ! 27: which as distributed permits general read access to avoid loud user screams. ! 28: User files are created with mode (not umask!) at least BASEMODE (uucp.h) ! 29: and possibly with more permissions if the user so specified. ! 30: To avoid loud user screams, BASEMODE should probably be 666 ! 31: since uucp-created files are owned by uucp. ! 32: ! 33: chkpth.c: uses dynamic allocation due to Doug Kingston. ! 34: chkpth() and chkperm() are no longer called for vanilla ! 35: Spool area requests, so they can be made 'tougher'. ! 36: These routines, and how they are used, is a bleak area ! 37: of uucp that should be scrapped and redone coherently. ! 38: ! 39: #define for SYSIII added. The idea is to have code that runs ! 40: on SYSIII etc. as well as v7, 32V, 4.1bsd, etc. ! 41: However it has never been tested and surely won't work. ! 42: ! 43: cntrl.c: lots off changes here. Mostly performance enhancements. ! 44: Bypasses chkpth/chkperm/anyread checks for vanilla spool files. ! 45: No longer logs 'COPY SUCCEEDED' in LOGFILE, only failures. ! 46: (Still logs request data. And SYSLOG still logs file transfers.) ! 47: Has 'PATIENCE' when shipping huge files (this partially works, ! 48: the huge file gets over okay, and is signed off, but the ! 49: next attempted transfer fails. Not catastrophic, but not nice.) ! 50: Cranks up a uuxqt each time ten 'X' files have gone past ! 51: (to avoid collecting 100+ X files before uuxqt starts!) ! 52: ultouch() is called only rarely. A missing chmod after an 'xmv' ! 53: has been added. Due to the extra diligence in chkperm, etc. ! 54: the old 'put files in /usr/spool/uucppublic' may no longer ! 55: work "right". Sorry, but I am not sure how it is supposed to work. ! 56: I will look into this someday, sooner if it is an actual problem. ! 57: ! 58: vectors/buffers for L.sys lines increased in versys.c and conn.c ! 59: to permit 1000 char lines and 100 'fields' on a line. ! 60: ! 61: conn.c: obscure changes here, mostly in the send/expect sequence. ! 62: File descriptor prediction implemented (not tested!), ! 63: extremely obscure problem apparently first noted by Steve Bellovin. ! 64: Default end of 'send' string is \r, not \n. ! 65: PAUSE5 pauses 5 seconds. \d pauses 1 second (\d\d\d\d\d pauses 5). ! 66: foo\c sends 'foo' with no ending \r. \05 sends control-e. ! 67: \s sends a space (so does \40). CR sends a \r, LF sends \n. ! 68: "" sends a \r. Output is in even parity, changable with send strings ! 69: P_ZERO, P_EVEN, P_ODD, P_ONE. BREAK sends a break (or simulates one). ! 70: And expect string of "" expects nothing, just returns, so ! 71: to send an initial \r one can just do ! 72: "" "" ogin:--ogin: ! 73: to poke the remote site into sending a login message. ! 74: Send strings are only printed in debug if uid <= PRIV_UIDS (uucp.h). ! 75: ! 76: Alan Watt's date changes were in decvax, but should mentioned here. ! 77: Except I am not sure how they work. Look near the end of conn.c. ! 78: ! 79: expfile() returns 0 if the expanded file is a vanilla spool file. ! 80: That way chkpth/chkperm can be bypassed, and those routines ! 81: can have several huge loopholes removed. ! 82: ! 83: gename.c has Alan Watt's (a) base 62 sequence numbering and (b) ! 84: greatly reduced locking rate. ! 85: The comments at the top describe it fairly well. ! 86: It looks awful, but just use it. It works. ! 87: ! 88: gio.c: ultouch() is called occasionally (kludge!) ! 89: IO errors are checked for. ! 90: gnsys.c calls each system only once in a uucico session. ! 91: Also, calls callok() only once for each system. ! 92: I forget how that works. ! 93: ! 94: imsg.c: strips parity bits, in case the incoming chars have some. ! 95: ! 96: logent.c: greatly simplified! Justs opens LOGFILE for append ! 97: and then seeks to end and writes each new entry. ! 98: Can cause scrambling on systems w/o guaranteed append-to-end, ! 99: but is too good a speedup to pass up. ! 100: ! 101: pk.c: check-summing is done correctly on machines which do not ! 102: sign-extend characters. Time-outs made more generous. ! 103: ! 104: lint: The code has been de-linted as best I could. ! 105: uucp.h contains lots of declarations of functions which ! 106: return non-int, like strcpy(), etc. ! 107: ! 108: uucplock.c: ! 109: ultouch() changed to be done only occasionally. ! 110: Only changes st_ctime, not atime or mtime, ! 111: so programs can be written to display time spent locked. ! 112: ! 113: uucp: uucp x foo!y causes a uucico to call only system foo, ! 114: not a uucico to try to call everyone with spooled work. ! 115: ! 116: uucp.h: unused #defines have been removed. ! 117: ! 118: uulog.c: greatly simplied, since logent.c is greatly simplied. ! 119: Only used in forms 'uulog -u user' and 'uulog -s system'. ! 120: Also, 'uulog -uuser' and 'uulog -ssystem' are permitted. ! 121: And both options may be specifed. None is an error. ! 122: ! 123: uux: -g<g> option added to specify priority grade. ! 124: -c option does not copy. -l is a synonym. ! 125: 'X' files use local system name to avoid possible name conflict. ! 126: uucico cranked up calls only target system, not everyone. ! 127: ! 128: uuxqt: reads commands from /usr/lib/uucp/L.cmds. ! 129: A line of form 'PATH=...' changes the command search path. ! 130: ! 131: uucpname.c: A real kludge went here. ! 132: On some UNIX systems, a program's set-user-id bit is ignored ! 133: if the invoker is root. But then uucp would create files ! 134: owned by root, and if not generally writable uucp ! 135: would later be unable to write on them (e.g. LOGFILE). ! 136: So uucpname, since it is called at the start of ! 137: every relevant uucp program, checks for getuid()==geteuid()==0 ! 138: in which case it changes its uid/gid to that of the owner of ! 139: the file /usr/lib/uucp/uucico. ! 140: ! 141: Debugging mode is permitted only to invokers with uid <= PRIV_UIDS. ! 142: ! 143: dialout.c routine has dialend() routine which is called to hang up. ! 144: Tue Mar 29 16:25:01 EST 1983 ! 145: ! 146: Makefile: GROUP variable added so file OWNER and GROUP are both set correctly. ! 147: uuxqt/uucico/uuclean are no longer executable by 'others'. ! 148: ! 149: uucp.h: PRIV_UIDS reduced to 3 to reduce security danger. ! 150: ! 151: cico.c: cleanup() ioctl(II)s changed to avoid hang-up on Gould/SEL machine. ! 152: ! 153: anlwrk.c: Infinite loop check was buggy, causing occasional, ! 154: sometimes persistent, 'NO WORK' messages. Simpler method now used. ! 155: ! 156: conn.c: dialout() argument format changed to support variant dialers. ! 157: Also, #defines added to support different UNIX-es understanding ! 158: of different baud rates. ! 159: ! 160: Compatibility mods: ! 161: #include <ascii.h> in dialout.c now deleted. ncsu!mcm ! 162: (Mike Mitchell) ! 163: ! 164: System V compatibility mods. burl!lda, Larry Auton ! 165: PATH=... in Makefile changed to APATH=... . ! 166: ! 167: FIOCLEX added to prevent ACU/communication files being inherited by children. ! 168: ! 169: Files cleaned up (register variables added) by Mike Mitchell (ncsu!mcm). ! 170: ! 171: u[bs]_sst.c, us_rrs.c: "a+" fopen mode changed to "r+". NOTE: ! 172: uusub, uustat are not claimed to work in this version. ! 173: Further, "r+" does not work in 4.1bsd or 32V. ! 174: ! 175: cntrl.c calls wait(II) after uuxqt()s are started, to avoid ! 176: filling the proc table with zombies. ! 177: ! 178: uuxqt now sorts "X" files to keep execution in order. ! 179: ! 180: setline.c: fixes for 'system III' sites. NOT TESTED. ! 181: ! 182: gwd.c: The pwd(I) is run with effective uid reverted to the real uid. ! 183: ! 184: logent also prints to stderr if debugging is on ! 185: ! 186: UNET channel added. Still running slowly, though. ! 187: ! 188: Changed XQTDIR from /usr/lib/uucp/.XQTDIR to /usr/spool/uucp/XTMP. ! 189: ! 190: Add gethostname(). ! 191: ! 192: Add SYSFILECR. ! 193: ! 194: sysexits.h added
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.