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