From: Frank da Cruz <fdc@watsun.cc.columbia.edu>
To: wermit-l@wkuvx1.wku.edu
Subject: C-Kermit 6.1 Alpha.08

Here's Alpha.08 of C-Kermit 6.1.193.  Still a closed Alpha (pre-Beta)
test, not ready for open public testing yet.  Details about the new version
are given in the text files mentioned towards the end of this message.
Let me know if you want off the announcement list.

(Note: I added some more people to this mailing who haven't seen any of this
before, some of whom have built and/or otherwise taken care of C-Kermit on
other platforms or are working on new ports -- if you have any questions,
send me e-mail.)

GENERAL CHANGES SINCE ALPHA.07 (24 Sept 1997)

Quite a few!  (If you have not received previous announcements, see the
ckermit2.upd and ckc193.upd files for complete details.)

Sending directory trees:
 . SET { SEND, RECEIVE } PATHNAMES { RELATIVE, ABSOLUTE, OFF }
 . Define new common intermediate representation for pathnames (UNIX format).
 . Extend SET FILE NAMES CONVERTED to handle pathnames also.
 . SEND /RECURSIVE allows transmission of directory trees.
 . New functions to get recursive file and directory lists:
   \frfiles(), \fdirectories(), \frdirectories().
 . Text and Binary filename pattern lists for automatic switching.
 . \fnextfile() now works safely from its own separate file/directory list.
 . Bigger file lists allowed in most versions.

Client/Server:
 . Local MKDIR and RMDIR commands added.
 . REMOTE MKDIR and RMDIR commands added, for client to tell server to create
   or remove directories, plus corresponding ENABLE and DISABLE commands.
 . Server end of REMOTE MKDIR and RMDIR commands added.

Performance:
 . Some hopefully significant file-transfer speedups, especially for
   binary-mode no-parity transfers (some transfers clocked at FTP speeds
   on our local Ethernet).
 . Changed SET TRANSFER CRC-ACCUMULATION default from ON to OFF for speed.
 . SET FILE OUTPUT { BLOCKING, NONBLOCKING, BUFFERED, UNBUFFERED }
 . Peak CPS added to STATISTICS display.
 . STATISTICS { /BRIEF, /VERBOSE }, /BRIEF is new default.

More and more SEND qualifiers:
 . SEND /LIST:<name-of-file-containing-list-of-files-to-send>
 . SEND /MOVE:<directory-for-source-file-after-successful-transfer>
 . SEND /RENAME:<new-name-for-source-file-after-successful-transfer>

Connections:
 . Better detection of connection loss during and after file transfer.
 . BYE or FINISH when given after connection drops no longer get stuck.
 . Improved messages in fullscreen file-transfer display esp. for failures.
 . URL-stripping for "set host" and "telnet".

Command Language and Script Programming:
 . New REDO <pattern> command re-executes the most recent command that
   matches the pattern.
 . New WHERE command ("where did that file go that I just transferred???")
 . ?-file lists now show whether a file is regular or a directory.
 . Automatic (local) arrays for macros and command files.
 . SET OUTPUT SPECIAL-ESCAPE { ON, OFF } to en/disable \N, \B, \L in OUTPUT.
 . New assignment syntax:
    .name = value    means   DEFINE name value
    .name := value   means   ASSIGN name value
    .name ::= value  means   EVALUATE value then assign result to name
 . IF ABSOLUTE <filespec> succeeds if <filespec> is absolute (not relative)
 . DELETE has new /VERBOSE and /QUIET switches
 . Commit each WRITE FILE line to disk when written.
 . Added SHOW LOGS, broke this info out from SHOW FILE.
 . New variables \v(printer), \v(escape), 
 . New functions \fdirname(filespec) (returns the directory part of a
   file specification), \frandom(max) (pseudorandom number generator).
 . Command-file reader more tolerant of unexpected record formats.
 . SET WILD { SHELL, KERMIT } [ { /MATCH-DOT-FILES, /NO-MATCH-DOT-FILES } ]
   (new switches: UNIX only)

New command-line options:
 . 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".

Fixes:
 . "define \%a 12:00:00, pause \%a" now works right.
 . Some foulups in autodownload parity detection.
 . EXIT warnings no longer issued when running background or in batch.
 . Numerous minor parsing and command-editing fixes.
 . Clear network buffers before starting a new Rlogin session to prevent
   rlogin protocol foulups.

