C-Kermit Daily Source-Code Archive

[ C-Kermit ] [ Kermit 95 ] [ Home ]

Last update: Thu Dec 29 17:54:50 2005 EST

C-Kermit 8.0.211 was released 10 April 2004.

Between formal C-Kermit releases, and even between Alpha and Beta releases during C-Kermit testing periods, the current working sources are uploaded to the Kermit FTP site on a daily basis (except on days when they don't change, which they didn't between 23 May 2004 and 12 June 2005):

x.tar.gz Unix Kermit source code, Tar archive, Gzip compression (gunzip)
x.tar.Z Unix Kermit source code, Tar archive, Compress compression (uncompress).
x.zip Unix and VMS source code, ZIP archive (unzip -a).
kermit/test/tar/ Directory listing of the kermit/test/tar directory.
kermit/test/text/ Separate source files, makefile, and update notes.

Included in the archive is a plain-text file, ckc212.txt, which contains the detailed edit history, with the newest edits described at the bottom. The daily upload is not guaranteed to build successfully on the many platforms where a true release or Beta builds, but it does build on at least 2 or 3 of our primary development platforms (Solaris, Linux, VMS, HP-UX, Windows, or whatever we're working on that day).

Download the archive into a fresh directory. To build for Unix (CLICK HERE for greater detail)…:

  1. Unpack the archive (e.g. "gunzip x.tar.gz ; tar xvf x.tar.gz" or "unzip -a x.zip").
  2. "make xxx" (xxx = platform target, e.g. "linux", "solaris9", "macosx103", etc).
  3. This makes an executable, "wermit" in your current directory.
  4. If you will be using it to dial out, give it the same owner, group, and permissions as cu, minicom, tip, or whatever.
  5. "./wermit" to start it.

To build for VMS, unzip the Zip file into a fresh directory and type "@ckvker.com". This makes an executable "WERMIT.EXE". For greater detail, CLICK HERE.

The changes in C-Kermit since version 8.0.211 was released are listed in reverse chronological order:

29 Dec 2005
Implemented X/Open Single UNIX Specification Version 2 (UNIX 98) Large File Support (LFS), allowing 32-bit platforms to access, manage, and transfer files bigger than 2MB on platforms that support LFS. These include Linux on Intel PC hardware, Mac OS X 10.3.9 or 10.4.x, and Solaris 9 and 10 (Solaris on Sparc, of course, also supports pure 64-bit builds, but the LFS version has a much smaller footprint). This should work for both Kermit and FTP protocol transfers, although I have not yet found a way to test it in the FTP client. It also has the side benefit that new 64-bit signed integer data type can also be used elsewhere, e.g. in arithmetic, so the S-Expression and regular arithmetic expression evaluators were upgraded to use it when available. This applies to both 32-bit LFS platforms as well as 100% 64-bit platforms. All of this involved massive changes in the code, touching virtually every module, and there are sure to be spots I missed, so thorough testing is warranted. I've built and tested to some extent on both 32- and 64-bit versions of Linux going back to 1999, plus OpenVMS, SCO Unixware 7.1, FreeBSD 4.11, Tru64 Unix 4.0F, and Mac OS X 10.3.9 and 10.4.2. Areas to watch out for:

  • Does the SEND command work for regular files as well as long files?
  • Can both regular and long files be received?
  • Do versions that do not support long files properly refuse to receive them?
  • On the file-transfer display screen, do all the numbers look right?
  • Do numbers look right in debug and transaction logs?
  • Does the DIRECTORY command show the correct file size for all files?
  • Can you use FOPEN and FSEEK on both regular and long files?
  • What are the results of the following S-Expressions?
    (^ 2 30) (^ 2 31) (^ 2 32) (^ 2 62) (^ 2 63) (^ 2 64) (^ 2 99)
  • Do all your scripts still work?
  • etc. etc.

When building, use "make linux" to build any Linux version. This should automatically include LFS support on Linuxes that include it. I haven't been able to find any Linux platforms that don't, but in case it causes trouble, use "make linuxnolfs". For Solaris, use "make solaris9lfs" or "make solaris10lfs". I didn't make this the default for Solaris yet because I don't seem to have access to the i386 version of Solaris any more to make sure it works there too (Sun cc or gcc). For Mac OS X 10.3.9 or later, use "make macosx10.4".

Adding LFS to other builds on other platforms that support it should be easy: just do this:

make clean

where xxx is any makefile target. If you do this, let me know the results. Other changes in this edit are:

  • Fixed S-Expressions in the Mac OS X version.
  • Added HTTP support to FreeBSD and OpenBSD versions.
  • Added a new switch, /EXCEPT:pattern, to the GREP command.
15 Dec 2005
Added buffering code to speed up HTTP GET and all other input from an HTTP server; result is about 20 faster on a fast network connection (clear-text, non-SSL connections only). Changed DIRECTORY and DELETE commands to not show filenames in braces when printing error messages. An updated HP-UX 9.xx makefile target to avoid core dumps from stack exhaustion. Fixed a typo in the non-ANSIC definition of ckfstoa().
04 Dec 2005
Discovered that on a SET PORT /SSL connection, Kermit treats incoming 0xff data bytes (e.g. sent from the POP server) as IACs and goes into Telnet negotiations. This makes it impossible to retrieve email from a SSL or TLS POP server if the mail contains any 0xff bytes, because the POP server doesn't do Telnet protocol. Kermit's current SSL and TLS methods both allowed for Telnet negotiations to be initiated by one side or the other. Added two new ones: /SSL-RAW and /TLS-RAW, which do not respond to Telnet IACs but, rather, accept them as data. Also: Updated INPUT and MINPUT help text; changed "make netbsd" to be a synonym for "make netbsd2" because the original netbsd target was ancient and got compiler warnings.
03 Dec 2005
In the DATE command and related functions, fixed parsing of dates like "Wed, 13 Feb 2002 17:43:02 -0800 (PST)", commonly used in email. Added a new format code 4 to \fcvtdate() to emit asctime() format, used in BSD-format email message envelopes. Added a new function \femailaddress() which, given a From: or Sender: header line from an RFC2822-format email address, extracts and returns the actual email address. Added INPUT /CLEAR so INPUT can be started with a clean buffer without requiring a sepearate CLEAR INPUT command. Added INPUT /NOWRAP which is explained HERE. Fixed some SSL/TLS messages that were not suppressed if SET QUIET ON. Fixed FOPEN /APPEND to work right even if the file didn't exist. Fixed IF KERBANG to not spuriously succeed if used in a Kerbang script that was invoked by another Kerbang script; it should succeed only for the top-level script. Changed \flop() and flopx() functions to take a third argument, a number signifying at which occurrence of the break character to lop, so:

\flopx(sesame.cc.columbia.edu) = edu
\flopx(sesame.cc.columbia.edu,,2) = columbia.edu

Laid some more groundwork for hybrid 32/64-bit builds (to allow "long" files to be transferred on 32-bit platforms that supply an appropriate API).

14 Nov 2005
Strictly for debugging an isolated FTP/SSL problem; one debug statement added.
11 Nov 2005
More data-type tests in SHOW FEATURES. •• A typo in the HP-UX 7.00 Makefile target was corrected. •• Even after the previous changes, it was still possible for SWITCH to produce incorrect results if the value of a case-label variable was too long. Any such error is now fatal to the script where it occurs. •• An idea popped into my head after having typed too many commands like "dir ck[cuw]*.[cwh]" to check the list of matching files, and then having to retype the same filespec in a SEND command: Why not unleash some unused control character such as Ctrl-K to spit out the most recently entered input filespec? So I did that, and also added a new variable \v(lastfilespec) that expands to the same last filespec, for use in scripts. •• The Unix version of C-Kermit failed to put anything in the session log if SET TERMINAL DEBUG ON. I changed it to log the debugging format, since that's what user who noticed this wanted. The alternative would be to just log the raw incoming stream as usual, or to add Yet Another SET Command to choose.
26 Oct 2005
Adjustment of builds for various old platforms to avoid the "long long not defined" compilation failure (older HP-UX versions, etc). Please notify me of any further failures. Adaptation to OpenSSL 0.9.8. More data-type feature tests for SHOW FEATURES (remember, this is to shake out the platforms differences in advance of attempting long-file support for 32-bit architectures). Major fixes to the SWITCH statement; it did not allow for long case labels (including variables that are expanded into long strings) and under certain circumstances it could execute the wrong case, e.g. if two case labels were not unique in their first 50 characters. The length limit for labels has been raised to 8K, overflows are now detected, and certain other failures have been corrected that are too hard to explain.
23 Oct 2005
Nothing major. In no special order: Prevented HTTP POST from adding an extraneous CRLF at the end. Fixed warnings in network and FTP for socket-related functions on HP-UX 11i V2, and got long-file transfers working on HP-UX 11i. Added tests to SHOW FEATURES for macros like INT_MAX, LONG_MAX, LLONG_MAX, as well as sizeof(long long) to shake out where we're going to have trouble when we start implementing the hybrid long-file support. Fixed some old-style prototypes for get/setuid-type functions. Continued work on the pattern matcher: patterns such as "*[abc]" could make Kermit loop or dump core; this is fixed. FREAD was fixed to fail and give a message if it tries to read a record that is too big for its buffer. FREAD /SIZE:n was fixed to make sure it reads n bytes or else fails. \Flen() and some other built-in functions would fail on string arguments longer than 8K, this is fixed. ASKQ was changed to not echo anything unless requested to do so, by adding a new switch /ECHO:c, allowing a character (such as asterisk) to be specified for echoing. Not echoing makes ASKQ very convenient for use in CGI scripts. FTP GET /COMMAND (used e.g. for piping an incoming file into more or less) always dumped core, fixed now. Various minor code corrections and cleanups. And, with this edit, C-Kermit is MINIX3-ready!
27 Aug 2005
More 64-bit work. When a 32-bit versions of Kermit is sent a long file, the result isn't pretty. First it truncates the file size that was announced in the sender's Attribute packet so the file-transfer display statistics are all wrong, and then in most cases when the 2^31 (or 2^32) byte boundary was hit, a trap would occur causing Kermit to exit immediately. As a first step in adapting 32-bit versions of C-Kermit to long files, I fixed these problems. And discovered that on some platforms, (such as in 32-bit C-Kermit builds on Mac OS X 10.3.9) the file would be received successfully anyway -- don't ask me how. Began to add some consciousness of 64-bitness at compile time (new CK_64BIT macro) and runtime (new \v(bits) variable). 64-bit builds now announce themselves as such in the startup banner. Got rid of numerous compiler warnings for socket-related calls in 64-bit builds and I hope also most 32-bit ones. In other areas: fixed ASKQ asterisk-echoing in VMS; fixed reception of files that had device specifications but no directory field in VMS; fixed REMOTE DIRECTORY listings to terminate lines correctly (with CRLF, not just LF); replaced all the silly FreeBSD makefile targets with a consolidated one ("make freebsd"); added a new makefile target ("macosx10.4_64") for 64-bit builds on Mac OS 10.4, and starting now I'm bumping the "Dev.xx" number each time there's a new upload; this one is Dev.02.
17 Aug 2005 Some work on 64-bit versions of C-Kermit. New targets 'solaris10_64' and 'solaris9_64' that actually work (Sun CC only, I'm still having problems with gcc). Having built them, I found some runtime problems: some versions (notably Solaris) would not make Telnet connections; other versions (such as Linux on ia64 or x86_64) would not make ssh connections. These are now fixed. The big news is that 64-bit builds transfer large files correctly between themselves. So far these include Solaris 9 and 10, Linux on AMD x86_64, Linux on ia64, and Tru64 Unix on Alpha. These versions also handle long files in all the other ways that Kermit deals with files -- the DIRECTORY command, the file-related functions, the local file interface (FOPEN / FREAD / FWRITE / FCLOSE). I believe the FTP client also works, but it's hard to prove. The next -- and much more difficult -- step is to handle long files on those 32-bit platforms that support them, through any of several "transitional APIs". Also in this edit, I changed the plain-text version of ASKQ to echo asterisks.
14 Aug 2005 New build target for Mac OS X 10.x that automatically picks up Mac OS version, e.g. 10.4.2, for the program herald. Updated UnixWare 7 target (uw7) to also pick up UnixWare version automatically. Fixed FOPEN to set the channel variable to -1 if it fails rather than possibly leaving it undefined. Added two special channel values, -8 and -9, that turn all FILE i/o commands (FREAD, FWRITE, FSEEK, etc) into noops that succeed (-8) or fail (-9). Fixed IF DIRECTORY to work for Unix pathnames that begin with tilde. Fixed the NONOSETBUF compile-time directive (which instructs Kermit to make stdout unbuffered) as well as the corresponding runtime --unbuffered command-line option. Cleared up some compiler warnings.
11 Aug 2005 Compact substring notation extended to allow ending position to be specified instead of length; thus \s(foo[12:18]) means the substring of foo starting at position 12 of length 18, and the new \s(foo[12-18]) means the substring of foo starting at position 12 and ending with position 18. // Fixed a six-year-old bug relating to disconnected compound ELSE parts. Now those who prefer to put the ELSE on the line after the closing brace of the IF clause can do so once again. // Added HTTP support in Mac OS X 10.3 and later, and on BSDI 4.x. // Built on Mac OS X 10.3.9 and 10.4.2, Solaris 9 and 10, RH Linux AS4, Tru64 Unix 4.0F, and SCO Unixware 7.1.4.
18 Jul 2005 Added OpenSSL support for Tru64 Unix. Added HTTP support for NetBSD. Fixed HTTP GET command work with URLs that contain metacharacters. Fixed the June 16th fix to the pattern matcher. Added some missing HELP text.
27 Jun 2005 New makefile targets for Solaris 10.
16 Jun 2005 Fixed some problems matching patterns that use the [a-z] construct.
15 Jun 2005 New build target for Mac OS X 10.3 with Kerberos 5 and OpenSSL. Fixed error in herald generation for NetBSD 1.5, 1.6. Fixed SET TERMINAL IDLE-ACTION OUTPUT to work as documented, i.e. to send a NUL character if the OUTPUT string is empty. New SET WILDCARD-EXPANSION { ON, OFF } command allows straightforward processing of filenames obtained programmatically if they happen to contain literal metacharacters, or for that matter if you want to type them interactively without all the quoting.
12 Jun 2005 New IF LINK command (Unix only) to test for symlinks. New SET TERMINAL LF-DISPLAY command. New --unbuffered command-line option for Unix, to force unbuffered console i/o. New \flopx() function returns rightmost field from string (such as file extension). Improved IDLE-ACTION OUTPUT interpretation in SHOW TERMINAL display. Automatic version number generation for herald in NetBSD 2.0 and later. Security updates. Fixed \fdirectory() when used with nonwild directory name. Fixed date/time differencing across year boundary. Fixed FTP HELP to override verbosity setting. Fixed some incorrect prototypes. Fixed a syntax error in CKVKER.COM.
23 May 2004 Fix automatic redialing of numbers that contain spaces when DIAL MACRO is defined. Add client and server side of REMOTE MESSAGE. Fix FTP CD to strip quotes or braces from around argument.
10 May 2004 Allow access to FTP ports above 16383. Fix FTP output of Unicode text to screen. Relax FTP FEAT parsing to allow different kinds of whitespace. Fix short-circuit property of S-Eexpressions like (AND X Y). Inhibit automatic switching from SPACE parity to NONE on autodownload. Fix DIAL MACRO to work with multi-word phone numbers. Deal with compile-time warning on certain Red Hat systems regarding <baudboy.h>.
17 Apr 2004 The UUCP lockfile for Mac OS X was /var/spool/uucp, which does not exist. Fixed it to be /var/spool/lock, which does exist, and re-uploaded version 8.0.211. You can tell the difference because SHOW VERSIONS has a 17 Apr 2004 for the Communications I/O module. Also the 10.3 executable now has a designer banner: "Mac OS X 10.3".

[ C-Kermit Home ] [ Kermit Home ]

C-Kermit Daily Source Code / The Kermit Project / Columbia University / kermit@columbia.edu