ahd@clutx.clarkson.edu (Drew Derbyshire) (12/21/89)
Several people have asked me to mail them a listing of the changes I
have made to UUPC in my hacking. Following is the list of as last
weekend, which is the last time I updated the program. (I asked someone
to mail me his list of what he had to done it ... he never worte it down.
*sigh*.) It should any all questions those interested have, and bore
anyone else to tears.
To those who want the program, I will be realoading the program to clutx
with corrected documents, sample files, and a few bug fixes after
Christmas; once my second telephone gets installed (this could be a
while), you will also be able to call me on your dime and download the
.ZIP files. If you are in rush, I can talk to Clarkson (Hi Russ!) and
see if they can load it on their BBS from clutx.
Some people have said they could not unZIP the current UUPC archives on
clutx, and others just plain wanted .ARC files. I will, to check the
upload, be uploading both .ZIP and .ARC files on the next pass (after
Christmas).
Please note:
1) Russ Nelson has been sent no less than four piece of mail
about UUPC; it's not his program, not his files, it's not even
his host! So don't send Russ mail about UUPC, okay? Read my
address.
2) I refuse to mail out UUPC because a) I keep updating it and
b) I am not working on it for profit, or even to break even. I
just want a mailer I trust on my PC. Please don't ask.
Drew Derbyshire
Internet: ahd@clutx.clarkson.edu Snail mail: 108 Decatur St, Apt 9
Voice: 617-641-3739 Arlington, MA 02174
December 17, 1989 UUPC/extended 1.07g changes summary
Note that many of the listed bugs were introduced by UUPC/extended, and
may not have existed or been of any importance in the interim UUPC
1.05. Changes without a release number denoting when they made were
previous to release 1.07e.
Note not all changes are logged in this file, and that comments denoting
changes in the source are inconsistent at best.
Unfixed bugs:
1. The Z-100 version of UUPC/extended (which as a different
communications package) doesn't work.
2. Files are not locked when being read and updated by
interactive mail; if a file is updated by sending or saving
mail, the mail can be lost.
3. Binary files are corrupted during transfer if one side
believes flow control is active and the other side does not.
4. UUPOLL polling times are one hour off when daylight savings
time is not in effect.
5. UUPOLL polls at odd times if the interval specified by the
interval flag (-i) does not divide evenly into 24 hours.
6. UUPOLL polls at odd times if the first time to poll is after
9:06:08 A.M. (32K seconds).
7. Mail from the mail server should never be sent back to it.
Needed enhancements:
1. Suppressed RFC-822 headers cannot be altered by the user; they
are displayed in an all or nothing fashion.
2. "From" lines are interspersed with RFC-822 lines. They should
be first.
3. Remote users can transfer files to anywhere on the local
system and overlay local files.
4. The program should severely limit the number of the assert()
statements because the resulting message is not informative.
Especially important is proper error checking for disk I/O.
Also, assert() statements should not include critical code,
since the NDEBUG option suppresses the execution of the clause
within the assert().
5. UUIO should support a generic modem expect/response string for
dialing.
6. Mail should not be delivered to non-existent local user ids
- 1 -
December 17, 1989 UUPC/extended 1.07g changes summary
without permission.
7. Mail should understand the concept of 'local' domain, and that
mail for any system in the local domain should not be
forwarded to a mail server outside the domain.
Fixed Bugs:
1. The installation documents are non-existent.
Wrote basic documents for version 1.07c; corrected numerous
spelling and other errors in version 1.07g.
2. If a reply (r) command is issued against mail without an
address to reply to, the command is not rejected.
Initialized variable 'from' in createbox(). Corrected in
1.07g.
3. Check in printmsg() for de-referencing a NULL pointer was
backwards, it turned off debugging output (and an assert()
statement to kill the program) instead of turning it on.
Corrected in 1.07g.
4. When dialing a HAYES modem, the expected "OK" string
overprints the literal "expected".
Altered "\r" to "\\r" in hayes(). Corrected in 1.07g.
5. The number of messages in the mail box is printed even if only
printing the subject of one header.
Corrected PrintSubject() to print count of messages only when
displaying all message subjects. Corrected in 1.07g.
6. UUPOLL prints outgoing polling commands twice.
Deleted extra printf() call from active(). Fixed in version
1.07g.
7. Trying to read the mail for a user whose mail is forwarded
causes a null pointer to be de-referenced.
Corrected CreateBox to gracefully exit if the mailbox being
read begins with a "Forward to " line. Also modified
Interactive_Mail to exit gracefully if no mail was read by
CreateBox. Fixed in version 1.07g.
8. If the name in a return contains nested parentheses,
ExtractAddress aborts.
Corrected parse to correctly determine level of nesting.
Fixed in version 1.07f.
- 2 -
December 17, 1989 UUPC/extended 1.07g changes summary
9. It is sometimes necessary to read mail without the internal
binary separators used by UUPC.
Added configuration file keyword FromSep; if specified as
"yes", this keyword allows the standard UNIX 'From' line to
separate mail. This not needed if the mail entered the local
system via UUCP 1.07a or above. Fixed in version 1.07e.
10. If a suppressed mail header is the last line of the header,
the empty line following the header is not displayed.
Corrected check for non-printable characters to exclude the
newline character. Fixed in version 1.07e.
11. Items without headers cause the following item to be appended
to it.
Revised RMAIL version of pcmail.c to append a trailing empty
line if the header is not properly terminated.
12. Mail from UUPC to remote systems shows as coming from
/dev/null.
Restored 'From ...' line in sendone(), adding the actual node
id of the delivering user.
13. Mail with long lines scrolls off the screen with the built-in
pager.
Added check for length of line in PageLine().
14. When sending mail, addressees with no alias that are added via
the 'Cc:' prompt are not correctly displayed in mail headers.
Moved premature free() call for ccbuffer in Send_Mail().
15. Upon termination, MAIL reports a Null Pointer Assignment in
the small memory model.
Corrected declare of local variable debugp in getrcnames().
16. Compiling using the compact model causes the stack to be blown
in MAIL.
Altered all large arrays (including strings) to be allocated
and released from the heap using malloc() and free(). Strings
used only by modules for UUIO are left alone for performance
reasons.1
17. If mail includes a -c or -b option, the previous header
-------------------------
1The correct fix is increase the stack size via the global variable
_stklen, but, this was overlooked until after all the variables were
changed to allocation via malloc().
- 3 -
December 17, 1989 UUPC/extended 1.07g changes summary
includes a bad comma at the end of its text.
Fixed in sendone() to not generate a comma at end of headers.
18. Cntrl-Break is ignored by UUIO if BREAK is off.
Wrote UUPOLL driver program to enable and restore original
BREAK status.
19. Mail forwarded with the forward f) command has the mail
headers run together.
Altered pcmail.c to use flag resend (shared between sendone()
and Interactive_Mail() in mail.c), which, when true, causes
sendone() to add the "Resent-" prefix to the generated headers
"Date:", "From:", "To:", "Cc:", and "Subject:" headers.
20. Headers are not always terminated by an empty line if the
first line of the body of the message includes a colon (:).
Modified pcmail() to not attempt to determine the end of the
header, instead forcing it to handle header processing based
on the mode (lmail or rmail) and whether or not the resend
flag is true. This fix effectively cripples the ability of
pcmail to operate as a standalone program, although various
uses of the external routing routines in router.c had greatly
already restricted the standalone capabilities of pcmail.
21. The sequence number for messages queued for remote systems
cycles after 500 messages.
Altered local temporary files to be generated via tmpnam, thus
eliminating a double increment of the sequence number per mail
message, and changed output format of sequence number from
decimal to hexadecimal to increase number of unique sequence
fields to 4096 from 1000. These changes together provide an
eight-fold increase in available sequence numbers.
22. Normal debugging via printmsg() cannot be used during early
initialization stages of processing, and never if mail is
invoked to send mail from the command line.
Added check for environment variable UUPCDEBUG in configure();
if the variable exists, its value is used to initialize
debuglevel.
23. If pager is not defined, MAIL sometimes refuses to display a
message because it incorrectly believes a pager was supplied.
Altered pager to check for null pointer instead of empty
string to determine if an external pager is available.
24. Slower PC's tend to timeout when transferring files.
- 4 -
December 17, 1989 UUPC/extended 1.07g changes summary
Upped TimeOut to 15 from 4, per indirect advice from Sam
Lamb.
25. HAYES modem type does not work.
Added D (dial) command to last command before phone number in
dial.
26. HAYES modem performing dialout cannot autobaud.
Changed search for connect speed in dial to look for four or
more characters instead of exactly four.
27. When running in passive mode, once the user presses <cr> to
get system's attention then login() processing goes into a
output loop of Login/Password messages until it times out.
Initialized ch in rmsg(). Previously, it was not initialized
if sync option was not requested.
28. Autobauding a modem causes the connection to be dropped.
Dropped calls to dtr_off() and dtr_on() from SIOSpeed().
29. In passive mode, the system cannot locate any valid system
names in L.SYS.
Modified checkname to parse lines of L.SYS correctly,
including skipping comment lines.
30. Changing speeds immediately upon receiving the "CONNECT"
message can cause a HAYES modem to drop the connection.
Added sleep(1) before setting speed of modem in dial
31. Mail forwarded to remote systems via a "Forward to" line in a
mail box fails when the buffer containing the address to
forward to is overlaid.
Altered sendone() to use a local variable for forwarding
address.
32. UUIO does not always deliver local files, it spools them for
forwarding because it sees a node delimiter symbol ("@" or
"!") in the header.
Dropped existing remote_address() macro in favorite of full
routine to extract node name and user id of addressee; if the
node is the local nodename or domain, then the address is
altered to be a local address.
33. UUIO should support the standard fields in L.SYS for when to
call other systems. At the very least, it should understand
the keyword never.
- 5 -
December 17, 1989 UUPC/extended 1.07g changes summary
Wrote new checktime() to support all standard fields; does not
allow multiple day fields (TuFr0000-2400) in one token, but
does include the BNU and BSD 4.3 support of multiple tokens
separated by commas (Tu0000-2000,Fr0000-2400) which provides
the same function.
34. Mail user interface does not properly parse user names with
both quotes and parentheses in them.
Added ReturnAddress() to correct handle most cases of RFC-822
address syntax. Also added support to CreateBox() to examine
a prioritized list of fields to select such data as the From,
Subject:, and Date: fields.
35. Mail processing does not skip deleted messages when paging
down or up the list of items.
Added position() to automatically skip deleted entries when
scrolling one step forward or back.
36. Breaking out of passive mode via Cntrl-Break causes the UUIO
AUX port driver to remain active, which after a period of time
would crash the system.
Added Cntrl-Break processor c_break() to gracefully:
* Hangup the telephone and reset the modem (if a Hayes)
* Restore the default AUX port interrupt handler
* Return to the original directory UUIO was started from
37. Mail delivery processing incorrectly alters 'From' lines from
other systems to '>From'.
Altered local mail processing that a 'From uucp' line is no
longer added, instead simply using the RFC-822 'Received:'
line at the top of files to handle separation of mail.
38. Mail to a host with a direct connection to the local system in
the local domain would be incorrectly routed via the mail
server if the host was addressed via its full domain name.
Modified user_at_node() to return the correct (short) name of
the host as the name to route by.
39. Disk full condition is ignored, causing creation of zero
length files.
Added checks in procedures writebuf(), printmsg() and
sendone() to detect disk full errors. While these are not all
the places errors could error, they cause the program to stop
in its tracks rather than write files into the bit bucket.
- 6 -
December 17, 1989 UUPC/extended 1.07g changes summary
40. Not all PC editors can handle forward slashes in files.
Corrected Invoke_Editor to use backslashes in file names.
Fixed in version 1.06a.
Completed enhancements:
1. Added (actually restored commented out literals for) 9600 and
4800 bps support for Hayes modems.
Performed in version 1.07g.
2. Received and From lines tend to clutter a top of a message.
Added smart handling of headers in CopyMsg(), which suppresses
selected headers when copying a message for display or
forwarding. Added the type (t) and Type (T) commands to
optionally print a message with the normally suppressed
headers.
3. Messages are sometimes improperly divided into multiple parts
if they contain "Received:" or "From " lines.
Added MMDF-style line of binary ones (\01) between messages
when copying them via CopyMsg() and sendone(). This allows
for future deletion of examining for "Received:" lines.
("From " lines are already ignored.)
4. Added reply (r) command to mail to allow replying to primary
sender of a note.
5. Added prompts for Subject and Carbon copies (Cc:) fields when
sending mail.
6. Added shell (!) command invoking inferior command processors
from mail.
7. Support should be added for automatically switching between
passive and active polling; perhaps a driver program is
needed.
Wrote UUPOLL program for driving UUIO at regular intervals.
8. Login processing does not really emulate a UNIX system, and is
not secure.
Fixed following areas in login:
* Added hello message with system name, MS-DOS level, and
port name.
* Login prompt is repeated if no user id is entered.
- 7 -
December 17, 1989 UUPC/extended 1.07g changes summary
* System reports "login failed" if invalid password is
given.
* Added passwd file to support multiple user ids on login.
9. System cannot be shared between UUPC and other services.
Passwd file includes parameters for optional shells, such as
Kermit.
10. Exact version of program is not known during testing.
Added __TIME__ and __DATE__ stamps to timestmp.c for display
by main(). Also added VERS definition to makefile to define
standard all modules.
11. Builtin pager cannot scroll a single line (ala UNIX).
Added code to pageline() to scroll one line if user presses
<cr>. Also added clrscr() call to pager().
12. The user of MAIL has no idea what message he is on aside from
the ever cryptic message number.
Added display of subject line to selected MAIL options.
13. ULIB does not use standard symbols for TIMEOUT processing.
Added TIMEOUT symbol to dcp.h, and altered local TIMEOUT
symbol in dcpgpkt.c to TimeOut to avoid conflicts.
14. Added optional user parameters 'Organization' and 'Replyto' to
allow these fields to be automatically inserted in ooutgoing
mail headers.
15. Added called() and didcall() procedures to determine if host
was already connected to by UUIO when performing outgoing
calls. This allows multiple entries for the same host in the
L.SYS file.
16. Added inithost() and loadalias() to read alias file (defined
by alias variable in configuration file) in MMDF format:
nick "full name" <rfc822@domain.address>
and lists of the format:
listname nick1, nick2, nick3
Added procedures ExplodeAlias(), AliasByNick() and
AliasByAddr() to perform alias lookup for send and reply
functions. Also added alias (a) command to lookup aliases.
17. MAIL should handle multiple mail servers, especially
- 8 -
December 17, 1989 UUPC/extended 1.07g changes summary
automatically queuing mail for the systems listed L.SYS. The
mail processor should also handle system aliases and routing
to remote systems through other than the default mail server.
Added semi-smart routing to handle directly known systems via
new procedure loadhost() and modified procedure checkname().
Also added support to process hostpath file to allow
specifying routes for hosts not directly connected (but these
routes are not inserted into the actual mail header) and
aliases for both the local and remote systems.
18. Added function prototypes for most functions. (The primary
exception is printmsg(), which with its variable number of
parameters would require rewriting to legally handle the
correct function prototype.)
19. Added emunerated types for selected variables to assist the
Turbo C symbolic debugger.
- 9 -