Open Issues:
 . Supporting serial speeds above 38400 in IRIX 6.2 and later, or for that
   matter, supporting "set speed" at all in IRIX 6.2 and later (I'm getting
   mixed reports).
 . Transferring bizarre-record-format files in VMS that worked with Kermit-32.
 . Getting/setting file permissions in VMS
 . Making it work at all on the BeBox.
 . Adding TCP/IP support for Plan 9 (should be interesting!).
 . Lousy performance on AOS/VS (in case anybody cares).  My DG mini is dead
   (as is DG itself as far as I can tell).   Short of a miracle, Alpha.07 is
   the final edition of C-Kermit for AOS/VS. 

As you can see, the changes since last time are, well, massive, no doubt 
retain a few rough edges, and need a LOT of heavy testing.

The new directory-tree sending ability is pretty unique, I think.  Not only
is it possible to send a directory tree between (say) two UNIXes or two
VMS's, you can do it between any pair of UNIX, VMS, OS/2, Windows 95, Windows
NT (when the next version of K95 comes out), Windows 3.x or DOS (when the
next version of MS-DOS Kermit comes out), or (if anybody can compile and
debug it) AOS/VS.  And not only that, the directories can contain any mixture
of text and binary files.  This is possible because of the following new
developments:

 . The new ability of UNIX C-Kermit (and the forthcoming versions of
   K95 and MS-DOS Kermit) to descend through a directory tree when
   sending files (does not apply to VMS which already could do this by
   expanding wilcards such as "[...]*.*"; similarly for AOS/VS).  This
   needs to be added for VOS, OS-9, and other active C-Kermit versions.

 . The ability to send relative pathnames (or absolute ones) in a 
   standardized, cross-platform format.

 . The ability of C-Kermit to automatically create directories when 
   receiving files (this might need to be added for VOS, OS-9, etc).

 . Filename pattern lists for automatic selection of text and binary mode.
   Default lists are supplied for each platform, and the user can replace
   them, add patterns to them, or remove patterns from them.

To illustrate how easy it is to send a directory between like systems,
all you need to do on the sending system is:

  $ kermit                         ; Start Kermit
  C-Kermit> cd /usr/olga           ; CD to desired source directory
  C-Kermit> send /recursive *      ; Send all files recursively

On the receiving computer:

  $ kermit                         ; Start Kermit
  C-Kermit> cd /home/ivan/
  C-Kermit> mkdir olgas-files      ; Create desired destination directory
  C-Kermit> cd olgas-files         ; CD to it, and...
  C-Kermit> receive /pathnames:relative ; (abbreviate "r /pa:r")

File dates and times are preserved across the transfer, and for UNIX/UNIX
transfers only, also permissions.

When sending files between unlike systems, there are lots of other
considerations, obviously, like setting up automatic text/binary mode
switching and character-set conversion appropriately; for example:

 Sender:
  cd xxx                           ; CD to root of source tree
  set file type binary             ; Default transfer mode
  set file character-set hp-roman8 ; Local character set for text files
  set xfer character-set latin1    ; Transfer character set
  set file patterns on             ; Enable automatic file-type switching...
  set file binary-patterns *.Z *.gz *.o  ; based on these patterns...
  set file text-patterns *.txt *.c *.h   ; for binary and text files.
  send /recursive *                ; Send all the file in this directory tree

 Receiver:
  cd yyy                           ; CD to root of destination tree
  set file character-set cp850     ; Local character set for text files
  receive /pathnames:relative      ; Receive with pathnames

WHERE TO FIND IT

C-Kermit 6.1.193 Alpha.08 is in the usual places for C-Kermit test versions,
along with early drafts of all the update documentation, etc:

 ftp://kermit.columbia.edu/kermit/test/tar/
   cku193src.tar.Z   Source code (UNIX and VMS), tar, UNIX compress
   cku193src.tar.gz  Source code (UNIX and VMS), tar, gzipped
   cku193txt.tar.Z   Other text files, tar, UNIX compress
   cku193txt.tar.gz  Other text files, tar, gzipped

 ftp://kermit.columbia.edu/kermit/test/text/
   Individual source and text files.

 Among the interesting text files:
   ckermit2.upd    -- Detailed documentation of new features since 6.0.192.
   ckc193.upd      -- Program edit history since 6.0.192.
   ckuins.doc      -- UNIX installation instructions.
   ckvins.doc      -- VMS installation instructions.
   ckvker.bwr      -- VMS C-Kermit "beware file" with new hints on CD, etc.
   ckuker.bwr      -- UNIX C-Kermit beware file.
   ckcplm.doc      -- Program logic manual, API definition, etc.
   alpha0[1-8].txt -- Announcements of each Alpha test.

