ckc197.txt
资源名称:cku197.tar.Z [点击查看]
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:866k
源码类别:
通讯/手机编程
开发平台:
Windows_Unix
- C-KERMIT 6.1-7.0 CHANGE LOG (Changes since 6.0.192 of 6 September 1996)
- Tue Feb 8 15:27:58 2000
- SET TCP UCX-PORT-BUG command added, November 1996.
- 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 ckuus*.[ch] and other modules, 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.
- 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 <rjh@yclept.chi.il.us>. 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
- <tytso@mit.edu>. 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 <Todd.Mill@courtesan.com>, 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 [ <list> ] 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 } <string>
- SET MODEM COMMAND { VOLUME-HIGH, VOLUME-MEDIUM, VOLUME-LOW } <string>
- 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 <rueckle@dr.fbe.fh-darmstadt.de>
- 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 <terminal-server>, SET MODEM TYPE <name>, 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 <moeller@decus.decus.de>.
- 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<ESC>" 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<ESC>" 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<ESC>" 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
- <stever@ozemail.com.au>. 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.
- ckuusr.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 <jik@cam.ov.com>. 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 <command>, 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 <string> <pattern>. ckuusr.h, ckuus6.c, 21 Jul 97.
- Added /EXCEPT:<pattern> 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.
- 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 <string> 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 S61=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 <sys/termiox.h> 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.
- ---Alpha.05---
- Changed VMS zhome() (again), this time from getenv("SYS$LOGIN") to
- simply "SYS$LOGIN:". ckvfio.c, 2 Sep 97.
- Still doesn't work -- now we try it without the colon (but only as the default
- for "cd", since we need the colon in other contexts). ckuus5.c, 4 Sep 97.
- Previous, cont'd... Turns out Alpha VMS 6.2 chdir() doesn't work. Got code
- from William Bader to use sys$setddir() instead. Works OK, but (OF COURSE
- there's a BUT) it applies to the whole job and not to just the Kermit process,
- so when Kermit exits, the user's default directory has changed to whatever
- Kermit last CD'd to.
- Rework sending of A-packets so that multiple A-packets can be sent in case all
- the attributes won't fit into a single packet:
- . Added an initialize flag parameter to sattr().
- . Changed sattr() to return a positive number if it sent an A packet,
- 0 if it didn't have anything to send, or -1 on error.
- . Added a new util routine, maxdata(), to return size of data field, shared
- by sattr() and getpkt().
- . Recoded sattr() to fill data field with as many attributes as will
- fit, marking each one as done, and returning when it can't fit any more,
- or there are no more left, or no more that can fit even by themselves, and
- to send the "end of attributes" attribute only after all attributes that
- could possibly have been sent, were sent, provided at least one was sent.
- . Changed the protocol engine to keep calling sattr() until it says it has
- nothing left to send.
- ckcker.h, ckcpro.w, ckcfn3.c, 6 Sep 97.
- Changed rpar() to not send I or S packets (or their ACKs) that are longer than
- what the other Kermit asked for, again calling the new maxdata() function to
- find out the length. The parts that are chopped off from the end have their
- corresponding settings defaulted automatically, overriding whatever the user
- might have asked for. ckcfns.c, 6 Sep 97.
- What about F packets in this context? -- if a filename is too long, it is
- simply truncated (in both the F/X packet and its ACK); there is no way in the
- protocol to have continued file headers. We could conceivably strip any
- path info, but that would not always solve the problem, and anyway the user
- can control this with a command.
- Added a new system-dependent routine to ckutio.c: ttspdlist(). It returns a
- list of speeds (as long ints) that are supported on the platform where
- C-Kermit is being compiled. Then in cmdini() we call this routine and build
- our "set speed" keyword table on the fly when the program starts. This
- eliminates (just for UNIX at first) the prebuilt speed keyword table with all
- the #ifdefs, and problems keeping the BPS_xxxx symbol definitions in sync with
- the tt[sg]speed() routines in all the ck?tio.c modules. ckcdeb.h, ckutio.c,
- ckuus3.c, ckuus5.c, ckcplm.doc, ckccfg.doc, 7 Sep 97.
- Added ttspdlist() for VMS. ckvtio.c, ckcdeb.h, 7 Sep 97.
- Added modem table entries for Rolm 244PC and 600 series. ckuusr.h, ckudia.c,
- 10 Sep 97.
- Added SET PRINTER PRINT command switches: /BIDIRECTIONAL, /DOS-DEVICE,
- /FLOW-CONTROL, /OUTPUT-ONLY, /PARITY, /SEPARATOR, /SPEED, /TERMINATOR,
- /TIMEOUT, /WINDOWS-QUEUE. Only for K95 for now.
- ckuusr.h, ckuus3.c, 10 Sep 97.
- Made SHOW PRINTER show all these things. ckuus5.c, 10 Sep 97.
- Added SET PRINTER /PIPE:xxx. ckuusr.h, ckuus3.c, 11 Sep 97.
- Updated HELP SET PRINTER, ckuus2.c, 11 Sep 97.
- Made another attempt at straightening out the CD mess in VMS.
- ckv[ft]io.c, 12 Sep 97.
- Added v(startup) to UNIX and VMS, ckuus4.c, ckufio.c, 12 Sep 97.
- Debugged VMS changes from 12 Sep. ckvfio.c, 16 Sep 97.
- Added a reference to SET EXIT to HELP EXIT. ckuus2.c, 16 Sep 97.
- Corrected various #ifdefs for building with various features deselected.
- ckcpro.w, ckuus6.c, etc, 16 Sep 97.
- ---Alpha.06---
- Put SET TERM { AUTOSCROLL, AUTOPAGE } in #ifdef OS2. ckuus7.c, 17 Sep 97.
- Put checks for and against modem signals, especially versus hardware flow
- control, into the DIAL command, and also turned off hwfc during dialing
- automatically for AT&T 19x0 modems. ckuus6.c, 18 Sep 97.
- IF condition keyword was completely out of alphabetical order. ckuus6.c,
- 18 Sep 97.
- "set host" to numeric IP address should not call gethostbyname() on any
- platform; previously it did this except in Windows. ckcnet.c, 20 Sep 97.
- Fixes from Jeff to my fixes for RTS/CTS vs dialing from 2 days ago, ckcdeb.h,
- ckudia.c, ckuus6.c, 20 Sep 97. NOTE: The right way to do this is to add a new
- sys-dependent ttdial() routine, to condition the device for dialing, which
- does not overload the flow parameter; we'll do that later since it must
- involve changing all the ck?tio.c modules.
- Fixes from Jeff to NEW SET PRINTER code for when they give a Windows printer
- name as the final word of the command, rather than as a switch value.
- ckuus3.c, 20 Sep 97.
- Save and restore default or user-requested block check around protocol.
- ckcmai.c, ckcpro.w, 20 Sep 97.
- Change SET WINDOW parsing to give error message for X and Ymodem[-g], and
- changed for ZMODEM to require that window size be a maximum of 64K, and not
- a multiple of 64. ckuus3.c, 20 Sep 97.
- Changed SET RECEIVE PACKET-LENGTH to be usable only for Kermit protocol.
- In XYZMODEM, if you can change them at all, you have to do it to the sender.
- ckuus7.c, 20 Sep 97.
- Supplied missing error message for junk typed after "CONNECT" and then
- completion was attempted (e.g. "connect xxx<ESC>"). Chained FDB parsing can
- be a bit tricky... ckuusr.c, 20 Sep 97.
- Make SET SPEED 134.5 and SHOW SPEED for 134.5 work right. ckuus[34].c,
- 20 Sep 97.
- Fixed UNIX ttspdlist[] not to return two copies of "57600" if _B115200 was
- defined, oops (HPUX only). ckutio.c, 20 Sep 97.
- Updated UNIX, VMS, etc, BWR and UPD files about lots of stuff. 20 Sep 97.
- VMS CMU/IP fixes from John Santos. ckvtio.c, ckvker.com, 20 Sep 97.
- New makefile entries for all HP-UX versions from Peter Eichhorn. 20 Sep 97.
- Lots of #ifdef adjusting for building on many platforms with & without various
- features, assorted modules. Builds OK on SunOS with various feature sets,
- HP-UX 10.20, AIX 4.1, SINIX 5.42, Linux, VMS 5.5, and passes basic runtime
- tests. 20 Sep 97.
- A couple corrections to yesterday's work from Jeff. ckuus[37].c, 21 Sep 97.
- Changed minor version number from 0 to 1: 6.1.193. ckcmai.c, 21 Sep 97.
- SET TERM AUTODOWNLOAD wasn't working right in UNIX -- the first packet is
- missed, so we had to wait forever for a timeout before it kicked in. Not sure
- why it stopped working, but to fix it I changed the hokey mechanism that was
- being used (i.e. throw the packet away and send a NAK) to what I should have
- done in the first place -- put the packet in a global buffer, caching it for
- rpack(), and then actually using the one that kstart() recognized. Of course
- this wasn't easy in UNIX with the forks and all (no matter wht you want to do,
- the *other* fork is always only place to do it)... But now it works again,
- and it's much faster. ckuus4.c, ckucon.c, ckcfn2.c, 21 Sep 97.
- Also removed NAK-sending code from autodown() (the INPUT command autodownload
- handler), ckcfn2.c, 21 Sep 97.
- Fixed VMS version to work with this too (just remove code to send NAK).
- ckvtio.c, 21 Sep 97.
- At the end of a protocol transaction, after we ring the bell, flush stdout --
- otherwise the bell can get queued up for quite a while (e.g. if a file was
- autodownloaded, the bell never rings until the next time you escape back).
- This might also address reports we've had about the file transfer display not
- fully updating itself before returning to the prompt. UNIX only. ckuusx.c,
- 21 Sep 97.
- Ctrl-C during autodownload killed the UNIX version of C-Kermit. This has been
- true since 6.0 was first released. Fixed in ckuus4.c, 21 Sep 97.
- Added /PROTOCOL: for RECEIVE, still requiring an as-name for XMODEM.
- ckuus6.c, 21 Sep 97.
- Made sure that /PROTOCOL was available for both SEND and RECEIVE even if
- CK_XYZ not defined (in which case it is accepted but does nothing -- i.e.
- protocol remains Kermit), ckuus[r6].c, 21 Sep
- The DG is dead (can't load OS from disk, hard error 0000001), RIP. 21 Sep 97.
- Added addtl msgs for when UNIX C-K can't access dialout device or lockfile.
- ckuus7.c, 22 Sep 97.
- Filled in new speed-setting code for Plan 9. ckutio.c, 22 Sep 97.
- Now that Ctrl-C out of autodownload doesn't blow C-K away any more, I
- discovered that it does prevent subsequent autodownloads. After a lot of
- heavy staring, I realized it was because the _apc_command macro is still
- defined. So I changed the Ctrl-C trap() routine to undefine it, and while
- I was at it, I also had it reset a whole bunch of other protocol-related
- settings by calling a new routine, ftreset(), which can also be called from
- anywhere else when protocol settings need to be restored to their defaults
- (e.g. after dynamic local changes that occurred during file transfer, or
- because of an interrupted file-transfer command that was given with switches).
- ckuusr.h, ckuus[5x].c, 22 Sep 97.
- All the above stuff relative to autodownload broke APC execution in the UNIX
- version of C-Kermit. Ensured that the upper fork reads stuff from the pipe
- in the same order and number that the lower fork puts the stuff there. What
- a mess, yuk -- it's so much easier without forks... ckucon.c, 22 Sep 97.
- Put back hpux500wintcp makefile entry (there's still at least one of them
- out there...) 22 Sep 97.
- Discovered that UNIX C-Kermit would crash upon startup if the current
- directory was not readable. Fixed in zgtdir(), ckufio.c, 23 Sep 97.
- ---Alpha.07---
- (Actually that last item was done after the Alpha.07 binaries were built,
- a few minutes after the announcement went out...)
- Add /-stripping for URLs in netopen() (K95 only -- we should expand this to
- work for all C-Kermits...) ckcnet.c, 23 Sep 97.
- The new autodownload code was calling parchk incorrectly, the result being
- that parity was set whenever an autodownload took place, thus (at best)
- slowing down the transfer by as much as 50%, or (at worst) making it fail.
- Fixed in ckcfn2.c, 24 Sep 97.
- ---1.1.14---
- ---1.1.15---
- Broke out separate getpkt() and decode() routines, bgetpkt() and bdecode(),
- for the binary-mode no-parity case, to speed up this very common type of
- transfer. But the local net is so awful there is no way to tell if it does
- any good. ckcfns.c, 26 Sep 97.
- Added fflush() to UNIX zsout() if file is ZWFILE (i.e. OPEN WRITE file) to
- make it work better with pipes and FIFO files. ckufio.c, 4 Oct 97.
- Added SHOW LOGS (broke this out from SHOW FILE, which was getting too long).
- ckuus[r45].c, ckuusr.h, 7 Oct 97.
- Changed SET TRANSFER CRC-ACCUMULATION default from ON to OFF to speed up
- transfers, added display of this setting to SHOW PROTOCOL. ckcfns.c,
- ckuus4.c, 7 Oct 97.
- Tightened up decode() and getpkt() a bit more, as well as the checksum
- routines. Still no good way to test given heavy loads on systems and network.
- ckcfn[s2].c, 7 Oct 97.
- Changed exit-warning code to not warn under UNIX if running in background.
- ckuus3.c, 8 Oct 97.
- Adapted Jeff's URL-parsing code in netopen() to work for all versions, not
- just K95, so now SET HOST, TELNET, -J, etc, can accept most forms of URL,
- including the nutty ones from Netscape 4.0. This is #ifdef'd in CK_URL, which
- is now defined for all by default; -DNOURL overrides. ckcnet.c, 8 Oct 97.
- Generalized SET { SEND, RECEIVE } PATHNAMES at Peter Eichhorn's suggestion.
- Instead of just ON and OFF, now we also allow ABSOLUTE and RELATIVE. PATH_xxx
- symbols defined in ckcker.h, new keyword table in ckuus7.c, SHOW FILE shows
- new values. I also undid the crazy "on means off", "1 - x", etc, and now just
- compare against the symbol values. ON is still accepted as an invisible
- synonym for ABSOLUTE. When receiving, if we get a (recognizably) absolute
- pathname, we convert it to relative. ckcmai.c, ckcfns.c, ckuus[r24567x].c,
- 8 Oct 97.
- Fixed previously unused UNIXOROSK definition. ckcdeb.h, 8 Oct 97.
- Made a new symbol to enable all the new tuning code, CKTUNING, and defined it
- for all but pdp11, where every byte counts. So when CKTUNING is defined, it's
- OK to duplicate chunks of code, put it inline, etc, to make file-transfer go
- faster. Added more tuning code to eliminate function calls & loops in various
- spots -- calculate header checksum inline, call b{decode,getpkt} directly
- rather than from inside decode and getpkt, tighten up b{decode,getpkt}
- themselves. Define NOTUNING to undo all of this and restore earlier well-
- tested code. Some of these improvements could also be filtered back into the
- original general-purpose routines... ckcfns.c, 9 Oct 97.
- Microtuning, cont'd -- more of the same, in spack() and rpack(). Also in
- zinfill() and zoutdump(). Guard potential function calls like debug() and
- logpkt() with if-statements in critical sections, etc. ckufio.c, ckcfns.c,
- 9 Oct 97.
- There's no good way to test this stuff locally since the effect will be
- noticed only on connections that are so fast that CPU is the bottleneck --
- but the local net here is always saturated, so that never happens. Still,
- in many trials on an average busy day the new code seems about 50% faster
- than the old. (We also improve by a factor of 2 if we bypass the Telnet
- server...)
- Filled in COPY (alias CP) command for UNIX. ckcdeb.h, ckuus6.c, ckufio.c,
- 9 Oct 97.
- Added recursive directory traversal. For the first cut, this works only
- when a filename of "." is given, as in "send ." or "echo ffiles(.)". When
- sending files, this works in conjunction with the various new SET SEND
- PATHNAMES options, and so allows replication of directory trees between like
- file systems.
- . test unix-to-unix because MSK rejects names unnecessarily (ok)
- . expand to be more flexible, e.g. "SEND /RECURSIVE *.txt". (ok)
- . What about VMS? I think this already works: "SEND [...]*.*".
- Also the relative/absolute pathnames need a lot more work -- what about
- VMS, etc? Need to:
- . Make /RECURSIVE imply /PATHNAMES:RELATIVE (ok)
- . Handle pathnames even when FILE NAMES CONVERTED. In this case, convert
- to and from UNIX format.
- . Handle them when LITERAL - send native VMS (etc) *relative* paths.
- . Ditto for AOS/VS, etc. Need to add a new zblah() function for this?
- . Check #ifdefs (CK_MKDIR, NORECURSE, etc.).
- Added directory-creation entry to transaction log. NOTE: this required a
- (nonlethal) change to zmkdir(). ckcfns.c, 14 Oct 97.
- SET PRINTER /FILE:xxx parsing improved by Jeff to parse an output filename
- and check accessibility. ckuus3.c, 14 Oct 97.
- SET NET FILE parsing improved to use cmifi, from Jeff. Also literal string
- key definitions now handled when saving key definitions. ckuus7.c, 14 Oct 97.
- Removed "." as an alias for "current directory tree" except in UNIX, where it
- can't possibly mean anything else. Removed "..." altogether, since it has
- opposite meanings in Windows and VMS. ckufio.c, 15 Oct 97.
- Added /MATCH-DOT-FILES and /NO-MATCH-DOT-FILES to SET WILD KERMIT.
- ckuus[23].c, ckufio.c, ckcmai.c, 15 Oct 97.
- Added frfiles, fdir(), frdir() to list regular files and directory files,
- flatly or recursively. Changed ffiles() to only list regular files. Each of
- these functions sets up fnextfile() in the same way, but with a different
- list of files. In UNIX, these functions match or don't match dot-files
- according to the SET WILD KERMIT /xxx setting. The recursive functions don't
- recurse when WILD is set to SHELL. ckuusr.h, ckuus4.c, ckufio.c, 15 Oct 97.
- * Add another f?files() function to match both files and dirs ??? (no)
- * Add help text to ckuus2 (ok).
- Changed UNIX zxpand() to treat a directory name as if it ended in "/*" so now
- "send foo" sends all the files in "foo" if "foo" is a directory, and "send
- /recursive foo" does the same, but recursively. ckufio.c, 15 Oct 97.
- Added a new top-level token that lets us assign values to variables in a
- somewhat more natural way: "." (shades of Bliss-10).
- .name = value is equivalent to DEFINE name value
- .name := value is equivalent to ASSIGN name value
- .name ::= value is equivalent to EVALUATE value then assign result to name
- There can also be space(s) between "." and the name, and the name can be a
- macro name, a %{digit,letter} variable, or an array element. ckucmd.[ch],
- ckuus[r56].c, 16 Oct 97.
- New code from Jeff for recursion in K95. ckufio.c, 21 Oct 97.
- Increased MAXWLD, SSPACE values in ckufio.c by a lot if BIGBUFOK and DYNAMIC
- are defined. ckufio.c, 21 Oct 97.
- From Jeff: changed chkvar() not to actually evaluate a potential f...()
- function, since this can have side effects. The check for a function is now
- simply if the string matches f*(*), which is less rigorous than checking if
- it is really a function (e.g. parse the name and look it in the table, etc),
- so this can be beefed up later if necessary. But it probably won't be, since
- we aren't likely to find files or directories with () in their names.
- ckuus6.c, 21 Oct 97.
- Changed ffiles() and friends to make a copy of the array created by zxpand(),
- except in K95, where Jeff did this in zxpand/znext themselves (to save space,
- since K95 doesn't have to build lists). Each call to ffiles() (or fdir(),
- etc) frees the previous list (if any) and then allocates a new one dynamically
- of the appropriate size. With this change it is no longer necessary to copy
- the ffiles() list to an array before use (as on p.398 of the book).
- ckuus4.c, 21 Oct 97.
- Fixed parsing of SEND /PATHNAMES:xx<DEL> to work right. ckuusr.c, 21 Oct 97.
- Ditto for { RECEIVE, GET } /PATHNAMES, plus fixed the semantics -- it had
- ON/OFF backward. ckuus6.c, 21 Oct 97.
- Made max(), min(), and mod() return their argument when given only one.
- ckuus4.c, 21 Oct 97.
- Fixes to K95 DIR command from Jeff. ckuus6.c, 22 Oct 97.
- Binary-mode file-transfer was sending short files sometimes due to a problem
- trying to hand-optimize repeat-count code in bgetpkt() . Fixed in ckcfns.c,
- 22 Oct 97.
- Added WHERE command to show where most recent file transfer went. ckuusr.h,
- ckuus[r2].c, ckcfn[s3].c, ckcpro.w, 22 Oct 97.
- Removed OS2 material from ckufio.c. 23 Oct 97.
- Changed REMOTE QUERY KERMIT to evaluate its operand. Thus:
- assign %c xx
- remote query kermit files(%c*)
- asks for the number of files whose names match "xx*". That is, %c is
- evaluated locally before the function call is passed to the server. If you
- want an argument to be evaluated remotely, double the leading backslash:
- remote assign %c yy
- remote query kermit files(\%c*)
- ckuus7.c, 23 Oct 97.
- Added REDO <command>, synonyms RR and token ^. Required moving a lot of code
- around in ckucmd.c -- in particular, the code that adds a command to history
- buffer from gtword() to cmcfm() (which makes sense). Added a new keyword flag
- CM_NOR, meaning that this command should not be added to the history buffer.
- This is used for the REDO command, of course, because otherwise REDO by itself
- (which we would want to re-do the most recent command) would REDO itself
- instead in an infinite loop. ckucmd.[ch], ckuusr.[ch], ckuus5.c, 25 Oct 97.
- Added /MOVE:xxx and /RENAME:xxx switches to SEND (etc). These are similar to
- /DELETE, specifying what happens to the source file after it is successfully
- sent, except instead of deleting it, they move it to another place, or give it
- a new name, respectively. ckuusr.[ch], ckcmai.c, ckcpro.w, 25 Oct 97.
- Added { RECEIVE, GET } /CALIBRATE. This simply avoids opening incoming files
- or writing anything to them, but still does all the rest -- decoding, etc.
- ckuusr.[ch], ckuus6.c, ckcpro.w, 26 Oct 97.
- Added SEND /CALIBRATE[:n], where n is the number of K to send, default = 1024.
- This makes C-K internally generate its own pseudorandom file data, which is
- about 77% uncompressible by gzip; no function calls, no file accesses. The
- data is processed normally, however, according text/binary settings, etc, so
- the packets are the same as if the same data was read from a file.
- ckuusr.[ch], ckuusx.c, ckcfn[s3].c, ckcpro.w, 26 Oct 97.
- For now /CALIBRATE is an invisible switch. It does not fool with packet or
- window sizes, etc. Maybe later. All calibration code is in #ifdef CALIBRATE,
- which is defined for all but CK_SMALL builds in ckcdeb.h.
- Discovered that if a switch that does not take an argument is given an
- argument anyway, e.g. /BINARY:foo, that the ":" or "=" would be treated as a
- space and the argument would be treated as the first non-switch field. Fixed
- in ckuus[r6].c, 26 Oct 97.
- Discovered that SEND switch table had some entries out of order, which
- interfered with completion. Fixed in ckuusr.c, 26 Oct 97.
- If BIGBUFOK is defined, then also define IFDEBUG automatically. If memory
- is not scarce, then compile in all those if-tests to save thousands of
- function calls when the debug log is not open. ckcdeb.h, 26 Oct 97.
- Added SEND /LIST:filename. The named file contains a list of filenames to
- be sent. ckuusr.[ch], ckcfns.c, 26 Oct 97.
- Whenever the /AS-NAME switch was used, the SEND parsing code could assign a
- variable to point at a malloc'd buffer, which is later freed, but the variable
- would still refer to it, potentially causing all sorts of problems later.
- And some other problems like that. Fixed in ckuusr.c, 26 Oct 97.
- Looked into adding support for filenames (or other fields) enclosed in
- doublequotes, but it didn't work after a few stabs so I gave up.
- Added peak transfer rate to the STATISTICS display. ckuus[x4].c, 26 Oct 97.
- It only works when in local mode and FILE DISPLAY is FULL or CRT, otherwise
- the per-packet CPS calculation code is not called.
- A new variable, reliable, is set when (a) we make a connection on a reliable
- network, such as TCP/IP, or (b) we start C-Kermit with the new -I (uppercase)
- switch (mnemonic: I = Internet). When this variable is set, we add a fudge
- factor to the ttinl() timeout, since it normally should not need to time out.
- ckuusy.c, ckcmai.c, ckcfn2.c, ckuus7.c, 26 Oct 97.
- Made local-mode transfer display completion message a little more standoutish:
- SUCCESS or FAILURE in big letters. ckuusx.c, 26 Oct 97.
- Fix from Jeff for changes to command recall. ckucmd.c, 27 Oct 97.
- Various fixes to calibration mode. Missing thermometer in some cases,
- improvements in random-file-generating code, various stats were not being
- updated, etc, because it wasn't a real file, GET /CAL would say it failed when
- it didn't, { GET, RECEIVE } /CAL filename was lost, SEND /CAL bytecount was
- off, etc. ckcpro.w, ckcfn3.c, 27 Oct 97.
- Don't accumulate peak transfer rate until after the initial excitement has
- settled down. When sending, this is after the first windowful of packets has
- gone out. When receiving, just wait till after the 10th packet to get past
- the slow-start effect. ckuusx.c, 27 Oct 97.
- Changed default statistics display to /BRIEF, and added a /VERBOSE switch
- for greater detail. ckuus[r4].c, 27 Oct 97.
- Tightened up bdecode() even further by eliminating additional cases it will
- never see. ckcfns.c, 27 Oct 97.
- Discovered that screenc() could skip updating the percent done, etc, in some
- (rare) cases at the end of a file, so the file transfer would be complete, but
- the display would show less than 100%. Fixed in ckuusx.c, ckcfn3.c, 27 Oct 97.
- Increased uncompressibility of /CAL data stream to over 90% and also gave it a
- random seed so it will generate different data streams, but with the same
- uncompressibility. ckcfns.c, 28 Oct 97.
- Fix from Jeff for SET LINE, which under some circumstances might get clobbered
- when user types CR. Not sure if this problem appeared in any released
- version or was caused by recent edits. ckuus7.c, 28 Oct 97.
- Changed zopeno() to set the output file (when receiving a file during file
- transfer) to O_NONBLOCK. On some systems, including the one we mostly use
- here, disk writes can be very slow -- there is no cache. The same would be
- true if writing to a slow disk, floppy, etc. It's not clear to me yet how
- errors are reported back if they occur -- presumably on the next write() call?
- Preliminary measurements seem to show some improvement.
- New command-line option, G, which is like g (GET), but sends result to stdout.
- Use, for example, to suck files up for printing to the remote from the local
- via autoupload:
- kermit -G oofa.txt | lpr
- ckuusy.c, 29 Oct 97.
- A couple micro-optimizations to ttinl, but it's already just about as
- tight as it can be. ckutio.c, 29 Oct 97.
- Poked at zoutdump() some more. Took out the fflush, and made it allow for
- the possibility that write() might write less than asked. ckufio.c, 29 Oct 97.
- Added CRC to STATISTICS display. ckuus4.c, 29 Oct 97.
- Changed name of openx() to ckopenx() to avoid conflict in AIX.
- ckcpro.w, ckcfn3.c, ckcker.h, 29 Oct 97.
- More fallout from REDO -- a failing command was no longer entered into the
- scrollback buffer, which is a major pain, because that's one of its major uses.
- Fixed in ckucmd.c, ckuus5.c, 29 Oct 97.
- Fixed the "def %a 12:00:00, pause %a" problem. ckuus6.c, 29 Oct 97.
- Added v(printer). ckuusr.h, ckuus4.c, 29 Oct 97.
- Fixed parsing error in SET PRINTER <esc> (non-OS2). ckuus3.c, 29 Oct 97.
- Added invisible SET FILE OUTPUT { [UN]BUFFERED [ size ], [NON]BLOCKING } and
- filled it in for UNIX. It's only for experimentation, and users shouldn't be
- told about it unless it can get them out of a jam, and there's no way to
- display the settings, but they do show up in the debug log. The optional size
- parameter can be given after BUFFERED or UNBUFFERED to control the size of
- C-K's internal file output buffer, zoutbuffer. This can be any number at all,
- even 1. ckuusr.h, ckuus7.c, ckufio.c. 29 Oct 97.
- Went public with SET FILE OUTPUT -- made it visible, added HELP and SHOW, made
- it UNIX-only. ckuus[247].c. 30 Oct 97.
- Some initial work on automatic arrays, not done yet. Must fill in pusharray(),
- then add poparray(). ckuu5.c, 30 Oct 97.
- Fixes to command parser from Jeff: partial filename completion, and case
- insensitivity of filenames in OS/2. ckucmd.c, 1 Nov 97.
- Added automatic arrays. ckuus5.c, 1 Nov 97.
- Added "reliable" display to SHOW COMM. ckuus4.c, 1 Nov 97.
- Added v(escape), frandom(max), fdirname(filespec).
- ckuusr.h, ckuus4.c, 1 Nov 97.
- Discovered that the UNIX code to make output file unbuffered wasn't working at
- all because fcntl() was being called with a file pointer instead of a file
- descriptor. Fixed in ckufio.c, 2 Nov 97.
- Moved outbound pathname handling into a new function nzltor(), which is like
- zltor(), but has two more arguments: filename conversion flag (fncnv) and
- send-pathnames value (fnspath). This is done within #ifdef NZLTOR..#endif.
- NZLTOR is defined for UNIX and VMS. In the mainline code, we now call this
- routine always, rather than only under certain conditions (if NZLTOR is
- defined; otherwise we keep the old code). ckcdeb.h, ckcfns.c, ckcplm.doc,
- 2 Nov 97.
- The nzltor() function must handle six cases:
- SEND PATHNAMES {OFF,RELATIVE,ABSOLUTE} times FILE NAMES {CONVERTED,LITERAL}
- The new prototype is:
- nzltor(char * name, char * outbuf, int fncnv, int fnspath, int max);
- zltor() was converted to a stub which calls nzltor() with the appropriate
- arguments in case anybody calls it by mistake.
- VMS zltor() calls (static) parse_fname(), which luckily already gets the
- various pieces of the filespec separately (node, device, directory, name,
- extension, and version), and so handles its job by shuffling the new args
- internally and adding a lot of creative string toodling. A VMS expert could
- no doubt do the same with system calls. ckvfio.c, 2 Nov 97.
- UNIX zltor was also made into a stub; nzltor simply adds the appropriate calls
- to zstrip, zfnfqp, etc, to handle the pathnames, and then goes on to do what
- it used to do. ckufio.c, 2 Nov 97.
- This was tested in UNIX by cd'ing to ~/tmp and giving "send blah/oofa.txt"
- commands with all combinations of SET FILENAMES and SET SEND PATHNAMES, and
- similarly in VMS with "set default [fdc], send [.blah]oofa.txt]. Results:
- FILENAMES SEND PATHNAMES UNIX Result VMS Result
- CONVERTED OFF OOFA.TXT OOFA.TXT
- CONVERTED RELATIVE BLAH/OOFA.TXT BLAH/OOFA.TXT
- CONVERTED ABSOLUTE /W/FDC/TMP/BLAH/OOFA.TXT /FDC/BLAH/OOFA.TXT
- LITERAL OFF oofa.txt OOFA.TXT
- LITERAL RELATIVE blah/oofa.txt [.BLAH]OOFA.TXT
- LITERAL ABSOLUTE /w/fdc/tmp/blah/oofa.txt [FDC.BLAH]OOFA.TXT
- All of this works very nicely with existing features like "who am i"
- (automatic switching to literal filenames between like systems, etc).
- NOTES: In VMS, we always strip the node::, device:, and ;version, even when
- file names are literal.
- STILL TO DO: The other direction, nzrtol(). Its calling conventions will be
- extended by the same kind of integer args: name conversion on/off, receive
- pathname setting, and max length for result.
- From Jeff: clear network buffers before starting an Rlogin session. ckcnet.c,
- 3 Nov 97.
- Lots of changes relating to detection of connection loss before or
- during file transfer. Many modules, 3 Nov 97.
- K95 prompt now shows forward slashes in directory name, from Jeff, ckuus5.c,
- 4 Nov 97.
- Save and restore many more variables around file transfer -- packet length,
- etc, from Jeff, and then fixes to same. ckuus[r6x].c, 4 Nov 97.
- Change name of BeBox terminal from BeOS-ANSI to BeTerm, but leave old name
- there invisibly. ckuus7.c, 4 Nov 97.
- Fix autodownload Kermit packet detector to ignore parity. ckcfn2.c, 4 Nov 97.
- Added SET OUTPUT SPECIAL-ESCAPES { ON, OFF } to turn on/off special processing
- of N, B, and L. Added this to HELP and SHOW SCRIPTS, plus a new SHOW
- OUTPUT command. ckuusr.h, ckuus[r235].c, 4 Nov 97.
- Jeff found a place in the protocol module where the input file is not closed
- (if sdata() returns an error indicating the connection dropped). ckcpro.w,
- 4 Nov 97.
- Fixes to OS/2 from Jeff for previously unhandled socket errors. ckcnet.c,
- 4 Nov 97.
- Added SET { SEND, RECEIVE } NEGOTIATION-STRING-MAX-LENGTH <number> as a last
- resort for making C-K talk with buggy Kermit implementations on the other
- side that don't expect the init string to be longer than a certain length, or
- that don't handle parameters after a certain length correctly. It's invisible
- and undocumented, for use only by help desk when confronted with desparate
- callers who absolutely have to exchange files with a buggy BBS, etc.
- ckuus7.c, ckcfns.c, 4 Nov 97.
- Changed ttinl(), when in local mode, to check for console interruptions and
- return -1 if there is something waiting in the console buffer (Jeff's idea),
- to make for snappier response to file-transfer interruption characters.
- ckutio.c, 4 Nov 97. But then commented this out, since it's at least an extra
- function call and system call per packet, and the response to keyboard
- interruptions on fast connections is pretty fast anyway. Can revisit this
- later after further experimentation.
- Changed ttchk() to always check first if we have an open connection and if
- not, to return -2. ckutio.c, 4 Nov 97.
- Changed doconect() to use ttchk() to check if the connection is open.
- ckuus4.c, 4 Nov 97.
- Changed ttinl() and ttol() to return -3 when they detect a broken connection.
- Went through all of the ckcfn*.c and ckcpro.w modules and made sure that every
- call to rpack() and spack() had its return code checked and then did the
- appropriate thing when it was < 0 (and, in particular, when < -1). Tested by
- making a Telnet connection, starting uploads and downloads, and then killing
- the job on the far end during the transfer. Now, for the first time, this
- makes the file transfer either quit right away, or else within one timeout
- interval, and the appropriate message is printed on the display, and the
- transfer fails. Once the failure was propogated up to the protocol state
- machine, two more actions were needed to distinguish the cases where the
- connection dropped when a file was open, versus when no file was open.
- ckcfn[s23.c], ckcpro.w, 4 Nov 97.
- Evidently there are places where we call command parsing routines with
- constant strings as defaults, and then later attempt to write into those
- strings (e.g. to strip braces, trim blanks, etc). This was addressed by
- making an internal copy of the default string and using that instead.
- ckucmd.c, 4 Nov 97.
- Fixed command-file reader to be tolerant of lines that end with bizarre
- strings of control characters like ^M^M^J. ckuus5.c, 4 Nov 97.
- Added nrztol() for UNIX, moving lots of inappropriate code from rcvfil() to
- it (with #ifdef NZLTOR..#endif). ckcfns.c, ckufio.c, 5 Nov 97.
- Added nrztol() for VMS. ckvfio.c, 5 Nov 97.
- Results for VMS receiving files, current directory is [FDC.TMP]:
- Receive File
- Pathnames Names Incoming Name Saved as
- OFF CONVERTED OOFA.TXT [FDC.TMP]OOFA.TXT
- OFF CONVERTED oofa.txt [FDC.TMP]OOFA.TXT
- OFF CONVERTED /foo/bar/oofa.txt [FDC.TMP]OOFA.TXT
- OFF CONVERTED [foo.bar]oofa.txt [FDC.TMP]OOFA.TXT
- RELATIVE CONVERTED OOFA.TXT [FDC.TMP]OOFA.TXT
- RELATIVE CONVERTED bar/oofa.txt [FDC.TMP.BAR]OOFA.TXT (*)
- RELATIVE CONVERTED [.bar]oofa.txt [FDC.TMP.BAR]OOFA.TXT (*)
- RELATIVE CONVERTED /foo/bar/oofa.txt [FDC.TMP.FOO.BAR]OOFA.TXT (*)
- ABSOLUTE CONVERTED /foo/bar/oofa.txt [FOO.BAR]OOFA.TXT (*)
- ABSOLUTE CONVERTED [foo.bar]oofa.txt [FOO.BAR]OOFA.TXT (*)
- (*) The indicated directory or subdirectory, one or more levels,
- is automatically created if allowed, otherwise the transfer fails.
- Note: It turns out to be easy to recognize the directory format in incoming
- packets, and so the FILE NAMES { CONVERTED, LITERAL } setting is not actually
- so important, except if we care about case conversion. We only need to detect
- the native and UNIX pathname formats -- see VMS nzrtol() in ckvfio.c.
- This must still be done for OS/2. After OS/2 part is done, a chunk
- of #ifdef OS/2 can be removed from the "not NZLTOR" part of rcvfil.
- Fixed isabsolute() for VMS. ckcmai.c, 5 Nov 97.
- Added IF ABSOLUTE to test if a filename is absolute or relative. The file
- need not exist. ckuusr.h, ckuus6.c, 5 Nov 97.
- After all this:
- . I can transfer a directory tree UNIX-to-UNIX by telling the sender to
- "send /pathnames:relative /recursive *" and the receiver to
- "receive /pathnames:relative". The entire directory tree is transferred
- quickly and quietly, and replicated on the other side.
- . Ditto from UNIX to VMS!
- . VMS to UNIX works too, but it's still a bit flaky. In VMS you have to say:
- send /pathnames:rel /filenames:converted [...]*.*".
- So hurray, transferring directory trees between unlike platforms.
- From Jeff: peakcps should only be reset once per transaction; cps/peakcps
- should be calculated and saved when File Display is None or CRT; thermometer
- pct should not be set to 100% if we are discarding the file. ckuusx.c,
- 6 Nov 97.
- Made /RECURSIVE un-invisible for VMS and AOS/VS, since their native
- recursive wildcards work fine. In these cases, /RECURSIVE is only informative
- and really translates to /PATHNAMES:RELATIVE. (But I didn't actually migrate
- any of the pathnames-handling code to AOS/VS yet, did I?) ckuusr.c, 6 Nov 97.
- Figured out why VMS-to-UNIX recursive transfers didn't seem to be working
- right: SEND (and RECEIVE) /PATHNAMES:<not-OFF> was setting FILE NAMES to
- LITERAL, which as needed before we made the new nz[rl]to[lr]() routines; fixed
- by #ifdefing. ckuus[r6].c, 6 Nov 97.
- Various fixes to VMS nz[rl]to[lr](), including some long-standing problems
- such as the inability to accept files whose names contain multiple periods.
- Now it all works pretty well. nrztol() now changes spaces and tildes into
- underscore, other nonprintables into dollar signs -- much more readable in VMS
- than changing everything to X, and as for dots:
- a.b.c.1 becomes a_b.c;1 (when only digits follow the last dot)
- a.b.c.d becomes a_b_c.d (otherwise)
- and VMS is happy. ckvfio.c, 6 Nov 97.
- Added /SINCE as an invisible synonym for /AFTER since I type it all the time.
- ckuusr.c, 6 Nov 97.
- Changed -L switch to also SET SEND PATHNAMES RELATIVE. ckuusy.c, 6 Nov 97.
- Filled in MKDIR for VMS, and made MDKDIR and RMDIR for other platforms
- print appropriate error messages when they fail. ckuusr.c, 6 Nov 97.
- Made blind stabs at implementing RMDIR in VMS. Finally I gave up on doing
- it using any APIs, since I haven't a clue, and just used system() commands.
- Crude but effective. Note: in VMS, we have to change the directory name
- [a.b.c] into a filename [a.b]c.dir;1, change its protection to allow deletion,
- and then delete it, which only works if it's empty. If it can't be deleted,
- all sorts of error messages spew out. Needs to be replaced by somebody who
- knows the actual VMS API for deleting a directory. ckvfio.c, 6 Nov 97.
- Added zrmdir() for UNIX. #defined ZRMDIR symbol in ckcdeb.h for all platforms
- that have a zrmdir() function (UNIX and VMS so far). Changed RMDIR command
- to use it. ckufio.c, ckcdeb.h, ckuusr.c, 6 Nov 97.
- zmkdir() was already there for UNIX, VMS, etc. I fixed it so it could be
- called to create directories, as you might expect. Its previous use expected
- a complete filespec, including a filename. But this was not required for VMS,
- and in UNIX the way to not require it is to make sure the string that is
- passed to it ends with a directory separator. Changed the MKDIR command to
- do this. ckuusr.c, 6 Nov 97. Slightly reworded the zmkdir description in
- ckcplm.doc.
- (This is all groundwork for adding REMOTE MKDIR and REMOTE RMDIR, but
- that's not done yet.)
- "msend <nonexistent-file><SP>" caused a parsing foulup. Fixed in ckucmd.c,
- 7 Nov 97.
- Added all the new switches to the MSEND table. ckuusr.c, 7 Nov 97.
- Changed ?-help to add a directory separator at the end of a filename (except
- in VMS) if the file is a directory, so you can tell by looking at the list
- what's what. ckucmd.c, 7 Nov 97.
- Fix from Jeff to catch disk-write errors during file reception, bdecode()
- (I left out an automatic variable declaration so a global variable of the same
- name, but different type, was being used). ckcfns.c, 7 Nov 97.
- Added a 3rd arg to ckmatch() to say whether to ignore case in string
- comparisons, and then in places where we are using it to match filenames, to
- be case-sensitive or not depending on the underlying file system (like in SEND
- /EXCEPT in UNIX vs DOS), and to ignore case in other pattern-matching
- applications (e.g. REDO, SHOW VARIABLES *FOO*), regardless of the file system.
- ckcker.h, ckcmai.c, ckucmd.c, ckcfns.c, ckuus[56].c, 7 Nov 97.
- Added automatic per-file text/binary mode switching based on filename
- pattern recognition, all within #ifdef PATTERNS..#endif. 7 Nov 97.
- Commands:
- . SET FILE PATTERNS { ON, OFF }
- . SET FILE { BINARY-PATTERN, TEXT-PATTERN } [ <pattern> [ <pattern> ... ] ]
- Files:
- . ckcker.h - symbol defs & max number of patterns (64)
- . ckuusr.h - change name of shoparf to shofil (it was annoying me)
- . setfil, ckuus7.c - parse the command, set up the pattern lists
- . shofil, ckuus4.c - show the lists
- . gnfile, ckcfns.c - declare use the lists (via calls to ckmatch())
- . ckuus2.c - "help set file" text
- . ckermit2.upd - docs, mainly section 4.3, others updated too.
- NOTE: Needed for VMS: permissions.
- A couple fixes to yesterday's stuff from Jeff: ckuus2.c, ckucmd.c, 8 Nov 97.
- Added { ADD, REMOVE } { BINARY-PATTERNS, TEXT-PATTERNS }. Redid the lists to
- be more dynamic and free()-safe. Added SHOW PATTERNS, with a nice display,
- and redid SHOW FILE to refer to SHOW PATTERNS. (I also added { ADD, REMOVE }
- SEND-LIST, but didn't fill it in.) Added lots more patterns to default lists.
- Made SET FILE TYPE LABELED override filename pattern-matching. ckcmai.c,
- ckcfns.c, ckuus[457].c, ckermit2.upd, 8 Nov 97.
- "delete dir/file" didn't work for some reason in UNIX. Changed dodel() to be
- a little less confusing with its use of line[] and tmpbuf[]. Then I changed
- the UNIX version to use Jeff's loop. But all the messages were annoying so I
- added /VERBOSE and /QUIET switches, making the latter the default for UNIX,
- and cleaned up the output when /VERBOSE is set. ckuus6.c, 8 Nov 97.
- Started to add code to prevent client from sending a BYE or FINISH when it
- had already done so on the same connection, but the risk outweighs the
- benefit. Maybe some other time. 8 Nov 97.
- Fixed a bug I introduced in VMS zrtol() at the last minute on Nov 6, which had
- extra filename dots being converted to underscores even after we had scanned
- backwards into the directory name. ckvfio.c, 8 Nov 97.
- Added a second arg to gfmode() (get file mode) to tell it to return its result
- in upper or lower case, adjusted the prototype and all references, removed
- various chunks of redundant code. ckuusr.h, ckuus[r56].c, 8 Nov 97.
- Added client end of REMOTE MKDIR and REMOTE RMDIR. ckuusr.[ch], ckuus7.c,
- 8 Nov 97.
- Increased number of patterns to 256 if BIGBUFOK. ckcker.h, 9 Nov 97.
- Made "remo" an acceptable abbreviation for "remote". ckuusrc., 9 Nov 97.
- Fixes from Jeff to yesterday's code: ckucmd.c, ckuus5.c, 9 Nov 97.
- From Jeff: don't check text patterns if already in text mode; ditto for binary,
- ckcfns.c, 9 Nov 97.
- Don't bother trying to send FINISH or BYE command when in local mode and
- there is no connection. ckcpro.w, 9 Nov 97.
- Made sure that RESUME and SERVER macros in protocol module set all counters,
- packet numbers, etc, back to 0. ckcpro.w, 9 Nov 97.
- Disabled automatic file type switching during RESEND. ckcfns.c, 9 Nov 97.
- Updated ckuker.bwr and ckermit.bwr. 9 Nov 97.
- Discovered that when the C-Kermit server got a REMOTE DELETE command for
- a directory (rather than a file), it did terrible things. Added a check
- against this in ckcpro.w, 9 Nov 97.
- Moved some prototype declarations around in ckcpro.w to alleviate possible
- problems with "declarations out of scope" noticed by some picky ANSI compilers.
- ckcpro.w, 9 Nov 97.
- Moved code out of MKDIR command in ckuusr.c to a new function, ckmkdir(), that
- can be called from the command parser or during protocol, and similarly for
- RMDIR. ckcker.h (prototypes), ckuusr.c, ckcfn3.c, 9 Nov 97.
- Added EN_MKD and EN_RMD symbols in ckuusr.h, and corresponding en_mkd and
- en_rmd variables. ckuusr.h, ckcmai.c, 9 Nov 97.
- Added server end of REMOTE MKDIR & RMDIR. ckcpro.w, ckcfn3.c, 9 Nov 97.
- Added ENABLE/DISABLE MKDIR/RMDIR commands. ckuus[56].c, 9 Nov 97.
- Added help for above. ckuus2.c, 9 Nov 97.
- Added info for above to SHOW SERVER. ckuus5.c, 9 Nov 97.
- Should make server-side CD accept UNIX-style pathnames too (at least in
- VMS).
- There are still a few problems with REMOTE DIRECTORY, etc. For example,
- if pathnames are off, "remote directory foo/*" strips the "foo/". But
- that's what it should do. But it seems to do it also when pathnames are on.
- VMS difficulty with SEND /MAIL using:
- system("$ mail %s %s/subj="Enclosed file %s"")
- Juggled things a bit in the got-E-packet section of the protocol module to try
- (again) to ensure that file-transfer display does not say "100%" if a transfer
- is canceled by an E-packet. ckcpro.w, ckuusx.c, 10 Nov 97.
- Added yet another level of file-type saving and restoring to allow gnfile() to
- use prevailing transfer mode (as set by user, or as overridden by "whoami"
- negotiation) for files it fails to identify by name pattern. So now we have
- three levels to save and restore: what the user said ("set file type"), the
- "whoami" type (which persists throughout a transaction), and a per-file type
- based on automatic file type recognition. gnf_binary, ckcfns.c, 10 Nov 97.
- Added /SUBDIRECTORIES as an invisible synonym for /RECURSIVE. ckuus[r6].c,
- 10 Nov 97.
- I just sent an E-packet. I'm in local mode, I was receiving a file, I'm not a
- server, and sliding windows are in use. Therefore, there are likely to be a
- bunch of packets already "in the pipe" on their way to me by the time the
- remote sender gets the E-packet. So the next time I CONNECT or try to start
- another protocol operation, I am likely to become terribly confused by
- torrents of incoming material. To prevent this, a loop was added to errpkt()
- to soak up packets from the connection until there is an error or timeout.
- ckcfn2.c, 10 Nov 97.
- Another try at getting better error screens when an E-packet is received.
- ckcfn[s23].c, 10 Nov 97.
- Make { ADD, REMOVE } patterns be case independent/sensitive according to
- the underlying file system. ckuusr.c, ckermit2.upd, 10 Nov 97.
- Made K95 default patterns lowercase rather than upper. ckcmai.c, 10 Nov 97.
- ---Alpha.08---
- Streaming prototype & proof of concept, 12 Nov 97 (to be described later)
- (if you stumble on it, don't try to use it).
- Fixed VMS ttchk() to detect connection loss the same way the UNIX and OS/2
- versions do. ckvtio.c, 13 Nov 97.
- Added missing prototype for cmaddnext(). ckucmd.h, 13 Nov 97.
- Protected a couple unguarded references to no_recall by #ifdef CK_RECALL.
- ckucmd.c, 13 Nov 97.
- Removed unguarded references to binpatterns[] and txtpatterns[] from
- doadd(). ckuusr.c, 13 Nov 97.
- Added missing VOID to VMS declaration of nzrtol(). ckvfio.c, 13 Nov 97.
- Removed spurious "(-1)" from VMS nzltor() return. ckvfio.c, 13 Nov 97.
- Supplied missing printf() argument in ADD command. ckuusr.c, 13 Nov 97.
- Added instructions for defining new network types to ckcplm.doc. 13 Nov 97.
- Support for IRIX 6.2 from Ric Anderson. Many modules, 13 Nov 97.
- Got rid of call to time(0) in ckcmai.c as a random number seed, to avoid
- yet another avalanche of #ifdefs, and called gtimer() instead, which is
- already well-defined in ck?tio.c. ckcmai.c, 13 Nov 97.
- Changed UNIX version to strip off leading "./" or "../" from outbound
- pathnames, no matter what the SEND PATHNAMES setting is. ckufio.c, 13 Nov 97.
- Fixed SHOW VERSIONS to state version numbers and dates consistently.
- Many modules, 13 Nov 97.
- Corrected some typos in ckermit2.upd, 13 Nov 97.
- ---Alpha.09---
- Revived my DG mini. Of course its compiler found several glitches that none
- of the others revealed: extern declarations for variables that were never
- defined anywhere, prototypes for static functions in header files, a reference
- to zzstring in a cmtxt call instead of xxstring, and a backwards #ifdef NZLTOR
- construction. After fixing these, I successfully built the AOS/VS version.
- ckuus[r35].c, ckcfn3.c, 14 Nov 97.
- Based on logs from Carl Friedburg and Mike Freeman, found the spot where
- file transfers on outbound VMS LAT connections were being inhibited and fixed
- it (always remember: ttyfd is valid in VMS only on TCP/IP connections).
- cncfn2.c, 17 Nov 97.
- From Jeff over the weekend, installed 17 Nov 97:
- . Fixes to parens in peakcps calculation, ckuusx.c.
- . Changed communications input buffer from 4K to 32K if BIGBUFOK
- defined, so that TCP reads will have a chance of being big enough to open
- the TCP receive window. ckutio.c.
- . Rearranged file input buffer size definitions. ckcker.h.
- . Make -j/J command-line options set the reliable flag. ckuusy.c.
- . Beginnings of Telnet client authorization and encryption code. ckcnet.[ch].
- Added missing AIX defines for TCP_NODELAY, TCP_KEEPALIVE, and TCP_MAXSEG.
- ckcnet.h, 17 Nov 97.
- Built for 16-bit QNX for the first time since before 6.0 was released, no
- problems. 17 Nov 97.
- Rec'd verification that VMS LAT calls now work again. 18 Nov 97.
- Numerous tiny syntactic changes for the benefit of gcc -Wall, a couple of
- which might actually make a difference (e.g. 2 or 3 spots where variables
- could possibly be used before set). Many modules, 18 Nov 97.
- Fixed a problem with SEND /MAIL:<address> <filename> on VMS. While working on
- this, also improved some VMS error messages. Tested to make sure that VMS
- C-Kermit can SEND /MAIL and also receive files as mail and deliver them.
- ckuusr.c, ckvfio.c, 18 Nov 97.
- Using bgcc, William Bader found two places where an out-of-bounds array
- reference might occur. One was just a debug() call, so I commented it out.
- The other was in the loop that strips junk from the end of a modem call-result
- message; the tests were reversed. Fixed in ckutio.c, ckudia.c, 18 Nov 97.
- Added -V command-line option = SET FILE PATTERNS OFF / SET XFER MODE MANUAL.
- ckuusy.c, 18 Nov 97.
- Fixed SHOW MACRO <name>. Not sure when it broke... ckuus5.c, 18 Nov 97.
- Added GET /RECURSIVE. This is like telling the server to SEND /RECURSIVE.
- Also GET /RECURSIVE /DELETE. Client and server ends of both.
- ckuus6.c, ckcpro.w, ckcfn2.c, 18 Nov 97.
- Note: GET /DELETE /RECURSIVE deletes files but not directories.
- Still have to add help text for this, etc.
- See ~/new/Wall.txt again.
- Cleaned up server end of new GET forms. Got rid of en_ret, merged with
- en_del. Save & restore recursive & fnspath around each server transaction.
- ckcpro.w, ckuus6.c, 19 Nov 97.
- ttflui() should not be called by input() when streaming. ckcfn2.c, 19 Nov 97.
- Added SET STREAMING AUTO and SHOW STREAMING. All of this is still invisible.
- ckuusr.[ch], ckuus[356].c, 19 Nov 97.
- Fixed input() in the streaming case to actually send an Error packet if it
- received a bad packet, rather than just pretend that it got an Error packet.
- ckcfn2.c, 20 Nov 97.
- Simplified the syntax of shotab[], ckuusr.c, 20 Nov 97.
- SET LINE / SET HOST / SET PORT commands were not getting into the recall
- buffer. Fixed in ckuus7.c, 20 Nov 97.
- Ditto for SET DIAL DIRECTORY, SET MODEM CAPABILITIES, SET CONTROL PREFIX,
- WAIT, and many other commands. These are commands that accept a variable
- number of args, and terminate when the command parsing routine returns -3.
- The solution is, when this happens, to make sure that cmcfm() is called
- anyway; otherwise lots of stuff doesn't happen that should happen. Note: when
- cmcfm() is called *after* the user typed CR, it knows this and does not make
- them type another one. ckuus*.c, 20 Nov 97.
- Fixed REMOTE LOGIN not to succeed when it was not given enough parameters.
- ckuus7.c, 20 Nov 97.
- From Jeff: Make SET TITLE take effect immediately. ckuus7.c, 20 Nov 97.
- Added SET TRANSFER DISPLAY BRIEF. Thus just writes a one-line report on
- each file, similar to FTP:
- filename (transfer-mode) (size-if-known): status (and cps if status OK)
- ckcker.h, ckuus[7x].c, 20 Nov 97.
- Discovered that filename pattern matching was happening too early, and could
- be undone by things that happened later. Moved the matching code out of
- gnfile() and into sfile() to make sure it was executed AFTER the S/I-packet
- exchange rather than before, so it would not be undone by the WHO/WHATAMI
- mechanism. ckcfns.c, 20 Nov 97.
- Allowed UNIX C-Kermit to accept /dev/null as an incoming filename and use
- it literally. ckufio.c, 20 Nov 97.
- Changed v(cps) to treat 0 elapsed seconds as 1 in calculating the transfer
- rate (previously it just returned "0 cps", so now it returns the filesize).
- ckuus4.c, 21 Nov 97.
- Eliminated unnecessary screen() procedure calls in rpack() and spack()
- when XFER DISPLAY is BRIEF. ckcfn2.c, 22 Nov 97.
- From Jeff: corrections to Telnet initializations when telnetting to non-23
- ports more than once, plus unhiding some debugging routines. ckcnet.c,
- 22 Nov 97.
- Corrections to WHATAMI negotiation; some of the bits were wrong. ckcfn2.c,
- 22 Nov 97.
- More fixes to command history -- macro invocations were being skipped, and
- commands that were canceled by the parser for syntax errors before entry were
- being entered when they shouldn't have been. ckuus[r5].c, 22 Nov 97.
- Added SET FILE DESTINATION NOWHERE (alias CALIBRATE), invisible, a sticky
- version of /CALIBRATE for receiving files, but it doesn't work -- come back
- and fix it...
- Changed all calls to screen() to go through a new macro, xxscreen(), which
- does not make the call if Kermit is in remote mode. This can eliminate a lot
- of function-call overhead during file transfer, on one end anyway. ckcpro.w,
- ckcfn*.c, ckuusx.c, 24 Nov 97.
- Changed sdata() to skip "sbufnum" countdown when streaming, and nxtpkt()
- to skip out-of-window check. ckcfn[s2].c, 24 Nov 97.
- Changed brief file transfer display to use the same cps calculation that the
- other displays use, and added elapsed seconds to the display. ckuusx.c,
- 24 Nov 97.
- Looked into making communication-device writes be nonblocking, so Kermit can
- be forming its next packet while the write() is actually occurring. But as
- far as I can tell, at least in the UNIX version, ttyfd is already opened in
- nonblocking mode, since that's how myread() works, and we use the same fd for
- both reading and writing. Still, I added a test for EWOULDBLOCK after the
- write, so make sure it is not treated as an error. ckutio.c, 25 Nov 97.
- Fixed up the changes to sdata() from yesterday. ckcfns.c, 25 Nov 97.
- Added CLOSE [ CONNECTION ] command, since the current method for closing a
- connection is quite mysterious ("set line" and/or "set host" without a device
- or hostname), and added a new function, clsconnx(), to do it, consolidating a
- bunch of confusing code that was in setlin(). ckuus[r7].c, 25 Nov 97.
- Fixed STREAMING message on fullscreen file-transfer display. ckuusx.c,
- 25 Nov 97.
- Fixed STATISTICS to show the packet length that was actually used when sending
- the last file, rather than the default that would be used in absence of
- instructions from the receiver. ckcfns.c, ckuus4.c, 25 Nov 97.
- Turned slow-start off for transfers in which streaming is negotiated.
- ckcpro.w, ckuusx.c, 25 Nov 97.
- Fixed a bug in which bgetpkt() was repeat-counting a run of two characters,
- when the minimum should be three, thus turning 2 into 3 and adding needless
- overhead to the packet. ckcfns.c, 26 Nov 97.
- Made NUL (0) unprefixable:
- . Changed SET CONTROL UNPREFIX commmand to allow it.
- . Changed logpkt() to log packets correctly when they contain NULs.
- . Now C-Kermit sends packets containing NULs correctly.
- . Make [b]gecode() be length-driven, rather than stopping at NUL.
- . Make [b]getpkt() handling of leftovers be length-driven.
- . Make all chk[123]() routines be length driven rather than stopping at NUL.
- . Make all calls to chk[123]() routines pass length.
- . Update prototypes for chk[123]() routines.
- ckcfn2.c, ckuus3.c, ckuus4.c, 26 Nov 97.
- Not done:
- . Anything about recording packets the debug log.
- . Including zero in "set control unprefix all" or "set prefixing none".
- . Docs, help, etc.
- . Enough testing.
- After these changes (reducing the unneeded repeat count for doublets and
- allowing NUL to be unprefixed), the packet overhead went down by about 10%
- when transferring the SunOS C-Kermit binary:
- size: 1026152
- packet chars: 1166088 (before)
- packet chars: 1062181 (after)
- As a quick check, I built it on AIX and sent some files to it. I was able to
- consistently get 766Kcps sending the same 4MB binary file that never went
- faster than about 600Kcps before.
- Changed SET PREFIXING command to account for unprefixing 0, and also made
- SET PREFIXING MINIMAL take flow-control setting into account when deciding
- whether to prefix 17,19,145,147. ckcmai.c, 26 Nov 97.
- Fixed length in chk1() call from chkspkt(), which affected autodownloads,
- from Jeff. ckcfn2.c, 27 Nov 97.
- Why on earth did chk3() take parity as an arg? The CRC is applied to outbound
- packets before adding parity, and is checked on arriving packets after
- stripping parity. Removed this in hopes of tightening up one more critical
- loop. ckcfn2.c, ckuus4.c, 27 Nov 97.
- Added new low-level routines to the UNIX version: rftimer() and gftimer().
- These time things using floating point seconds. Within #ifdef GFTIMER, which
- is, at present, defined only for UNIX. ckcdeb.h, ckutio.c, ckcplm.doc,
- 27 Nov 97.
- Added #ifdef GFTIMER sections throughout ckcpro.w, ckcfn*.c, ckuus4.c, and
- ckuusx.c to take advantage of [rg]ftimer() when calculating elapsed time, time
- left, and cps. Now we no longer have the 1-second granularity in
- file-transfer speed measurements, and therefore get accurate elapsed time and
- CPS figures at the end of a transfer regardless of the file size (within
- reason). 10BaseT socket-to-socket transfers from SunOS to AIX now routinely
- register over 800Kcps. 27 Nov 97.
- To add these routines to non-UNIX platforms:
- (VOID) rftimer() gets and saves the current time in whatever subsecond
- precision (millisecond, microsecond) is available.
- (float) gftimer() returns the number of seconds that have passed since
- rftimer() was last called as a fractional floating-point number.
- In ckcdeb.h, #define GFTIMER for your platform.
- Converted getmsec() to gftimer(), so now we can get packet-read/write
- millisecond times in the debug log for any platform where GFTIMER is defined
- ("grep msec debug.log"). ckcfn2.c, ckutio.c, 27 Nov 97.
- Checked GFTIMER on SunoOS, HP-UX 10.20, AIX 4.1, Solaris 2.5,
- Defined and added new WM_CLEAR flag to WHATAMI negotiation field. This gives
- the opposite Kermit permission to send any and all control characters
- unprefixed in data packets. ckcker.h, ckcfns.c, ckcmai.c, 27 Nov 97.
- Added SET CLEARCHANNEL { ON, OFF, AUTO }, AUTO is the default, and lets
- C-Kermit tell the other Kermit whether it has a clear channel based on whether
- it has opened a TCP socket connection. ON and OFF have the expected meanings.
- The CLEARCHANNEL setting, for now, is shown by SHOW STREAMING. Now if (and
- only if) I SET HOST directly to a Kermit server that is waiting on a TCP
- socket, I get minimal prefixing automatically. For example, from SunOS to
- AIX, with W=30, P=9000, I get > 800Kcps just about every time. ckuusr.[ch],
- ckuus3.c, etc, 27 Nov 97.
- Added SET TRANSACTION-LOG { VERBOSE, BRIEF [ separator ] }. If BRIEF is
- chosen, one line is written per file, with a timestamp, action (SEND or RECV),
- filename, size, mode (text or binary), status (OK or FAILED), and additional
- info depending on the status. The default separator is comma, but any other
- nonalphanumeric character can be specified. This format is suitable for
- direct importation into Informix, Oracle, Sybase, etc. ckcdeb.h, ckuusr.h,
- ckuusx.c, ckcfn[s3].c, ckcpro.w, 27 Nov 97.
- Built on SunOS, Solaris, HP-UX, AIX, and Unixware as a last-minute check. No
- complaints.
- Fixed CPS display in brief display to be file chars / elapsed time, rather
- than most recent CPS calculation. ckuusx.c, 28 Nov 97.
- Various other minor corrections to yesterday's work, mainly correcting
- backwards #idefs for GFTIMER. 28 Nov 97.
- Refinement of brief transaction log: always write 8 fields, enclose any
- field in quotes if it contains the separator. ckuusx.c, 28 Nov 97.
- Added docs for new transaction log format to ckermit2.upd. 28 Nov 97.
- Assorted minor corrections from Jeff to the last few days' work, ckcnet.c,
- ckcdeb.h, ckutio.c, ckuus[4x].c, ckcfn2.c, 1 Dec 97.
- Addition of hex dump debug tool, from Jeff, ckuusx.c, 1 Dec 97.
- Fixed IF NUMERIC to work correctly for variables whose definitions contain
- multiple words. ckuus6.c, 1 Dec 97.
- Made a lot of fixes that should improve the situation with command recall.
- Until now, the command functions module, ckucmd.c, was ignorant about where
- command were coming from. Which is silly. So now there is a function in the
- command parser, cmdsrc(), that can be called from ckucmd.c (or anywhere else)
- to determine the command source (keyboard, macro, TAKE file, etc), which makes
- decisions about the command recall buffer, and many other things, perfectly
- straightforward. Also, throughout the ckuus*.c modules, I replaced all the
- #ifdef'd tests of cmdlvl vs tlevel with calls to the new cmdsrc() function.
- So now we have the command recall buffer working pretty much as it did before
- I added the REDO command -- commands issued from macros don't go in; the SEND
- command doesn't always go in; macro invocations do go in, etc. Many modules,
- 1 Dec 97.
- Replaced hardwired server-mode help text (sent in response to REMOTE HELP)
- with dynamic version that actually tells which commands are available,
- enabled, etc. Will pretty it up later. ckcmai.c, ckcfns.c, ckcpro.w,
- 1 Dec 97.
- Replaced all checks for ttyfd < 0 to see if connection broken with calls to
- ttchk(), which must be coded to fill this role. This removes the risk of
- checking ttyfd on systems where it's not supported or, worse, on systems where
- it is used for one kind of connection but not others. Examples: in VMS, where
- it is used for TCP/IP but not serial; in AIX, where it is used for serial and
- TCP/IP, but not X.25, etc. ckcmai.c, ckcfn2.c, ckuus[434].c, 2 Dec 97.
- Added some extra checks to ttgmdm() and ttchk() for local vs remote mode to
- make sure they behave as advertised. ckutio.c, 2 Dec 97.
- SET DESTINATION NOWHERE (aka CALIBRATE) seems to have fixed itself. Added
- help and show text for it. ckuus[24].c, 2 Dec 97.
- Fixed READY TO SERVE... message for socket-based server. ckcpro.w, 2 Dec 97.
- Defined BIGBUFOK for Linux. ckcdeb.h, 2 Dec 97.
- Ripped out tons of stupid, confusing, and contradictory code for calculating
- the elapsed time and CPS of file transfer. Now this is done automatically in
- the protocol module at the end of each file transfer, and again at the end of
- a transaction, and the results are stored in global variables available for
- use by the various display routines (file transfer display, STATISTICS
- command, v(cps) variable, etc). Furthermore, the contradiction between file
- time/cps and transaction time/cps when only one file was transferred was
- eliminated simply by defining the latter to be the former in the 1-file case.
- Routines:
- fcps(), called when an input or output file is closed, sets:
- xfsecs = elapsed time this file, whole number of seconds.
- fpxfsecs = elapsed time this file, floating-point seconds.
- ffc = number of characters, this file.
- tstats(), called when a B packet is sent or received, sets:
- tfsecs = elapsed time whole transaction, whole number of seconds.
- fptsecs = elapsed time whole transaction, floating-point seconds.
- tfc = number of characters, all files.
- Many modules, 2 Dec 97.
- Fixed a bug in which a server could be given a REMOTE SET WINDOW and
- REMOTE SET RECEIVE PACKET-LENGTH combination larger than its buffer size,
- and it would accept them and try to use them. Reported by David Fiander.
- ckcfns.c, 2 Dec 97.
- Fixed SET MODEM COMMAND VOLUME HIGH; previously it was assigning the given
- command to VOLUME LOW. Reported by Dragan Milicic. ckuus3.c, 2 Dec 97.
- Changed SHOW MACRO to use chained FDBs, so "show mac ?" works, and yet
- "show mac x" also works when x is ambiguous, etc. ckuus5.c, 2 Dec 97.
- Changed askmore() to not ask when the batch or background flags are set.
- ckuus5.c, 2 Dec 97.
- Removed "kludge to fix redefinitions in <linux/wait.h>" since (a) this
- interferes with the new glibc and headers, and (b) it isn't needed any more
- anyway since we simplified how REDIRECT works. ckutio.c, 2 Dec 97.
- Another attempt at preventing "Transfer OK" messages when transfer wasn't
- OK. ckcpro.w, 3 Dec 97.
- Started adding a "filestatus" variable to protocol modules, to clean up the
- mess and confusion of all the separate flags: cxseen, czseen, discard,
- epktrcvd, etc etc. Not set or tested yet, to be continued later, maybe...
- ckcker.h, ckc*.c, 3 Dec 97.
- Removed the kludge by which we forced macro invocations into the command
- recall buffer, since Monday's fixes removed the need for it. ckuusr.c,
- 3 Dec 97.
- Changed SHOW COMM to always show SET CARRIER-WATCH setting. Updated the
- HELP SET CARRIER-WATCH text. ckuus[42].c, 3 Dec 97.
- New HP-UX makefile entries from Peter Eichhorn. 3 Dec 97.
- Enabled RLOGIN code for HP-UX 10.00 (it was already enabled for HP-UX 9.00)
- and Digital UNIX 4.0. ckcnet.h, 3 Dec 97.
- Added a hint message for RLOGIN failures. ckuusr.c, 3 Dec 97.
- Changed STATISTICS to omit the transmission speed if it's a network connection
- or if C-Kermit is not in local mode. ckuus4.c, 3 Dec 97.
- Fixed "cd .<ESC>" and "cd ..<ESC>" to behave as expected in UNIX and OS-9.
- (Fixing this for "?" would be much harder, since "." and ".." do not get into
- the directory list). ckucmd.c, 3 Dec 97.
- The following for VMS from Lucas Hart:
- (1) Add a NOVMSSHARE "feature", since that condition is contrary to
- default VMS linking, and a __CRTL_VER (that is what DEC C calls
- it, though DECC_RTL would be more precise for their usage) to CKUUS5.C
- (2) Update OLD_VMS conditionals for VMS 4.7 (before they were only to
- V4.4), in CKVOLD.C, CKVFIO.C, CKVTIO.C
- (3) Change the CKVKER.COM link logic slightly to always define either
- NOVMSSHARE, or VMSSHARE, and to make the VAX NOVMSSHARE also define
- (and link) /NOSYSSHARE, as initially intended.
- (4) Comment out more of the debugging output in CKVKER.COM
- (5) Similar changes to CKVOLD.COM (and incorporate CKVKER 1.17 edits)
- Contributed 5 Oct 97; I finally got around to them on 3 Dec 97.
- Removed perror() calls from keepalive(), and replaced with debug() calls.
- No point scaring people to death... ckcnet.c, 3 Dec 97.
- Assorted #ifdef adjustments for building on many systems. Various modules,
- 3 Dec 97.
- Fixed Data General AOS/VS version to allow recently defined file numbers,
- chkfn(); ditto for OS-9. ck[d9]fio.c, 4 Dec 97.
- RETURN from inside SWITCH did not work right; same problem as END (fixed on
- July 3). doreturn(), ckuus6.c, 4 Dec 97.
- DIAL and ANSWER should not automatically CONNECT, no matter what the DIAL
- CONNECT setting is, if C-Kermit is running in batch or in the background.
- ckuusr.c, 4 Dec 97.