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