INDIVIDUAL ALPHA.08 BINARIES:

I did not have a chance to update and test all of them this time (the net 
has been really awful); the binaries marked with (*) are C-Kermit 6.1.193
Alpha.08, transferred using itself to the Kermit ftp site; the others are
mostly Alpha.07; I'll be bringing the others up to date over the coming days.

 ftp://kermit.columbia.edu/kermit/test/bin/
   ckdker-aosvsii.pr:           DG AOS/VS-II
   ckuker.bsd44c-hp9000_300     HP-9000/300 4.4BSD-Lite
   ckuker.bsdi2-2.1             PC, BSDI 2.1
   ckuker.bsdi2-3.0             PC, BSDI 3.0
   ckuker.hpux500wintcp         HP-9000/550 HP-UX 5.21 + TWG-TCP/IP 1.2
   ckuker.hpux80oc-hp9000_385   HP-9000/385 HP-UX 8.00
   ckuker.hpux90o700            HP-9000/712 HP-UX 9.05
 * ckuker.hpux100o-10.20        HP-9000/715 HP-UX 10.20
 * ckuker.du32                  DEC Alpha Digital UNIX 3.2
 * ckuker.du40                  DEC Alpha Digital UNIX 4.0
   ckuker.irix51-5.3            SGI IRIX 5.3
 * ckuker.irix60-6.2            SGI IRIX 6.2
 * ckuker.linux-1.2.13-i386     PC, Red Hat Linux 1.2.13
   ckuker.next-3.1-mc68040      NeXT 68040 NeSTSTEP 3.1
 * ckuker.rs6aix41c             IBM RS/6000 AIX 4.1
   ckuker.sco32v504net          PC, SCO OpenServer 5.0.4
 * ckuker.sinix542-5.42-mips    SNI SINIX 5.4.2 MIPS (RM200)
 * ckuker.solaris2x-2.4-sparc   Sun Sparc, Solaris 2.4
 * ckuker.solaris2x25-2.4-sparc Sun Sparc, Solaris 2.4 + SunLink X.25
 * ckuker.solaris25-2.5.1-sparc Sun Sparc, Solaris 2.5.1
   ckuker.solaris25-2.6-sparc   Sun Sparc, Solaris 2.6
 * ckuker.sunos41c-4.1.3-sparc  Sun Sparc, SunOS 4.1.3_U1
   ckuker.ultrix42c-4.3-mips    DECstation 5000, Ultrix 4.3
 * ckuker.unixware2-2.1.1       PC, Unixware 2.1.1
   ckuker.unixware2-2.1.2       PC, Unixware 2.1.2
   ckvaker-vms62-nonet.exe:     Alpha CPU, VMS 6.2,   no TCP/IP
   ckvaker-vms62-tgv40a.exe:    Alpha CPU, VMS 6.2,   MultiNet 4.0A
   ckvaker-vms71-nonet.exe:     Alpha CPU, VMS 7.1,   no TCP/IP
   ckvaker-vms71-tgv40b.exe:    Alpha CPU, VMS 7.1,   MultiNet 4.0B
   ckvvker-vms55-nonet.exe:     VAX CPU,   VMS 5.5-2, no TCP/IP
 * ckvvker-vms55-ucx20.exe:     VAX CPU,   VMS 5.5-2, UCX 2.0
 * ckvvker-vms61-nonet.exe:     VAX CPU,   VMS 6.1,   no TCP/IP
   ckvvker-vms61-tgv40a.exe:    VAX CPU,   VMS 6.1,   MultiNet 4.0AX
   ckvvker-vms71-nonet.exe:     VAX CPU,   VMS 7.1,   no TCP/IP
   ckvvker-vms71-tgv40b.exe:    VAX CPU,   VMS 7.1,   MultiNet 4.0B

I'd be glad to do more of these myself and spare you the trouble -- for that
I'd need guest IDs on systems I can Telnet to from here, and which have the
necessary C compilers, header files, & libraries.

Thanks to all of you for your help with & comments on this version so far!
Please beat it to death and send any bug reports straight to me so I don't
embarrass myself too much when announcing the public Beta.

If you do succeed in building it on a platform not listed above, please
let me know the details (machine make & model, OS and version, separate
TCP/IP product, if any, and the size (in bytes) of the resulting executable
(for addition to the table in the ckc193.upd file).  And if you have trouble,
of course, let me know.

- Frank