Changes since 6.0.192... SET TCP UCX-PORT-BUG command added. sdata() windowing loop to send packets could go too far if ACKs had arrived out of order. Fixed in nxtpkt(). 9 Dec 96. SET SEND DOUBLE-CHAR and SET RECEIVE IGNORE-CHAR added, for transferring files with Honeywell DPS-6, and/or thru an Arpanet TAC. 10 Dec 96. ADD SEND-LIST followed by MOVE did not delete original files. Fixed in ckuusr.c, 11 Dec 96. When C-K is in local mode, and sending a file using Kermit protocol, and sending an auto-upload string in advance, make it pause for 1.5 seconds to give the remote Kermit time to start up; otherwise, since all the ioctls at startup time result in clearing the input buffer, the first packet is lost and we have to wait a long time for the timeout to kick off the transfer. 1.5 sec vs 8 sec. On the other hand, if the remote Kermit is already started, this is a needless delay. OK, so make it 400 msec. This doesn't fix the problem in the default case (unless the remote system is really fast), but at least now there is a command-level workaround for the user: "set proto kermit {kermit -YQqr} {kermit -YQqr}", to make the remote Kermit start up faster; 0.4 sec should be enough time to enter packet mode. ckcpro.w, 15 Dec 96. Added EDIT, SET EDITOR, SHOW EDITOR. This required adding a new parsing function, cmiofi(), to parse either the name of an existing file or the name of a new file to be created. SET EDITOR can not be executed by APC unless APC is UNCHECKED, otherwise "edit foo" might become "delete foo". If the EDIT command is given without a filespec, then if a previous filespec had been given to an EDIT command, it is used; if not, the editor is started without a file. If a filespec is given, the editor is started on that file, and the filespec is remembered for subsequent EDIT commands. ckuusr.h, ckuus[r235].c, ckucmd.[ch], 15 Dec 96. Changed \v(filespec) to contain fully qualified filenames rather than relative ones. This allows \v(filespec) to actually find the file just downloaded, in case it went to a download directory, etc. This makes NETEDIT easy to do. ckuus[r6].c, 15 Dec 96. New CKVKER.COM and CKVOLD.COM from Lucas Hart fixes errors with GCC builds. 25 Dec 96. Added -DNONAWS to AT&T 3Bx entries. 16 Jan 97. Added and modified SCO Xenix entries from Fred Smith. 26 Jan 97. Added and modified HP-UX entries from Peter Eichhorn. 26 Jan 97. Added -DNOINADDRX to all DG/UX 5.40 makefile entries. 1 Feb 97. Added an entry for SINIX-Z (Intel) 5.42. 1 Feb 97. Added "generic-high-speed" and Meghertz X-Jack modem types, 5 Feb 97. Fix to VMS isdir() (free() being called prior to using the item that was freed), causing CD not to work on Alphas with VMS 6.2. ckvfio.c, 17 Feb 97. Fixed \feval(m%n) not to dump core if n == 0, ckuus5.c, date unk. References to S82 in newer-model Hayes modems causes ERROR. Removed. ckudia.c, date.unk. Added STRATUS #ifdefs to ckusig.c, from Kernie Brashier. 7 Mar 97. Added Greek file and terminal charset translation: ISO 8859-7, CP869, and ELOT 927. ck[cu]xla.[ch], ckuus[23457].c. 5 Apr 97. Made Stratus getchar/putchar changes to ckcdeb.h, ckudia.c, ckuus[457].c and uploaded to test area so Kernie B can make new builds. 6 Apr 97. Added IF OPEN ... ckuusr.h, ckuus[26].c. 6 Apr 97. Added \v(pid), UNIX only for now. ckcdeb.h, ckuusr.h, ckuus4.c. 6 Apr 97. Jeff's changes to sdata() (after sending each packet) and input() (when we get a timeout) to detect carrier loss. ckcfn[s2].c, 7 Apr 97. Added within #ifdef PIPESEND... CSEND, CRECEIVE, and SET XFER PIPES governing interpretation of incoming filenames that start with "!", and also command-line -s "!command", for UNIX. ckcdeb.h, ckcfn[s3].c, ckcpro.w, ckucmd.c, ckuusr.h, ckuus[r2345y].c, 9-13 Apr 97. Jeff also made them work for Windows 95/NT and OS/2. Removed spurious and redundant code from ckcmai.c to read the application file a second time (which is never executed because the application file name was zeroed out), and then removed the code to zero out the name, so the file can be deleted later if "set startup-file discard". 17 Apr 97. Added code to enforce that pipe transfers can be done only with Kermit protocol. ckcfns.c, ckuusr.c, ckuusy.c, 17 Apr 97. NOTE: Actually, it is perfectly possible to receive to a pipe using XYZMODEM in K95, but since it is not possible to send from one (because these protocols use fseek to recover from errors and you can't fseek into a pipe), we just say "use Kermit". Added SET SEND FILTER and got it working -- needs a LOT of testing. ckuusr.h, ckuus3.c, etc etc, 17 Apr 97. Added \fcommand() and \frawcommand(); ckuusr.h, ckuus4.c, 18 Apr 97. Added \v(filename) -- current filename while sending and receiving -- and \v(filenumber) -- the current file number. 19 Apr 97. Overhauled the as-name code to provide for filename templates using \v(filename), \v(filenumber), etc, as well as \function()s... 19 Apr 97. Added \v(pexitstat) -- exit status of most recent process started by zxcmd, zshcmd, or ttruncmd(). ckuusr.h, ckuus4.c, ckufio.c, ckutio.c. 20 apr 97. Overhauled process-oriented routines in ckufio.c to give a proper return code and to set the pexitstat value. In particular, zclosf() now fails if the closed process did not return an exit code of 0. 20 apr 97. In working on the previous item, discovered that I could use wait() rather than waitpid() in ttruncmd(), and since wait() is totally portable, I enabled REDIRECT for all UNIX implementations as well as OS/2 & Windows. ckutio.c, ckcdeb.h. 20 Apr 97. Added tests to the protocol module to see whether closing the input file fails, which is what happens if we are using a pipe and or filter, and the process's return code indicates failure. In this case we set the "cxseen" flag which forces a failure condition on a per-file basis (in case of wildcard transfers with send-filter), which is reflected in BOTH Kermits. ckcpro.w, 20 Apr 97. Added invisible CQ command for all but OS2 & Win32 as an abbreviation for CONNECT /QUIETLY. ckuusr.[ch], 20 Apr 97. Changed SET { SEND, RECEIVE } FILTER to use the same syntax as as-names -- \v(filename), string functions, etc, permitted -- rather than "%s". ckuus7.c, ckcfns.c, 20 Apr 97. Added \fstripx(), \fstripn(), \flop() string functions. ckuusr.h, ckuus4.c, 21 Apr 97. Added file-protection/permission attributes within #ifdef CK_PERM..#endif. Enabled for UNIX only. Sender puts system-dependent and system-independent versions into the A packet. The system-dependent permission string for UNIX is a 3-digit octal string, the low-order 12 bits of the st_mode member of the stat struct; we deliberately chop off the "file format" bits because they are probably not portable, nor do we convey the setuid/setgid bits, lock bit, sticky bit, etc; just the permissions. The file receiver checks to see if the sender has the same system ID; if so, it tries to decode the system-dependent permissions, if any; if not, it uses the generic ones and applies them to the owner field. The main purpose is to not have to "chmod +x" an executable file after transfer between two UNIXes. ckcdeb.h, ckcmai.c, ckufio.c, ckcfn3.c, and (for SET, REMOTE SET, and SHOW ATTRIBUTES) ckuus5.c, ckuus7.c. 22 Apr 97. Added three more variables: \v(p_ctl) Control prefix char \v(p_8bit) 8-bit prefix char (if parity not none) \v(p_rpt) Repeat prefix char (if repeat compression enabled) ckuusr.h, ckuus4.c. 22 Apr 97. Merged Jeff's changes into ckuusr.h, 24 Apr 97. Merged Jeff's changes into ckcker.h, ckcmai.c, 3 May 97. Merged Jeff's changes into ckuusr.c; noticed that much of the PIPESEND code was missing from Jeff's version. 3 May 97. Merged Jeff's changes into ckuusr.h, again, 3 May 97. Merged Jeff's changes into ckuus3.c, 3 May 97. Merged Jeff's changes into ckuus4.c, 3 May 97. Merged Jeff's changes into ckuus5.c, 3 May 97. Merged Jeff's changes into ckuus6.c, 3 May 97. Merged Jeff's changes into ckuusx.c, 3 May 97. Merged Jeff's changes into ckuusy.c, 3 May 97. Merged Jeff's changes into ckudia.c, except the ones involving makestr(), which should be entirely unnecessary -- or if they are, then makestr() should be fixed. 3 May 97. Merged Jeff's changes into ckcpro.w, 3 May 97. Merged Jeff's changes into ckucmd.c, 3 May 97. Merged Jeff's changes into ckcnet.c, 3 May 97. Merged Jeff's changes into ckuscr.c, 3 May 97. Merged Jeff's changes into ckufio.c, 3 May 97. Made sure remaining modules were all in sync. 3 May 97. Added CK_ENVIRONMENT for UNIX/Aegis/Plan9: ckcnet.h, ckutio.c, 4 May 97. Added SET TELNET ENVIRONMENT { OFF, ON }. This is needed so scripts can behave predictably, etc. Made OFF the default for UNIX, ON for OS/2 & friends so as not to change existing default behavior. Added this to SHOW NET. Also fixed a bug in Telnet NEW-ENVIRON negotiation. ckuusr.h, ckuus[234].c, ckcnet.c, 4 May 97. Added TELNET SEND_LOCATION negotiation, since a potential customer needed it desperately and asked about it just as I was working on the NEW-ENVIRON stuff. Untested, though, since I can't find a host that uses it. ckcnet.c, 4 May 97. Added SOLARIS25 symbol and makefile entry for Solaris 2.5. Added support for 134.5 and 1800 bps. Enabled 134.5, 1800, 57600, 76800, 115200, 230400 for Solaris 2.5. makefile, ckcdeb.h, ckutio.c, 4 May 97. Added casts to various function args (char vs uchar) to shut up picky compilers. ckcfn[s23].c, 4 May 97. Added a fix for ATT 7300 UNIX PC to allow use by root when C-Kermit installed setuid (e.g. to uucp), since System V R0 does not save original uid, from Randolph J Herber . ckutio.c, 4 May 97. Added a new makefile entry for AT&T UNIX 3.51m, which added hardware flow control for the AT&T 7300, resulting in a file-transfer performance boost of about 30%. Randolph J Herber, ckutio.c, 4 May 97. Added regular POSIX-style high speeds for Linux 1.2 and later, from Ted Ts'o . This involved reconciling several different and conflicting patches from the PATCHES file. Linux C-Kermit now supports serial speeds up to 460800bps. ckcdeb.h, ckuus3.c, ckutio.c, 4 May 97. Also, added a new makefile entry, "linux", for Linux 1.2 and later. The old entry was kept under the name "linux10", 4 May 97. Added support, makefile entry, and designer herald for OpenBSD, from Todd Miller , ckuver.h, makefile, 4 May 97. All patches from the PATCHES file are now installed. Fixes from Jeff to my fixes. ckudia.c, ckcmai.c, ckcker.h, 6 May 97. Redid Telnet Location after a closer reading of RFC779, added SET TELNET LOCATION, added location to SHOW NET. ckcnet.c, ckuus3.c, ckuus4.c, ckuusr.h, 6 May 97. The "send location" business works like this: . All code related to this feature is in #ifdef CK_SNDLOC, which is defined by default for all platforms (in ckcnet.h). . When Kermit starts, sysinit() does makestr(tn_loc,getenv("LOCATION")), so this needs to be added to all the non-UNIX sysinit()'s, perhaps using other more appropriate environment variable names, if any exist. . If tn_loc is not NULL, then tn_ini() sends WILL SEND-LOCATION. If the server says DO SEND-LOCATION, Kermit sends the string in an SB. . The C-Kermit user can change the location with SET TELNET LOCATION, and can defeat this feature by setting the location to the empty string. . If sysinit() does not fill in the initial value, the user can still use this feature by giving a SET TELNET LOCATION string prior to making the connection. Added SHOW TELNET since I keep typing it all the time anyway, and updated help text, ckuusr.h, ckuus[245].c, 6 May 97. Also made numerous corrections to help text, some of which involved moving feature-selection features (CK_ENVIRONMENT and CK_SNDLOC) from ckcnet.h to ckcdeb.h. 6 May 97. Fix typos in yesterday's changes. ckcdeb.h, ckcnet.c, 7 May 97. Removed date-dependent dial-number hacks for France and Finland, since the dates are long past. ckuus6.c, 7 May 97. Finished SET DIAL { LC-PREFIX, LC-SUFFIX }. Changed this from LOCAL-PREFIX, LOCAL-SUFFIX because LOCAL is too long to type all the time and we already had a SET DIAL LOCAL-AREA-CODE (albeit invisible). The original names are still there but invisible. 7 May 97. Added SET DIAL LC-AREA-CODES [ ] and display of it in SHOW DIAL. ckuusr.h, ckuus[234].c, 8 May 97. Filled in callisld() to return codes differentiating among (0) regular local calls, (1) long-distance calls, and (2) local calls that still must dial the area code, and changed dncvt() to use these codes for both well-formed portable phone numbers and free-form portable numbers. Also added code for local prefix and suffix for free-form portable numbers. ckuus6.c, 8 May 97. Add SET DIAL FORCE-LONG-DISTANCE { ON, OFF }. 8 May 97. ckuusr.h, ckuus[246].c. Automatically set the above to ON for SET DIAL COUNTRY-CODE 33 (France). ckuus3.c, 8 May 97. Fixed typo in #ifdef for "set speed 19200". ckuus3.c, 11 May 97. Added commands for modem speaker control, 11 May 97: Defined symbols in ckuusr.h. Variables defined in ckudia.c: int mdmspk (speaker on off) int mdmvol (modem volume) char * dialspon (speaker on command) char * dialspoff (speaker off command) char * dialvol1 (volume low command) char * dialvol2 (volume medium command) char * dialvol3 (volume high command) Added keyword parsing to ckuus3.c: SET MODEM SPEAKER { ON, OFF } SET MODEM VOLUME { HIGH, MEDIUM, LOW } Added modem command parsing, ckuus3.c: SET MODEM COMMAND { SPEAKER-ON, SPEAKER-OFF } SET MODEM COMMAND { VOLUME-HIGH, VOLUME-MEDIUM, VOLUME-LOW } Added these fields to all MDMINF structs in ckcker.h and ckudia.c. Changed name of dial_str[] keyword table to mdmcmd[] because the original was in conflict with a MDMINF struct name, ckuus3.c. Filled in SHOW MODEM to show all these values, adjusted pagination, ckuus3.c. Filled in HELP SET MODEM, ckuus2.c. Added semantics to ckudia.c. Fixed errors in yesterday's work. ckuus3.c, ckudia.c, 12 May 97. Added GENERIC-HIGH-SPEED to MINIDIAL selection. Also, USER-DEFINED was supposed to be there too, but that was only halfway done. ckudia.c, 12 May 97. Change SET MODEM CAPABILITIES to set or unset SPEED-MATCHING automatically based on whether SB was included among the capabilities. ckuus3.c, 12 May 97. Added support for the following new built-in modem types: . QuickComm Spirit II . Motorola Montana . Compaq Data+Fax (e.g. in Presario) . Fujitsu Fax/Modem Adpater . Megahertz AT&T V.34 . SupraSonic V288+ . Best Data ckudia.c, 12 May 1997. Changed speaker and volume commands to use multiple keywords, not dashes, like for EC and DC. ckuusr.h, ckuus3.c, 13 May 97. Added SET TERMINAL KEYBOARD-MODE { NORMAL, EMACS, HEBREW, RUSSIAN }. ckuusr.h, ckuus[27].c. Fixed HELP text for SET MODEM { SPEAKER, VOLUME }. ckuus2.c, 13 May 97. Added support for more new modem types: . AT&T Secure Data STU-III Model 1900 (untested) . AT&T Secure Data STU-III Model 1910 (untested) These are scrambling modems used at high-security places, which only talk to each other. Also, rearranged SET MODEM TYPE keywords that were out of alphabetical order. ckudia.c, 13 May 97. Added E1V1 to all Hayes-like modem init strings for OS/2 and Windows, to make sure we parse word result codes -- this eliminates lots of confusion caused by incompatible digit result codes. I didn't do this for UNIX, VMS, etc, because it is bad to reconfigure shared modems. ckudia.c, 14 May 97. Added DIA_TAPI (= 34), "TAPI reported failure - reason unknown", to DIAL failure codes and messages, and changed TAPI dialing failure code to set this reason. ckcker.h, ckudia.c, 14 May 97. Added missing cases 15, 16, 17, 19, 25, 45, 107 for USR digit result codes. ckudia.c, 14 May 97. Fix for SCRIPT command from Gerhard Rueckle at FH Darmstadt, to filter out NULs from session log (otherwise whole lines were getting lost due to use of str*() functions). ckuscr.c, 15 May 97. Discovered that S_I[RWX]OTH stat.h symbols for file permissions could not be depended upon, and so added more #ifdefs to account for this in zsattr(). Also, realized it's silly to use the "world" permissions field for the "generic" permission (even though that's what the book says); changed it to use the "user" (self) field. ckufio.c, 16 May 97. After spending 2 hours on the phone with a user, revised the AT&T STU III modem commands by trial and error until they worked. The manuals and other info from AT&T were wrong. ckudia.c, 17 May 97. Added \%* variable, used only in macros, replaced by all the args that the current macro was called with (1..argc). ckuus4.c, 18 May 97. Added "IF <=" and "IF >=". ckuusr.h, ckuus6.c, 18 May 97. Changed DIRECTORY, general case (mostly UNIX), to use cmtxt() rather than cmdir(), to allow free-form directory commands, inclusion of switches for system directory command, redirectors, etc. ckuus6.c, 18 May 97. Added SET FILE EOF { CTRL-Z, LENGTH }. Applies only to text-mode transfers. When set to CTRL-Z, this makes the file sender treat the first Ctrl-Z in the input file as the end of file (EOF) (NOTE: this never worked before), and it makes the file receiver tack a Ctrl-Z onto the end of the output file if it does not already end with Ctrl-Z. This feature is included for any platform for which CK_CTRLZ is defined during compilation; by default it is defined only for OS2. Added to SHOW FILE, reformatted SHOW FILE. ckcdeb.h, ckcker.h, ckuus[2347].c, ckcfns.c, ckufio.c, 18 May 97. Changed CALL macro to not SET MODEM TYPE if given type is the same as the current type, thus avoiding overwriting customizations. Also, don't SET SPEED or LINE if given values are the same as current ones. ckermit.ini, 18 May 97. Examined the problem in which we DIAL a modem, disconnect, then SET HOST or TELNET, then HANGUP, and Kermit sends +++ATHO. There is no good way to avoid this, because this case can't reliably be distinguished from the case in which the user does SET HOST , SET MODEM TYPE , DIAL. In both cases we have a valid modem type selected and we have a network connection. If the user wants to DIAL and then later make a regular network connection, she will have to SET MODEM TYPE NONE or SET MODEM HANGUP RS232 to avoid this phenomenon. Fixed IF EXIST and IF DIRECTORY to properly strip braces from around their arguments, so "if directory {C:\Program Files}", etc, would work as expected. However, this means that if the file or directory name is actually enclosed in braces, the braces must be doubled. ckuus6.c, 18 May 97. Fixed problem that occurred if "set host nonexistent-host" followed by certain commands like SEND; the original modem type was not restored and ttopen() thought that it still had a network hostname. ckuus7.c, 18 May 97. Fixed HELP SET RECEIVE PATHNAMES to show default is OFF, not ON. ckuus2.c, 18 May 97. Fixed SET EDITOR and SET BROWSER to use PATH in UNIX. ckuus3.c, 18 May 97. Fixed cmifip() to make its own safe copy of the PATH string, so the caller does not have do this every time, and simplified calls to cmifip(), consolidating OS/2 and UNIX calls. ckucmd.c, ckuus3.c, 18 May 97. Got rid of the old cmdir() function, replaced it by a new one that is just a wrapper for cmifi() that makes cmifi() parse only directory names and handle completion and ?-file-lists. This affects the CD, SET SERVER GET-PATH, SET TEMP-DIRECTORY, SET FILE DOWNLOAD-DIR, and SPACE commands. ckucmd.h, ckucmd.c, 19 May 97. Fix definition of TRMBUFL (termcap buffer length), and use it when allocating the termcap buffer, trmbuf. ckcdeb.h, ckuusx.c, 19 May 97. Don't print "Warning: terminal type unknown, Fullscreen file transfer display disabled" if C-Kermit is in remote mode. ckuusx.c, 19 May 97. Allow GET and RECEIVE as-names to override RECEIVE PATHNAMES setting. rcvfil(), ckcfns.c, 19 May 97. The READ command was being overly picky about "last line lacks terminator". I changed it to allow the last or only line to lack a terminator. This is a sneaky way of allowing even binary files to be read into a variable (all at once) if the READ buffer is set large enough (and the file does not contain NUL characters). doask(), ckuus6.c, 19 May 97. The braces problem: Since braces are used in function calls to indicate grouping, there is no way to pass literal braces to the function itself. Solution: Define a variable containing the string that has braces. Example: define \%a ab{cd echo \fsubstring(\%a) ab{cd If the string is to start with a leading brace and end with a closing brace, then double braces must appear around the string (which itself is enclosed in braces): define \%a {{{foo}}} echo \fsubstring(\%a) {foo} This also works for any other kind of string: define \%a {{ab{cd}} echo \fsubstring(\%a) ab{cd No changes here -- this is how it has always worked, but was not documented before. Lots of users try to write scripts for Telnet logins, but use "telnet" rather than "set host"... eventually they log out or close the connection, and then when the INPUT command executes, it says "?Can't condition line for INPUT", which is singularly uninformative. I made INPUT issue a better message when it knows the connection is not open (CK_TTYFD is defined and ttyfd == -1). doinput(), ckuus4.c, 19 May 97. Added SET INPUT AUTODOWNLOAD { ON, OFF } (to control autodownload during INPUT separately from during CONNECT) and SHOW INPUT. ckuusr.h, ckuus[r2457].c, 19 May 97. Changed CD to use CDPATH, like ksh. If the CDPATH environment variable is defined, then it is used: if a CD command is given for a relative directory, then if it is not found in the current directory, the CD path is searched for a directory that contains a directory of the given name. ckucmd.c, ckuus5.c, 20 May 97. Rearranged #ifdefs in ckcdeb.h so CK_ENVIRONMENT would take effect for UNIX. 20 May 97. Added CGET command (GET to pipe). ckuusr.h, ckuusr.c. 21 May 97. Added SET EOF as invisible synonym for SET FILE EOF. ckuusr.h, ckuus[37].c, 21 May 97. Fixed UNIX version of CD, when following CDPATH, to treat an empty member as the current directory, rather than root (by definition of CDPATH). ckucmd.c, 22 May 97. Changed netopen() to supply "23" as the default service, rather than "telnet", to sidestep all the problems we have been having with getservbyname() returning the service number with its bytes swapped. ckcnet.c, 23 May 97. Installed patches for CMUIP from Wolfgang Moeller . ckutio.c, 23 May 97. Some fixes for Wollongong Pathway from Ray Hunter. ckcnet.c, ckvtio.c, 23 May 97. Some new #ifdefs for UCX / DECC from Martin Zinser. ckcnet.c, 23 May 97. Added CHECK NETWORK before trying to SET NETWORK DIRECTORY. ckermit.ini, 23 May 97. Added support for AT&T KeepinTouch modem card. Moved modem-type definitions to ckuusr.h. ckuusr.h, ckudia.c, 27 May 97. Fixed SET EDITOR and SET BROWSER to convert filename to a full pathname in case it wasn't already. Removed SET BROWSER from all implementations except OS/2 and Windows. ckuusr.c, ckuus3.c, 28 May 97. SET EXIT WARNING didn't work properly when connection was opened with -l, -j, or -J on command line. Fixed in ckuusy.c, 29 May 97. Fixed SET EDITOR to use EDITOR environment variable as default. Fixed SET PROTOCOL not to parse external command fields if protocol is Kermit (it never should have); Kermit isn't an external protocol. ckuus3.c, 1 Jun 97. Added "autoserver" command, 1 Jun 97: . It is not part of ptab[], since is specific to Kermit protocol. . Initialize char * srvstring to "kermit -x" in initproto(), ckcmai.c. . Added new 3rd field to SET PROTOCOL KERMIT for server string, ckuus3.c. . Updated SHOW PROTOCOL to display the server string, ckuus4.c. . Added code to send server string when GET or REMOTE are given, ckcpro.w. . Updated help message for SET PROTOCOL, ckuus2.c. Added -O command-line option: "be a server, but execute Only One command". ckuusy.c, 1 Jun 97. Added a new keyword flag, CM_HLP, which (when combined with CM_INV), means that the keyword, which is normally invisible, becomes visible in a HELP command. Adjusted calling conventions and prototypes for various command parsing functions accordingly. ckucmd.h, ckucmd.c, 2 Jun 97. Added new keywords to top-level cmdtab[]: FUNCTIONS and KVERBS with CM_HLP flag, visible only from HELP. ckuusr.c, 2 Jun 97. Filled in help text for each function (61 of them), and fixed some mistakes in the function keyword table, fnctab[]. Adds about 8K. ckuus[24].c, 2 Jun 97. Added reference to HELP FUNCTION to SHOW FUNCTION. ckuus5.c, 2 Jun 97. Added \v(regname), \v(regorg), \v(regnum), invisible variables for registration info; they just call get_reg_blah() from ckoetc.c. ckuusr.h, ckuus4.c, 2 Jun 97. Added \v(xprogram), the specific program name: "K-95", "K/2", or "C-Kermit". ckuusr.h, ckuus4.c, 3 Jun 97. From Jeff, 5 Jun 97: . \v(line) changed to return Kermit form of TAPI device name (no blanks etc). . Fix for internal coding error with IF EQUAL s1 s2. Added IF TAPI. ckuusr.h, ckuus6.c, 5 Jun 97. Seemingly minor problems with cmdir() directory parsing fixed, 5 Jun 97: 1. "cd /" would tend to fail because "too many directories match"; fixed in cmdir() by not calling zxpand if we are parsing a directory name and it does not contain any wildcard characters. 2. "cd xxx" would not supply the trailing directory separator when completion was successful. Fixed in ckucmd.c. 3. "cd xxx?" could produce unbalanced columns, etc. 4. "cd xxx" would fail even if only one directory started with "xxx", if a regular file also started with "xxx". Problems 3 and 4 resulted from the fact that "x = zxpand(string);" returned the number of *all* matching files, not just the number of directories that matched. But since it's far too late to change the API to add a new function to return a list of directories, or to add an argument to zxpand(), I used a horrible hack: cmdir() sets a global variable, dironly, if a list of only directories is desired. If dironly == 0, zxpand() behaves as before. This was implemented in the UNIX version of zxpand() in ckufio.c, but nowhere else, although it is easy enough to add (but not to test!) in OS-9, etc. If dironly is to be set prior to calling to zxpand(), but MUST be restored immediately after so as not to disrupt other legitimate callers throughout the code. Thus, this usage is strictly confined to cmdir() (really cmifi2()) and not documented in the API. 5. "cd xxx" left a space at the end when completion was successful. It has to, in case there is a subsequent field. Peter Eichhorn asked that it stop at the "/" in case there are subdirectories, but how would we know (a) that there *are* subdirectories without descending through the entire directory tree, which could take hours, and (b) that even if there were subdirectories, that this was not the directory the user wanted to CD to? So no action here. BTW, note that "if directory blah" does not use cmdir(); if it did, and "blah" was not a directory, we'd get a parse error. Added SET BPRINTER (bidirectional printer port) for K95 only; Jeff will fill in details; ckuusr.[ch], ckuus3.c, 6 Jun 97. Full syntax is: SET BPRINTER [ port speed [ parity [ flow ] ] ]. Fixed help text for PRINT and SET PRINTER. Put BPRINTER code in #ifdef BPRINT. 7 Jun 97. Added options to SET EDITOR and SET BROWSER. ckuus[r35].c, 8 Jun 97. Added \v(editor), \v(editopts), \v(editfile), \v(browser), \v(browsopts), \v(browsurl). ckuusr.h, ckuus4.c, 8 Jun 97. Added BROWSE command for UNIX & K95. ckcdeb.h, ckuusr.h, ckuusr.c, 8 Jun 97. Changed ^W to delete back to nonalphanum rather than back to space. ckucmd.c, 8 Jun 97. Updated help text for today's changes. ckuus2.c, 8 Jun 97. Fix GETOK -- it had garbage for the default prompt. ckuus6.c, 17 Jun 97. Added STATISTICS /BRIEF for Peter Eichhorn. ckuusr.[ch], ckuus[24].c, 18 Jun 97. Fixed Telnet SEND LOCATION negotiation to send WONT, rather than WILL, if we don't have a location, in response to DO LOCATION. ckcnet.c, 18 Jun 97. Fixed EDIT and BROWSE to handle %1 (OS/2 & Windows only) and %s in the options string as a filename placeholder. ckuusr.c, 18 Jun 97. Added array initializers, e.g. "declare \&a[3] {value1} {value2} {value3}". Initializers are (a) optional, (b) start with element 1, (c) can only be given up to the size of the array, (d) must be enclosed in braces if they contain spaces, (e) are stored literally and not evaluated. ckuusr.c, 18 Jun 97. Added OS-9 support for incoming TCP/IP connections, from Steve Rance . OS-9 has no select() call, so he made a dummy one. ckcnet.c, 19 Jun 97. Defined BIGBUFOK for AIX on RISC. ckcdeb.h, 20 Jun 97. ---1.1.13--- Installed MINIX 2.0 changes from Terry McConnel, Math Dept, Syracuse U, trmcconn@syr.edu, plus a new makefile target. cku[tf]io.c, ckuus6.c, ckucmd.c, makefile, 28 Jun 97. Added zfnqfp() (the unspellable function) for AOS/VS. Also zmkdir() and isdir(), plus the changes for the new cmdir() support. ckcdeb.h, ckuus3.c, ckuus6.c, ckdfio.c, 29 Jun 97. Removed spurious "extern int delay" from ckcfn2.c. 29 Jun 97. Filled in MKDIR and RMDIR commands for AOS/VS. But rmdir() doesn't work for some unknown reason; "perror" always says "30 End of File". The AOS/VS C programming docs do not list any way to delete a directory. So I changed it to system("delete blah"), where blah is the directory name. It works, but it doesn't return a status code, and it also removes regular files. Meanwhile, AOS/VS stat() sometimes crashes. There's nothing I can do about it, and no pattern I can find as to what conditions make it happen. ckuusr.c, 30 Jun 97. Changed sfile() not to send filename as FILE001, etc, if an as-name is defined as a variable that has no value. This was a bug introduced in the template code. "send \%1 \%2" would cause this to happen (as in the BSEND macro). ckcfns.c, ckermit2.upd, 30 Jun 97. Fixed DG isdir() to not call stat(), to prevent crashing -- now it does the appropriate VS syscall directly. Also fixed DG iswild() not to return false positives because of ^, which is like .. in UNIX. ckdfio.c, 1 Jul 97. Fixed cmdir() for DG to not append : to directory name during completion, because chdir() does not work if you do that. ckucmd.c, 1 Jul 97. END from inside SWITCH did not work right -- SWITCH, although implemented as a macro internally, should not count as a macro level to END. This was already handled correctly for FOR, WHILE, and XIF. Added SWITCH to the list. ckuus5.c, 3 Jul 97. Added cmswi(), which is just like cmkey(), but for switches (optional keywords that begin with "/"). If the CM_ARG bit is set in the keyword table, then the switch takes an argument, separated by ":" or "=", e.g. /PROTOCOL:KERMIT. Otherwise, it doesn't, e.g. /BINARY. ckucmd.[ch], with some testing material (under the TYPE command) in ckuusr.[ch], 4 Jul 97. Added chained parse fields. New function cmfdb(), takes the address of an FDB struct (containing parse function code plus inputs for the function -- help message text, default, etc), as an arg, which may contain a pointer to another one, and so on, until the "next-FDB" pointer is null. If user's input is not parsed successfully by the first, then the second is tried, and so on to the end of the chain, at which point a parse error is returned. ESC and ? work. ckucmd.[ch], 4 Jul 97. (What does FDB stand for? I don't remember; that's what they were called in TOPS-20... Function Descriptor Block?) Removed testing material from the TYPE command. Added experimental XSEND command, which is like SEND, but takes all sorts of switches: /BINARY, /AS-NAME:xxx, etc. It replaces the old SEND, plus CSEND and PSEND, as well as MOVE and the BSEND and TSEND macros. Filled in the actions for all switches. XSEND is implemented entirely in doxsend(). ckuusr.[ch], 5 Jul 97. Finished testing & debugging XSEND command. Verified that when given no switches, it behaves exactly like the SEND command, and so repaced the SEND command with doxsend(), leaving the old code still there for CSEND, PSEND, etc, so they can still be used. The new arrangement allows more and more variations on SEND to be accomplished without adding top-level commands. It also allows combinations that were not possible before, such as /PRINT or /MAIL with a SEND-LIST, SEND /PRINT /DELETE or SEND /COMMAND /MAIL:address. Changed MOVE, CSEND, MAIL, and RESEND to use doxsend(), since they have the same format as SEND. Left MSEND, MMOVE separate. Added description of switches to ckermit2.upd, section 1.5, and new section 4.7 on SEND command. Changed HELP SEND text. 6 Jul 97. Same treatment for RECEIVE / CRECEIVE; GET / REGET / CGET / RETRIEVE. ckuus[r6].c, ckermit2.upd, 7 Jul 97. Updated help text for RECEIVE and GET. ckuus2.c, 8 Jul 97. Updated section 4.2 of ckermit2.upd to show new forms. 8 Jul 97. Added switches to MSEND and MMOVE, combined code into doxsend(). Made many of the stupider command names (CGET, RETRIEVE, etc) invisible; now top-level ?-help looks a lot better. ckuusr.c, 8 Jul 97. Corrections and refinements to switch code. Fix MSEND/MMOVE when used with ZMODEM, when used with /MAIL, etc. Eliminate ambiguity about what happens when a switch that must take an arg is followed by a space. The rule is: if a switch name ends in : or =, then if the next character is a space, that means an empty value has been given, and the next field is parsed. ckuusr.c, ckucmd.c, 9 Jul 97. #ifdef adjustments for HP-UX 10.x and Digital UNIX 3.2/4.0 from Jonathan Kamens . ckcdeb.h, ckufio.c, ckutio.c, 12 Jul 97. Fixes (or stabs in the dark at fixes) for recently reported VMS problems; see notes in ckvtio.c for edit 091. 12 Jul 97. Added some missing #ifdefs for protocol switching and pipesend to the recent switch-parsing code. ckuus[r6].c, 12 Jul 97. Added some missing prototypes for recently added command-parsing functions. ckuusr.h, ckucmd.h, 12 Jul 97. --Alpha.01-- Added APC check to MOVE/MMOVE -- we don't want APC strings stealing files from people... ckuusr.c, 13 Jul 97. Now that we have all the pipesend / receive filter stuff in place, it turned out to be easy to rearrange the mail-receiving code to pipe the incoming material directly into the mail program (in UNIX). This has the advantages of (a) not requiring a temp file, and (b) allowing a normal subject in place of the filename. Temp files were bad not only because they required (a) space, and (b) writeability of the current directory, but also because using them could result in wiping out an existing file. So now: send /mail:whoever@xyz.com /as:{Hi there} oofa.txt when sent to C-K results in whoever@xyz.com receiving oofa.txt as email with subject "Hi there". ckcpro.w, ckcfns.c, 13 Jul 97. Added /SUBJECT: as a synonym for /AS-NAME:, and fixed a couple minor glitches related to mail. ckuusr.c, 13 Jul 97. Changed reception of print files (from REMOTE PRINT or SEND /PRINT) to use pipes also. UNIX only. ckcpro.w, ckcfns.c, 13 Jul 97. In response to people *still* complaining about exit warning when they swear the modem is not asserting CD... In hupok(), ttgmdm() returns an error. This can happen if we used to have carrier but now we don't and the device driver won't let us look at the device any more (e.g. Solaris 2.5). Previously, we always set needwarn to 1 here to be safe, but really, if CARRIER-WATCH is OFF, we already decided not to warn, so CARRIER-WATCH must be ON or AUTO, which *probably* means that we had CD on this connection before, and so if ttgmdm() fails now, it means we don't have it any more. So now let's try NOT warning when ttgmdm() returns an error. ckuus3.c, 13 Jul 97. Speaking of modems, in response to increasing requests for an option to ignore dialtone, added SET DIAL IGNORE-DIALTONE { ON, OFF } and SET MODEM COMMAND IGNORE-DIALTONE , and a new ignoredt member to struct MDMINF, etc etc. Untested, except that SET, SHOW, and HELP work OK. ckcker.h, ckuusr.h, ckuus[234].c, ckudia.c, 13 Jul 97. Back to VMS... Noticed that zxpand() would malloc() its array of filenames every time it was called, but nobody would ever free them. Fixed in ckvfio.c, 14 Jul 97. An off-by-one error in the switch parser caused the placeholder for highest- numbered switch value (SND_LBL) to go uninitialized, thereby making VMS C-Kermit send in labeled mode (depending what was in the uninitialized memory). Fixed in doxsend(), ckuusr.c, 14 Jul 97. Lots of changes to isdir() and cmdir() for VMS. The idea is to make directory parsing work as in UNIX, Windows, AOS/VS, etc, but it's much harder in VMS because a directory can be represented in many ways: a logical or device name, or [FOO.BAR], or DEV:[FOO.BAR], or [FOO]BAR.DIR;1, etc. This was about two days' work, with some help on isdir() from Mark Berryman. ckucmd.c, ckvfio.c, 15 Jul 97. Removed gratuitous message showing new directory from docd(). ckuus5.c, 15 Jul 97. Fixed UNIX "cd ~name" to work again -- I must have broken it recently. ckucmd.c, 15 Jul 97. Changed ckindex() to accept -1 as a "starting position" argument, meaning "length of string 2". ckcmai.c, 15 Jul 97. (NOTE: fix \frindex() to take advantage of this...) Amplifed, reorganized, and numbered ckuins.doc. 16 Jul 97. Attempted to add support for 57600, 76899, and 115200 bps for IRIX 6.2 (the first release of IRIX that supports these speeds). A previous attempt at doing this by adding -DPOSIX to the make was a disaster. This time I tried defining POSIX for IRIX62 within ckutio.c only around ttsspd() and ttgspd(), and also defined the BPS_xxx symbols for IRIX62 in ckcdeb.h. 16 Jul 97. Mike Freeman reported that login scripts didn't work in VMS. Evidently this was because a new check was added for ttyfd == -1, but VMS doesn't use file descriptors, and so ttyfd is always -1 there. Fixed doinput() in ckuus4.c to skip this test for VMS. 16 Jul 97. Found a few places where the protocol module was not setting the exit status code; hopefully caught them all. ckcfn2.c, 16 Jul 97. Nope, that wasn't it. The real problem was that the "what" variable was set to W_NOTHING until a protocol transfer actually had begun. So if we timed out on the first packet, ORing "what" into the exit status had no effect. Fixed in ckcpro.w by initializing what to 1 rather than W_NOTHING. 16 Jul 97. Changed "CD" (by itself) in VMS to simply chdir("SYS$LOGIN:"). ckvfio.c, 16 Jul 97. Fixed IF ALARM to make sure both time comparands are left-padded with "0"s so they compare correctly with strcmp(). ckuus6.c, 18 Jul 97. Previously MGET and GET were synonyms. But now the new GET syntax prevents the (little-known) feature in which you could GET a list of files, like "get oofa.txt *.ps /etc/motd". So now MGET has become a separate command that does allow this syntax (but no as-names). This also fixes a problem with "get xxx yyy" (i.e. as-name is yyy), resulting in "?Write permission denied - yyy". It also fixes a bug with "get {xxx yyy zzz}", in which the first "{" was not removed prior to sending the R packet. ckuusr.[ch], ckuus[26].c, 19 Jul 97. Added a note to top-level help about macro names. Changed built-in predefined names _forx, _whilex, etc, to be invisible so they don't show up in "do ?". ckuus5.c, 19 Jul 97. Corrections & updates to ckermit2.upd, 19 Jul 97. Fixed ANOTHER off-by-one error in the declarations of switch tables for SEND and GET (this was a bad one, causing core dumps). ckuus[r6], 19 Jul 97. ---Alpha.02--- James Cameron verifies the VMS problem with closing DECwindow on C-K is fixed. 20 Jul 97. Added cmdate() to parse a date and/or time. ckucmd.[ch], 20 Jul 97. Dale Dellutri says problem with hanging after "Communications disconnect" is fixed, but NO CARRIER message never shows up (as it always did in 5A(190)). Asked him for a debug log. 21 Jul 97. Added /BEFORE: and /AFTER: switches to SEND, using cmdate(). Also added /LARGER-THAN: and /SMALLER-THAN:. ckcfns.c now has a nice fileselect() routine that decides whether to send the file based on these switches. ckuusr.c, ckcfns.c, ckuus2.c, ckermit2.upd, 21 Jul 97. Added a crude pattern matcher, ckmatch(pattern,string), supporting only * and ? as metacharacters. ckcmai.c, 21 Jul 97. To test it, added IF MATCH . ckuusr.h, ckuus6.c, 21 Jul 97. Added /EXCEPT: to SEND. ckuus[r2].c, ckermit2.upd, 21 Jul 97. Fix #ifdefs so that CK_ENVIRONMENT is not defined unless TCPSOCKET is defined, to prevent unresolved externals at link time in non-TCP/IP UNIX builds. ckcdeb.h, 21 Jul 97. Add new updates for wait() argument (is it "int" or is it "union wait"?). ckutio.c, 21 Jul 97. Rearrange some lines in ckcnet.c so ucx_port_bug does not turn up undefined if we are using DECC, 21 Jul 97. Built on Digital UNIX 4.0 (where there is a warning about wait() that I can't seem to shut up) and 3.2 (no problem there). 21 Jul 97. Fixed numerous #ifdef errors regarding feature selection, many modules. 21 Jul 97. Shuffled some more #ifdefs and variable declarations to allow for NOICP build. Minor help text cleanups. Don't allow SEND /STARTING-AT:n for file groups. Many modules, 22 Jul 97. Fixed another (off-by-one) bug with transfer mode in VMS (it always insisted on receiving in labeled mode). ckuus6.c, 22 Jul 97. VMS C-Kermit would crash if given invalid command-line args detected in prescan() because fatal(), called to print the error message, could not print it because sysinit() had not yet been called to obtain the console channel. This mess really needs cleaning up. Meanwhile, I worked around it by having all the console i/o routines in VMS check first to make sure they have an open channel, and also to have main set a global flag "initflg" after return from sysinit() to indicate that sysinit has been done. If it hasn't, then fatal calls sysinit() first before trying to print any messages or exit. This is also important elsewhere in case (e.g.) we try to restore some systemish things that we haven't saved yet, e.g. tty modes or somesuch. ckcmai.c, ckuusx.c, ckvtio.c, 22 Jul 97. Fixed cmini() to not assume that buffers had already been malloc'd. ckucmd.c, 22 Jul 97. Got tired of having to remember to update version numbers, dates, etc, in so many places, so broke all these strings up into their component parts so that each one only has to be changed in one place, pretty much, and then added a routine, makever(), to put the various strings and numbers in the places where all the other routines expect to find them. ckcmai.c, 24 Jul 97. NOTE: this means that the ckxsys definition for Windows & OS/2 will need adjustment... Added \v(test) == "0" if this is not a test version of Kermit, or else the test version, e.g. "Alpha.03". ckuusr.h, ckuus4.c, 24 Jul 97. Added optional pattern for SHOW VARIABLES, e.g. "show var *ver*". Also, "show var x" shows all variables whose names start with x, etc. ckuus5.c, 24 Jul 97. Fixed a bug in the parsing of the LOCAL command. ckuus5.c, 24 Jul 97. The test for DELETE success/failure was wrong in the non-K95 case. Fixed in dodel(), ckuus6.c, 25 Jul 97. Added \fn2hex() and \fn2oct() to convert numbers to hex and octal. \fhexify() converts *strings* to hex, which is quite different. E.g. \fhex(16) = 3130, whereas \fn2hex(16) = 10. ckuusr.h, ckuus[24].c, 26 Jul 97. Changed default maximum packet buffer size to 290K if BIGBUFOK and DYNAMIC are both defined at compile time. This doesn't change the size of the executable, and the memory is allocated only if requested. ckcker.h, 26 Jul 97. Missing file display on RESEND after SEND, and SEND after RESEND behaved like RESEND. Fixed misplaced #ifdefs in doxsend. ckuusr.c, 26 Jul 97. Scenario: my current directory has a file that I can delete, but the directory itself lacks write permission. I try to receive a file into this directory that has the same name as an existing file, with FILE COLLISION set to BACKUP. The transfer fails, not because I can't overwrite the original file, but because I can't create the backup file. But when in local mode, the appropriate message does not make it to the file-transfer display. This took quite a bit of reworking how E packets work and where their messages are saved, but it seems OK now. If the user sees the new message ("Can't create backup file"), she can switch to SET FILE COLLISION OVERWRITE or APPEND, which work. ckcpro.w, ckcfn*.c, ckermit.bwr, 26 Jul 97. Things I should have thought of long ago dept, cont'd... Added a new internal variable, xferstat, that remembers the status of the most recent file transfer: -1 = no transfer yet, 1 = failure, 0 = success. Added this info, plus the text of the error packet that terminated an unsuccessful transfer, to the STATISTICS display. Also added variables for these: \v(xferstat) and \v(xfermsg). ckuusr.h, ckuus4.c, ckermit2.upd, 26 Jul 97. Cleaned up a bunch of internal messiness involving file-transfer failures. For example, clsof and clsif should not do all of their usual stuff if the file they are trying to close was never opened. In particular, they should not call fstats(), which writes messages to the transaction log and accumulates statistics. ckcpro.w, ckcfn[s23].c, ckuusx.c, 26 Jul 97. Simplified & corrected parsing of RETURN and added brace-stripping for the return value. ckuusr.c, 26 Jul 97. Added a BACK command, which means to "CD to my previous current directory". Very simple, not a stack -- so successive BACK commands just switch between two directories. ckuusr.[ch], ckuus[52].c, ckermit2.upd, 26 Jul 97. Added an optional switch, /RAW-SOCKET, to end of SET HOST / TELNET command. It can be given only if you first give a host and a port. When this switch is given, ttnproto is set to the new value, NP_TCPRAW. See ckermit2.upd 2.3.5. ckuus7.c, ckcnet.[ch], 26 Jul 97. Fixes to /raw-socket code from yesterday to make it actually work, and add display of this to SHOW NET. ckcnet.[ch], ckutio.c, ckuus4.c, 27 Jul 97. Fixes to epktmsg-related code from yesterday -- in some cases the pointer was not initialized, causing core dumps, etc. Many modules, 27 Jul 97. Added zgperm() to ckufio.c, UNIX only for now (protected by CK_PERMS), to get file modes/permissions. ckufio.c, ckcplm.doc, 27 Jul 97. Used zgperm() in rcvfil() in the file collision section. If the incoming file has the same name as an existing file, and we are going to create a new copy or overwrite the existing file, we get its permissions first and stuff them into the attribute structure when initializing it (in initattr()). If the sender puts its own (local-format) permissions in the A-packet, these will override. But if it doesn't, then the new file inherits the permissions of the old one. If there is no A-packet, the new file inherits the old file's permissions, but the new file gets the current date and time. If there is no file collision, there is no inheritance. ckcfn[s3].c, 27 Jul 97. Adjustments to ckcnet.h for DECC 5.5-002 (remove bzero/bcopy prototypes). 27 Jul 97. ---Alpha.03--- Fixed some bad buffer & pointer declarations in ckcmai.c when DYNAMIC not defined. 28 Jul 97. Changed SEND /EXCEPT: to allow a list of patterns, rather than just one. ckuus[r5].c, ckcfns.c, 29 Jul 97. Added SEND /NOT-AFTER: and /NOT-BEFORE: to get the {greater,less}-than-or-equal effect. ckuusr.[ch], ckuus2.c, 31 Jul 97. Added SET FLAG { ON, OFF } and IF FLAG. It's just a user-settable flag that's easy to test in scripts. ckuusr.[ch], ckuus[23].c, 1 Aug 97. Added { SEND, RECEIVE, GET, etc } /FILTER. ckuus[r26].c, 1 Aug 97. Fix from Jeff for reconnecting to a raw TCP socket without having the protocol switch to Telnet. ckcnet.c, 2 Aug 97. Changed dial module to echo commands if DIAL DISPLAY is ON but modem is not echoing them. ckudia.c, 2 Aug 97. Added a new member to struct MDMINF -- ini2, the last-minute init string, to be sent just prior to dialing. For compatibility with TAPI. ckcker.h, ckudia.c, 2 Aug 97. Added SET MODEM COMMAND PREDIAL-INIT to set the last-minute init string. ckuusr.h, ckuus[23].c, 2 Aug 97. Reported problem with PPI seems to be lost chars on output -- commands are OK. Added \v(sendlist) = number of entries in send-list. ckuusr.h, ckuus4.c, 2 Aug 97. Updated the TAP script to be more robust, etc. ckepage.ksc, 2 Aug 97. Added /PATHNAMES:{ON,OFF} and /FILENAMES:{CONVERTED,LITERAL} to SEND commands. SEND /PATHNAMES:ON also temporarily SETs FILE NAMES LITERAL. Noticed that more-prompting in the STATISTICS command was messed up. It turned out that the cmd_rows variable got set to 0 after a failed file transfer (and who knows what else!). Why? When an E packet is received, we have some new code to copy the error message to a "failure reason" buffer using strncpy. Well, the target buffer was being accessed thru a string pointer that was mistakenly declared as an array (it originally was an array, but later was changed to a pointer, and evidently the change didn't propogate thru all the modules). This one was great fun to track down. ckcfn[s23].c, ckuus4.c, 2 Aug 97. Some testers of Alpha.03 noticed that REMOTE DIRECTORY didn't work. It was actually worse than that. I had broken this when adding the code to avoid closing a file when it wasn't open. First, the o_isopen flag was not always being set, and second reof() did not give a proper return code. Now fixed. ckcfn[s3].c, 2 Aug 97. But sending of remote commands to pipes was also broken in Alpha.03. This required adding a system-independent front-end to zxcmd(), openc(), that sets the o_isopen flag. ckcfn3.c, ckcpro.w, 3 Aug 97. Integrated Jeff's changes from the past week. Many modules, 10 Aug 97. Replaced all HP-UX makefile entries with new ones from Peter Eichhorn. makefile, 10 Aug 97. Added high serial speeds for SCO OSR5.0.2, along with a new symbol, POSIX_SPEEDS, used to select POSIX speed setting/getting separately from POSIX for everything else, and predefined this for OSR5.0.2 and IRIX 6.2, along with POSIX itself and BSD44. Added new makefile entries for SCO OSR5.0.2. ckcdeb.h, ckutio.c, ckuver.h, makefile, 10 Aug 97. But this doesn't work at all -- REVISIT THIS MONDAY... Fixed spurious error message issued by VMS C-K when doing a GET command. ckuus6.c, 10 Aug 97. More futzing with SCO OpenServer R5.0.2. To get the new high speeds, I have to convert completely to POSIX, but this proves to be an adventure because of the situation with hardware flow control, which is outside the scope of POSIX. Got it, after much header-file shuffling. This also involved some minor but perhaps significant changes to the general POSIX code. ckcdeb.h, 11 Aug 97. Fixed a truly horrible bug, in which the modem types above 55, namely SupraSonic, Best Data, ATT 19x0, and ATT KeepInTouch, were indexed incorrectly, off by one, because the pointer to SupraSonic was left out of the modemp[] array. This goes back to May, and nobody ever noticed. ckudia.c, 12 Aug 97. NOTE: THERE IS STILL MORE CONFUSION LURKING because of 1-based modem numbers versus 0-based modemp indexes! More fixes for POSIX serial i/o in SCO OSR5.0.2, and presumably elsewhere too. ckutio.c, 12 Aug 97. Spent the morning determining there was no way to read modem signals in SCO OSR5.0.4 (in termio.h, TIOCMGET is defined only if _SVID3 is defined *and* _POSIX_SOURCE is *not* defined, but we need _POSIX_SOURCE defined so we can get the high serial speeds). Anyway the underlying ioctl() probably is a just no-op. 13 Aug 97. Noticed and fixed a typo in the Telebit init string: S61=1 should be S1=0 (BREAK action should be "do what S63 says" rather than "return to command mode"). ckudia.c, 13 Aug 97. Fixed hardware flow control in SCO OSR5.0.4 -- more #ifdef juggling. makefile, ckcdeb.h, ckutio.c, 13 Aug 97. Changed references to modemp[n_TAPI] to modemp[n_TAPI - 1] because the modemp[] array is 0 based even though the modem type numbers are 1-based. Confusing but true. ckudia.c, 13 Aug 97. Another day spent with SCO 5.0.4. Evidently the new stuff (high serial speeds etc) only works in 5.0.4, even though it might be in the header files for 5.0.2, so I changed the symbols, makefile entry names, etc, accordingly. Experimentation with flow control revealed: . The material (RTSXOFF/CTSXON) compiles OK but doesn't work (the ioctls return -1). . The RTSFLOW/CTSFLOW material does not show up in a POSIX compilation. . Forcing RTSFLOW/CTSFLOW definitions (yuk) seems to do the trick. But forcing TIOCMGET does not get us working modem signals -- the ioctls just say "invalid argument". But I left it in anyway, because some third-party drivers, like Digiboard, might implement it. ckcdeb.h, ckutio.c, ckuus5.c, makefile, ckuins.doc, 14 Aug 97. Straightened out the aforementioned mess with the modemp[] array. Now that wasn't so hard, was it? ckudia.c, ckuus[34].c, ckuusr.h, 14 Aug 97. Changed mainline binary variable when switching automatically from text to binary mode in VMS C-Kermit -- cosmetic only; should only affect the file-transfer display. ckvfio.c, 14 Aug 97. Changed SET EDITOR and SET BROWSER in VMS to parse text strings rather than filenames. It turns out that zshcmd() (in VMS, a front end for LIB$SPAWN()) can not run programs when given a filespec; it runs DCL commands, period -- always has -- did I know that? ckuus3.c, ckermit2.upd, 14 Aug 97. Added support for USR XJ1560 X2 56K modem. ckuusr.h, ckudia.c, 14 Aug 97. Changed keyword parser to skip over CM_INV keywords when completing an abbreviation. ckucmd.c, 14 Aug 97. Fixed some typos from yesterday's SCO work. ckutio.c, 15 Aug 97. Discovered that "remote host xxx" followed by "get" did not work. This was yet another case of the i_isopen flag not being set (this time in syscmd()). I'm wondering now what the original idea was behind these stupid flags -- oh yeah, I remember -- calling fstats() would have the side effect of writing a misleading transaction log entry if the file had never been opened. Anyway, all fixed now. ckcfn[s3].c, 16 Aug 97. Fix from Jeff for tn_ini() -- make sure *all* Telnet protocol flags are reset. ckcnet.c, 17 Aug 97. Miscellaneous minor corrections from compiling on many platforms. ckuusr.c, ..., 17 Aug 97. ---Alpha.04--- Changed USR X2 max speed to 115200. ckudia.c, 18 Aug 97. Some tentative changes for Apollo SR10. ckuusx.c, ckuver.h, 18 Aug 97. Some of the cmfld()-parsing SEND (etc) switches were not stripping braces. ckuusr.c, ckuus6.c, 19 Aug 97. Console modes were not being twiddled in the EDIT and BROWSE commands, which affected VMS (some editors would not echo when started). ckuusr.c, 19 aug 97. Fixed a problem in which REMOTE HELP failed, caused by a rearrangement of the code in opent() which, if it succeeded, it did not set a return value, so its return value was random (i.e. system-dependent). Now why didn't all those strict ANSI compilers notice? ckcfn3.c, 19 Aug 97. The client end of REMOTE RENAME and REMOTE COPY have been broken since 6.0 came out -- nobody noticed till just now. The code that was added to parse redirectors wiped out the second field. ckuus7.c, 20 Aug 97. Fixed broken RECEIVE XXX for XMODEM transfers and assorted other parsing problems in doxget(). ckuus6.c, 23 Aug 97. Added CONNECT command switches: /QUIETLY All but K95 (n/a) /IDLE-LIMIT:int K95 only int tt_idlesnd_tmo; /IDLE-STRING:string K95 only char * tt_idlesnd_str; /TIME-LIMIT:int K95 only int tt_timelimit; /TRIGGER:string K95 only char * tt_trigger_str; Like file-transfer switches, these are local to the specific CONNECT command, overriding, but saving and restoring, the global session-limit and other corresponding settings. /QUIETLY was already there, and it's still the only one that non-K95 users will see; session limits, etc, are implemented only in K95. ckuusr.[ch], 23 Aug 97. Added partial completion of keywords. ckuusr.h, ckucmd.c, ckcmai.c, 23 Aug 97. Corrected a couple minor problems with partial completion and CONNECT switch parsing. ckuusr.c, ckucmd.c, 24 Aug 97. Discovered that if you typed Esc when entering a field parsed by chained fdb's, nothing happened if the field had no default value -- in fact it should have beeped. Fixed in ckucmd.c, 24 Aug 97. Changed VMS zhome() to use SYS$LOGIN rather than HOME. This is to avoid the problem that occurred when using getenv(HOME) as a default for CD, and that directory was defined as a search path -- e.g. SYS$SYSROOT:[SYSMGR] on a cluster, where SYS$SYSROOT: was a list of disks, namely that you can't SET DEFAULT to a search list. Reportedly using SYS$LOGIN: avoids this problem and seems to work OK otherwise. ckuus5.c, 24 Aug 97. Spent a few hours trying to get the IRIX 6.2 version to compile with POSIX defined (same deal as for SCO 5.0.4), but could not find a way to make it execute the definitions & declarations for struct timeval and the select() related ones. I finally gave up when I discovered that the IRIX 6.2 system I was using for this didn't have the high serial speeds defined in any of its header files anyway. 25 Aug 97. Added /TRIGGER:string to UNIX CONNECT module. ckucon.c, 26 Aug 97. Added SET TERMINAL TRIGGER to set global trigger, which can be overridden by local switch. ckuus[s7].c, ckuusr.h, 26 Aug 97. Expanded trigger feature to allow up to 8 triggers, using the same notation as SEND /EXCEPT. Changed makexcept() into makelist(), so it can be used to parse any {{s1}{s2}...{sn}} string into a list of pointers to s1, s2, ..., sn. Moved autoexitchk() to ckuusx.c, since it is portable and can be shared by all CONNECT modules. Added \v(trigger) to give the value of the trigger that was selected. Added SHOW TRIGGER to display current SET TERM TRIGGER values. ckcdeb.h, ckuusr.[ch], ckuus[2457x].c, ckucon.c, ckermit2.upd, 27 Aug 97. Changed CONNECT to always reset triggerval (i.e. \v(trigger)) before going online, so that \v(trigger) refers only to the most recent CONNECT command. ckuusr.c, ckermit2.upd, 28 Aug 97. Added trigger support to VMS version. Plus one last attempt at making VMS version not lose "NO CARRIER" message. ckvcon.c, 1 Sep 97. Added trigger support to AOS/VS version. ckdcon.c, 1 Sep 97. Renamed warn variable to ckwarn to avoid conflict in BSDI 3.0. Also added support for high serial speeds in BSDI 2.0 and later (including a new makefile entry). Many modules, 1 Sep 97. ************** 6.0.193 BUILDS Apollo DN4000 Domain OS SR10.4 sr10-s5r3 970821 900735 DEC Alpha 400 4/166 Digital UNIX 3.2 du32 970901 1105920 DEC Alpha 255 4/232 Digital UNIX 4.0 du40 970901 1089536 DEC Alpha 2000 5/300+TGV40A VMS DECC 4.0-000 6.2 ckvker.com 970901 1202176 DEC Alpha 2000 5/300+NONET VMS DECC 4.0-000 6.2 ckvker.com 970901 1133568 DEC Alpha 3000/400 NONET VMS DECC 4.0-000 6.2 ckvker.com 970817 1146368 DEC Alpha 3000/400+TGV40A VMS DECC 4.0-000 6.2 ckvker.com 970817 1211392 DEC Alpha 200 4/166 NONET VMS DECC 5.5-002 7.1 ckvker.com 970901 1144832 DEC Alpha 200 4/166+TGV40BVMS DECC 5.5-002 7.1 ckvker.com 970901 1214464 DEC VAX 3100/38 NONET VMS VAXC 3.2 5.5-2 ckvker.com 970901 753152 DEC VAX 3100/38+UCX 2.2 VMS VAXC 3.2 5.5-2 ckvker.com 970901 806912 DEC VAX 3600 +NONET VMS VAXC 3.1 6.1 ckvker.com 970817 747008 DEC VAX 3600 +TGV40AX VMS VAXC 3.1 6.1 ckvker.com 970817 792576 DEC VAX 3100/?? NONET VMS DECC 5.6-003 7.1 ckvker.com 970901 746496 DEC VAX 3100/??+TGV40BX VMS DECC 5.6-003 7.1 ckvker.com 970901 793088 DECstation 5000/240 Ultrix 4.3 ultrix42c 970901 950272 DG MV 2500 AOS/VS-II 2.20.73 ckdmak.cli 970901 964608 HP-9000/300 BSD 4.4-Lite bsd44c 970901 829338 HP-9000/385 HP-UX 8.00 hpux80oc 970901 724992 HP-9000/712/60 HP-UX 9.05 hpux90o700 970901 794624 HP-9000/712 HP-UX 10.20 hpux100o+ 970901 797501 IBM Power Server 850 AIX 4.1 rs6aix41c 970901 927624 NeXT 68040 NeXTSTEP 3.1 next 970901 832064 PC (spcuna) BSDI 2.1 bsdi2 970901 825543 PC (ny) BSDI 3.0 bsdi2 970901 PC FreeBSD 2.? freebsd2 970727 ? PC (yclept) Linux 1.2.13 linux 970901 736283 PC (wbader) Linux 2.0.12 linux 970818 ? PC (wbader) SCO UNIX/ODT20 3.2v4.0 sco32v4netnd 970727 ? PC (wbader) SCO UNIX/ODT20 3.2v4.2 sco32v4netnd 970818 ? PC (wbader) SCO OSR5 3.2v5.0 sco32v5net 970818 ? PC (jpr) SCO OSR5 3.2v5.0.4 sco32v5 970811 822172 PC " SCO OSR5 3.2v5.0.4 sco32v5net 970901 961172 PC " SCO OSR5 3.2v5.0.4 sco32v5gcc 970811 770052 PC " SCO OSR5 3.2v5.0.4 sco32v5netgcc 970811 895368 PC " SCO OSR5 3.2v5.0.4 sco32v504 970811 821164 PC " SCO OSR5 3.2v5.0.4 sco32v504net 970813 955020 PC " SCO OSR5 3.2v5.0.4 sco32v504gcc 970811 769120 PC " SCO OSR5 3.2v5.0.4 sco32v504netgcc970811 895264 PC (netlab1) SCO UNIXware 2.1.1 unixware2 970901 810888 PC (lerami) SCO UNIXware 2.1.2 unixware2 970901 803924 SGI model unk IRIX 5.3 irix51 970901 1090344 SGI Indy R5000 IRIX 6.2 irix62 970728 1231696 Siemens Nixdorf RM 200 SINIX 5.42 sinix542 970901 1151585 Sun model unk (surver) Solaris 2.4 solaris2x 970901 981816 Sun model unk (surver) Solaris+X.25 2.4 solaris2x25 970901 1005028 Sun Ultra-1 (sherluck) Solaris 2.5.1 solaris25 970901 961624 Sun SPARCserver 20 SunOS 4.1.3_U1 sunos41c 970901 966656 Sun SPARCserver 20 SunOS 4.1.3_U1 sunos41c+NONET 970727 884736 Sun SPARCserver 20 SunOS 4.1.3_U1 sunos41c-DYNAM 970728 942080 Sun SPARCserver 20 SunOS 4.1.3_U1 sunos41mi 970727 262144 Sun SPARCserver 20 SunOS 4.1.3_U1 sunos41m 970727 180224 ************** And from Peter Eichhorn: CKVER= "6.0.193" =============================================================================== Date: Mon Jul 21 09:17:32 METDST 1997 Host: unix10 Machine: HP 9000/780/C180 OS: HP-UX B.10.20 Kernel info: maxdsiz = 0x7000 (=112MB) Entry: Compile time: Size: KFLAGS: ------------------------------------------------------------------------------- hpux100 0m58.87s 997914 hpux100o 2m12.57s 785172 hpux100o 3m45.60s 772870 KFLAGS=+Onolimit hpux100o+ 3m35.69s 772870 =============================================================================== Date: Mon Jul 21 09:40:53 MESZ 1997 Host: r20 Machine: HP 9000/777/C100 OS: HP-UX A.09.07 Kernel info: maxdsiz = 0x4000 (=64MB) Entry: Compile time: Size: KFLAGS: ------------------------------------------------------------------------------- hpux90 1m24.75s 983040 hpux90gcc 4m31.56s 987652 hpux90mot 4m24.81s 798720 hpux90mot 6m54.90s 786432 KFLAGS=+Onolimit hpux90o 4m13.69s 798720 hpux90o 6m30.92s 786432 KFLAGS=+Onolimit hpux90o700 4m12.08s 761856 hpux90o700 6m6.74s 749568 KFLAGS=+Onolimit =============================================================================== Date: Mon Jul 21 10:17:05 MESZ 1997 Host: h20 Machine: HP 9000/425S OS: HP-UX B.08.00 Kernel info: maxdsiz = 0x2000 (=32MB) Entry: Compile time: Size: KFLAGS: ------------------------------------------------------------------------------- hpux80 26m50.52s 688128 hpux80c 28m14.08s 700416 hpux80notcp 21m41.48s failed Linker errors! hpux80pa 0m5.42s failed hpux80pac 0m6.80s failed =============================================================================== Date: Tue Jul 29 11:05:30 MESZ 1997 Host: a20 Machine: HP 9000/350 OS: HP-UX 7.05 Kernel info: maxdsiz = 0x2000 (=32MB) Entry: Compile time: Size: KFLAGS: ------------------------------------------------------------------------------- hpux70lfn 1h16m18.64s 753664 hpux70lfnc 1h18m1.90s 806912 hpux70sf 1h4m45.28s failed hpux70sftcpc 1h19m26.28s 806912 =============================================================================== Date: Mon Jul 21 16:44:24 MESZ 1997 Host: x20 Machine: HP 9000/340 OS: HP-UX B.09.10 Kernel info: maxdsiz = 0x1000 (=16MB) Entry: Compile time: Size: KFLAGS: ------------------------------------------------------------------------------- hpux90 18m52.84s 835584 hpux90gcc 0m27.56s failed hpux90mot 1h38m25.66s 716800 hpux90o 1h15m57.22s failed Out of Memory =============================================================================== Date: Tue Jul 22 10:02:58 MESZ 1997 Host: x20 Machine: HP 9000/340 OS: HP-UX B.09.10 Kernel info: maxdsiz = 0x3000 (=48MB) Entry: Compile time: Size: KFLAGS: ------------------------------------------------------------------------------- hpux90o 2h24m5.76s 712704 =============================================================================== Date: Wed Jul 30 12:13:47 MESZ 1997 Host: a11 Machine: HP 9000/350 OS: HP-UX 6.5 Kernel info: maxdsiz = 0x1000 (=16MB) Entry: Compile time: Size: KFLAGS: ------------------------------------------------------------------------------- hpux65 49m49.80s failed hpux65c 51m32.96s failed CKVER= "6.0.193" unix10 =============================================================================== HP 9000/780/C180 HP-UX B.10.20 hpux100 970721 997914 HP 9000/780/C180 HP-UX B.10.20 hpux100o 970721 785172 HP 9000/780/C180 HP-UX B.10.20 hpux100o+Onoli..970721 772870 HP 9000/780/C180 HP-UX B.10.20 hpux100o+ 970721 772870 HP 9000/777/C100 HP-UX A.09.07 hpux90 970721 983040 HP 9000/777/C100 HP-UX A.09.07 hpux90gcc 970721 987652 HP 9000/777/C100 HP-UX A.09.07 hpux90mot 970721 798720 HP 9000/777/C100 HP-UX A.09.07 hpux90mot+Onol..970721 786432 HP 9000/777/C100 HP-UX A.09.07 hpux90o 970721 798720 HP 9000/777/C100 HP-UX A.09.07 hpux90o+Onolimit970721 786432 HP 9000/777/C100 HP-UX A.09.07 hpux90o700 970721 761856 HP 9000/777/C100 HP-UX A.09.07 hpux90o700+Ono..970721 749568 HP 9000/425S HP-UX B.08.00 hpux80 970721 688128 HP 9000/425S HP-UX B.08.00 hpux80c 970721 700416 HP 9000/350 HP-UX 7.05 hpux70lfn 970729 753664 HP 9000/350 HP-UX 7.05 hpux70lfnc 970729 806912 HP 9000/350 HP-UX 7.05 hpux70sftcpc 970729 806912 HP 9000/340 HP-UX B.09.10 hpux90 970721 835584 HP 9000/340 HP-UX B.09.10 hpux90mot 970721 716800 HP 9000/340 HP-UX B.09.10 hpux90o 970722 712704 - PeterE