Revision This is the 158th revision of this document, and applies to UUPC/extended version 1.11z. This was last updated on May 30, 1993 by Drew Derbyshire. Introduction UUPC/extended is a PC based version (and pun of) UUCP (UNIX-to- UNIX copy). UUPC/extended is a program which implements peer-to-peer networking for using the UNIX UUCP protocols. MS-DOS or OS/2 based Personal Computers using these protocols can exchange mail and files with a UNIX system or other UUPC/extended system over dial up or dedicated phone lines. This file summarizes most changes made to UUPC/extended since release 1.11v. Please contact Drew Derbyshire, help@kew.com, for information on changes previous to the scope of this document or other questions. Version 1.11z Revision Summary Bug Fixes When UUSUB was invoked with the clear (-c) option, it wrote the cleared status file to the SpoolDir rather than the new directory for the file, the ConfDir. Corrected this oversight in hostrset.c. Also corrected reset of start of the collection time. RNEWS snews mode processing failed to process input files in binary mode; corrected by forcing all input to be read in binary mode. Corrected expand_path() so that path names beginning with tilde (~) end need not end with a slash (/). This mostly affects UUCP file transfers. Corrected of scrsize() to sanity check BIOS values for the screen size on systems running versions of DOS previous to DOS 4.0. Previously, invalid screen sizes were not trapped on such older systems, causing the internal pager to require input after every line. Corrected address parser to include the percent sign (%) in an address as a indicator of a non-local address. Previously, such addresses were handled as invalid local users.\ Corrected bounce() processing to not recursively deliver mail to an invalid address such as the local postmaster. Corrected system alias processing to use configuration directory as current directory rather than a possibly invalid user home directory pointer. Also inserted altered system alias processing to call expand_path() to allow using ~user syntax in system alias include files. Correct RMAIL to not use a debug level less than zero when initialing, which caused configuration failure messages to be suppressed (resulting in RMAIL beeping and dying without offering a clue as to why). Corrected bug in UUPOLL which caused the program to spin for one second spitting out messages about waiting for zero seconds before running the daily clean up command. Bill Plummer provided fix to COMMFIFO.ASM serial port driver to provide delay after selected modem command operations to allow slow modems to respond. Corrected bug in syslog processing which caused the file to be prematurely closed and never reopened if multitask was not set. When UUX generated a command for a remote system, it requested the command file be sent before any data the command needed. Corrected this to sent the data first. Enhancements Added -t option UUCICO to cause tracing of data received or sent to various communications drivers to the file LINEDATA.LOG in the Spool directory. Previously, an undocumented feature would cause this tracing to be performed if the file already existed. Added multiple parallel communications drivers support to UUCICO, and added new drivers for via FOSSIL and ARTICOMM controlled ports under DOS. The FOSSIL support is enabled by installing a FOSSIL port driver (not supplied) and adding the keyword: suite=fossil To the modem (*.MDM) file for the affected port. Likewise, an ARTICOMM supported port is enabled by providing a suite=int14 keyword in the modem file for the port. Rewrote syslog processing to display requester of a file, the remote system involved, and host (UNIX format) name. The local (DOS) name is dropped from the log file. Many thanks to Mark W. Schumann , who provided the INT14 driver. Added optional global keywords: Systems= and Passwd= To UUPC.RC file. These keywords define non-default locations of SYSTEMS and PASSWD files. This allows unique (dummy) copies of these files to be used for client workstations without passwords on shared network environments. The default location for these files remain in the UUPC/extended configuration directory. Added new option keywords senddebug and honordebug. In their default state, UUCICO neither transmits the current debug level to the remote system when calling, nor does it use the debug level sent by the remote system called. Note: The previous behavior was to not send the current debugging level but to honor the remote system's debug level. Renamed hpfs option to longname, which more accurately describes its (as yet unimplemented) processing in support of longer file names on any file system which supports it. Added new UUPC.RC keywords banner= and motd=, which define files displayed to remote users by UUCICO. If defined, the file named as the banner is displayed before the login prompt. Likewise, if defined the file named as the motd (message of the day) is displayed after a successful login only if the login shell is not UUCICO. Modified loading of the PASSWD file to use the configuration directory drive as the default when determine the drive letter for home directories. This allows omitting the drive letter within the PASSWD file. Added new OS/2 command file, GETUUPC.CMD, which is called by the other OS/2 scripts to determine UUPC/extended configuration information. Version 1.11y Revision Summary Bless Snuffles for she has sinned. She failed to keep track of all the contributors of bug fixes and enhancements for the 1.11y release. But you know who you are, bless you all ... Bug Fixes Dropped the beta test port of rn 4.3. We're working on porting the newer rn 4.4, but neither source nor object for this is included in 1.11y. Corrected bug in configuration processor which assumed all tables (i.e. the modem configuration table) were as long as the master configuration table. Added specific error message for when local host name was improperly added to SYSTEMS file. Formerly, UUCICO died gloriously with a (incorrect) message about a memory shortage in dcpsys.c. Corrected configuration processing to load UUCP spool related variables for RNEWS. Previously, RNEWS failed to load such information and thus ignored overrides of the default character set. Modified directory search functions to support longer file names used by non-FAT (non-DOS) file systems and to return file time and size information to the caller; this implicitly fixes problems with programs such as EXPIRE running out of memory when running on network drives due to bugs in the Borland C++ stat() call, which no longer has to be used as much. Modified UUCICO status file processing to lock the status file to avoid overlapping updates. Previously, race conditions could cause the file to be reset by mistake. Corrected printmsg() to use unique buffer for time stamp information in log file; formerly, the default static buffer used by various subroutines would be overwritten with the current time when logging. Made return codes from RMAIL more unique to allow better debugging of failed mail. In RNEWS, redid processing performed by SNEWS option to make it even dumber. Note: SNEWS processing is still broken in 1.11y because the file is read in text, not binary, mode. Rewrote RNEWS batched news processing to correctly process files under 512 bytes. Formerly, such articles and all articles following were dropped. Upped maximum length of news group names in RNEWS to keep it from dying when brain dead lusers create news groups with excessive length names. Corrected OS/2 WAITING command to load needed subroutine packages before using them. Corrected UUPOLL bug which caused it to exit with a return code 0 no matter how it was terminated. Corrected UUPOLL bug which caused it to not terminate at the correct time if both the -e and -f flags were specified. Added fix to COMMFIFO.ASM from William Plummer to fix incorrect assembly of references to COMMFIFO error counts. Modified UUCICO 'g' protocol processor to use FAR memory for packet buffers to reduce number of out of memory errors under 16 bit DOS and OS/2 compilers. Modified UUCICO 'g' protocol processor to correctly neogiate packet sizes with remote systems, thus allowing the remote system to send the local system larger packet than the local system can send the remote. (Error pointed out by Ian Taylor.) Corrected sample modem files to NOT enable variablepacket processing by default. Corrected UUCICO to not update host status if host information was not initialized during a passive poll. Corrected syslog option to only set buffering once for the log file if not multi-tasking. This bug caused 1.11x to repeatively report that SYSLOG file was not found when, in fact, it was fine. Corrected UUCICO modem processing to flag that graceful shutdown was needed for OS/2 versions of UUCICO. Previously, it exited immediately without closing the serial port. Corrected UUCICO modem processing to invoke carrier detect processing whenever the modem connects. This was previously missed for hot logins. Corrected UUCICO carrier detection processing for OS/2 communications driver. It previously OR'ed modem status information rather than AND'ing it, allowing a half-ready modem to appear ready. Modified UUCICO to trap unique error code returned by SIO serial port driver under OS/2 when interrupted. Interruptions of the read system call are not really errors, and the default error message alarmed Snuffles. Corrected UUSTAT to not de-reference NULL pointers when killing queued jobs. Enhancements Dave Watt , with assistance from Evan Ross , made numerous additional changes to round out the Windows/NT support. One visible change is that UUPC.RC and PERSONAL.RC can be prefixed with WIN32. to cause the line take effect only under Windows/NT. The ConfDir variable is now optional. If the ConfDir is omitted from UUPC.RC, its value is taken from the directory for the UUPC.RC file specified in the UUPCSYSRC environment variable. The directories (except the user's home directory) in the UUPC.RC and PERSONAL.RC file can now be omitted or made relative to the ConfDir; if omitted, they are assumed be sub-directories of the ConfDir with default names. The user's home directory may be relative to the ConfDir, but it must not be omitted. Added new configuration variables OS2.priority and OS2.prioritydelta. These specify the OS/2 priority of UUCICO when connected in the range 1 through 4, and a sub-priority of 0 through 62. Added new boolean option bounce; when enabled, this causes undeliverable mail to be returned to the sender (as determined by UUXQT and/or by the UUCP From line) with a copy to the local Postmaster. William Plummer made various additional changes to the test driver for DOS COMMFIFO package. Per request of Katherine Derbyshire , modified GENSIG to print out a more useful message about the quote selected, specifically including the output file name. Versions 1.11w through 1.11x Revision Summary Bug Fixes Corrected bug in local delivery routine which failed to detect a letter followed by a colon in a FORWARD file was the beginning of a path name. This fix was supplied by Russ Nelson. Modified internal pager to not scroll top line off the screen when the display is aborted. Corrected RMAIL usage message to display all the operands allowed command's rich syntax. Fix supplied by Russ Nelson. Modified CHDIR to attempt directory change before invoking MKDIR to build the directory to change to. This should be faster, since a directory will always exist after the first CHDIR to it. import_path() mangled valid paths under certain conditions. Modified the routine to properly convert path names with a single character in the path and/or terminated by a slash. Corrected import_newsgroup() to not pad the numbers generated as part of names of DOS news articles. Fix provided by Kai-Uwe Rommel. Corrected via spool directory search routines to correctly handle interrupted searches when a connection to a host is lost. Previously, if a search was not determined to be interrupted, export_path() would catch the bad file name and abort the program ... usually. Corrected included strlwr() function to lower case the string, not upper case it. This problem only affected users using unsupported compilers which lacked this function in their run time library. Modified RNEWS to not shadow or otherwise process an empty compressed input file. Modified RNEWS to not shadow or otherwise process an empty compressed input file; also corrected the file name in various error messages related to uncompress processing. Modified RNEWS to report when it has to delete an article, and to summary number of articles dropped. Modified RNEWS to report specific error messages via printerr(), when it is unable to process a file. Modified RNEWS to write news in the proper news directory when the snews flag is set. Fix supplied by Kai-Uwe Rommel. Applied numerous minor fixes to RNEWS supplied by Kai-Uwe Rommel. Corrected EXPIRE to properly expiring one news group via the -n flag; fix supplied by Kai-Uwe Rommel. UUPOLL would be confused by 25 hour days caused by the end of Daylight savings time and attempt to poll continuously during the last hour of such a day. Corrected UUPOLL to realize not all days are created equal, and to correctly compute the next poll as the first poll of the following days. Altered numerous files to be unbuffered, saving on memory and reducing memory to memory copying of data. Deleting extra lock files was a major performance hit under OS/2 with UNDELETE processing enabled. Corrected UUCICO and UUXQT lock processing to not lock systems without reason. Suppressed closing UUCICO warning message about unable to connect to remote when the program was only answering the phone. Made UUCICO 'G' protocol use packets of fixed size to be more compatible with System V Release 4 UUCP. Made unique entries in the modem (*.MDM) file for entries for the ''g", "G", and "v" protocol options. Also added largepacket modem file option for "g" protocol to enable large packet processing under this protocol. Added new UUCICO 'v' protocol, which is 'g' protocol with optionally large (512) byte variable length packets. This protocol is only supported by other UUPC/extended systems. Corrected two problem with 'g' protocol start-up, from problem descriptions provided by Ian Lance Taylor, author of Taylor UUCP. Both fixes provide for insuring one system does not get ahead of the other, that is one system thinks it has initialized the connection when the other has not. Corrected UUCICO to not abort when fields are missing from the SYSTEMS file. This was based on an original fix by Eugene Nesterenko, Moscow, Russia. Corrected various UUCICO start-up error messages to display at debug level 0, not 1. Thanks to Bill Plummer for pointing this out. UUCICO would previously reject anonymous UUCP connections if the local system was running a high debug level. Corrected UUCICO to not confuse local and remote debug levels. Modified UUCICO to use a single data transfer buffer for data input and output as well as a command buffer, thus allowing this buffer to be bigger. Modified UUNAME to accept the debug level (-x) option; this was embarrassing since the upgrade instructions specifically said to use this option to determine obsolete keywords in the UUPC.RC file. Corrected UUXQT to send mail to the originator of a UUX job, not the local postmaster; also corrected UUXQT to not mangle the dummy input file name NUL and then be unable to open the mangled name. Fixes supplied by Charles R. (C. R.) Oldham of Arizona State University. Corrected UUSUB to reset the starting time of statistics collection when clearing all totals. Corrected UUXQT to report why RMAIL dies, not just that it failed. Correct RMAIL to not close its own log file, instead leaving this task to the common logging functions. Enhancements Dave Watt ported the entire source to Windows/NT. Note this platform has been not been tested, and executables are not supplied at this time. Problems are specifically known to exist in creation of the HOSTSTATUS file. Dave Watt also wrote DESQView support. UUPOLL and UUCICO give up the CPU when idle. Added a number of new sample configuration sample files, including a sample PERMISSN file and copies of several files used on kendra. Modified configuration file routines and expand_path() to use run time library supplied functions to normalize directory paths; this allows determining the path on drives other than the current drive. Note: Because of this change, placing floppy diskette drive letters in the PERMISSN file can cause the system to hang when it attempts to determine the current directory on the drive. Rewrote the OS/2 versions of UUIO, UUCLEAN and WAITING commands into REXX, made enhancements including using the UUPC/extended environment variables and aging files based on size. Added MAILCHEK command from Evan Champion to provide running report of mail waiting in an OS/2 window using Visual REXX. (This command does not exist under DOS.) Modified FOPEN() to automatically retry failed file opens for 20 seconds if the error is a sharing violation. Also modified openline() and lock_system() to not use this retry processing. Moved HOSTATUS file from spool directory to configuration directory, and moved news ACTIVE file from news directory to configuration directory. This allows easily backing up these files without backing up the news or spool directories. Modified majority of permanent string allocations to use newly written routine strpool(), which allocates memory in larger blocks, thus bypassing malloc() space overhead. Routine also searches duplicates in strings to avoid allocating the same string twice. If running at debug level 2 or above, a summary message of the memory used (and saved) is printed. Also, added new boolean option SpeedOverMemory to bypass the duplicate string scan on slower systems. Wrote support for a system wide user aliases file. This file, used only by RMAIL, allows forwarding for users and/or mailing lists to be defined without adding the local address to the PASSWD file, resulting in improved efficiency for other programs which use the PASSWD file such as MAIL and UUCICO. Use of the system wide alias file also eliminates the need for dummy home directories containing forward files, resulting 4 kilobytes disk savings per forwarded user. This support was based on a prototype supplied by Russ Nelson. Modified MAIL to print the numbers of items deleted by the delete command on one line to keep the screen from scrolling madly. Also, items previously deleted are not listed a second time. Added number items in the mailbox to the MAIL status command. Added "Path:", "Lines:", and "References:" to the list of items ignored by the internal mail pager used by the print command. Under OS/2 and DOS 4.0 or above, the internal pager now uses the true screen size to determine the number of lines to scroll. This allows exploiting 50 VGA screens or odd-sized OS/2 windows. Modified loading of ACTIVE file by news processing to not build directories for empty news groups. So long as the target directories are build by the routine posting news (i.e. RNEWS uses FOPEN()), then the directories will be created on demand. Enhanced EXPIRE to report bytes and articles processed, including totals for data purged, moved, or left eating disk space. Running EXPIRE at debug level 2 (-x 2) will report this information on a per group level. Modified UUPOLL to report when the UUCLEAN command is scheduled to next run at startup. Modified UUCICO processing enabled by the syslog option to work with the multitask option. Specifically, the SYSLOG is only opened when needed in multitasking mode and closed immediately. Modified OS/2 communications support to show communications port errors in English. Also added a ShowModem() function to OS/2 communications support to show modem status in English. Under OS/2, increased modem recover time from 0.5 seconds to 2.0 seconds after hanging up the telephone.