xref: /csrg-svn/usr.bin/uucp/DOC/CHANGES (revision 13711)
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