home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c-kermit / ckc188.txt < prev    next >
Text File  |  2020-01-01  |  155KB  |  3,195 lines

  1. File CKCKER.UPD, Update history for C-Kermit.                      -*- text -*-
  2.  
  3. Author:  Frank da Cruz
  4. Address: Watson Laboratory, Columbia University Center for Computing Activities
  5.          612 West 115th Street, New York, NY 10025, USA, Earth
  6. Phone:   (212) 854-5126
  7. Fax:     (212) 662-6442
  8. E-Mail:  fdc@watsun.cc.columbia.edu (Internet), FDCCU@CUVMA (BITNET/EARN)
  9.  
  10.   Copyright (C) 1985, 1992, Trustees of Columbia University in the City of New
  11.   York.  Permission is granted to any individual or institution to use this
  12.   software as long as it is not sold for profit.  This copyright notice must be
  13.   retained.  This software may not be included in commercial products without
  14.   written permission of Columbia University.
  15.  
  16. Most recent update: Mon Nov 23 12:03:39 1992
  17.  
  18. NOTE: This file renamed to CKCKER.UPD from CKUKER.UPD, 4 July 1992.
  19.  
  20. This file is intended for C-Kermit developers.  To reduce its size, older
  21. material has been moved to separate files:
  22.  
  23.   CKCV4E.UPD -- Version 4E and earlier (through January 1989)
  24.   CKCV4F.UPD -- Version 4F (which was never formally released)
  25.   CKC178.UPD -- Version 5A prior to the first Beta release, edit 179 (567K!).
  26.   CKC188.UPD -- Version 5A from edit 179 until final release.  This file.
  27.   CKCKER.UPD -- Version 5A, changes since final release.
  28.   CKCKER.2DO -- Things to Do, moved from this file in edit 183.
  29.  
  30. Instructions for reading any of these files.  For each edit there is a
  31. narrative of what was done.  Each of these narratives is added at the top,
  32. just below the UPDATE HISTORY heading, and reads top-to-bottom.  So to find
  33. out what has happened since you last looked at C-Kermit, find the entry for
  34. the version/edit that you have, such as 5A(180), scan upwards for the next
  35. version/edit, read downwards, then repeat: {
  36.   scan upwards twice;
  37.   read downwards once;
  38. } until you get back here.
  39.  
  40.  
  41. UPDATE HISTORY:
  42. ==============
  43.  
  44. ------------------------------
  45. 5A(188) Mon Nov 23 11:59:55 1992
  46.  
  47. Removed BETA from program herald and released version 5A.  These are the
  48. components of the final 5A(188) release:
  49.  
  50. FILE      LAST EDIT    VERSION    COMMENTS
  51.  
  52. ckcasc.h  19 May 92               ASCII character symbol definitions
  53. ckcdeb.h   6 Nov 92               Definitions used by all modules
  54. ckcker.h  23 Nov 92               Kermit-specific definitions
  55. ckcsym.h  19 May 92               C preprocessor symbol definitions
  56. ckcxla.h   4 Aug 92               Common character-set translation definitions
  57. ckuver.h  18 Nov 92               Version header definitions
  58.  
  59. ckcmai.c  23 Nov 92    5A(188)    Main program
  60. ckcpro.w  23 Nov 92    5A(052)    Protocol state switcher, "wart" language
  61. ckwart.c  14 Jan 92    2A(009)    wart preprocessor for ckcpro.w
  62. ckcpro.c  23 Nov 92    5A(052)    C-language protocol state switcher
  63. ckcfns.c  24 Nov 92    5A(080)    System-independent protocol functions
  64. ckcfn2.c  23 Nov 92                ...continued
  65. ckcfn3.c  12 Oct 92                ...continued
  66. ckcnet.h  13 Oct 92               Common network support definitions
  67. ckcnet.c  23 Nov 92    5A(015)    Network support
  68.  
  69. ckcmdb.c  10 Nov 92       -       malloc()-debugging package
  70.  
  71. ckucmd.h  21 Nov 92               Interactive command parser symbols
  72. ckucmd.c  22 Nov 92    5A(053)    Interactive command parser functions
  73. ckuusr.h  26 Oct 92               User interface symbols
  74. ckuusr.c  23 Nov 92    5A(092)    Interactive command parser
  75. ckuus2.c  23 Nov 92                 ...continued
  76. ckuus3.c  21 Nov 92                 ...continued
  77. ckuus4.c  22 Nov 92                 ...continued
  78. ckuus5.c  23 Nov 92                 ...continued
  79. ckuus6.c  23 Nov 92                 ...continued
  80. ckuus7.c  23 Nov 92                 ...continued
  81. ckuusx.c  23 Nov 92               User interface common routines
  82. ckuusy.c  18 Nov 92               Command-line option parser
  83.  
  84. ckudia.c   2 Nov 92    5A(046)    DIAL command
  85. ckuscr.c   2 Nov 92    5A(015)    SCRIPT command
  86.  
  87. ck9con.c  12 Oct 92    5A(06)     OS-9 CONNECT command
  88. ck9fio.c  10 Jul 92    5A(07)     OS-9 file system interface
  89. ck9tio.c  12 Oct 92    5A(08)     OS-9 communications i/o
  90.  
  91. ckdcon.c  10 Oct 92    5A(44)     AOS/VS CONNECT command
  92. ckdfio.c  10 Oct 92    5A(064)    AOS/VS file system support
  93. ckdtio.c  10 Oct 92    5A(096)    AOS/VS communications i/o
  94.  
  95. ckicon.c   1 Sep 92    1.3        Amiga CONNECT command
  96. ckifio.c   1 Sep 92    1.6        Amiga file system support
  97. ckistu.c   1 Sep 92    1.5        Amiga stub routines
  98. ckitio.c   1 Sep 92    1.7        Amiga communications i/o
  99. ckiutl.c   1 Sep 92    1.7        Amiga utility functions
  100.  
  101. ckocon.c  25 Oct 92     -         OS/2 CONNECT command
  102. ckodir.h  20 Jan 92               OS/2 file system definitions
  103. ckoker.h   6 Nov 92               OS/2 compilation definitions
  104. ckolat.h  11 Jul 92               OS/2 LAT support definitions
  105. ckonet.c   8 Aug 92    5A(008)    OS/2 network support
  106. ckotio.c  16 Nov 92     -         OS/2 communications i/o
  107.  
  108. ckscon.c  20 Jul 92    5A(031)    Atari ST CONNECT command
  109. cksfio.c  20 Jul 92    5A(059)    Atari ST file system interface
  110. ckstio.c  20 Jul 92    5A(086)    Atari ST file communications i/o
  111.  
  112. ckucon.c  23 Nov 92    5A(047)    CONNECT command for UNIX
  113. ckufio.c  23 Nov 92    5A(067)    File system interface for UNIX and OS/2
  114. ckutio.c  23 Nov 92    5A(102)    Communications i/o for UNIX
  115. ckuxla.h  27 Jun 92               Character-set symbols for UNIX & others
  116. ckuxla.c  21 Nov 92    5A(018)    Character-set translation for UNIX & others
  117. ckustr.c  11 Sep 92      -        String extraction module for 2.xBSD
  118. cku2tm.c  11 Sep 92      -        ctimed support for 2.10 BSD
  119.  
  120. ckvvms.h   7 Oct 92               VMS- and OpenVMS-specific definitions
  121. ckvcon.c  26 Oct 92    5.0-028    CONNECT command for VMS and OpenVMS
  122. ckvfio.c   5 Nov 92    2.0-095    File system support for VMS and OpenVMS
  123. ckvtio.c  23 Nov 92    2.0-050    Communications i/o for VMS and OpenVMS
  124. ckvioc.h  19 Oct 92      -        VMS ioctl() simulation symbol definitions
  125. ckvioc.c  19 Oct 92      -        VMS ioctl() simulation
  126. ckvcvt.c   6 Sep 92    T1.0-05    VMS labeled-file decoder
  127.  
  128. ------------------------------
  129. 5A(187) Mon Nov 23 03:22:34 1992
  130.  
  131. Fixes from Kai Uwe Rommel for OS/2 popen() for IBM C.  ckotio.c, ckufio.c.
  132. (Reports from Michael Godfrey say it doesn't work.)
  133.  
  134. Changed the behavior of the protocol module if it gets an error packet when
  135. running in (what Kermit thinks is) the background.  Previously it always
  136. exited unless it was in server mode.  Now it exits only if (a) not in server
  137. mode, (b) at command top-level.  This way, if Kermit is executing a TAKE file
  138. or macro, the TAKE file or macro can decide what action to take if a file
  139. transfer command fails.  ckcpro.w.
  140.  
  141. Added an alternative makefile entry for Interactive 386/IX from Steen
  142. Hammerum <steen@kiku.dk>, "make is5r3net2".
  143.  
  144. Added a few more items to the SHOW FEATURES display.  Made the size of
  145. trmbuf[] (the termcap buffer) be selectable at compile time by defining
  146. TRMBUFL to be the desired length.  It defaults to 1024, its previous value.
  147. Tom Kloos <tk@sequent.com>.  ckuus5.c.
  148.  
  149. Fixed the following interactive command-parsing bug reported by Tom Kloos:
  150. If you complete a field with ESC, and the following field has a default value,
  151. and you type leading spaces in that field, the default is supplied and
  152. C-Kermit goes on to the next field without notifying the user.  Example:
  153.  
  154.   SET DIAL DIS<ESC>play <SP>ON
  155.  
  156. At this point, C-Kermit is trying to confirm the command.  Fixed by having
  157. the command-parsing static "inword" variable managed in different places, with
  158. its setting determined by whether the requested keyword or filename completion
  159. was performed successfully.  ckucmd.c.
  160.  
  161. Fixed parsing of "help help".  Previously, the Copyright line was printed when
  162. the user typed ESC or SP in the middle of the second "help".  ckuus2.c.
  163.  
  164. Added previously missing command confirmation to the CD command.  ckuus5.c.
  165.  
  166. While exercising the interactive command parser, found another long-standing
  167. bug, namely that under certain conditions, trailing whitespace could cause
  168. cmcfm() to fail erroneously.  This was due to overzealous backing up of too
  169. many pointers while trimming trailing whitespace in gtword().  Fixed in
  170. ckucmd.c.
  171.  
  172. Removed -DNOJC from "mips" makefile entry for MIPS Computer Systems.
  173. Reportedly, job control works now.  Put back -DNOJC if job control causes
  174. trouble.
  175.  
  176. Installed OS/2 patches from Kai Uwe Rommel.  These include another attempt
  177. to make his homegrown popen() and pclose() routines for IBM C; something about
  178. "hot handles"; and preliminary hooks for remote operation.  Many modules, but
  179. mostly ckotio.c.
  180.  
  181. Updated UTEK makefile entries to specify a larger (2K) TRMBUFL.  Tom Kloos.
  182.  
  183. Fixed SET DELAY to not allow negative numbers, and to allow positive numbers
  184. up to 999 (previously the limit was 94).  Ditto for SET RETRY.  ckuus3.c.
  185.  
  186. Changed UNIX version of SPACE command to allow tilde notation in the
  187. (optional) directory name (by calling cmdir() instead of cmtxt()).
  188.  
  189. Changed VMS communication-device-reading routine, txbufr(), to read no more
  190. than 512 bytes at a time, so as to minimize the chance of exceeding small
  191. BYTLM quotas, a workaround suggested by Terry Kennedy.  ckvtio.c. 
  192.  
  193. Mike Freeman <freeman@watsun.cc.columbia.edu> pointed out that wildcard sends
  194. didn't work from the command line on VMS, e.g. "kermit -s *.log".  Fixed in
  195. ckuusy.c.  This fix should also apply to all the other non-UNIX OS's too.
  196.  
  197. Changed the fatal() routine to give a VMS-style error message in the VMS
  198. version.  ckuusx.c.
  199.  
  200. Make MS an invisible abbreviation for MSEND.  ckuusr.c
  201.  
  202. Change the message "Escape back to your local Kermit and give a SEND/RECEIVE
  203. command" to "Return to your local Kermit and..." because some Kermit programs,
  204. like Mac Kermit, do not require you to escape back.  ckcpro.w.
  205.  
  206. Added CHECK DYNAMIC-MEMORY to check whether Kermit was built with dynamic
  207. memory allocation (i.e. whenever SET BUFFERS is available).  Also fixed order
  208. of CHECK keywords.  ckuus3.c.
  209.  
  210. Added O/o-diaeresis Latin1-to-ASCII translations for Icelandic.  ckuxla.c.
  211.  
  212. Fixed bug with \fexec().  If recursive calls nested too deeply it would try
  213. to free memory that had not been malloc'd and dump core.  Also changed
  214. definition of recursion depth limit, CMDDEP, to allow it to be overridden by
  215. a CFLAGS value, e.g. -DCMDDEP=100.  Changed SHOW FEATURES to display CMDDEP
  216. value.  ckucmd.c, ckucmd.h, ckuus5.c.
  217.  
  218. Add \v(system) entry for Atari ST = "Atari_ST".  ckuus4.c.
  219.  
  220. Removed some unneeded casts of 3rd debug() argument to (int) in ckucmd.c,
  221. which (justifiably) caused compilation warnings from 16-bit-int compilers.
  222. ckucmd.c.
  223.  
  224. Fixed arraynam() to catch too-long array references and give an intelligent
  225. error message rather than something confusing about not finding the closing
  226. bracket.  ckuus5.c.
  227.  
  228. C-Kermit now also issues a message when you give it a GET, REMOTE, BYE, or
  229. FINISH command when it's in remote mode, top-level, etc, just like it does
  230. when you give it a SEND, RECEIVE, or SERVER command.  It's about time --
  231. people get very confused when they say BYE, expecting to exit from the
  232. program, and instead it sits there for 5 seconds, then prints some squiggles
  233. on the screen...  ckcpro.w.
  234.  
  235. Allowed EXTPROC as a synonym for COMMENT in the non-OS/2 versions too, in
  236. case somebody wants to run an OS/2 C-Kermit self-running command file from
  237. a different version of C-Kermit.  ckuusr.c.
  238.  
  239. Changed SHOW STATUS to not change STATUS.  ckuus5.c.
  240.  
  241. Changed local-mode file transfer interrupt message for POSIX to be like the
  242. one for System V, i.e. you have to type the CONNECT-mode escape character
  243. first.  ckuusx.c.
  244.  
  245. Added casts to some function calls in ckuus5.c, ckuusx.c, ckufio.c, ckucon.c,
  246. and ckcnet.c for ANSI C compilation.  Warnings reported by William Bader.
  247.  
  248. Fixed bug reported by Christian Hemsing in the new packet timeout calculation;
  249. sense of comparison was backwards.  Also, we were using the wrong receive
  250. packet-length for comparison.  Also, we weren't checking it in the right
  251. places.  chktimo() in ckcfn2.c, plus calls to chktimo() added or changed in
  252. ckcpro.w, ckcfns.c, ckuus7.c, and prototype changed in ckcker.h.
  253.  
  254. New OS/2 definitions and makefile to include DDE4.MSG error messages when
  255. built with IBM C, from Kai Uwe Rommel.
  256.  
  257. 386BSD fix for running setuid uucp from Warren Jones <wjones@halcyon.com>.
  258. In sysinit(), call congm() *after* priv_ini(); otherwise 386BSD doesn't let
  259. C-Kermit open /dev/tty (even though it is world-read-writable) to get its
  260. modes.  ckutio.c.
  261.  
  262. Add -DUSLEEP to Linux makefile entries.  Add a new "make linuxgcc2net" entry
  263. to add TCP/IP support.  Rick Sladkey <jrs@world.std.com>.
  264.  
  265. Replaced sprintf() calls in dbchr() with ordinary character assignments.
  266. Makes a big difference, reportedly, on small systems when debug is on.
  267. Suggested by Andy Fyfe.
  268.  
  269. ------------------------------
  270. 5A(186) Tue Nov 10 09:50:10 1992
  271.  
  272. (Open)VMS CHANGES:
  273.  
  274. From Terry Kennedy at Saint Peters College, <terry@spcvxa.spc.edu>, fixes to
  275. the subprocess / mailbox problems encountered during server execution of
  276. REMOTE commands as well as interruption of locally-spawned commands.  Terry's
  277. comments:
  278.  
  279.   Every way I found I could hang C-K would also hang Bliss Kermit-32.  Go
  280.   fire it up and send it a "REMOTE HOST STOP/ID=0".
  281.  
  282.   I rewrote the whole thing from scratch for ckvfio.
  283.   A number of things have been definitely fixed:
  284.  
  285.   1) ^C now works properly from the local-mode spawn/push/!/@ commands,
  286.      regardless of whether a command was given.
  287.  
  288.   2) If the user issues a spawn/push/! with no command text, they get a
  289.      DCL prompt (as before), but also get instructions on how to get back
  290.      to Kermit.
  291.  
  292.   3) An explicit check for PRCLM is done and it tells the user to see their
  293.      system manager to have the UAF PRCLM increased if it's too small.
  294.  
  295.   4) zsyscmd/zshcmd no longer call zxcmd - they're self-contained.
  296.  
  297.   5) zxcmd was completely rewritten to remove the command mailbox and to clean
  298.      up the code and add lots more error reporting.  Also, newer VMS features
  299.      (V4.0 and higher) were used to streamline the code.
  300.  
  301.   6) All of the stuff that went with zxcmd (get_subr_line, etc.) was cleaned
  302.      up and error logging was added.
  303.  
  304.   7) Efficiency was improved in the mailbox handling code.
  305.  
  306.   8) If SUPERSAFE is defined (it is, by default [hardcoded in ckvfio.c]) then
  307.      the subprocess will be checked before each read to the mailbox. If the
  308.      subprocess is no longer present, then things will exit gracefully.
  309.  
  310.   9) If a subprocess requests input, it receives EOFs until it exits.
  311.  
  312.   10) A subprocess that runs forever (generating output) can be terminated.
  313.  
  314.   A few comments - #8 above adds a bit of overhead - but it's probably
  315.   worth it. There's enough debugging stuff in there now that I should be
  316.   able to fix any hangs/loops with a debug log.  The only hole I know of
  317.   is programs which generate no output and issue no input requests.  These
  318.   will hang the server.  I could put a timeout in there for no activity
  319.   for "X" seconds, but that would be too long for impatient folks and too
  320.   short for folks who issued a major command on a loaded system.  This
  321.   needs to wait for a change to the terminal I/O to make it asynchronous.
  322.   This problem also affects Bliss Kermit-32, BTW.
  323.  
  324. From Hirofumi Fujii <keibun@onlnews.kek.jp>:
  325.  
  326. Fixed CKVKER.COM to redefine VAXC$INCLUDE in the WIN/TCP case to also include
  327. SYS$LIBRARY, as CKVKER.MAK and CKVKER.MMS already do.
  328.  
  329. From me:
  330.  
  331. Rewrote zkermini() routine in VMS version to allow the user's "-y" command
  332. line selection of initialization file to take precedence.  The non-operation
  333. of -y was reported by Rob Chalmers <nmrac@paz.gsfc.nasa.gov>.  ckvfio.c.
  334.  
  335. Fixed OPEN !READ in VMS version, by adding allowance for both ZIFILE and
  336. ZRFILE (rather than only ZIFILE) to zxcmd(), zclose(), and zclosf().  I don't
  337. think this ever worked before.  Now it works fine.  OPEN !WRITE, however,
  338. still does not work -- there is no code to support it.  ckvfio.c.
  339.  
  340. Fixed VMS PING command for DEC TCP/IP to (a) not stomp over prompt, and
  341. (b) only send one ping instead of 10.  ckuusr.c.
  342.  
  343. UNIX CHANGES
  344.  
  345. changed UNIX SPACE command to allow an argument, like "space /".  ckuusr.c.
  346.  
  347. Dozens of bureaucratic edits to many modules to defeat warning messages from
  348. SCO ODT 2.0 compiler concerning argument promotion rules, int vs long, etc.
  349. These might also take care of certain core dumps that were recently reported.
  350. Thanks to William Bader.
  351.  
  352. Removed "#include commonC.h" from ckcdeb.h for DIAB -- Bo Kullmar said this
  353. was necessary.
  354.  
  355. Added notes to makefile about SunOS compile/link problems.
  356.  
  357. Added makefile entries for HP-UX 8.0 with curses support.  Suggested by Steve
  358. Fosdick <stevef@aom.bt.co.uk>.
  359.  
  360. New makefile entry for SCO UNIX 3.2 V4.0 with TCP/IP, <dirent.h> for Extended
  361. Acer File System (EAFS), curses, ANSI C compilation: "make sco32v4netc".
  362. William Bader.
  363.  
  364. New makefile entry for Charles River Data Systems UNOS, "make crds", from
  365. David Harrison, Kingston Warren Corp, Newfields, NH.
  366.  
  367. OS/2 CHANGES
  368.  
  369. Changed SPACE command, and OS/2 C-Kermit server's response to REMOTE SPACE
  370. command, to use 'dir | find "bytes free"' rather than CHKDSK, which was a bad
  371. idea (takes forever, can get hung on console, etc).  ckcpro.w, ckuusr.c.  But
  372. we still need a better way to do this -- presumably a system call to
  373. DosQFSInfo().
  374.  
  375. Later, replaced the above with improved code for SPACE and REMOTE SPACE for
  376. OS/2 from Kai Uwe Rommel.  Many modules.
  377.  
  378. Also changed OS/2 SPACE command to take an argument, like "space a:".
  379. ckuusr.c.
  380.  
  381. OS-9 CHANGES
  382.  
  383. DIAL command fixes for OS-9, related to signal handling, plus a minor change
  384. in OS-9 signal-related definitions in ckcdeb.h from Christian Hemsing
  385. <chris@lfm.rwth-aachen.de>.  Also, a new binary was provided.
  386.  
  387. GENERAL CHANGES
  388.  
  389. Removed unexpected file transfer display when local-mode server gets a FINISH
  390. command and SERVER DISPLAY is OFF.  ckcpro.w.
  391.  
  392. Changed the command parser to perform completion when ESC or TAB is typed at
  393. the end of a special abbreviation (CM_ABR) for a command, e.g. "c" for
  394. "connect"; "s" for "send"; "g" or "ge" for "get"; "sp" or "spa" for "space".
  395. ckucmd.c.
  396.  
  397. Changed the command parser question-mark-help giver to list the keyword, even
  398. if it is invisible (CM_INV), if it is the only one that matches what was typed
  399. so far AND if it is not a prefix of any other command (e.g. as ASK is for
  400. ASKQ).  For example "spaw?" now displays "spawn" instead of nothing, but
  401. "ask?" displays both "ask" and "askq".  Also "!?" displays "!" instead of
  402. nothing, etc.  ckucmd.c.
  403.  
  404. Changed keyword tables to use CM_INV and CM_ABR consistently, so the above two
  405. changes should work right everywhere.  ckuusr.c.
  406.  
  407. Changed SET PROMPT to no longer allow text to be enclosed in doublequotes --
  408. braces should be used, as they are for all the other text-oriented commands,
  409. to keep leading and/or trailing spaces.  ckuus3.c.
  410.  
  411. Changed SET DIAL <blah> commands that take character strings to allow enclosing
  412. braces for including leading and/or trailing braces, like most other
  413. text-oriented commands (e.g. ECHO, ASK, etc).  The inconsistency was pointed
  414. out by Peter Kabal <kabal@inrs-telecom.uquebec.ca>.  ckuus7.c.
  415.  
  416. Changed dial directory lookup to give precedence to an exact match, and
  417. accept an abbreviation only when there is not an exact match.  ckuus6.c.
  418.  
  419. Fixed SHOW DIAL to show DIAL INIT-STRING and DIAL-COMMAND correctly for
  420. V32-TELEBIT, V42-TELEBIT, etc.  ckudia.c.
  421.  
  422. Changed Telebit dialing code not to force PEP mode when KERMIT-SPOOF ON,
  423. because this prevents fallback when other modem doesn't support PEP.  Bob
  424. Larson <blarson@mizar.usc.edu>.  ckudia.c.
  425.  
  426. Fixed SET ATTRIBUTES ALL { ON, OFF } to do what it was supposed to all along
  427. -- turn all the attributes on or off, *without* affecting whether the
  428. attribute mechanism itself was on or off.  Changed REMOTE SET ATTRIBUTES ALL
  429. { ON, OFF } to fail always, since there is no mechanism in the protocol for
  430. this.  ckuus7.c.
  431.  
  432. Fixed TRANSMIT to strip high bits from echoed characters if PARITY not NONE
  433. or COMMAND BYTESIZE not 8.  ckuus4.c.
  434.  
  435. Fixed SCRIPT command to echo, even if from a macro or take file, if SCRIPT
  436. ECHO is ON and MACRO (or TAKE) ECHO is also ON.  ckuscr.c.
  437.  
  438. Fixed a minor bug in parsing of SET SERVER DISPLAY.  ckuus7.c.
  439.  
  440. Fixed help message for SET QUIET.  ckuus2.c.
  441.  
  442. Straightened out confusion with SET { RECEIVE, SEND } TIMEOUT.  It did not
  443. work as advertised.  SET RECEIVE TIMEOUT tells the other Kermit what timeout
  444. interval to use; it just puts the value in the negotiation string.  SET SEND
  445. TIMEOUT overrides whatever the other Kermit says our timeout should be.  Like
  446. it says in the Kermit book, etc.  Also fixed the parsing of SET RECEIVE
  447. TIMEOUT to supply the correct defaults, and SET SEND TIMEOUT to be issued with
  448. no value to cancel a previous SET SEND TIMEOUT.  When a SET SEND TIMEOUT
  449. override is in effect, SHOW PROTOCOL marks it with an asterisk.  Also, added
  450. the negotiated -- and possibly adjusted -- value to the SHOW PROTOCOL display
  451. as "(used=xx)".  Also (suggested by Christian Hemsing), changed the timeout
  452. adjustment routines to add 10 percent slop (min 2 secs), rather than a
  453. constant 2 seconds, to allow for round-trip delay.  ckcmai.c, ckcfns.c,
  454. ckcfn2.c, ckcpro.w, ckuus4.c, ckuus7.c.
  455.  
  456. Fixed stdout / stderr confusion in SET LINE error messages, and ASK and ASKQ
  457. help messages, reported by Fuat Baran.  ckuus7.c.
  458.  
  459. Fixed fnparse(), the routine that parses a list of filenames sent in a GET
  460. command to the C-Kermit server, to strip trailing whitespace to prevent space
  461. at the end of a filename from being mistaken for another (null) filename.
  462. Problem pointed out by Terry Kennedy, noticed when MS-DOS Kermit sent a GET
  463. command to the VMS C-Kermit server, with the filespec containing trailing
  464. spaces.  ckuusx.c.
  465.  
  466. Changed GET command to allow { braces } to include leading and/or trailing
  467. spaces in the filespec sent to a server.  ckuusr.c, ckuus6.c.
  468.  
  469. Fixed SET { SEND, RECEIVE } PACKET-LENGTH to disallow negative lengths!
  470. ckuus7.c.
  471.  
  472. Added some bulletproofing to the TAKE file reader.  Until now, it would go
  473. into an infinite loop if it got a malloc() failure or tried to read from a
  474. file that contained NUL characters.  Also, now we supply a terminator in case
  475. the last line of a TAKE file lacks one.  ckuus5.c.
  476.  
  477. OS/2 16-bit version got too big.  Changed -Gt16 to -Gt8 to make some room
  478. in the stack.  ckoker.mak.
  479.  
  480. ------------------------------
  481. 5A(185) Tue Oct 27 18:14:49 1992
  482.  
  483. Thu Oct 15 -
  484.  
  485. Minor correction to getok() to allow for Digitel CCITT modem "VAL" response.
  486. ckudia.c.
  487.  
  488. Correction to conres() for Sony NEWS, to restore Kanji mode correctly, from
  489. Hirofumi Fujii.  ckutio.c.
  490.  
  491. Added fflush(stdout) to UNIX CONNECT command, to make sure entire CONNECT
  492. message is displayed before connection begins.  From Michael Pins.  ckucon.c.
  493.  
  494. Mon Oct 19 -
  495.  
  496. Corrected the dnix5r3ansi makefile entry, plus a minor change to ckcdeb.h to
  497. go along with it.  Bo Kullmar.
  498.  
  499. Some changes to CKVIOC.C and .H, suggested by Lee Tibbert, mostly
  500. compiler-related.  The only functional change is to avoid asking the system
  501. for an event flag number, but always using EFN 0.  Lee says this is safe, and
  502. it speeds execution significantly.
  503.  
  504. Tue Oct 20 -
  505.  
  506. Corrected one more bug in the OS/2 C-Kermit VT102 emulator.  Darrel Hankerson
  507. <hank@ducvax.auburn.edu> sent in a simple demonstration of how EVE screens
  508. could still become messed up after insert-line operations followed by
  509. cursor-ups.  Diagnosis: ESC M (reverse index) caused scrolling whenever the
  510. cursor was *at or below* the top margin (i.e. the top line of the current
  511. scrolling region).  Cure: It should scroll only when the cursor is *on* the
  512. top margin line.  I also corrected a similar mistake for ESC D (Index).
  513.  
  514. Fri 23 Oct -
  515.  
  516. From Bob Larson <blarson@usc.edu> -- UUCP lockfile fix for RS/6000 AIX 3.2
  517. (ckutio.c), plus new makefile entry for same with curses support.
  518.  
  519. Added SET DIAL PREFIX.  This lets us insert PBX outside-line codes, etc,
  520. independent of the phone number, so we don't have to include them in dialing
  521. directory entries, and that way the same dialing directory entry can be used
  522. from different locations.
  523.  
  524. Sun Oct 25 -
  525.  
  526. Found another bug related to retries of packet 0.  When reconstructing the
  527. ACK to an S or I packet, and the block check type was not 1, the packet was
  528. malformed (the block-check TYPE was being saved and restored, but not the
  529. block-check LENGTH).  Fixed in resend() in ckcfn2.c.
  530.  
  531. Found and fixed the problem with the first packet received by VMS C-Kermit
  532. after escaping back from a DEC TCP/IP (UCX) connection: the final read that
  533. was posted during CONNECT mode was not being canceled properly.  cancio()
  534. needed to use a channel number rather than a file descriptor in the UCX case.
  535. Fixed in ckvtio.c.  Built and tested with UCX and MultiNet.
  536.  
  537. OS/2 fixes:
  538.  . Make session logging work in the 16-bit version by using regular
  539.    buffered writes, and by making logchar() a macro rather than a function.
  540.  . Make session log "binary" so carriage returns are not doubled.
  541.  . Hand-code sprintf() in-line to prevent a procedure calls in terminal
  542.    emulation functions that were too deeply nested:
  543.      ESC [ 6 n   -- cursor position report.
  544.      ESC [ ? 6 n -- ditto
  545.      ESC [ Pn x  -- request terminal parameters
  546.  . Recoded handling of host-directed printing directives.  But it didn't help,
  547.    we still crash with a stack overflow.  So disabled host-directed printing
  548.    in the 16-bit version for now.
  549.  16-bit version passes chkesc test for the first time, even with session
  550.  logging on.  pcprint is now harmless.
  551.  
  552. Mon Oct 26 -
  553.  
  554. Fixed VMS version to display an appropriate herald, calculated at runtime,
  555. saying whether it is VAX or AXP (Alpha), and OpenVMS (5.5 or later) vs
  556. plain-old VMS (5.4 and earlier).  Adapted from code by Lee Tibbert.  CKVTIO.C.
  557.  
  558. More banging at OS/2 C-Kermit in hopes of getting printing to work on 16-bit
  559. version (but no, it still crashes with stack overflow, so I ifdef'd it out
  560. again).  Also, tried to prevent transparent print from printing the ESC [ 5 i
  561. "printer on" sequence (but I can't test it).  ckocon.c.
  562.  
  563. Expanded OS/2 SET LINE (= SET PORT) table to include COM1-COM8.  ckuus7.c.
  564.  
  565. Another fix for SunLink X.25 from Stefaan Eeckels in Luxembourg.  This one is
  566. said to cure the first-file-transfer-fails problem, and entirely removes the
  567. big, ugly x25inl() routine.  ckutio.c, ckcnet.c.
  568.  
  569. Attempted to fix problem reported by Peter Mauzey for TELNET connection made
  570. from C-Kermit under SunOS 4.1.2, which is more System-V-like that 4.1.1,
  571. in which C-Kermit pops back to its prompt immediately upon the first CONNECT
  572. command.  The fix is to have coninc() recover from interrupted system calls
  573. (EINTR during a read) by retrying the read, as it already does in System V.
  574. ckutio.c.  Later, Peter reported that this fixes the problem.
  575.  
  576. Tue Oct 27 -
  577.  
  578. Removed the artificial limit of 1920 on packet size for VMS C-Kermit.
  579. Now the maximum packet length is 9024 and the default buffer size is
  580. 9065, just like other -DDYNAMIC versions.  9000-byte packets, 2 windows,
  581. tested OK on VAX 3100/85 with UCX in both remote and local mode.  ckcker.h.
  582.  
  583. Added "OS/2 16-bit" and "OS/2 32-bit" to SHOW FEATURES for OS/2 version.
  584. ckuus5.c.
  585.  
  586. Changed "Est. Time Remaining" to "Estimated Time Left" in fullscreen
  587. file transfer display.  Looks better.  ckuusx.c.
  588.  
  589. Fixed bug with display of "Elapsed Time" in fullscreen file transfer display
  590. on 16-bit architectures, reported by Peter Mauzey.  ckuusx.c.
  591.  
  592. Fixed a bug with display of Elapsed Time and Time Left for very large files.
  593. Bo Kullmar reported that this happens on a Sun when the file size is
  594. 28,565,504.  Percent done is calculated as (chars-so-far * 100) / file-size.
  595. When the numerator exceeds 2^31 it goes negative.  Fixed by rearranging the
  596. expression (in such a way as to avoid divide overflows).  Tested by
  597. transferring a 35-megabyte file Sun to Sun.  Worked OK.  ckuusx.c.
  598.  
  599. In testing with the 35MB file, I noticed a similar problem with the "Time
  600. Left" display.  Previously it was calculated as:
  601.  
  602.  ((file_size - chars_so_far) * secs_so_far) / chars_so_far
  603.  
  604. but this too could overflow in the numerator for huge files.  The new
  605. calculation avoids file sizes and byte counts, which can be arbitrarily long,
  606. and uses only the seconds and the percent done, previously calculated, which
  607. are smaller by orders of magnitude:
  608.  
  609.  (seconds_so_far * percent_left) / percent_done.
  610.  
  611. Tested with files of various sizes, 0 bytes to 35MB.  ckuusx.c.
  612.  
  613. Noticed during the huge file transfers that keyboard interruption does not
  614. seem to work when sending a huge file.  But it seems to work consistently when
  615. sending normal-size files.  Momemtum?  Or could be related to yesterday's fix
  616. to the "double connect" problem?  (I don't think so -- Kermit is still reading
  617. the interruption characters OK, but the protocol is not working.)
  618.  
  619. Installed a fix from Andy Fyfe <andy@scp.caltech.edu> for the problem reported
  620. by Peter Mauzey where certain System V versions (3B2/300, 6300 PLUS) built
  621. with CK_NEWTERM core dump after the first use of the fullscreen file transfer
  622. display.  ckuusx.c
  623.  
  624. New makefile for 3B2/300 with curses: att3bxc, from Peter Mauzey.
  625.  
  626. Changed ATT 6300 makefile entry to not use CK_NEWTERM any more.  Peter Mauzey.
  627.  
  628. Fix for PING command for VMS WIN/TCP from James Sturdevant.  ckuusr.c.
  629.  
  630. Put back code from edit 183 for SunOS RTS/CTS flow control, but only for
  631. SunOS 4.0, and then only if it is not being compiled with gcc.  For SunOS 4.1
  632. and later, we keep the current code (POSIX calls).  This change was made
  633. because the POSIX calls are not supported in SunOS 4.0.
  634.  
  635. Problem noticed by Andy Fyfe, who wanted to start Kermit file transfer from
  636. pcomm via:
  637.  
  638.   kermit -Y -l 0 -r
  639.  
  640. where file descriptor 0 is assigned by pcomm to its dialout communication
  641. device.  When started in this fashion, Kermit would drop DTR on the dialout
  642. device because, according to Andy, "the ioctl call in concb to set the console
  643. to CBREAK uses fd 0 which is also the modem tty line, and since the speed 0,
  644. DTR is dropped."  So I added a check in concb() to not do anything if the
  645. communications device file descriptor was passed as an argument to C-Kermit
  646. (ttfdflg != 0) AND the file descriptor is 0, 1, or 2.  ckutio.c.
  647.  
  648. More last-minute fixing of huge-file displays after feedback from Bo Kullmar.
  649. ckuusx.c.
  650.  
  651. Wed Oct 28 -
  652.  
  653. Fixes to Digitel modem support from Fernando Cabral.  ckudia.c.
  654.  
  655. Fix to concb() in UNIX version -- don't try to change console terminal modes
  656. if we don't know what they are yet.  (Further work on the pcomm problem from
  657. Andy Fyfe.)  ckutio.c.
  658.  
  659. Added -DDYNAMIC to MIPS makefile entry.  Tested on MIPS, problem previously
  660. reported (^C^C out of packet mode leaves tty modes messed up) seem to have
  661. been fixed.  Later, Peter Jones says it isn't fixed for him -- but the same
  662. program image on the same computer works fine for me.
  663.  
  664. Added -DKANJI to IBM RS/6000 makefile entries.
  665.  
  666. Determined that the SunLink X.25 version will also run OK on a Sun that
  667. doesn't have X.25 installed.  Attempts to open an X.25 connection result in
  668. a good message, "Protocol not supported".
  669.  
  670. A few last-minute cleanups to SHOW NETWORK display (esp. for VMS).  ckuus4.c.
  671.  
  672. Thu Oct 29
  673.  
  674. Last-minute change to VMS version to fix labeled file transfer, from Terry
  675. Kennedy.  ckvfio.c.
  676.  
  677. Received independent confirmation from Chris Green <C.Green@axion.bt.co.uk>
  678. in England that Stefaan Eeckels's X.25 fixes work.
  679.  
  680. ------------------------------
  681. 5A(184) Sat Oct 10 19:53:00 1992
  682.  
  683. Installed new, edit 183-level, Atari ST sources and binaries from Bruce J.
  684. Moore.  Also a new Commodore Amiga binary from Steve Walton (no source
  685. changes necessary).
  686.  
  687. Two problems were reported with SET FLOW RTS/CTS on SUN computers.  First, the
  688. code would not compile with GCC, and second, it didn't work if the modem was
  689. not asserting CD.  Replaced the original code in tthflow() by a new version
  690. sent in by Lon Willett at the University of Utah, <willett@math.utah.edu>,
  691. that gets around the first problem by using POSIX calls rather than ioctl's,
  692. which should work with both cc and gcc.  The second problem is caused by the
  693. fact that SunOS will not output characters to a device that has CRTSCTS set
  694. unless both CD and DSR are asserted by the device.  The new code, therefore,
  695. skips setting CRTSCTS if CD is not present.  Compiles OK with both cc and gcc,
  696. but not tested since I have no way to test it.  ckutio.c.
  697.  
  698. James Spath <spath@jhunix.hcf.jhu.edu> discovered that if you type \, then
  699. Ctrl-H, then newline (CR or LF) at the prompt, the command parser goes into
  700. an infinite loop, spewing out beeps.  Similar things happen when other control
  701. characters are entered this way -- Ctrl-U, Ctrl-W, etc.  Fixed, but not
  702. perfectly.  The infinite loops are eliminated, but the prompt does not
  703. reappear automatically.  Still, it's an improvement.  ckucmd.c.
  704.  
  705. A more obvious change: The command parser was modified at the lowest level to
  706. try to keep the command line looking right when the user enters quoted control
  707. characters, question mark, space, or DEL -- the backslash is erased and
  708. replaced by the quoted character.  If the quoted character is a control
  709. character, it is written as "^".  If the quoted character is a printable
  710. character other than space or question mark, the backslash is not removed.
  711. This way, editing (DEL, BS, Ctrl-W, Ctrl-U) work as expected after entering
  712. quoted special characters into the command line -- no more eating into the
  713. prompt, wrong characters appearing/disappearing, etc.  Against my better
  714. judgement, but seems to work OK.  Won't be pretty on hardcopy terminals
  715. though, and the "^" business might surprise some people, but not more than the
  716. current behavior surprises most others.  ckucmd.c.
  717.  
  718. Fixed the DIAL command to perform dial-directory lookups correctly, again, in
  719. response to problems reported by Jay Rouman and Peter Kabal.  ckuus6.c.
  720.  
  721. Fixed yet another multiline GET command parser bug: if there was an error
  722. in the local file specification, an error message was issued, but the old
  723. prompt was never restored.  Reported by Nick Sayer <mrappe@quack.sac.ca.us>.
  724. ckuus6.c.
  725.  
  726. Changed UNIX version to allow opening /dev/null as an output file.  zchko()
  727. and zchki() in ckufio.c, rcvfil() in ckcfns.c.
  728.  
  729. Added support for Solaris 2.0 on SUN, adapted from code sent in by Paul
  730. Eggert, Twin Sun Inc, <eggert@twinsun.com>.  makefile, ckuver.h, ckuus5.c,
  731. ckcnet.c, ckufio.c
  732.  
  733. Changed sunos41gcc makefile entry to properly define "CC2= gcc", to forego
  734. gmake, and to include curses support.  Suggested by Joe Smith at U of PA,
  735. <jes@mbio.med.upenn.edu>.
  736.  
  737. A couple minor fixes for BSDI/386 from Michael Schmidt
  738. <michael@uni-paderborn.de>.  ckufio.c, ckutio.c.
  739.  
  740. Minor changes to ckcnet.c and ckutio.c to eliminate compiler warnings
  741. in 4.3 BSD from Michael Pins <amigapd@icaen.uiowa.edu>.
  742.  
  743. Reduced CONNECT command input buffer length (IBUFL) from 4K to 1.5K for
  744. PDP-11 compilations.  Steven M Schultz <sms@wlv.iipo.gtegsc.com>.  ckucon.c.
  745.  
  746. Changed order of library search for "make sco3r22netc" to eliminate linker
  747. complaint about "Symbol memset ... multiply defined".  From Fulvio Marino
  748. <fulvio@ssuxos.ico.olivetti.com>.  makefile.
  749.  
  750. Sunday ---
  751.  
  752. Found that making KEEP the default for flow control is what busted file
  753. transfer for VMS.  Fixed by (a) putting Xon/Xoff back as the default type
  754. of flow control, and (b) changing the semantics of SET FLOW KEEP to restore
  755. the flow-related characteristics of the device as they were found when the
  756. device was first opened.  CKVTIO.C.
  757.  
  758. Did the same for UNIX in ckutio.c.  However, it's not quite perfect, since
  759. SET FLOW KEEP only knows about Xon/Xoff, not hardware flow control.  So if
  760. you SET FLOW KEEP *after* having opened the device with SET FLOW RTS/CTS in
  761. effect, SET FLOW KEEP won't restore the original RTS/CTS flow control setting.
  762. The same is true of SET FLOW NONE -- it doesn't know how to turn off hardware
  763. flow control (it never did).
  764.  
  765. Installed patches to VMS C-Kermit file handling: Don't treat a file named "."
  766. as an init file; fix improperly set FFB when receiving labeled file that did
  767. not have the FFB on a record boundary; minor fgen() improvement.  From Bill
  768. Hoelzer, Chuck McMichael, Bernd Onasch, via Terry Kennedy.  CKVFIO.C.
  769.  
  770. Added architecture-related #ifdefs to CKVCON.C from Lee Tibbert at DEC, for
  771. OpenVMS and Alpha.
  772.  
  773. New command: SET DIAL DIAL-COMMAND [ <string> ], lets users override the
  774. default modem-specific dial command, or actions taken by the initialization
  775. string, etc.  For example, the default dial command for Hayes-like modems is
  776. "ATD%s\13"; the user can force it to include a T for Tone dialing by giving
  777. the command "SET DIAL DIAL-COMMAND ATDT%s\13".  Suggested by Kai Uwe Rommel
  778. and others. ckuusr.h, ckuus7.c, ckuus4.c, ckudia.c, ckuus2.c, ckuker.nr.
  779.  
  780. Added +Obb584 to hpux70lfn makefile entries to give optimizer enough room
  781. to work.  From Bo Kullmar.
  782.  
  783. Attempted to fix Telebit support: Added new code to determine Telebit model
  784. more precisely (to differentiate among the many incompatible models that
  785. report themselves as "965").  Leave S51 (speed) alone.  Don't change modem's
  786. handling of CD and DTR.  Don't touch the speaker.  Don't touch its
  787. error-correction fallback method.  Also, remove extraneous echoes from getok()
  788. when DIAL DISPLAY is OFF.  Works OK on TrailBlazer and T3000 -- sent message
  789. off to other Telebit aficionados so they can test it on other models.
  790. ckudia.c.
  791.  
  792. Changed SET TRANSMIT LINEFEED default back to OFF (how did it ever get
  793. changed?).  ckuusr.c.
  794.  
  795. Various patches to OS/2 version from Kai Uwe Rommel:
  796.  . fix key mapping bugs
  797.  . reduce disappearing-cursor syndrome
  798.  . add 14400 bps for V.32bis modems
  799.  . fix failure to open transaction log and similar files
  800.  . fix \n vs \r\n problems for help screen
  801.  . cleanups for upcoming emx/gcc 32-bit version
  802.  
  803. Sunday -- 
  804.  
  805. New ckustr.c for 2.11BSD version from Steven Schultz.
  806.  
  807. Another new command: SET DIAL MODEM-HANGUP { ON, OFF } to enable/disable the
  808. "mdmhup" feature (hangup via ATH0, etc).  It has effect only on dialed serial
  809. connections (i.e. local mode with specific modem type set).  This feature is
  810. enabled by default unless NOMDMHUP was defined at compilation time.  If OFF,
  811. serial-line hangups are done only by dropping DTR.  If ON, the modem-specific
  812. escape sequence (e.g. <sec>+++<sec>) is sent to put the modem into command
  813. mode, then the modem-specific hangup command (e.g. ATH0<CR>) is sent, the
  814. result code is parsed, and if it fails, the DTR method is tried.  If the
  815. modem-specific escape sequence and hangup command don't exist (as for the ROLM
  816. CBX) or are not known (as for most of the non-Hayes-style modems), the DTR
  817. method is used.  We're not supposed to be adding new commands at this late
  818. stage, but Tom Kloos convinced me it's needed.  ckuusr.h, ckudia.c, ckuus2.c,
  819. ckuus7.c, ck[cvo]con.c.
  820.  
  821. Corrections to Telebit support based on info from Tom Kloos.  Init string
  822. starts with Ctrl-Q followed by several A's, based on Telebit's recommendation.
  823. WorldBlazer *does* support PEP.  X1 raised to X2 for T1600, T3000, and
  824. WorldBlazer.  Fallback modes made consistent for MNP and V.42 on older modems
  825. -- in both cases, fallback all the way to "direct" is now allowed, rather than
  826. direct for one and disconnect for the other.  Also, various adjustments to
  827. eliminate most warnings from gcc -Wall ("'bleh' may be clobbered by longjmp",
  828. etc).  ckudia.c.  Extensive documentation on Telebit support added to
  829. ckcker.bwr.
  830.  
  831. Monday --
  832.  
  833. CLEAR command expanded to allow user to specify whether to clear the INPUT
  834. command buffer, the communication device input buffer, or both:
  835.  
  836.   CLEAR [ { BOTH, DEVICE-BUFFER, INPUT-BUFFER } ]
  837.  
  838. We've needed this one for a long time, and it was so easy.  The default is
  839. BOTH, for compatibility with previous edits.  ckuusr.c.
  840.  
  841. Fix from Kai Uwe Rommel for OS/2 CONNECT command, which could hang when
  842. TERMINAL LOCKING-SHIFT was ON.  Involved separating input shift state from
  843. output shift state (a good idea), plus exiting from the critical section
  844. before continuing the big loop.  ckocon.c
  845.  
  846. Changed UNIX version to also separate input and output shift states.  ckucon.c.
  847. Ditto for VMS.  ckvcon.c.
  848.  
  849. More Telebit fixes, based on advice from Greg Andrews at Telebit:
  850.  
  851.  . Use S54=3 rather than S54=2; the latter is not supported on some modems.
  852.  . Add support for T1500. 
  853.  . Further refinement of which-modem-has-which-feature, esp. the Qblazer.
  854.  . Allow more falling back.
  855.  . Add support for various Telebit OEM versions.
  856.  
  857. Also fixed a bug in mdmhup() that prevented it from working with V32-TELEBIT
  858. or V42-TELEBIT or PEP-TELEBIT or SLOW-TELEBIT.  ckudia.c.
  859.  
  860. Tuesday --
  861.  
  862. Fixed minor bug in parsing of SET TERMINAL LOCKING-SHIFT and NEWLINE-MODE
  863. commands.  ckuus7.c
  864.  
  865. Reworked the Telebit code again, with debugging help from Fernando Cabral
  866. in Brasilia, who discovered that some numeric result codes were not being
  867. handled (now that X2 is used on new-model Telebits), and further advice
  868. from Greg Andrews at Telebit about many matters.  ckudia.c.
  869.  
  870. Thursday --
  871.  
  872. Changed hangup string for Hayes-like modems from ATH0 to ATQ0H0, since
  873. getok() depends on getting an OK or 0 response for this, and it won't come
  874. if result codes are disabled.  ckudia.c.
  875.  
  876. Fixed SPAWN command in VMS version to handle Ctrl-C properly; problem reported
  877. by Hunter Goatley, fixed by Terry Kennedy.  CKVFIO.C.
  878.  
  879. Fixed malloc() in VMS version of zmail() -- old one wasn't mallocing enough
  880. space and so the ensuing sprintf() was writing over who-knows-what.  James
  881. Sturdevant.  CKVFIO.C.
  882.  
  883. Finally fixed getok() (DIAL command's modem-command response reader) to work
  884. right.  The problem was that nulls were getting into the response buffer,
  885. preventing didweget() from finding anything after them, since it treats the
  886. response-buffer string as null-terminated.  ckudia.c.
  887.  
  888. Monday --
  889.  
  890. Changed the PING command to say "multinet ping <host> /num=1" on VMS with TGV
  891. MultiNet.  Suggested by Regis McEwen <rmcewen@ccs1.bbn.com>, confirmed by Ken
  892. Adelman at TGV.  Should work for all releases of MultiNet.  ckuusr.c.
  893.  
  894. Wednesday --
  895.  
  896. Fixed a problem recently introduced into UNIX ttpkt() -- if FLOW was set to
  897. any of the hardware options, I skipped setting raw mode (in Berkeley-based
  898. UNIX implementations only).  Thanks to Tom Kloos for noticing it.  ckutio.c.
  899.  
  900. Thursday --
  901.  
  902. Added support for Motorola Delta UNIX System V/88 R40 to makefile, from Ron
  903. Heiby <heiby@chg.mcd.mot.com>.
  904.  
  905. Friday --
  906.  
  907. Added a new compile-time flag, SYSUTIMEH, meaning to #include <sys/utime.h>.
  908. Apparently systems that follow the Motorola 88000 standard ("88Open") use the
  909. structure specified there for setting file date/time, and if you don't include
  910. this header file (and use the structure accordingly), files are created with
  911. the "zero" date/time (generally Jan 1, 1970).  Needed, at least, for the
  912. Motorola Delta UNIX System V/88 R32.  Suggested by Ron Heiby.  makefile,
  913. ckufio.c, ckuins.doc, ckccfg.doc.
  914.  
  915. If UNIX C-Kermit was suspended during local-mode file transfer, and then
  916. backgrounded, the file transfer would continue, and the file transfer display
  917. would turn itself off.  But then if it was foregrounded again, the display
  918. would not resume, and the interruption characters (A, X, Z, etc) would not
  919. work.  All fixed now, at least for the SERIAL and CRT display types.  However,
  920. switching between fore- and background still doesn't work well with the
  921. FULLSCREEN (curses) display -- I think it's because curses is doing things
  922. behind Kermit's back.  ckuusx.c.
  923.  
  924. Saturday --
  925.  
  926. Added MINIDIAL compilation option.  Removes support for all types of modems
  927. except CCITT, HAYES, UNKNOWN, and NONE (DIRECT).  Cuts size of ckudia.o by
  928. about half, and also reduces size of C-Kermit executable.  Mainly for benefit
  929. of the PDP-11 (2.11 BSD) version.  ckudia.c, ckuus[35].c.
  930.  
  931. New CONNECT module for AOS/VS from Eugenia Harris.  Adds miscellaneous new
  932. features from UNIX and VMS versions, plus bug fixes and buffering improvements.
  933. ckdcon.c.
  934.  
  935. SHOW NETWORK, SET NETWORK, HELP SET NETWORK fixed for OS/2.
  936.  
  937. Sunday --
  938.  
  939. Improved support for CCITT V.25bis modems, based on information from Fernando
  940. Cabral and further study of the standard.  Also, reformatted the dialing
  941. messages, and increased consistency in deciding when they come out.  ckudia.c.
  942. And fixed up the DIAL-related HELP messages.  ckuus2.c.
  943.  
  944. Fixed Help message for Mac version.  Changed Mac 0.99(xxx) version number to
  945. agree with C-Kermit version number, so now it's 0.99(184).  ckcmai.c,
  946. ckuus2.c, ckmkr2.r.
  947.  
  948. In testing this edit on HP-UX, I discovered that Friday's fix for the
  949. local-mode file transfer display when fg'ing and bg'ing C-Kermit during
  950. transfer... (take a breath) broke local-mode file transfer for HP-UX.  This
  951. was because the conbgt() -- the process that checks to see if we're in the
  952. background, uses a test that is not valid during file transfer, namely whether
  953. SIGINT == SIG_IGN.  This problem didn't show up on other System-V based
  954. systems (SVR4, Aviion, RS/6000), but on HP-UX, the getpgrp() call always seems
  955. to return -1, as if it had been called in error, so the process-group test
  956. always fails, which makes us fall back to the signal test.  This was somewhat
  957. (not very) reliable before, but now that we are calling conbgt() during file
  958. transfer, SIGINT will often be set to SIG_IGN, so now it's *really*
  959. unreliable.  Since conbgt() is used only in UNIX C-Kermit, the cure was fairly
  960. simple -- add a new flag as an argument to conbgt().  If the flag is 1, skip
  961. the signal test; if 0, do it as before.  Internal (pre-existing) calls to
  962. conbgt(), which occurred from conint() and sysinit() in ckutio.c, now call
  963. conbgt(0).  The new call that was added to the screen() function in ckuusx.c
  964. is now conbgt(1).  Also, screen() was changed to not to call conbgt at all
  965. unless C-Kermit was in local mode.
  966.  
  967. Got a new ckubs2.mak from Steven Schultz, many changes.  Now that ckudia.c
  968. has started blowing up the compiler, it is compiled separately without
  969. optimization.
  970.  
  971. Added -DMINIDIAL to ckubs2.mak and restored -O for ckudia.c.  Still blows up
  972. the optimizer (it didn't make ckudia.c any less complicated, only smaller),
  973. so I put back the separate compilation for ckudia.c without -O.
  974.  
  975. Note: the local RS/6000 also chokes on ckudia.c, but it is not clear whether
  976. the compiler itself is choking, or the system is low on some kind of resource
  977. like swap space (the message is just "out of space").  However, compiling
  978. ckudia.c by hand without -O worked ok.  There's no obvious way to change the
  979. makefile to do this automatically.
  980.  
  981. Even with MINIDIAL, edit 184 got too big (again) for 2.11 BSD, probably
  982. because of additions to ckutio.c.  Swapped modules among segments, and reduced
  983. and/or malloc'd the size of some of the static buffers in ckcfn3.c.  Still too
  984. big.  Went thru all the modules remaining in the root segment and tried to
  985. squeeze out bits of space.  Still too big.  Finally ... ftp'd the whole mess
  986. again, started over ...  It works.  Phew!  ckubs2.mak, cku[tf]io.c,
  987. ckcfn[s3].c.
  988.  
  989. Monday --
  990.  
  991. Fixed a bug with command editing when echoing is off, as in the ASKQ
  992. command.  Previously, editing would delete back into the prompt.  No more.
  993. ckucmd.c (but "?" doesn't work in ASKQ any more...) (It didn't before, either)
  994.  
  995. Wed --
  996.  
  997. Problems observed during DIAL on VMS.  The hangup operation renders the serial
  998. device useless until after it is closed and reopened.  At the suggestion of
  999. Lee Tibbert at DEC, added a sleep() to tthang(), which partially cured the
  1000. problem: it made the HANGUP command work OK, but DIAL still didn't work
  1001. unless DIAL HANGUP was OFF.  Added a few more minor flow-control related fixes
  1002. to ttbin(), but they made no difference.  Then I realized that tthang() was
  1003. being called by ckudia.c before ttkpt(), so I rearranged the startup code in
  1004. ckudia.c to be in sensible order: open the device, call ttpkt() on it, then
  1005. try to hangup, then try to dial.  But it made no difference.  Another bad
  1006. problem, as yet unresolved: After a DIAL failure, the next attempt to call
  1007. ttbin() to put the device in binary mode always hangs in the sys$qiow() call.
  1008.  
  1009. Wed --
  1010.  
  1011. Raised VMS C-Kermit's sleep in tthang() from 1 to 3 seconds, based on
  1012. experiments and observations of modem lights.  It's ugly, but it fixes the
  1013. problems noted above, at least locally.  ckvtio.c
  1014.  
  1015. Changed UNIX ttpkt() to access the global flow variable rather than rely
  1016. on its argument for setting flow control, as in VMS.  ckutio.c.
  1017.  
  1018. Changed "Time Remaining" in fullscreen file transfer display to
  1019. "Est. Time Remaining".  ckuusx.c.
  1020.  
  1021. Changed protocol module to emit a CRLF after receiving a short-form reply
  1022. to a REMOTE command (such as REMODE CD).
  1023.  
  1024. Attempted to cure several minor instances of prompt-stomping reported by
  1025. Christian Hemsing.  ckcpro.w, ckuusx.c.
  1026.  
  1027. Friday --
  1028.  
  1029. Thanks to reports from Kenneth W Cochran <kwc@world.std.com>, discovered
  1030. that \F...() function calls often failed to work when spaces were used to
  1031. separate their arguments.  Fixed in fneval() in ckuus4.c.  Now leading and
  1032. trailing spaces are stripped from all function arguments -- EXCEPT the first
  1033. argument of \Frepeat(string,number) -- before evaluation.  The exception
  1034. allows \Frepeat to emit a given number of spaces, e.g. "\Frepeat( ,20)".
  1035. Also, correct a problem with \Frepeat() -- it didn't explicitly terminate
  1036. its result with a NUL.  ckuusr.c.
  1037.  
  1038. Added code from Stefaan Eeckels <M2947@eurokom.ie>, Eurostate (CEC),
  1039. Luxembourg, to the lowest-level communications input reader, myfillbuf(), to
  1040. work for SunLink X.25 connections.  It is called only if C-Kermit is built for
  1041. SunLink X.25, and only if an X.25 connection is active.  This should allow
  1042. INPUT, SCRIPT, and similar commands to work on X.25 connections.  ckutio.c.
  1043.  
  1044. Monday Sept 28 --
  1045.  
  1046. Added support for Interactive UNIX System V/386 R3.2 from Richard C Gration
  1047. <rcg%manon@sserve.cc.adfa.oz.au>, which allows for job control.  Includes a
  1048. new compile-time option, SVR3JC, for use on any System-V R3 based-system that
  1049. supports job control.  ckutio.c, ckuus5.c, ckuver.h, makefile, ckuins.doc,
  1050. ckccfg.doc.
  1051.  
  1052. Found that blank-stripping of function arguments could cause core dump.
  1053. Reported by Kenneth Cochran.  Cause: pointers returned by malloc() were being
  1054. modified, so subsequent free() operations failed.  Cure: strip arguments
  1055. before pointing malloc'd pointers at them.  ckuus4.c.
  1056.  
  1057. Thu, Oct 8 --
  1058.  
  1059. From Lee Tibbert at DEC:
  1060.  . Don't #define DYNAMIC for VMS in ckcdeb.h if it is already defined.
  1061.  . Several variables unconditionally declared external in ckuus4.c were
  1062.    used only in UNIX.  Put their declarations in #ifdef UNIX.
  1063.  . Fixed a small "strictness" problem in ckwart.c.
  1064.  . New ckvtio.c, ckvfio.c.
  1065.  . Completely new and rewritten CKVKER.COM, supporting Alpha, OpenVMS,
  1066.    and DEC TCP/IP (aka UCX).
  1067.  
  1068. From Hunter Goatley -- added code to allocate the communication device in
  1069. ckvtio.c.  This is so people with SHARE privilege can't interfere with someone
  1070. else already using the device.
  1071.  
  1072. From Peter Jones -- added a makefile entry for HP-UX 8.0.
  1073.  
  1074. In UNIX version: Removed SIGHUP trap in conint() in ckutio.c.  Let system
  1075. clean up after Kermit if the line hangs up.  Thanks to Phil Beck of DEC for
  1076. reporting the problem.
  1077.  
  1078. In UNIX version: Initialize process groups to 0 in conbgt(), because
  1079. apparently the ioctl(1, TIOCGPGRP, &foo) call only writes into the lower 16
  1080. bits of the word, so if the word is not init'd to 0, the upper half will be
  1081. garbage, and comparisons will fail.  This happens in SCO UNIX 3.2.2.  Thanks
  1082. to Walter Mecky in Germany.  Also, added -DPID_T=pid_t to some SCO entries in
  1083. the makefile that lacked this definition.
  1084.  
  1085. In function inibufs() in ckcfn3.c, when allocating send-buffer info
  1086. structures, initialize the packet address pointers to NULL to prevent core
  1087. dumps when referring to unallocated packets, e.g. when debugging turned on and
  1088. entering server mode.  Reported by Christian Hemsing.
  1089.  
  1090. Added fullscreen file transfer display support for OS-9, using MYCURSES path.
  1091. From Christian Hemsing.  Many ck9*.* files changed, plus minor changes to
  1092. ckuus7.c and ckuusx.c.
  1093.  
  1094. Another one from Christian Hemsing: C-Kermit was improperly attempting to
  1095. decode incoming data packets when reception of a file had been interrupted
  1096. before the new file was opened, and then call zmchout() to write the data
  1097. to the not-yet opened file, but zmchout's buffer pointer is initialized by
  1098. the file-opening routine, so we got bus errors, core dumps, etc.  Fixed by
  1099. having decode() return if one of the interruption flags is set *and* its
  1100. output function is putfil.  ckcfns.c.
  1101.  
  1102. The following bit in ckudia.c:
  1103.  
  1104.         c2 = ttinc(0);        /* Read a character, blocking */
  1105.         if (c2 < 1)        /* Ignore NULs and errors */
  1106.           continue;        /* (Timeout will handle errors) */
  1107.  
  1108. would have unintended consequences when ttinc() returned an 8-bit character;
  1109. the sign would be extended, and the "continue;" would be executed.  Changed
  1110. to:
  1111.  
  1112.         c2 = ttinc(0);        /* Read a character, blocking */
  1113.         if (c2 == 0 || c2 == -1) /* Ignore NULs and errors */
  1114.           continue;        /* (Timeout will handle errors) */
  1115.  
  1116. Thanks to Fernando Cabral in Brazil.
  1117.  
  1118. Sat Oct 10 --
  1119.  
  1120. New Data General AOS/VS files from Eugenia Harris at DG, plus a change to
  1121. ckcfn2.c that allows AOS/VS C-Kermit to use the long-form ttinl() call.
  1122.  
  1123. Fernando Cabral's CCITT modem is so different from a real CCITT modem that I
  1124. added a new modem type for it: Digitel DT-22 ("set modem digitel"), and
  1125. restored CCITT modem type ("set modem ccitt") to V.25bis purity.  ckudia.c.
  1126.  
  1127. Changed TRANSMIT to apply fmask (SET FILE BYTESIZE) mask to file characters
  1128. before processing them.
  1129.  
  1130. Sun Oct 11 --
  1131.  
  1132. More allowances for using DIAL with a TELNET modem server: Don't execute the
  1133. speed-changing code if we have a network connection to the modem, and don't
  1134. use "modem hangup" either (attempting to send the hangup string to a network
  1135. modem after the network connection was broken was a bad idea -- unfortunately,
  1136. there's no good way to tell if the connection is open).  Also, added code to
  1137. handle TELNET negotiation options during the DIAL process.
  1138.  
  1139. Changed CONNECT command not to call mdmhup() after it got an i/o error when
  1140. reading from the communication device.  Also, changed CONNECT to be less
  1141. confused about modem-type vs network-type when calling ttopen().  Makes a
  1142. difference after a network-modem-server connection is broken and a new CONNECT
  1143. command is given.  ckucon.c, ckvcon.c, ckocon.c.
  1144.  
  1145. Reversed the meaning of SET DIAL SPEED-MATCHING, at the reasonable urging of
  1146. Fernando Cabral, who thought that ON should mean that Kermit attempts to
  1147. match the speed reported by the modem.  ckudia.c, ckuus2.c, ckuus7.c.
  1148.  
  1149. Hunted down the OS/2 C-Kermit VT102 emulator bug in which the "vi" "p"
  1150. (open for insert) command did not work right, which was also visible in
  1151. in the VMS EVE editor.  The problem was that ESC 8 (DECRC) was coded to
  1152. "unsave" the saved cursor position and attributes as well as restore them,
  1153. whereas a real VT102 lets the saved items be restored more than once.
  1154. Seems OK -- vi session log plays OK now, EVE seems to work OK, and we still
  1155. pass "vttest".  ckocon.c.
  1156.  
  1157. Fixed a bug reported by Tom De Bellis: If OS/2 C-Kermit is connected to
  1158. a modem that is turned off, and you SET CARRIER OFF, then HANGUP (or
  1159. <esc-char>H during CONNECT) hangs the program.  Diagnosis: C-Kermit gets stuck
  1160. in the mdmhup() routine.  SET DIAL MODEM-HANGUP makes the problem go away.
  1161. Workaround: change mdmhup() -- for OS/2 only -- to fail if carrier is not
  1162. present.  ckudia.c.  Real cure (I don't know how) -- set the modes in the
  1163. serial device driver to make it ignore all modem signals (including DSR and
  1164. CTS) when CARRIER is set to OFF, if that is possible.
  1165.  
  1166. New binaries based on today's version for various UNIXes, plus (from Bruce J
  1167. Moore) the Atari ST.  Locally, built ok on Sun, VAX/VMS, NeXT, OS/2, RS/6000.
  1168.  
  1169. Monday Oct 12 --
  1170.  
  1171. Removed a lot of superfluous, test-oriented sunos41xx entries from the
  1172. makefile.
  1173.  
  1174. Discovered that I broke the TRANSMIT command a couple days ago by applying
  1175. the file bytesize mask before checking for the eof return code.  Fixed in
  1176. ckuus4.c.
  1177.  
  1178. A couple more updates for OS-9 from Christian Hemsing.
  1179.  
  1180. Changed SET LINE command for OS/2 to accept 1..4 and synonyms for COM1..COM4,
  1181. rather than treating them as file handles.  Preserved the file handle business
  1182. by allowing "_" (underscore) as a prefix, e.g. "SET LINE _4" -- in which case
  1183. C-Kermit simply strips the prefix (however, this last bit doesn't seem to
  1184. work -- "set port _4" just says "doesn't match keyword").  ckuus7.c.
  1185.  
  1186. New makefile entry for SunOS 5.1 == Solaris 2.1 (Alpha 3.2) from Patrick Wolfe
  1187. <pwolfe@kailand.kai.com>.
  1188.  
  1189. Tuesday --
  1190.  
  1191. Fixes to OS/2 CONNECT-mode hangup procedure from Kai Uwe Rommel.  ckocon.c.
  1192.  
  1193. Installed DEC TCP/IP support in the VMS version, mostly from Lee Tibbert at
  1194. DEC.  This was based on edit 181, and required some rather careful
  1195. reconciliation with the current edit.  Cleaned up some of the conditional
  1196. compilation -- now all the items that DEC, Wollongong, and TGV have in common
  1197. are lumped together under VMSTCPIP.  Also another updated version of
  1198. CKVKER.COM, the build procedure, from Lee.  Also a new CKVKER.MAK from James
  1199. Sturdevant, that follows CKVKER.COM.  I updated all of these to include a
  1200. new header file, CKVIOC.H, and a new module, CKVIOC.C -- ioctl() simulation
  1201. for DEC TCP/IP only.
  1202.  
  1203. Lee, as well as Bill Patterson (who was also working on this), complained that
  1204. the first file transfer initiated from VMS C-Kermit after it had made a TCP/IP
  1205. connection over UCX didn't work.  I also received a similar complaint from
  1206. Chris Green in England about SunLink X.25 connections.  In the VMS case, this
  1207. was traced to VMS C-Kermit invariably losing the first few characters of the
  1208. first ACK to its S or I packet.  This most likely has something to do with
  1209. netflui() and/or nettchk().  The DEC TCP/IP version of nettchk() always
  1210. returned 0, which was wrong -- I fixed it to return the number of characters
  1211. in the internal buffer (ttibn).  But that didn't do it.  However, this
  1212. revealed a flaw in the input() routine in system-independent protocol code:
  1213. the Kermit on the other end, having sent its ACK for packet 0, is now awaiting
  1214. packet 1.  It doesn't come, so it sends a NAK for packet 1.  Until now,
  1215. C-Kermit improperly treated this as equivalent to an ACK for packet 0.  But S
  1216. and I packets are a special case, because their data fields contain crucial
  1217. negotiation information.  So I (a) fixed a stupid bug in input() in which it
  1218. calculated the previous packet number incorrectly, and (b) made it treat
  1219. missing ACKs to S or I packets specially -- retransmitting the S or I packet,
  1220. rather than going ahead and transmitting the next packet without knowing what
  1221. parameters had been agreed to.  This works around the problem by handling the
  1222. missing ACK correctly, but it's not the real cure -- why are the characters
  1223. chopped off in the first place?  nettchk() and netflui() still need some work.
  1224. ckcfn2.c.
  1225.  
  1226. A strange discovery: When Kermit is built with DEC TCP/IP, it works on a
  1227. system that has TGV MultiNet TCP/IP!  Terminal connection and file transfer
  1228. both work...  (Later, Terry says that MultiNet has a UCX-emulation mode.)
  1229.  
  1230. Wed Oct 14 --
  1231.  
  1232. Rewrote CKVKER.COM again, to allow a consistent way of selecting (or disabling)
  1233. network support.  CKVKER.COM, CKVKER.UPD.
  1234.  
  1235. Fiddled with DEC TCP/IP nettchk() in CKCNET.C.  Enabled the use of the
  1236. FIONREAD ioctl, which seems to work just fine.  However, the FIONBIO ioctl
  1237. doesn't seem to work all the time, but -- as far as I can tell -- it's not
  1238. needed for DEC TCP/IP.  It was used in nettchk() only so the MultiNet code
  1239. could tell if a connection dropped, but apparently the DEC code can, so that
  1240. part of nettchk() is #ifdef'd out for DEC TCP/IP.  Now that nettchk() works,
  1241. CONNECT goes fast, and file transfer seems to be OK (it's hard to tell because
  1242. the network is badly clogged today).  Goes fast with localhost.  But we still
  1243. have the problem in which the first incoming packet is sometimes beheaded.
  1244. Changed sipkt() in ckcfn2.c to skip the ttflui() call if ttchk() says no
  1245. characters are waiting, since this seemed to be the sticking point before, but
  1246. is not a total cure.
  1247.  
  1248. ------------------------------
  1249. 5A(183) Sun Aug 23 16:04:02 1992
  1250.  
  1251. OS/2
  1252.  
  1253. A new version of C-Kermit for OS/2, based on edit 182, from Kai Uwe Rommel at
  1254. the Technical University of Munich, Germany.  His notes:
  1255.  
  1256.   - "curses" support for OS/2, uses the MYCURSES VMS code. This is far
  1257.     fast enough for OS/2, which has a very fast ANSI interpreter.
  1258.   - signal() return value fixed.
  1259.   - Different 8.3 and HPFS file name (esp. backup file name) handling
  1260.     with detection/translation of invalid FAT (8.3) names and
  1261.     transparent names on HPFS.
  1262.   - Preliminary changes for 32-bit compilers (not working yet, but
  1263.     pretty close, I think). I will finish that next.
  1264.   - Additional file transfer progress display. "Poor man's" curses
  1265.     display, i.e. only one line of incremented counters. Enabled by
  1266.     "SET FILE DISPLAY SIMPLE". Uses only CR and overwriting.
  1267.   - Network support for DECnet LAT for OS/2. New module ckonet.c where
  1268.     other networks support can go into too (TCP/IP). New header
  1269.     ckolat.h.
  1270.   - Hooks for LAN Manager named pipe network support (has to be added yet).
  1271.   - Fixed terminal-emulator/command-mode console mode switching (ttres()
  1272.     calls) and interrupt handling (SIGINT, SIGBREAK).
  1273.   - Added ESC sequence detection and protection from character set
  1274.     translation for OS/2 CONNECT mode.
  1275.   - Priority adjustments for communication threads (should make transfer
  1276.     in background more reliable and reduce lost characters).
  1277.   - New ckoker.mak with already added targets for 32-bit compiles (not
  1278.     working yet).
  1279.   - More correct settings for predefined system-dependent variables
  1280.     (e.g. \v(host) etc.).
  1281.   - Made command line option handling (open file descriptors) conforming
  1282.     to Unix version.
  1283.   - Fixed maximum dial timeout (see my comment in ckudia.c).
  1284.   - Added two fields for raw througput for STATISTICS display.
  1285.   - Made default tty CON, although that makes no sense for OS/2, but
  1286.     specifying any of the COMx ports causes error messages for some
  1287.     people who have their mouse on that port.
  1288.   - Added dummy "EXTPROC" command. This allows selfrunning
  1289.     Kermit-scripts, just like #!kermit under Unix by specifying
  1290.     "EXTPROC CKERMIT" as the first line in a .CMD batch file.
  1291.   - Added a few missing prototypes for recent additions.
  1292.   - Added More? prompting for OS/2.
  1293.   - Prototype for OS/2 zchdsk again changed to int argument instead char
  1294.     (some compilers warn in this case).
  1295.   - Fixed a few int/long mismatches.
  1296.   - Control-Space could not be distinguished from normal Space.  This
  1297.     annoys remote Emacs users. This does now work as expected.
  1298.   - The +-*/ and ENTER keys on the PC numeric keypad could also not be
  1299.     distinguished from their normal counterparts. Also fixed.
  1300.   - No key could be set to send the NUL character (for Emacs users).
  1301.     My current solution is somewhat ugly but I have no other idea.
  1302.  
  1303.   Planned features:
  1304.  
  1305.   - 32-bit gcc version.
  1306.   - LAN Manager named pipe network support.
  1307.   - TCP/IP (I don't have access to TCP/IP yet). Far away.
  1308.   - Auto parity detection.
  1309.   - Keyboard timeout emulation.
  1310.   - Kanji support (?). Far away.
  1311.   - Enhance terminal emulation (full VT-102, VT-320 ?).
  1312.   - Tektronix emulation (?). Far away.
  1313.  
  1314. Over the weekend, we sent changes and files back and forth like mad, so
  1315. now the OS/2 version is totally up to date with edit 183.
  1316.  
  1317. Later, I installed OS/2 on my PC as well as Microsoft C 6.00 SDK.  Fixed
  1318. various bugs in ckocon.c, made some cosmetic changes, added Kanji file
  1319. transfer support, added Alt-key command equivalents for many of the Ctrl-]*
  1320. CONNECT-mode escapes, and then added SET TERMINAL { ARROW-KEYS, KEYPAD-MODE,
  1321. TYPE, WRAP } for OS/2.  Also discovered that there was no code at all to make
  1322. numeric keypad mode work, so I added it.  ckuus[457].c, ckuusr.h, ckocon.c.
  1323.  
  1324. Still later, Kai Uwe took my changes back and added more of his own:
  1325.  
  1326. - Some debugging support in ckcdeb.h for IBM C (helped me find the
  1327.   maclvl bug).
  1328.  
  1329. - Changed prototype and added defines for OS/2 in ckcdeb.h.
  1330.  
  1331. - Changed text to tell the difference between modem and DTR hangup
  1332.   in ckudia.c.
  1333.  
  1334. - Fixed home directory in ckufio.c, for OS/2, it depends on sysinit()
  1335.   in ckotio.c.
  1336.  
  1337. - Added (untested) support for 76800 and 115200 baud for OS/2 2.0. I
  1338.   can't test it since none of my COM drivers supports it. Perhaps it
  1339.   is only supported on IBM's Model 90/95 with their DMAing COM ports.
  1340.   However, it is documented and should work.
  1341.  
  1342. - Fixed SET KEY bug with single characters (caused \-1) in ckuus3.c.
  1343.  
  1344. - Fixed maclvl bug in ckuus5.c in xwords().
  1345.  
  1346. - Fixed off-by-one error in MYCURSES code for fullscreen file transfer
  1347.   display.
  1348.  
  1349. - Changed stack size and data allocation in makefile for MS C.
  1350.  
  1351. - Changed some IBM C options in makefile and added debug target for it.
  1352.  
  1353. - Fixed (thanks to Michael Godfrey) some bugs for CONNECT mode and
  1354.   IBM C.
  1355.  
  1356. - Increased scrollback buffer to 240 lines. Added support for linewise
  1357.   scrolling with Ctrl-PageUp/Down and "goto top" with Home. Note: 240
  1358.   is the upper limit for the 16-bit version, because that requires
  1359.   nearly a 64k buffer. Increasing it further would require large
  1360.   changes. For the 32-bit version, it could simply be increased
  1361.   further. 
  1362.  
  1363. - Fixed XON/XOFF handshaking. It was really buggy and seems to work
  1364.   fine now with my V.32/V.42bis modem at 19200 DTE speed.
  1365.  
  1366. - Added RTS/CTS handshaking. I have learned a lot about this in OS/2
  1367.   while implementing it! BTW, when it is turned off, RTS is still kept
  1368.   on, in case some modem requires it.
  1369.  
  1370. - The handshaking support is (from my point of view) now clean and
  1371.   working.
  1372.  
  1373. - Added CARRIER detection (i.e. implementation for SET CARRIER).
  1374.   Requires SET CARRIER OFF, of course, when the SCRIPT or CONNECT
  1375.   commands are used to talk to the modem before dialing and
  1376.   establishing a connection.
  1377.  
  1378. - To make that useful, keyboard timeout was implemented, so CONNECT
  1379.   closes automatically when carrier is lost (and SET CARRIER is not
  1380.   OFF).
  1381.  
  1382. - Minor changes to some status line texts.
  1383.  
  1384. - Minor adjustment to cursor on/off optimization.
  1385.  
  1386. - Added some messages for reason of closing CONNECT.
  1387.  
  1388. - Fixed screen blinking problem for fullscreen usage and some bright
  1389.   colors.
  1390.  
  1391. - Fixed some return values from conect().
  1392.  
  1393. - Made DECnet network support compilable with 32-bit IBM C. Completely
  1394.   untested, don't have that at home. I will be able to test this in
  1395.   about two weeks only. (However, continues to work as ever with MS C,
  1396.   i.e. 16-bit version).
  1397.  
  1398. - Fixed DTR hangup.
  1399.  
  1400. - Added Codepage recognition for FILE CHARACTER-SET default.
  1401.  
  1402. - Added "home" directory, where C-Kermit was loaded from.
  1403.  
  1404. - Fixed keyboard interrupts, i.e. added SIGBREAK too.
  1405.  
  1406. - Fixed ttpkt() and ttvt().
  1407.  
  1408. - Fixed BREAK sending functions according to OS/2 docs.
  1409.  
  1410. - Added separate \127 scan code for backspace key and \639 for
  1411.   Control-Backspace. Keypad keys (including Enter) also have separate
  1412.   scan codes (as before already).
  1413.  
  1414. - Added alarm() implementation for IBM C and rewrote the MS C version
  1415.   for efficiency. Required for DIAL timeout, SCRIPT timeout and the
  1416.   mentioned keyboard timeout.
  1417.  
  1418. - Added popen() and pclose() for IBM C, but still untested.
  1419.  
  1420. Bugs remaining on my list:
  1421.  
  1422. - Some other keys in CONNECT mode, Help/Hangup etc.
  1423.  
  1424. - Any kind of printing??? PrintScreen?? Print commands?
  1425.  
  1426. - Tabulators?
  1427.  
  1428. - READ / OPEN don't work.
  1429.  
  1430. - Auto parity detection not implemented. I don't think that this is
  1431.   really important. Difficult.
  1432.  
  1433. - Network support for TCP/IP and named pipes could be added.
  1434.  
  1435. - VT-102: some bugs?
  1436.  
  1437. Later, changed sysinit() in ckotio.c to add terminator to startup directory
  1438. so \v(home) would work right, e.g. \v(home)ckermit.ini.
  1439.  
  1440. Still later, fixed two more bugs: (1) the READ command did not work right
  1441. (fixed by opening the READ file in "rb" mode in ckufio.c), and (2) handling
  1442. of tabs by the terminal emulator was badly messed up (fixed in ckocon.c).
  1443.  
  1444.  
  1445. MACINTOSH
  1446.  
  1447. From Paul Placeway <pplacewa@BBN.COM>:
  1448.  
  1449. I recently got a high speed modem (a Digicom Scout Plus v.32bis/v.42bis;
  1450. inexpensive and works well), which motivated me to look just a bit harder
  1451. at the screen drawing code, speed things up a bit, and fix a few bugs.
  1452.  
  1453. This version:
  1454.     Fixes the problem that caused Kermit to bomb while drawing to a
  1455.     window while the user tries to scroll back.
  1456.  
  1457.     Fixes a couple of long-standing bugs in the insert and delete
  1458.     multiple characters code.
  1459.  
  1460.     Fixes a few problems with the jump-scroll logic and code.
  1461.  
  1462.     Implements double-width characters the right way internally,
  1463.     including correct behavior for copy and paste.
  1464.  
  1465.     Can keep up catting /etc/termcap, running on a Mac IIcx with a
  1466.     mono full-page display, running a 67 line window in Courier
  1467.     12pt, connecting through a v.32bis/v.42bis modem connection
  1468.     with the terminal set at 56 kpbs.
  1469.  
  1470.     Does file transfers to the Mac a bit faster by doing
  1471.     background file cache flushes every couple of Ks, which keeps
  1472.     the Mac from saving it all up and doing it all at once.
  1473.  
  1474.     Fixes the transfer thermometer when sending from the Mac, and
  1475.     makes this code less incestuous with the ckc* file management
  1476.     code.
  1477.  
  1478. When built with the final edit 183 sources, the file transfer display was
  1479. messed up again: no filename, no as-name, no file size, no percent done, no
  1480. thermometer.  The display is OK when receiving files.  The code is in
  1481. ckmscr.c -- I took a look at it, but couldn't see anything obviously wrong.
  1482. So I put back the earlier version of ckmscr.c (from edit 182) and everything
  1483. is fine (the only reason Paul changed ckmscr.c was to work around bugs in
  1484. the mainline code, bugs which I had already fixed behind his back).
  1485.  
  1486. UNIX
  1487.  
  1488. Added support for 4.4BSD-Alpha, whose terminal driver is a wonder to behold: a
  1489. mixture of System V, POSIX, and 4.3BSD.  Compiles cleanly and runs OK on a
  1490. 68040 machine, but I had no way to test if SET LINE or DIAL work.  Remote-mode
  1491. file transfer is OK, TELNET works fine.  Includes (untested) SET FLOW RTS/CTS.
  1492. Mostly ckutio.c.
  1493.  
  1494. The alleged controllability of RTS/CTS via ioctl() in System V R4/386 appears
  1495. to be a hoax.  Tested on Dell UNIX, found to do nothing, and verified with
  1496. Dell engineers -- that's how it comes from USL, so probably all SVR4/386
  1497. implementations lack this capability, despite the existence of <termiox.h> and
  1498. the related system calls.
  1499.  
  1500. Reshuffled overlays for 2.11BSD after the DIAL command got too big.
  1501. Still works!  And we still have about 2K left in the last overlay.
  1502.  
  1503. On the AT&T 6300 and 3B1, it was found that using the curses display made
  1504. console i/o slow and jerky thereafter.  Turns out that curses (at least on
  1505. these systems) makes stdout block-buffered.  Andy Fyfe
  1506. <andy@vlsi.cs.caltech.edu> discovered this and sent in code that can be
  1507. included (on System V systems) by defining CK_NEWTERM, which substitutes
  1508. newterm() for initscr(), and gives a duplicated file descriptor to curses, so
  1509. when we come back from curses, it hasn't messed with stdout.  Andy suggests
  1510. that CK_NEWTERM might be a good default for all System-V based implementations.
  1511.  
  1512. Added a makefile entry for AT&T 6300 UNIX PC with curses and shared library,
  1513. called sys3upcshcc.  Peter Mauzey.
  1514.  
  1515. The SUN version, during CONNECT mode on a serial line, was no longer popping
  1516. back to the prompt when the remote hung up.  It seems the new buffered CONNECT
  1517. code was not checking the return code from ttxin().  It also seems ttxin()
  1518. was not returning a failure code in the myread() case.  Both of these problems
  1519. were corrected, but we still don't pop back.
  1520.  
  1521. Aha, discovered that edit 182, in commenting out all the directory-related
  1522. stuff from ckutio.c, I ruined the creation of the symbol BSD42, which in turn
  1523. is based on MAXNAMLEN, which comes from a directory-related header file, and
  1524. this, in turn, caused MYREAD to not be defined.  Uncommented these includes.
  1525. ckutio.c.
  1526.  
  1527. The close(open()) business in ttopen() neglected to set O_NDELAY (as it does
  1528. in tthang()), causing Kermit to hang on the open call (on some systems).
  1529. Diagnosis and cure by Dave Johnson, Gradient Technologies <ddj@gradient.com>.
  1530.  
  1531. Made some changes in ttoc() to try to eliminate the core dumps that were
  1532. occurring on some systems (which I can't reproduce), particularly during
  1533. network connections.  Also added debug() calls everywhere in ckutio.c that
  1534. calls alarm() or signal(SIGALRM,xxx).  ckutio.c.
  1535.  
  1536. Fixed up the sunos41gcc entry in the makefile.  The resulting wermit
  1537. executable is 42K smaller than with SUN cc.  It doesn't seem to work if curses
  1538. is added, several routines from the termcap library can't be found (this is
  1539. apparently size-related).
  1540.  
  1541. In UNIX C-Kermit, I now enable hardware flow control during CONNECT (ttvt) as
  1542. well as file transfer (ttpkt).  No reason not to, right?  I moved all
  1543. hardware-flow-control-related code into a new internal routine, tthflow(), in
  1544. ckutio.c.  Also, enabled RTS/CTS for SunOS 4.1 (normal BSD make) by doing a
  1545. System V call (in tthflow), and defining CK_RTSCTS for SunOS 4.1 in ckcdeb.h.
  1546. Also, merged the UTEK hardflow() routine into tthflow(), and fixed the UTEK
  1547. code to use DTR/CTS handshaking once again (I think I must have broken it a
  1548. few edits ago).
  1549.  
  1550. Removed the horrible hack by which SET FLOW RTS/CTS was implemented on the
  1551. NeXT because it only worked if the SET FLOW command was given *before* the
  1552. SET LINE command.  ckuus7.c, ckcdeb.h.
  1553.  
  1554. Added a bunch of #undef's to the SunOS System V make to get rid of the
  1555. "duplicate definition" errors caused by several Sun header files defining the
  1556. same symbols (e.g. termio.h and ioctl.h).  ckutio.c.
  1557.  
  1558. Added a makefile entry for Motorola MVME147 System V/68 R3 V5.1 from
  1559. Eigil Krogh Sorensen <eks@aar-vki.dk>.
  1560.  
  1561. New makefile entry and support for 386BSD (Jolix) from Hellmuth Michaelis
  1562. <hm@hcshh.hcs.de>, Hanseatischer Computerservice GmbH, Hamburg.
  1563.  
  1564. New makefile entry for ICL DRS6000 DRS/NX from Phil Race <philr@sss.icl.co.uk>
  1565. at ICL.
  1566.  
  1567. VAX/VMS
  1568.  
  1569. Fix for fencepost error in CKVFIO.C: when uploading a text file to VMS, and
  1570. a line break occurs exactly at the end of the 32K output buffer, a carriage
  1571. return is lost.  From James Harvey at Indiana/Purdue University.
  1572.  
  1573. Defined IFDEBUG for VMS.  Adds less than 5K to the .EXE file, and speeds up
  1574. file transfer by anywhere from 6% to 31% (according to my measurements).
  1575. Also, this seems to have fixed the UCX problem (in which it wasn't possible to
  1576. send packets longer than 76 to C-K/VMS if you were accessing the VAX via
  1577. TELNET and it was running UCX or CMU/Tek TCP/IP).  Later, it turns out that
  1578. it fixed the UCX problem only for people coming in over relatively low-speed
  1579. WAN connections, but not for high-speed LAN connections.  Fundamental changes
  1580. are needed.  ckvker.mak, ckvker.mms, ckvker.com.
  1581.  
  1582. VMS Makefile now reads C compiler options from logical name LOCALOPTS, so now
  1583. you don't have to edit the makefile to alter the compilation options.  Terry
  1584. Kennedy.
  1585.  
  1586. Made KANJI support the default for VMS C-Kermit.  Only adds a few K and
  1587. doesn't hurt anything.  Without this, Japanese sites that don't have C
  1588. compilers would have no way to configure Kanji support.  ckvker.{mak,com,mms}.
  1589.  
  1590. Removed current directory from VMS init-file search list.
  1591.  
  1592. DATA GENERAL AOS/VS
  1593.  
  1594. For the first time in the C-Kermit 5A development cycle, we have a Data
  1595. General AOS/VS version, thanks to Eugenia Harris of Data General, complete
  1596. with TCP/IP support.
  1597.  
  1598.  
  1599. OTHER UPDATED VERSIONS
  1600.  
  1601. Atari ST, from Bruce J Moore.  Now supports tilde notation in filenames,
  1602. but only for "self", not other users.  Environment variable HOME must be
  1603. present.  SET FILE COLLISION UPDATE bugs fixed.
  1604.  
  1605. Amiga... ???
  1606.  
  1607. OS-9: Another new ck9fio.c from Christian Hemsing.  Chris's notes: When a
  1608. remote server command created more than one child process and the command was
  1609. cancelled prematurely, zclosf() only killed the forked process even though a
  1610. whole process tree might have been created in the meantime by the remote
  1611. command.  Then several processes were simply left over (under OS-9).  They
  1612. didn't do any harm except using memory, but would have to be killed by hand
  1613. eventually.  Now Kermit cleans up all processes.
  1614.  
  1615. Also, a fix to the OS-9 CONNECT command, relating to flow control upon
  1616. escaping back to prompt.  Plus new versions of the build files, ck9ker.mak
  1617. and ck9ker.gcc.
  1618.  
  1619. FILE TRANSFER DISPLAY
  1620.  
  1621. Adapted Kai Uwe's "simple" display to take up a bit less screen space (and
  1622. memory) and renamed it to "crt", since it works on any CRT, and the word
  1623. "simple" might upset some people.  Made a lot of adjustments to handle odd
  1624. cases like zero-length files, unknown-length files, files whose sizes change
  1625. when you transfer them (e.g. text files between VMS and UNIX), etc etc, to
  1626. prevent bizarre-looking transfer rates and percents (like 125% and still
  1627. going, or 37% and complete).  Later, even more refinements from Kai Uwe.
  1628. ckuusx.c.
  1629.  
  1630. Changed the serial display to print a dot for every K transferred, rather
  1631. than for every 4 packets.  This involved only slightly more arithmetic,
  1632. and it gives a much better indication of how the transfer is progressing.
  1633. The number of dots shown for a particular file is now always the same, no
  1634. matter what the packet size.  ckuusx.c.
  1635.  
  1636. Simplified and consolidated the "crt" and "serial" display code, so now
  1637. hopefully it's easier to understand and modify.  ckuusx.c.
  1638.  
  1639. Fulvio Marino noticed that during multifile transfers, the "remaining time"
  1640. shown in the fullscreen display was pretty strange for files after the first
  1641. one.  Diagnosis: the elapsed time returned by gtimer() was based on the entire
  1642. file group, not the current file.  Cure: keep track of when the current file
  1643. started.  ckcfns.c, ckuusx.c.
  1644.  
  1645. Moved "Time remaining" in fullscreen display to its own field for increased
  1646. legibility.  Made the time remaining, percent done, and several other fields
  1647. update themselves less frequently.  At end of transfer, show total elapsed
  1648. time.  Various other bits of tuning to the fullscreen display.  (At least) one
  1649. tiny problem remains: System V curses endwin() always seems to put the cursor
  1650. at the bottom of the screen, no matter where Kermit leaves it, so when the
  1651. prompt is issued after a file transfer, the display scrolls up one line -- a
  1652. minor annoyance.  With the BSD curses library, the display stays put.
  1653. ckuusx.c.
  1654.  
  1655. Fixed the "double error screen" problem, in which an E packet caused the
  1656. curses screen to be closed, and then reopened, usually so fast you couldn't
  1657. see the error message.  Also, improved the output-file opening code to show
  1658. the actual system error string in the error message, but only for BSD4 and
  1659. ATTSV, since I don't know which other versions support errno and sys_errlist[].
  1660. Several modules.
  1661.  
  1662. Added code from Andy Fyfe to show seconds remaining instead of CPS in
  1663. CRT display, but did not activate it.  It's within #ifdefs that aren't turned
  1664. on.
  1665.  
  1666. DIALING AND COMMUNICATIONS
  1667.  
  1668. Added a new flow-control option, KEEP, and made it the default.  KEEP
  1669. means don't touch or change flow control.  This lets users set flow control
  1670. on the login terminal or SET LINE device outside of Kermit, and lets Kermit
  1671. use it, whatever it is.  Previously, Kermit would always try to accomplish the
  1672. current FLOW-CONTROL setting (default Xon/Xoff) whenever you CONNECTed or
  1673. entered packet mode.  ckcdeb.h, ckuus3.c, ckuus4.c, ck[uvwo]tio.c.
  1674.  
  1675. Added support for CCITT V.25bis modem dialing: SET MODEM CCITT, based on
  1676. information from Fernando Cabral in Brasilia <fcabral@ibase.br> who sent in
  1677. some code for it based on C-Kermit 4C.  Adapted the code to 5A dialing
  1678. conventions and augmented it from my copy of V.25bis in the CCITT Blue Book.
  1679. Totally untested, but it doesn't seem to break the other modem types.
  1680. ckudia.c.  Later, got confirmation from Brazil (after sending the entire new
  1681. C-Kermit source code by e-mail!) that the CCITT support works.  Still later,
  1682. got a few corrections to it from Fernando.
  1683.  
  1684. Added support for Telebit T1600 and T3000, based on T3000 modem and manual.
  1685. What a nightmare.  These modems are grossly incompatible with the original
  1686. Trailblazer in terms of the commands they accept.  I'm assuming that the T1600
  1687. is the same as the T3000, based on info from Fernando Cabral.  Unfortunately,
  1688. I have little idea about the T1000 or T2500 or other models.  Rather than add
  1689. a whole raft of new commands, I ask the modem its model number with ATI.
  1690. Trailblazer reports "962", T3000, T1600, and WorldBlazer report "965", T2500
  1691. reportedly reports "972".  For now, if the modem responds with anything else
  1692. (or doesn't respond at all), I skip the model-dependent commands.  ckudia.c,
  1693. ckcker.bwr.
  1694.  
  1695. In the process of adding the new Telebit support, I also fixed a problem
  1696. reported by Charlie Finan <chf@grumpy.cray.com>: if an AT-command-set modem
  1697. was in No-Echo (E0) Non-Verbal (V0) mode, its responses were not read
  1698. correctly.  Fixed in getok(), ckudia.c.  All 4 combinations -- E1V1, E1V0,
  1699. E0V1, E0V0 -- should now work.
  1700.  
  1701. New Telebit / Hayes / timing-out code tested with original Trailblazer, T3000,
  1702. original Hayes 1200, Rolm 244PC (Hayeslike), and Rolm DCM.
  1703.  
  1704. Changed SET DIAL TIMEOUT to accept a default of 0, meaning "auto".  ckuus7.c.
  1705.  
  1706. Removed restriction on DIAL command that it can only be done on a serial
  1707. connection.  It should now be possible to (for example) SET HOST to a reverse
  1708. terminal server to get a dialout modem, and then dial it, provided you give
  1709. the commands in this order:
  1710.  
  1711.   SET HOST <ip-host>
  1712.   SET MODEM HAYES (or whatever)
  1713.   DIAL <phone-number>
  1714.  
  1715. Suggested by Bill Davidson at Cray Research.  Completely untested.  The way
  1716. this is presently accomplished is not great.  The same variable is used for
  1717. modem type and network type -- if it's positive, it's the modem type, if it's
  1718. negative, it's a network type.  Separating the two quantities into separate
  1719. variables is not feasible right now, since it would mean rewriting and testing
  1720. the system-dependent code for all eight C-Kermit implementations.  The way it
  1721. is now, if you SET HOST after SET MODEM, it writes over the modem setting.
  1722.  
  1723. Changed SET DIAL DIRECTORY to open the file and keep it open, rather than just
  1724. checking its existence and recording the name.  The DIAL command now uses the
  1725. open file descriptor, rewinding the file, rather than trying to open it by
  1726. name, which would fail if the user had CD'd to another directory since giving
  1727. the SET DIAL DIR command without an absolute pathname.  SET DIAL DIR with no
  1728. filename closes the file, as does EXIT.  ckudia.c, ckuusr.h, ckuus[67].c.
  1729.  
  1730.   NOTE: There is still no command to display the directory, other than TYPE.
  1731.   Another approach would be to read the directory into a structure in memory.
  1732.   Then we could have various commands to deal with the structure: list the
  1733.   whole directory, display certain entries, and even put the entry names into
  1734.   a keyword table so "DIAL ?" would list them.  But that would be yet another
  1735.   potentially memory-hungry addition to an already overly memory-consumptive
  1736.   program.  Of course, it would only use lots of memory if the user had a
  1737.   huge dialing directory.  A large-enough directory could cause malloc() to
  1738.   fail, whereas the file-rewinding approach can handle directories of any
  1739.   size at all.
  1740.  
  1741. Fixed dialing directory lookup to work with abbreviations of directory
  1742. entries.
  1743.  
  1744. Fixed oversights in the dialing directory code, noticed by Kai Uwe Rommel:
  1745. tabs were not recognized as field separators, and line terminators were
  1746. not stripped.
  1747.  
  1748. Later, fixed a bug in the routine that breaks the dialing directory entry
  1749. into separate words, also noticed by Kai Uwe.  ckuus5.c.
  1750.  
  1751. Jay Rouman reported bizarre behavior on a SUN dialing out with a Hayes modem
  1752. when the remote hung up.  Traced to new mdmhup() routine.  It neglected to put
  1753. the device back into "DIALING" mode, i.e. to make it ignore carrier, before
  1754. trying to output characters (like <sec>+++<sec>ATH0<CR>) to the modem dialer,
  1755. resulting in i/o errors, which in turn made CONNECT send beeps to the screen.
  1756. Fix installed, but I don't have the configuration to test it here.  Later,
  1757. Jay confirmed it works OK.
  1758.  
  1759. Also changed CKUCON.C to call mdmhup only if the user explicitly requested
  1760. hangup via <esc-char>H.  If the other side disconnected, there's no need for
  1761. mdmhup.  ckucon.c.
  1762.  
  1763. Added mdmhup() feature to VMS CONNECT command.  ckvtio.c.
  1764.  
  1765. There was one case in getok() (the modem command response reader) in ckudia.c
  1766. that returned without turning off the timeout alarm.  Found by Dave Wexelblat.
  1767. The symptom was a core dump when he did ^\H (hangup in connect mode).
  1768. The problem was there all along, but was never noticed till now, because
  1769. ^\H calls mdmhup(), which uses getok() to read the modem's response to ATH0
  1770. or whatever.
  1771.  
  1772. Added support for SET DIAL KERMIT-SPOOF to Microcom modem type.  Untested.
  1773. Left in COMMENT section.  Not only do I not know if it works, but it might
  1774. work on some Microcom models, but upset other models.  ckudia.c.
  1775.  
  1776. Added S7 carrier-wait support for Courier HST.  Not tested.  ckudia.c.
  1777.  
  1778. Added new response messages for Rolm CBX software release 9005.  ckudia.c.
  1779.  
  1780. In the process of testing the new Telebit support, found that the timeouts
  1781. were really screwed up.  Sometimes the dial timeout would never occur.  Tidied
  1782. this up in several ways -- made sure that ttoc() saved and restored the
  1783. current alarm and alarm handler, and ditto for ttinc(), when called with a
  1784. timeout interval.  Removed a bunch of unnecessary alarms() and signal()'s from
  1785. ckudia.c, and tried not to have a SIGALRM handler active unless it was needed.
  1786. Changed sysinit() in ckutio.c to include "signal(SIGALRM,SIG_IGN)" so that
  1787. when we save and restore alarms, we start out with something sensible.
  1788. Also changed ttinc() and ttoc() to save and restore the previous alarm value.
  1789. ckutio.c.
  1790.  
  1791. FIXES
  1792.  
  1793. Oops, missed one of the unquoted #includes in ckcmai.c.  Peter Mauzey.
  1794.  
  1795. Discovered a truly horrible bug.  If you started C-Kermit without an
  1796. initialization file, the CD command (when given with no argument) crashes
  1797. the program.  Fixed in ckuus5.c.
  1798.  
  1799. And another: the \Feval() function would core dump if you used it to divide
  1800. by zero.  Now it returns -1.  ckuus5.c.
  1801.  
  1802. And another: the negotiated sliding window size was only effective for the
  1803. first file of multifile transfer.  After the first file, the window size
  1804. would drop back to 1 and stay there.  Fixed in ckcpro.w.
  1805.  
  1806. And fixed a related bug, reproduced as follows: SET WINDOW 4 on both ends,
  1807. then transfer files using 4 window slots, then SET WINDOW 1 on both ends, then
  1808. send a file from C-Kermit.  It uses 4 window slots even though the other
  1809. Kermit asked for 1.  Fixed by initializing wslotn (the negotiated window size)
  1810. to 1 in tinit().  Also made sure that C-Kermit sent "!" (= 1) in the S-packet
  1811. under these conditions (previously it sent a blank).  ckcfns.c.
  1812.  
  1813. Fixed a lingering protocol problem.  C-Kermit gets an S-packet (containing
  1814. protocol parameters), ACKs it, and then releases the send-buffer, so the ACK
  1815. is gone.  Then the S-packet comes again, e.g. because the other Kermit didn't
  1816. get the ACK.  The old ACK is no longer there to be retransmitted, so C-Kermit
  1817. sent an empty ACK packet which would, of course, screw up everything that
  1818. comes after because the two sides have different ideas about which parameters
  1819. were negotiated.  So now C-Kermit saves a copy of its init string so if it has
  1820. to retransmit the ACK to an S or I packet, the ACK contains the right data.
  1821. (I thought I had fixed this in an earlier edit by adding code to rpar() and
  1822. resend() -- which I did -- but the resend() routine was not being called at
  1823. the place in the input() routine where the problem occurred.)  ckcfn2.c.
  1824.  
  1825. Fixed SET FILE BYTESIZE to work when sending files.  ckcfns.c.
  1826.  
  1827. Fixed SHOW CHARACTER-SETS and SHOW TERMINAL.  The shotcs() routine was looking
  1828. in the wrong table for the terminal character set name.  Also changed it to
  1829. skip synonyms and show the primary name (e.g. "macintosh-latin" rather than
  1830. "apple-quickdraw").  ckuus5.c.
  1831.  
  1832. Chris Hemsing discovered why the file size in the file transfer display is
  1833. sometimes clobbered when sending files (apparently it is *always* clobbered in
  1834. some implementations, like OS-9, and definitely on the Mac).  fsize was
  1835. getting set to -1 in resetc(), after fsize was set earlier when we got the
  1836. info about the file.  (Kai Uwe noticed this too in the OS/2 version.)  This
  1837. fixes the file transfer thermometer on the Mac.  ckcfns.c.
  1838.  
  1839. The following kind of construction never worked right:
  1840.  
  1841.   IF blah command
  1842.   ELSE IF bleh command
  1843.   ELSE command
  1844.  
  1845. You couldn't have more than one ELSE because if "blah" was true, the first
  1846. ELSE was skipped, which means the 2nd IF is also skipped, which means the 2nd
  1847. ELSE is diagnosed as not following an IF, causing an error.  Fixed by allowing
  1848. ELSEs to also follow ELSEs.  ELSE not following an IF or an ELSE still causes
  1849. an error (as it should), but a dangling ELSE (e.g. and IF followed by 2 ELSEs)
  1850. does not -- but it does no harm either (it's treated like a comment).  So now
  1851. you can make big long chains of IF-ELSEs, like:
  1852.  
  1853.   define foo if not def \%1 error,-
  1854.   else if not numeric \%1 error {"\%1" - Not a number},-
  1855.   else if = \%1 0 echo zero,-
  1856.   else if = \%1 1 echo one,-
  1857.   else if = \%1 2 echo two,-
  1858.   else if = \%1 3 echo three,-
  1859.   else if = \%1 4 echo four,-
  1860.   else if = \%1 5 echo five,-
  1861.   else if = \%1 6 echo six,-
  1862.   else if = \%1 7 echo seven,-
  1863.   else if = \%1 8 echo eight,-
  1864.   else if = \%1 9 echo nine,-
  1865.   else echo I dunno
  1866.  
  1867. From James Sturdevant, fixes to INPUT and REINPUT that prevented them from
  1868. finding "abababc" in "ababababc".  ckuus4.c.
  1869.  
  1870. Andy Fyfe discovered that if you define a new macro whose name is an
  1871. unambiguous prefix of an existing macro, the existing macro is deleted.
  1872. Fixed in ckuus5.c.
  1873.  
  1874. Rearranged SET SPEED keyword table to be alphabetical again, after addition
  1875. of several new line speeds.  ckuus3.c.
  1876.  
  1877. OTHER CHANGES
  1878.  
  1879. Added MSLEEP / MPAUSE command.  Like PAUSE / SLEEP, except milliseconds
  1880. instead of seconds.  ckuusr.[ch], ckuus6.c.
  1881.  
  1882. Added WRITE ERROR <text> command.  Just like WRITE SCREEN, except it
  1883. writes to stderr.  ckuusr.h, ckuusr.c.
  1884.  
  1885. Added SET TERMINAL CR-DISPLAY { CRLF, NORMAL } to control the display of
  1886. incoming carriage returns on the screen.  Like SET TERMINAL NEWLINE, but in
  1887. the opposite direction.  Done at the request of various people who use C-Kermit
  1888. to connect to devices (lab instruments) that only send CRs at line end.
  1889. ckuusr.h, ckuus[257].c, ckucon.c, ckvcon.c, ckocon.c, ckdcon.c.
  1890.  
  1891. Added SET TELNET NEWLINE-MODE { ON, OFF }.  Just like SET TERMINAL NEWLINE,
  1892. but applies only to TELNET connections.  Default is ON, i.e. Kermit sends
  1893. CRLF when you type CR.  When OFF, Kermit sends CR and NUL, as required by the
  1894. TELNET specification, RFC854.  ckuusr.h, ckuus[234].c, ckucon.c, ckvcon.c.
  1895. Didn't do ckdcon.c -- it appears to be way behind, needs a lot of work.
  1896.  
  1897. Also made the TELNET NEWLINE-MODE apply to file transfer packets.  If C-Kermit
  1898. has a TELNET connection, and the packet terminator is CR, a LF or a NUL is
  1899. sent after the CR, according to the TELNET NEWLINE-MODE setting.  ckcfn2.c.
  1900.  
  1901. Added SET INPUT SILENCE <seconds>.  The longest interval of silence that
  1902. will be tolerated by the INPUT command.  Can be used to cause INPUT to fail
  1903. before the specified timeout on the search string.  ckuusr.[ch], ckuus[457].c.
  1904.  
  1905. Changed INPUT command to accept a null search string, in which case it waits
  1906. for any character at all.  ckuus4.c.
  1907.  
  1908. Added a new variable, \v(inchar), which holds the last character that was
  1909. read by the INPUT command (whether it succeeded or not).  ckuusr.h, ckuus4.c.
  1910.  
  1911. Changed INPUT to ignore NUL characters coming from communication device.
  1912. They aren't stored in the INPUT buffer, and they don't figure into string
  1913. comparisons.  However, an arriving NUL still counts as a character if the
  1914. search string itself is null.  This change allows string operations to work
  1915. on the \v(input) variable.
  1916.  
  1917. Added SET FILE INCOMPLETE as a synonym for SET INCOMPLETE.  ckcker.h,
  1918. ckuus7.c.
  1919.  
  1920. Fixed IF DEFINED to not report that certain quantities (such as "\a") were
  1921. defined.  ckuus6.c.
  1922.  
  1923. Changed xxstring() to recursively evaluate the contents of the parentheses
  1924. in \$(xxx), \v(xxx), and \m(xxx) constructions.  This allows, for example,
  1925. variables to hold environment variable, builtin variable, or macro names,
  1926. and their use in constructions such as "if defined \m(\%a)".  ckuus4.c.
  1927.  
  1928. Disabled handling of "mail" disposition for incoming files for AOS/VS,
  1929. OS/2, Mac, etc.  So now C-Kermit will refuse incoming mail right away, rather
  1930. than receiving the file and then complaining afterwards that it couldn't
  1931. mail it.  ckcfn3.c.
  1932.  
  1933. Changed the method for parsing macros.  Previously, if a top-level keyword
  1934. parse failed, we stuffed "DO " into the beginning of the command buffer and
  1935. forced a reparse.  This worked, but resulted in much confusion when the user
  1936. edited the command, allowing (for example) deletion into the prompt.  Now we
  1937. take care of this in a different place, and instead of stuffing "DO ", we
  1938. simply pretend the user typed the DO command and go try to process it.  If the
  1939. first word in the buffer is not a macro name, cmkey says "?No keywords match".
  1940.  
  1941. Changed DO command in a very small way: IF the DO command fails, it sets the
  1942. FAILURE flag (as before), but if it succeeds, it does not touch the FAILURE
  1943. flag.  This lets us write macros that begin with IF SUCCESS or IF FAILURE,
  1944. and use them to test the preceding command, for example:
  1945.  
  1946.   DEFINE CHKERR IF FAIL STOP 1 \%1
  1947.  
  1948. ckuusr.c.
  1949.  
  1950. In the few cases where it was possible, I made the default FILE CHARACTER-SET
  1951. be the normal character set for: NeXT, DG AOS/VS, Macintosh, A/UX.  ckuxla.c,
  1952. ckmxla.c.
  1953.  
  1954. Defining NODEBUG no longer removes session-debugging capability; SET DEBUG
  1955. SESSION now works even if C-Kermit was built with NODEBUG.  Suggested by
  1956. Peter Mauzey.  ckuusr.c, ckuus3.c.  Added help text for SET DEBUG.  ckuus2.c.
  1957.  
  1958. At the suggestion of Bo Kullmar, C-Kermit now prints "Type X or E to cancel"
  1959. (or the System-V equivalent) when the user gives any REMOTE command that might
  1960. generate a prolonged reply, such as REMOTE DIR, REMOTE TYPE, REMOTE HOST.
  1961. ckuus7.c
  1962.  
  1963. Changed the keyword help-giver to show all the (visible) commands that start
  1964. with the characters typed so far, even when the characters typed so far
  1965. identify a complete keyword.  Previously, if you typed (for example) "c?",
  1966. it would only show you "c", which is a synonym for CONNECT.  Now it shows
  1967. you all the commands that start with C.  ckucmd.c.
  1968.  
  1969. Discovered that the new built-in ERROR macro (edit 182) did not work as
  1970. intended.  The END 1 in its definition applied to the ERROR macro itself, not
  1971. to any macro or TAKE file that happened to be calling it!  ckuus5.c.
  1972.  
  1973. Changed the STOP and END commands to allow an optional text string after the
  1974. numeric return code.  If given, it is printed.  Now STOP and END do what the
  1975. FATAL and ERROR macros were supposed to do, and they do it faster.  FATAL
  1976. is still available and still works.  ckuusr.c.
  1977.  
  1978. Updated malloc() debugging package, ckcmdb.c, from Howie Kaye at Columbia.
  1979. Use with "mermit" makefile entry to build a version of C-Kermit that traps
  1980. malloc() errors.  Untested.
  1981.  
  1982. Made '-s' command-line option call zchki() on each file for all
  1983. implementations, not just UNIX, so "kermit -s xxx" would fail immediately
  1984. when xxx doesn't exist or is not readable.  ckuusy.c.
  1985.  
  1986. Changed the TRANSMIT command, when FILE TYPE is BINARY and TRANSMIT ECHO is ON
  1987. and TERMINAL ECHO is REMOTE, to use ttchk() to decide whether to read and echo
  1988. characters, rather than doing an unconditional 1-second timed read, which
  1989. slows TRANSMITs down tremendously if the remote end is not echoing and the
  1990. user didn't know to SET TRANSMIT ECHO OFF or TERMINAL ECHO LOCAL.  ckuus4.c.
  1991.  
  1992. Moved a big chunk of code from opena() to gattr() -- the code that sets text
  1993. or binary mode based on the incoming Attribute packet when receiving files.
  1994. This allows the file mode to be displayed correctly when rpack() gets the
  1995. first data packet.  ckcfn3.c
  1996.  
  1997. Replaced CP850/Latin-1 and CP437/Latin-1 translation tables with new versions
  1998. that leave the C0 controls alone.  Never actually tried to use the vanilla
  1999. IBM CDRA tables before, but it's not pretty when you're stuck with them, as
  2000. in OS/2 C-Kermit -- Ctrl-T, Ctrl-U, etc, don't work.  ckuxla.c.
  2001.  
  2002. Changed CONNECT module to send TELNET AYT and IP in a single write, rather
  2003. than each character singly.  ckucon.c.
  2004.  
  2005. Removed unneeded "extern int parflg" from ckcfns.c.
  2006.  
  2007. There was a conflict between the stupid DIALING and CONNECT symbols, which
  2008. were used to overload the flow-control parameter to ttpkt(), and symbols that
  2009. were defined for certain obscure types of hardware flow control.  I got rid of
  2010. the the DIALING and CONNECTED symbols entirely, and defined new FLO_xxxx
  2011. symbols (with unique values) to take their place.  ckcdeb.h, ckudia.c,
  2012. ckutio.c.
  2013.  
  2014. Removed #undef CK_RTSCTS etc from ckcdeb.h so they can be defined in
  2015. CFLAGS (not that defining these flow control symbols will necessarily result
  2016. in anything useful).
  2017.  
  2018. Improved formatting of SHOW MACROS to separate each definition with a blank
  2019. line, to indent continued lines, and to indicate continued with dashes.
  2020. At Andy Fyfe's suggestion.  ckuus5.c.
  2021.  
  2022. Fixed Ctrl-C at prompt level to give prompt on new line.  This was broken
  2023. by fullscreen file transfer display changes.  ckuusx.c.
  2024.  
  2025. At the suggestion of Alan Robiette and Peter Higgenbotham at Oxford
  2026. University in the UK, changed the server startup message to account for the
  2027. fact that some people are not using local Kermit programs that need to be
  2028. escaped back to (e.g. Mac Kermit).  Hopefully the new wording won't break too
  2029. many scripts, because in the new scheme of things, arbitrary text can precede
  2030. the "KERMIT READY TO xxx..." message.
  2031.  
  2032. Added prototypes for Kanji-related functions to ckcker.h.
  2033.  
  2034. ------------------------------
  2035. 5A(182) Sat Jul  4 23:50:26 1992
  2036.  
  2037. NEW FEATURES
  2038.  
  2039. Added CHECK command to check whether a feature is configured.  This command
  2040. is available in all interactive versions, regardless of what features might
  2041. have been left out:
  2042.  
  2043.   CHECK <feature-name>
  2044.  
  2045. If the feature is available, the command succeeds, otherwise it fails.
  2046. If the CHECK command was issued from top level, a message is printed telling
  2047. whether the feature is available.  If it is issued from a command file or
  2048. macro and the feature is not available, it fails.  If you have the script
  2049. programming language configured, you can use IF FAILURE to check the results.
  2050. If not, you can use SET TAKE ERROR ON to quit the command file immediately.
  2051. The feature-names are:
  2052.  
  2053. Feature-name:          Feature and/or commands:
  2054.   DEBUG                  LOG DEBUG
  2055.   CHARACTER-SETS         SET { FILE, XFER } CHARACTER-SET, TRANSLATE, etc
  2056.   CYRILLIC               Cyrillic character-set translation
  2057.   DIAL                   DIAL, SET DIAL, and SET MODEM commands
  2058.   FULLSCREEN-DISPLAY     SET FILE DISPLAY FULLSCREEN
  2059.   HELP                   Built-in help
  2060.   IF                     Script programming language (IF, GOTO, etc etc)
  2061.   JOB-CONTROL            SUSPEND, Z, handling of suspend signal
  2062.   KANJI                  Kanji character-set translation
  2063.   LATIN1                 Latin-1 character-set translation
  2064.   LATIN2                 Latin-2 character-set translation
  2065.   NETWORK                SET HOST command
  2066.   PUSH                   PUSH, RUN, !, @ commands, shell escapes, etc.
  2067.   SCRIPT                 SCRIPT command
  2068.   SERVER                 SERVER, SET SERVER commands
  2069.   SHOW                   SHOW command
  2070.   TRANSMIT               TRANSMIT command
  2071.  
  2072. This commands lets us check availability of features without having to
  2073. depend on the IF command or other script programming language features, and
  2074. therefore allows a standard initialization file for all interactive versions,
  2075. even minimally configured ones.  For example, an initialization file that
  2076. defines a bunch of macros could do this just before the macro definitions
  2077. section:
  2078.  
  2079.   SET TAKE ERROR ON
  2080.   CHECK IF
  2081.   SET TAKE ERROR OFF
  2082.  
  2083. If the script programming language (including macros) is not configured in
  2084. Kermit, the TAKE file terminates immediately, otherwise it keeps going.
  2085. Afterwards, once we know we have a script language (including an IF command),
  2086. we can check for other features this way:
  2087.  
  2088.   CHECK FULLSCREEN
  2089.   IF SUCCESS SET FILE DISPLAY FULLSCREEN
  2090.  
  2091. ckuusr.h, ckuusr.c, ckuus3.c.
  2092.  
  2093. Added a dialing directory, compatible with MS-DOS Kermit 3.11.  The only
  2094. new command is SET DIAL DIRECTORY <filename>.  Many modules.  Directory is
  2095. a plain text file, one line per entry.  Entries look like this:
  2096.  
  2097.   name number speed parity comments
  2098.  
  2099. If you have specified a dialing directory file, the DIAL command reads it and
  2100. tries to match the dial-string with a name in the file.  When there is a
  2101. match, the associated number is substituted and the speed and parity, if
  2102. specified in the entry, are changed.  The dial-string is used as given if it
  2103. is not found in the directory.
  2104.  
  2105. The dialing directory fields are separated by one or more spaces or tabs.  A
  2106. field can include spaces if it is surrounded by curly braces.  The speed
  2107. and/or parity fields can be omitted, in which case the current speed and
  2108. parity settings are not changed.  You can also put an "=" sign in the speed
  2109. or parity field to leave it unchanged.  Example:
  2110.  
  2111.   digital   1-800-2341998 2400   none   The DIGITAL Store
  2112.   rolm      93,7654321    2400   none   The Rolm CBX
  2113.   telenet   93,9876543    2400   mark   SprintNet
  2114.   nospeed   8765432       =      even   Leave speed alone but set parity
  2115.   noparity  9876543       2400   =      Leave parity alone but set speed
  2116.   {my sun} {93,854 1824}  2400   none   With word grouping
  2117.  
  2118. For Hayes and Telebit dialing, changed C-Kermit to set modem register S7
  2119. according to the calculated (or user-specified) dial timeout.  ckudia.c.
  2120.  
  2121. Changed Hayes's "wake-string" from "AT" to "ATQ0" to make sure result codes
  2122. are displayed.  ckudia.c.
  2123.  
  2124. Added four new elements to the modem-info structure: escape sequence (e.g.
  2125. Hayes "+++"), escape sequence guard time, hangup sequence, and pointer to
  2126. function to read modem response string to non-dialing commands (e.g. Hayes
  2127. "OK").  This is to let commands like HANGUP not only drop DTR, but also
  2128. escape back to the modem and give it its particular hangup command.
  2129. Added mdmhup() routine to ckudia.c to do modem-specific hangup.
  2130.  
  2131. These elements were filled in for Hayes, US Robotics, and Telebit modem types
  2132. (the ones that have AT command sets), as well as the Racal-Vadic VA4492E (info
  2133. from manual).  People who know about the other types should fill in this info
  2134. for their modems too.  This involves the four new structure members, plus
  2135. writing a routine to parse modem responses, if this is done differently from
  2136. Hayes (see the getok() routine for Hayes).
  2137.  
  2138. The new mdmhup() routine is used in the following ways:
  2139.  
  2140.  1. During dialing, if DIAL HANGUP is ON, we call mdmhup() first, and then
  2141.     we call tthang() only if mdmhup() failed to get a positive response
  2142.     from the modem, including the case where no hangup string is defined for
  2143.     the modem.
  2144.  
  2145.  2. During CONNECT, same deal for <esc-char>H.  ckucon.c.
  2146.  
  2147.  3. Same deal for HANGUP command.  ckuusr.c.
  2148.  
  2149. Hopefully this will clear up a lot of the problems we have been having with
  2150. tthang() by simply not calling it in many cases.  If it causes problems,
  2151. you can easily revert to the old way by including -DNOMDMHUP in your CFLAGS.
  2152. Tested with Hayes 1200, Telebit Trailblazer, and Rolm 244PC, as well as on
  2153. several modem types for which the new procedure was not defined.  Not tested
  2154. on the Racal-Vadic modem.
  2155.  
  2156. Terry Kennedy implemented modem-signal sensing for the VMS version.  Now
  2157. SHOW MODEM and WAIT <n> <modem-signals> work.  ckvtio.c.
  2158.  
  2159. Terry Kennedy substituted a couple short, simple routines for the curses
  2160. library on VMS.  Now the fullscreen display works repeatedly, and consumes far
  2161. less memory and CPU.  This should be done in the UNIX version too, maybe in
  2162. the next edit.  Ideally, we wouldn't use any libraries at all, to eliminate
  2163. the multiple-makefile entry problem.  Instead, just grab the few needed escape
  2164. sequences from (where???).  There doesn't seem to be any good way to do this.
  2165. Deferred till next time.
  2166.  
  2167. Terry Kennedy also wrote a VMSINSTAL kit for C-Kermit:
  2168. CKVKIT.COM and CKVMSI.COM.
  2169.  
  2170. Changed the built-in FATAL macro to hangup if Kermit is in local mode.
  2171. ckuus5.c.
  2172.  
  2173. Changed name of ERROR command (which sends an E-packet) to E-PACKET.  ckuusr.c.
  2174.  
  2175. Added a built-in ERROR macro, which prints error message, then does END 1.
  2176. ckuus5.c.
  2177.  
  2178. Online documentation files reorganized:
  2179.  
  2180.   CKCCFG.DOC - C-Kermit configuration info for all versions
  2181.   CKUINS.DOC - UNIX installation instructions
  2182.   CKVINS.DOC - VMS installation instructions
  2183.  
  2184.   CKCKER.BWR - General "beware" file
  2185.   CKUKER.BWR - UNIX-specific beware file
  2186.   CKVKER.BWR - VMS-specific beware file
  2187.   etc.
  2188.  
  2189. FIXES
  2190.  
  2191. TELNET CONNECT fix.  It often happened that when opening a TELNET connection
  2192. to a remote host, the login: prompt did not appear.  The problem was that the
  2193. screen output buffer wasn't getting dumped if a TELNET negotiation option
  2194. arrived at just the wrong time.  Now the CONNECT code dumps the screen output
  2195. buffer before it handles any TELNET negotiation.  ckucon.c (UNIX), ckvcon.c
  2196. (VMS).
  2197.  
  2198. Fixed divide-by-zero in "Estimated time remaining" calculation in fullscreen
  2199. display.  Bug noticed and fix provided by Fulvio Marino.  ckuusx.c.
  2200.  
  2201. Fixed FOR, WHILE, and XIF macros, broken in edit 181.  From Fulvio Marino.
  2202. ckuus5.c.
  2203.  
  2204. Fixed LOG blah file APPEND to return SUCCESS when it succeeds, rather than
  2205. always returning FAILURE.  Fulvio Marino.  ckufio.c.
  2206.  
  2207. Fixed HANGUP on network connection to return SUCCESS when it succeeds, rather
  2208. than always returning FAILURE.  Fulvio Marino.  ckutio.c.
  2209.  
  2210. Several other dereferences of null pointers found and fixed.  Various modules.
  2211.  
  2212. SET TAKE ERROR ON never worked if Kermit was built without the script
  2213. programming language option (i.e. if it was built with -DNOSPL).  Fixed.
  2214. ckuus5.c.
  2215.  
  2216. Fixes to VMS file i/o from Terry Kennedy.  Edit 181 broke the sending of
  2217. binary files (all fixed-format files were erroneously considered text), with
  2218. the most obvious fault being the inability to send VMS .EXE files correctly.
  2219. zopeni() in ckufio.c.  Also, the automatic sensing of binary vs text files was
  2220. busted -- who knows for how long!  Code (re-?) added to sattr() in ckcfn3.c
  2221. to handle it.
  2222.  
  2223. Changes from William Bader so CKVTIO.C will compile under VMS 4.4.
  2224.  
  2225. Changes from James Sturdevant to allow WIN/TCP code to compile on systems that
  2226. objected to the WINTCP #include syntax (unquoted filenames) in edit 181.
  2227. ckcdeb.h, ckcnet.[ch], ckudio.c, ckuscr.c, ckuus[4x].c, plus new versions of
  2228. CKVKER.COM and CKVKER.MAK.  The idea is to define VAXC$INCLUDE to search the
  2229. TWG include files first, and then change "#include foo" to "#include <foo.h>"
  2230. in all the source modules so other compilers won't complain.
  2231.  
  2232. New CKVKER.MMS from Piet Plomp to include WIN/TCP.  Modified locally to
  2233. incorporate James's changes.  Includes curses.
  2234.  
  2235. Fixed curses display for VAX/VMS version, based on suggestions from James
  2236. Sturdevant and William Bader -- basically, never call endwin() (seems risky,
  2237. but also seems to work OK).  The real fix is to replace curses calls with
  2238. SMG$ (VMS screen manager) calls.  ckuusx.c.
  2239.  
  2240. Later, eliminated CURSES library altogether from VMS version.  Terry Kennedy
  2241. pointed out that VMS only supports VT52 and VT100 and later CRT terminals,
  2242. so we do the VMS fullscreen display using simple built-in routines,
  2243. eliminating a lot of overhead and memory consumption.  ckvtio.c, ckuusx.c,
  2244. ckuus7.c, ckvker.mak.  Also, William Bader sent in an SMG$ (VMS Screen
  2245. Manager) version.
  2246.  
  2247. Still later...  It turned out that the do-it-yourself VMS curses replacement
  2248. spent too much time updating the screen (because there was no optimization).
  2249. This, in turn, caused VMS to lose characters from incoming packets when the
  2250. buffer size was small (e.g. when using the typeahead buffer, whose size, by
  2251. default, is 78 chars) because its back was turned too often.  So I put in
  2252. William's SMG$ code, leaving the other two methods also intact.  Any one of
  2253. the three can be activated by the appropriate #define in the "screenc" section
  2254. of ckuusx.c (but if you want to go back to using VAXCCURSE, you'll have to
  2255. change the build procedures to link with the VAXCCURSE library).  Using SMG$
  2256. does indeed solve the problem with file transfers because it optimizes screen
  2257. writes very nicely.
  2258.  
  2259. Changed Amiga source code to use the full-blown UNIX character-set stuff,
  2260. so the next time it is compiled, it will include it.
  2261.  
  2262. Fixed multiline GET *again*, to compile correctly if NOSPL is defined.
  2263. Steven M. Schultz.  ckuus6.c.
  2264.  
  2265. Changed packet-length display in SHOW PROTOCOL to be less confusing, suggested
  2266. by Mike Normile of DG: the send-packet size is now shown to be the negotiated
  2267. length.  Ditto in the STATISTICS command.  ckuus4.c.
  2268.  
  2269. Fixed yet another X.25 glitch (a symbol in ckuusr.h was defined wrong).
  2270.  
  2271. Improved some of the HELP commands.
  2272.  
  2273. Bob Babcock <peprbv@cfaamp.harvard.edu> reported that CRs were
  2274. echoed as LFs, rather than CRLF on Convex/OS 9.1.  This was traced to the
  2275. turning off of IEXTEN ^O/^V processing, which is apparently misimplemented on
  2276. the Convex.  Added a new CFLAGS symbol NOIEXTEN to make Kermit leave it alone,
  2277. and put it in the Convex makefile entry.  makefile, ckutio.c, ckuver.h,
  2278. ckuus5.c.
  2279.  
  2280. Changed OUTPUT to behave like CONNECT on a TELNET connection, i.e. to send
  2281. CRLF when asked to send CR.  Ditto when TERMINAL NEWLINE-MODE is ON.
  2282. ckuus5.c.
  2283.  
  2284. Removed all the directory-related #includes from ckutio.c.  I have no idea
  2285. why they were ever there in the first place.
  2286.  
  2287. Fixed ttpkt() to turn off t_eofc and t_brkc characters in tchars structure.
  2288. This was interfering with file transfer on NeXT OS 2.0.  Thanks to Joe Bearly,
  2289. jst@ccnext.ucsf.edu.  I hope this doesn't destroy compilations anywhere.  It
  2290. seems there is no cure for System A that is not also poison for Systems B, C,
  2291. and D...  If these structure members come up as undefined during compilation,
  2292. add -DNOBRKC to your CFLAGS and let me know.  ckutio.c.
  2293.  
  2294. 2.11BSD version didn't work any because one of the overlays got too big (by
  2295. 128 bytes).  Adjusted the overlays, also changed the makefile to pass the name
  2296. of the extracted-string file to ckustr.c via a symbol, rather than making the
  2297. user edit the ckustr.c file.  It runs very slow and jerky.  Tried adding
  2298. -DNOSETBUF to the CFLAGS, but it didn't make any difference.
  2299.  
  2300. Still more SCO UNIX (ODT) fixes.  It seems that the data type for pid is
  2301. not always "short" in ODT 2.0.  Changed the relevant makefile entries to say
  2302. -DPID_T=pid_t, rather than -DPID_T=short, since pid_t should be available
  2303. as a typedef on all these systems.
  2304.  
  2305. Added more -DNOxxx CFLAGS to the coherentmi entry in one last attempt to
  2306. make an interactive version that fits in 64K.  makefile.
  2307.  
  2308. ------------------------------
  2309. 5A(181) Sat Jun 20 16:53:20 1992
  2310.  
  2311. Added INTRODUCTION command.  ckuus[hr2].c.
  2312.  
  2313. Fixes to fixes to concb(), conbin(), ttvt(), ttpkt() for System V from David
  2314. Wexelblat, AT&T Bell Labs <dwex@mtgzfs5.att.com>.  The DGUX 4.30 fixes
  2315. introduced in edit 180 broke Kermit for most System-V based systems.  ckutio.c.
  2316. Tested OK on SUN (make sunos41s5, which failed in edit 180), ...
  2317.  
  2318. Fixed typo in ckuus3.c: "tmpbuf[1] - '\0';" in line 582, minus should be
  2319. equals.  Spotted by Bo Kullmar.
  2320.  
  2321. Added SET LANGUAGE FRENCH OE-digraph support for DGI, Apple, and NeXT
  2322. character sets.  ckuxla.c.
  2323.  
  2324. Fixes and tuneups to curses display.  ckuusx.c.
  2325.  
  2326. Changed the word "curses" to "fullscreen", but left "curses" as an invisible
  2327. synonym.  #ifdef'd FILE DISPLAY table for Mac.  ckuus[2457].c.
  2328.  
  2329. Changed "set file display fullscreen" to call tgetent() to check whether
  2330. terminal type is known before letting them use fullscreen display.  If it
  2331. isn't, initscr() exits back to the operating system, killing Kermit and
  2332. leaving the terminal modes messed up.  So now we check first by making a
  2333. direct call to a termcap routine, tgetent(), before initializing curses.  This
  2334. might be tricky because it is only simulated in System V.  Tested OK on SUNOS,
  2335. NeXT, Dell SVR4, RS/6000.  ckuus7.c.
  2336.  
  2337. Enabled lockf() code for all SVR4+HDBUUCP systems, blessed by AT&T and Dell.
  2338. Governing symbol is LOCKF.  You can also add -DLOCKF to your CFLAGS if you
  2339. want it on any other system.  ckutio.c.
  2340.  
  2341. Minor changes to ckcnet.c for OSF/1 and POSIX (in SO_OOBINLINE section) from
  2342. Michael Pins <amigapd@icaen.uiowa.edu>.
  2343.  
  2344. A couple #endif trailers were not comments, noticed by Michael Pins and
  2345. others.  ckcnet.c, ckutio.c.
  2346.  
  2347. Fixed a couple typos in ckuus3.c in the flow-control keyword table, flotab[],
  2348. and removed the special stuff for UTEK (Tom Kloos).
  2349.  
  2350. Some tiny tweaks to the protocol in ckcfn2.c to see if we can clear up some
  2351. "resend error" and "can't allocate receive buffer" messages.
  2352.  
  2353. Numerous tiny fixes to messages and statistics counters, etc.
  2354.  
  2355. Added new messages at start of remote-mode packet operations:
  2356.  
  2357.   KERMIT READY TO xxx...
  2358.  
  2359. where "xxx" is SERVE, SEND, or RECEIVE.  These are the new "standard" Kermit
  2360. messages, and have also been added to the new release of IBM mainframe Kermit,
  2361. 4.2.4.  They should also be added to all other Kermit programs that can
  2362. function in remote mode.  This way, script writers will always know what to
  2363. look for and will not have to depend on idiosyncratic messages.  The old
  2364. messages are still there, preceding the new ones.
  2365.  
  2366. Added support for Wollongong WIN/TCP for VAX/VMS from Ray Hunter
  2367. <ray@eco.twg.com> and Steve Smail at Wollongong.  Instructions for building
  2368. are in ckuins.doc.  Ray made a proper version of contti() for use with WIN/TCP
  2369. -- no polling loop.  This code also works with Multinet, and it makes CONNECT
  2370. mode *much* faster, and as an added benefit, does not drive the VAX crazy.
  2371. Unfortunately, file transfer on Multinet connections is still very, very, VERY
  2372. slow.  I don't know how fast it is on WIN/TCP connections.
  2373.  
  2374. Rewrote ttinl() for VMS again.  Added the "Doomsday Kermit" business to the
  2375. network portion of it.  But I could not allow a printable SOP for the serial
  2376. line case because VMS is doing input based on the termination character.  But
  2377. in any case, the network version will now read packets based on their length
  2378. field.
  2379.  
  2380. But file transfer over a VMS Multinet (and presumably WIN/TCP) connection was
  2381. just as slow as ever.  Hours of staring at ttinl() and the various routines in
  2382. ckcnet.c (netinc, ttbufr, and nettchk) finally produced the answer: netflui()
  2383. was the culprit -- it was trying to read too many bytes from the network, and
  2384. so sat there forever, or until the other Kermit timed out and retransmitted.
  2385. And then netflui would eat parts of the new packet.  Hence the 10-20 second
  2386. interval between each packet.  The totally simple and obvious solution was
  2387. to have netflui() clear the internal before *before* calling ttchk(), rather
  2388. than after!  Now file transfer goes at a respectable speed.  ckcnet.c.
  2389.  
  2390. The Wollongong changes broke CONNECT mode for serial lines.  Fixed by setting
  2391. the mask for sys$wflor() correctly before calling it.  contti() in ckvtio.c.
  2392. We still get the %SYSTEM-W-DATAOVERUN errors during file transfer (especially
  2393. when C-Kermit is receiving) and also during CONNECT when screenfulls of text
  2394. are being blasted at C-Kermit.  Also, C-Kermit/VMS fails to react properly
  2395. when a serial connection is hung up -- it prints an error message, but doesn't
  2396. return to the prompt.
  2397.  
  2398. Fixed bugs in VMS Kermit CONNECT-mode escapes: "break;" was missing in the
  2399. switch statement after the new options A and I.  A "break;" was also missing
  2400. in ckucon.c, so if you send a Telnet "Are you there?" you also sent a Long
  2401. BREAK.  Also fixed horribly messed-up CONNECT-mode escape help message.
  2402. CKVCON.C.
  2403.  
  2404. Changes to CKVTIO.C from Terry Kennedy to enable 8-bit communication in
  2405. CONNECT mode.  Apparently this was broken in edit 179 (CKVTIO.C 034).
  2406.  
  2407. Change to CKVFIO.C from William Bader via Terry Kennedy to allow for
  2408. fixed-length files that have record attributes.
  2409.  
  2410. Added SET TAKE ON/OFF as an invisible synonym for SET TAKE ECHO ON/OFF, for
  2411. compatibility with MS-DOS Kermit.  ckuus3.c.
  2412.  
  2413. Fixed multiline GET, again.  This time to make sure it expands variables in
  2414. the second and third line when reading from a TAKE file or macro definition.
  2415. Problem noticed by James Sturdevant.  Required decomposing and modularizing a
  2416. *lot* of code in ckuus5.c, and then changing doget() in ckuus6.c to use the
  2417. new routines: getncm() (get next command from macro) and getnct() (get next
  2418. command from takefile).  Now, not only can multiline GET be used in TAKE files
  2419. and macros, and not only can the 2nd and 3rd lines contain variables, but all
  2420. the other rules are observed too, e.g. line continuation, trailing comments,
  2421. leading and trailing whitespace, etc.
  2422.  
  2423. Fixes to several modules to allow successful building with -DNOSPL.
  2424.  
  2425. Compiled OK on SUN, Dell SVR4, RS/6000 AIX 3.1, NeXT...
  2426.  
  2427. Changed makefile to let user specify the make program to be used on the
  2428. make command line, e.g.
  2429.  
  2430.   make irix40 "MAKE=smake"
  2431.  
  2432. or:
  2433.  
  2434.   make sunos41 "MAKE=make -P"
  2435.  
  2436. Fixed a bug in window-size renegotiation, noticed by Christian Hemsing.
  2437. ckcpro.w, ckuus3.c.
  2438.  
  2439. Changed conchk() in ckutio.c (for UNIX) to return 0 if the backgrd flag
  2440. is set.  Doing the input-buffer-checking ioctl's while Kermit is not in the
  2441. foreground apparently causes serious problems on some systems, such as
  2442. Olivetti X/OS, where it suspends Kermit.  Fulvio Marino, Olivetti.
  2443. *** This change should also be added to the VMS version as part of fixing its
  2444. rendition of conint() ***
  2445.  
  2446. Permanently disabled BYE for the Data General AOS/VS server, since it can't
  2447. log out its own job.  ckcmai.c, ckuusr.c, ckuus6.c.
  2448.  
  2449. Some more minor Data General changes from Eugenia Harris.  ckcxla.h, ckuusx.c.
  2450.  
  2451. Added two include files for VAX/VMS WIN/TCP: domain.h and protosw.h, from
  2452. James Sturdevant.  Also from James, ckvker.com was updated to also build the
  2453. WIN/TCP version automatically, as it already did for MultiNet.  Also from
  2454. James, ckvker.mak updated for WIN/TCP.
  2455.  
  2456. Added ttsndlb() (send Long BREAK) to VMS version.  ckvtio.c, ckcdeb.h,
  2457. ckucon.c, ckvcon.c, ckuus5.c, ckaplm.doc.
  2458.  
  2459. Fixed handling of carriage returns at the keyboard on TELNET connections
  2460. for UNIX (ckucon.c) and VMS (ckvcon.c).  Now you can have a normal TELNET
  2461. session to a VMS CMU/TEK or UCX system (previously CRs would sometimes not
  2462. be noticed by the VMS host).  So the rule is: *always* send keyboard CR
  2463. as CRLF on TELNET connections, regardless of which side is echoing (previous
  2464. edits of C-Kermit sent CRLF only if it was echoing locally).
  2465.  
  2466. Totally rewrote the communications input routines for VMS C-Kermit: ttinc,
  2467. ttinl, ttxin, ttchk, and ttflui, to be fully buffered, using an underlying
  2468. buffer-filling routine, txbufr(), for serial devices similar to what is used
  2469. by the network code.  Later, Terry Kennedy went over this work and cleaned
  2470. it up, and made it work in a couple cases where it didn't: fixed parity
  2471. (again), fixed "getty babble" problem, friendlier error handling and messages,
  2472. automatic popping back to prompt on serial connection if remote hangs up,
  2473. and added code to properly hang up a LAT connection.  Still to be done:
  2474.  
  2475.  . Fix contti() to allow keyboard to interrupt sustained input from port
  2476.    when lots of port chars are buffered.
  2477.  
  2478.  . Integrate network buffers with ttxbuf[] and make ttinc() into a macro.
  2479.  
  2480.  . Get rid of ttinl.  Move ttinl() code to rpack().
  2481.  
  2482.  . Get rid of ttxin.  Don't need it any more.  Or else change it do do
  2483.    a memcpy or whatever.
  2484.  
  2485.  . Clean up ckvcon.c.
  2486.  
  2487.  . Add UCX support (Terry).
  2488.  
  2489. Fixed (via kludge) a problem in VMS C-Kermit: if you DISABLE CD, it wouldn't
  2490. let you GET any files at all even if they were in your current directory.
  2491. Added zchkdir() to ckvfio.c and called it from openi() in the VMS case only.
  2492.  
  2493. Added definitions for CK_LBRK (can send Long BREAK) to ckcdeb.h for all
  2494. versions except OS-9.
  2495.  
  2496. Corrected miscellaneous typos noticed by Tim Theisen <tim@cs.wisc.edu>.
  2497.  
  2498. Added "AOS/VS" to the list of strings returned by \v(system).  ckuus4.c.
  2499.  
  2500. Added \v(day) variable: day of week "Sun", "Mon", etc.  If underlying C
  2501. library version of asctime() (or whatever) returns non-English day names as
  2502. the first 3 characters of the string (see ztime() in ck?tio.c), then the
  2503. non-English day names are returned.  Also added \v(nday): day of week.
  2504. 0=Sunday, 1=Monday, etc, but this one depends on underlying English day names.
  2505. ckuus4.c, ckuusr.h.
  2506.  
  2507. Added \v(local) == 1 if C-Kermit is in local mode, 0 if in remote mode.
  2508. ckuus4.c, ckuusr.h.
  2509.  
  2510. Added \v(cmdsource), command source: "prompt", "macro", or "file".
  2511. Also \v(cmdfile) = name of current command file, if any, else null string.
  2512. Also \v(macro) = name of current macro, if any, else null string.
  2513. Also \v(exitstatus) = current exit status value.
  2514. ckuus4.c, ckuusr.h.
  2515.  
  2516. Changed SHOW VARIABLES to use "more?" prompting, since we have more than a
  2517. screenful of them now.  ckuus5.c.
  2518.  
  2519. Ensured that \fcharacter(n) works only for 0 <= n <= 255.  ckuus4.c.
  2520.  
  2521. Fixed a bug that prevented the failure flag from being set when a GET
  2522. command was interrupted.  ckcfns.c, ckcpro.w.
  2523.  
  2524. Added SET TELNET ECHO { REMOTE, LOCAL } to set initial TELNET echoing state,
  2525. which is LOCAL by default, according to the NVT specification.  This is to get
  2526. around problems caused by echo-mode switching upon initial connection.  And
  2527. SET TELNET TERMINAL-TYPE [ <string> ] to let the user specify a terminal type
  2528. to be sent to the remote telnet server during terminal-type negotiation, to
  2529. override the normal behavior of sending the value of the TERM environment
  2530. variable.  ckcnet.c, ckuusr.h, ckuusr.c, ckuus3.c.
  2531.  
  2532. Changed SET TERMINAL ECHO to accept LOCAL and REMOTE as synonyms for ON and
  2533. OFF, and made ON and OFF invisible keywords for compatibility with MS-DOS
  2534. Kermit.  Changed SHOW TERMINAL to report ECHO as "local" or "remote" rather
  2535. than "on" or "off".  ckuus7.c, ckuus5.c.
  2536.  
  2537. Made G a special abbreviation for GET, and made SET FILE DISPLAY QUIET
  2538. a synonym for SET FILE DISPLAY NONE (for compatibility with MS-DOS Kermit).
  2539. ckuusr.c, ckuus7.c.
  2540.  
  2541. Uncommented the ERROR command.  It seems to work OK now.  ckuusr.c.
  2542.  
  2543. Added LATIN2 transfer character set for Albanian, Czech, Hungarian, Polish,
  2544. Romanian, Serbian, Croation, Slovak, Slovene.  New transfer character-set:
  2545. LATIN2.  New file character-sets: CP852 and LATIN2.  Works nicely with a PC
  2546. that has DOS 5.0 with the new Eastern Europe code page.  It is still possible
  2547. in C-Kermit to translate any-to-any.  Latin-2 support is included unless you
  2548. put -DNOLATIN2 on the cc command line.  Adds about 3-4K.  ck[cu]xla.h,
  2549. ckuxla.c, ckuus4.c, ckucon.c, ckuins.doc.  In the process of doing this, I
  2550. took out all the nested #ifdef's.  Now we have constant numbers assigned to
  2551. each character set, no matter which groups (CYRILLIC, KANJI, etc) are selected
  2552. at compile time.  This makes it a lot easier to add new character sets, like
  2553. Hebrew and Arabic, which probably come next.
  2554.  
  2555. Added SHOW CHARACTER SETS.  ckuusr.h, ckuusr.c, ckuus4.c, ckuus5.c.
  2556.  
  2557. Allow SET TRANSFER LOCKING-SHIFT to be operational, even if built with
  2558. -DNOCSETS.  ckuusr.c.
  2559.  
  2560. Chopped off the end of this file because it was getting too big to edit.
  2561. Old material placed in cku179.upd.
  2562.  
  2563. Fixes for SCO UNIX 3.2.4 and ODT 2.0 for the stupid "I think I'm in the
  2564. background" problem from Warren Tucker.  The problem was that SCO changed
  2565. pids from ints to shorts, and the call to the ioctl() that takes the address
  2566. of a terminal process group was malformed.  makefile, ckucon.c, ckutio.c.
  2567.  
  2568. Split SHOW VERSION into two commands: SHOW VERSION and SHOW FEATURES.
  2569. ckuusr.h, ckuusr.c, ckuus5.c, ckuus6.c.
  2570.  
  2571. New ck9fio.c module from Christian Hemsing.  Commands using (simulated)
  2572. popen() now display their error messages as well as standard output.
  2573. DIRECTORY command now shows file size and attributes.
  2574.  
  2575. ------------------------------
  2576. 5A(180) Fri Jun  5 13:34:42 1992
  2577.  
  2578. SHOW KEY's "Press key:" prompt also needed an fflush()...
  2579.  
  2580. Added SET TERMINAL ECHO { ON, OFF } as a synonym for SET DUPLEX, SET
  2581. LOCAL-ECHO, ...  ckuus7.c, ckuusr.h.
  2582.  
  2583. Added nicer messages for CONNECT, SHOW TERMINAL, SET ESCAPE.  They now show
  2584. the ASCII name of the CONNECT-mode escape character.  ckuusx.c, ckuus3.c,
  2585. ckuus5.c, ckucon.c.
  2586.  
  2587. Added modem signal display to CONNECT-mode status message, ckucon.c.  Moved
  2588. shomdm() from ckuus4.c to ckuusx.c so it could be called from the command-line
  2589. only version.
  2590.  
  2591. Added SPEED and CARRIER settings to SHOW DIAL.  ckuus5.c. 
  2592.  
  2593. Cleaned up SET FLOW table to only allow keywords that are valid on the
  2594. given system.  Added symbols to ckcdeb.h for this.
  2595.  
  2596. Changed setlin() to substitute appropriate NeXT device name if RTS/CTS
  2597. flow control selected.  ckuus7.c 
  2598.  
  2599. Rearranged the STATISTICS display.  ckuus4.c.
  2600.  
  2601. Added a new state-input combination to ckcpro.w: <serve>N.  If the server
  2602. gets a NAK while in command-wait state, it probably means the client gave
  2603. a RECEIVE command instead of GET.  So now the server sends back an error
  2604. packet saying "Did you say RECEIVE instead of GET?".  Previously the message
  2605. said "Unimplemented server function".
  2606.  
  2607. Added a default question, " Yes or no? ", for GETOK.  ckuus6.c.
  2608.  
  2609. Added SET FLOW RTS/CTS for Commodore Amiga.  ckcdeb.h + new ckitio.c
  2610. from Steve Walton.
  2611.  
  2612. Changed argument declarations in cmkey(), cmkey2(), and cmsavp() to use
  2613. pointers rather than arrays, to make MetaWare High C R2.3x on NCR MiniTower
  2614. happy.  Checked with GNU C -Wall, seems OK.
  2615.  
  2616. Discovered that the INPUT and REINPUT commands fail (and always have failed)
  2617. to match strings in certain contexts, for example to find "abc" in "ababc".
  2618. That's because when it rewound its search string in the middle of a partial
  2619. match, it failed to check the source string again.  Fixed in doinput(),
  2620. doreinput().  ckuus4.c.
  2621.  
  2622. It was bugging me that long macro definitions could not be commented, so
  2623. I found a way to remove the restriction, at least for command files.
  2624. For example:
  2625.  
  2626. define ibm set parity mark,- ; Parity for IBM mainframe
  2627.   set duplex half,-          ; Use local echoing
  2628.   set flow none,-            ; No full-duplex flow control
  2629.   set handshake xon          ; XON line turnaround handshake
  2630.  
  2631. Now the rule is:  A trailing comment begins with a semicolon or number sign
  2632. preceded by at least one space or tab.  If a trailing comment is encountered,
  2633. it is removed, and trailing blanks are trimmed.  If the final character of the 
  2634. result is '-', the line is to be continued.  Thus, the continuation character
  2635. comes BEFORE the comment, not after it.  ckuus5.c.
  2636.  
  2637. Also, fixed gtword() to trim trailing blanks before deciding whether a word
  2638. ended in the continuation character.  Only affects continued lines typed at
  2639. the prompt.  ckucmd.c
  2640.  
  2641. Installed SunLink X.25 fixes from Gary Mills, U of Manitoba.  ckuus7.c,
  2642. ckucon.c, ckutio.c.
  2643.  
  2644. Narrowed down the cause of the Sys V Telnet bug in which the first character
  2645. you type after CONNECT is misinterpreted as the CONNECT-mode escape character.
  2646. When the WILL ECHO telnet message is received from the remote, the lower
  2647. CONNECT fork signals the upper one to change its echoing status, using SIGUSR2.
  2648. In System V, this interrupts the pending read() in the lower fork, making it
  2649. return -1 with errno set to EINTR, which means "a signal was caught during the
  2650. read system call".  coninc() thinks this means that the user typed the escape
  2651. character.  But that should only be happening during the local-mode file
  2652. transfer display.  Finally realized: a System V read() will fail with EINTR
  2653. if *any* signal is caught while the read() is pending.  This happens,
  2654. naturally, when the lower CONNECT fork signals the upper one about the echoing
  2655. mode change.  Wrote a new version of coninc() to check for this and retry the
  2656. read() when it happens.  Seems to work ok.  ckutio.c.
  2657.  
  2658. Added IF FOREGROUND (== IF NOT BACKGROUND).  ckuus6.c.
  2659.  
  2660. Added OS/2 changes from Kai Uwe Rommel: bug fixes, new SET TERMINAL CURSOR
  2661. { UNDERLINE, HALF, FULL } command.  ckocon.c, ckotio.c, ckufio.c, ckuus7.c,
  2662. ckuusr.h.
  2663.  
  2664. Added \Fright(text,length), is replaced by rightmost "length" characters of
  2665. "text".  ckuusr.h, ckuus4.c.
  2666.  
  2667. Changed ECHO and WRITE SCREEN commands to be like OUTPUT, ASK, etc -- To allow
  2668. enclosing braces, which are stripped, but which prevent normal stripping of
  2669. leading and trailing spaces.  ckuusr.c.
  2670.  
  2671. Changed server message not to say "close the connection".  ckcmai.c.
  2672.  
  2673. Fixed SET COUNT to fail and print an error message if given a non-numeric
  2674. argument.  ckuus3.c.
  2675.  
  2676. ....ckb....
  2677.  
  2678. Fixed caseless string comparisons.  xxstrcmp() had a stupid bug.  ckuus6.c.
  2679.  
  2680. Fixed bug in GOTO in macros.  It would go to the first label that matched the
  2681. target label, even if the target label was only a substring of the GOTO label.
  2682. For example, if there were labels XX and XXX, GOTO XX would go to label XXX if
  2683. it came before XX.  Ditto for GOTO in TAKE files.  ckuus6.c.
  2684.  
  2685. The following kind of command did not work:
  2686.  
  2687.     asg \%9 \fexec(lookup \%1)
  2688.  
  2689. because the variable name buffer and pointer were global, rather than
  2690. automatic variables, and the LOOKUP macro defined some other variables, thus
  2691. overwriting the name from the ASG command.  When \fexec() finally returned,
  2692. its value was assigned to some random variable.  Fixed by making vnambuf[] an
  2693. automatic variable in doincr() and dodef().  ckuus6.c.  Also made vnambuf[] 
  2694. automatic in cmdini(), just in case.  ckuus5.c.
  2695.  
  2696. Nested FOR loops did not work.  The problem was that FOR and WHILE loops are
  2697. macros that work by defining themselves and then executing themselves.  When
  2698. loops are nested, the inner loop saves the outer loop's definition, replaces
  2699. it, defines a new one, executes it, then restores the old one.  So far so
  2700. good, but now the restored version of the outer loop is very likely at a
  2701. different location in memory than the original, so the "macp" pointer is
  2702. referencing random garbage.
  2703.  
  2704. Solution: (1) Define a new built-in variable, \v(cmdlevel), and define FOR and
  2705. while loops using its name, e.g. _FOR0, _FOR1, etc.  (2) Create two new
  2706. commands for internal use only: _ASSIGN and _DEFINE.  They are just like
  2707. ASSIGN and DEFINE except that they evaluate the name of the macro to be
  2708. defined before defining it, for example:
  2709.  
  2710.   _ASSIGN _for\v(cmdlevel) blah blah blah
  2711.  
  2712. If the command level is 1, this makes a macro called "_for1".  Now nested
  2713. FOR loops work.
  2714.  
  2715. Same fix for WHILE and XIF commands.
  2716.  
  2717. Next problem (this has been with us all along): RETURN from within a FOR,
  2718. WHILE, or XIF had no effect.  That's because its return value was not passed
  2719. along through the enclosing macros.  Unfortunately, this one is not so easily
  2720. fixed.  These commands can pass along their return values easily enough
  2721. (RETURN \V(RETURN)), but that's not good enough.  If a RETURN command is given
  2722. in one of these macros, the final _PUTARGS command won't be executed and the
  2723. \%0..9 variables could be screwed up, and anyway, the return value is for the
  2724. _FORx macro, not for the macro that contains the FOR loop.  So for now, it
  2725. still seems the best course is to avoid RETURN commands inside FOR, WHILE, and
  2726. XIF command lists.
  2727.  
  2728. Added makefile entry for Linux from Bengt Andersson of ABC-Klubben in Sweden
  2729. <boa@abc.se>, via Bo Kullmar.  Apparently, needs more work.
  2730.  
  2731. Changed sco3r2lai makefile entry to include -Di386 because
  2732. /usr/include/sys/netinet/in.h requires this definition to declare htons()
  2733. correctly for endian order.  Xenix cc does not provide this (but SCO UNIX
  2734. cc does).  From rdb@rand.mel.cocam.oz.au (Rodney Brown).
  2735.  
  2736. Added support for Sperry/UNISYS 5000 UTS V 5.2 (Sys V R2) by forcing
  2737. redefinition of S_ISREG and S_ISDIR macros in ckufio.c, like for Olivetti
  2738. X/OS and Amdahl UTSV.  Also added a makefile entry, "unisys5r2".
  2739.  
  2740. Correction to Finnish / Latin-1 table from Vesa Gynther in Finland.  ckuxla.c.
  2741.  
  2742. Added PING command.  Just runs PING in a fork.  If ping is not in user's
  2743. path, or is protected, the command won't work.  Which is as it should be.
  2744. ckuusr.[ch], ckuus2.c.  Doesn't work too well on VAX using MultiNet PING,
  2745. which, by default, pings repeatedly.  Ctrl-C doesn't make it stop (even though
  2746. VMS gets the Ctrl-C and prints "Cancel" in reverse video), Ctrl-Y kills not
  2747. only PING, but Kermit itself.
  2748.  
  2749. Changed OUTPUT command to allow \B and \L for BREAK and Long BREAK, rather
  2750. than requiring two backslashes, for compatibility with MS-DOS Kermit.  Two
  2751. backslashes still work.  Also fixed dooutput() NOT to send BREAK if
  2752. it sees \\b after the command has been processed, which should mean to send
  2753. a backslash followed by a b.  ckuusr.c, ckuus5.c.
  2754.  
  2755. Added \fcode() function.  Returns the null string if its argument is null,
  2756. otherwise the numeric character code of (the first character of) its argument.
  2757. This is the opposite of fchar(), which returns the character corresponding to
  2758. its numeric argument, 0-255 (works only for single-byte chars).  ckuusr.h,
  2759. ckuus4.c.  Done at the request of a guy who needed to calculate checksums in
  2760. scripts for talking to some kind of fancy online beeper dialer that needs
  2761. checksums in its commands.
  2762.  
  2763. Added a new CONNECT-mode escape command: A.  It is available only on
  2764. network-configured versions, and works only on TELNET connections.  It sends
  2765. a TELNET "Are You There?" command.  When the remote TELNET server gets one
  2766. of these, it is supposed to send back "[Yes]".  Suggested by John Klensin.
  2767. ckucon.c.
  2768.  
  2769. Added <esc-char>I to send TELNET Interrupt Process on TELNET connections.
  2770. It was already there for X.25 connections.  ckucon.c.
  2771.  
  2772. Updated CONNECT-mode help message for the A and I.  ckucon.c.
  2773.  
  2774. changed HELP CONNECT to show the current escape character.  ckuus2.c.
  2775.  
  2776. Rewrote the CONNECT command, again.  Previously, it did not do buffered,
  2777. multicharacter port reads and screen writes on TELNET connections, or if
  2778. session debugging was on, or if SO/SI was being done, which made for very poor
  2779. performance especially on TELNET connections, which are supposed to be fast.
  2780. Created ckcgetc() and ckcputc() functions, and moved all the buffering to
  2781. inside them.  This eliminates tons of confusing, redundant code.  But why use
  2782. functions?  Because of TELNET...  When we see a TELNET IAC arrive, we call
  2783. tn_doop(), and tn_doop() reads the subsequent characters, whose number is not
  2784. known in advance.  Previously, tn_doop() read them directly from the
  2785. communication channel, which is why single-character reads were required for
  2786. TELNET connections.  Now, we pass a pointer to the character-input function as
  2787. an argument to tn_doop().  So when tn_doop() is called from CONNECT mode, this
  2788. is ckcgetc().  From elsewhere (e.g. from the SCRIPT and INPUT commands), it is
  2789. ttinc().  ckucon.c (CONNECT), ckuscr.c (SCRIPT), ckuus4.c (INPUT), ckcnet.c
  2790. (tn_doop()), ckcnet.h and ckcker.h (function prototypes), ckutio.c (remove the
  2791. call to nettchk(), which never did anything for UNIX, and let ttchk() check
  2792. the input buffer).  Compiled and tested on SUN, NeXT, Dell Sys V R4, and
  2793. DEC MIPS/RISC box with Ultrix 4.2.  Speedup is approximately 750% on the NeXT
  2794. (in a 'terminal' window).
  2795.     
  2796. Adapted VAX/VMS CONNECT module to new scheme.  There is a very noticeable
  2797. improvement in CONNECT performance, especially on MultiNet.  It's still a bit
  2798. jerky, but the jerks are fewer and farther between.  We're still using
  2799. contti(), with its polling loop that drives the poor VAX crazy and eats up
  2800. tons of CPU, but we're using it less.  We really need something like select()
  2801. to do this right.  File transfer is still agonizingly slow on MultiNet
  2802. connections, but nothing has changed there.  It's not too bad on serial
  2803. connections, though, but that hasn't changed either.  ckvcon.c
  2804.  
  2805. Changed all routines in ckcnet.c to send TELNET negotiations as strings with a
  2806. single write() call, rather than in one write() per byte.  Not only does this
  2807. speed things up a bit, but also seems to clear up some TELNET protocol
  2808. problems that occurred when the negotiations did not arrive in a single TCP
  2809. packet.  Suggested by Eugenia Harris at DG.  ckcnet.c.  Later reports indicate
  2810. this cleared up a problem with talking to a VCP-200 reverse terminal server.
  2811.  
  2812. Changed TELNET subnegotiation reader in tn_doop() to break out of reading a
  2813. subnegotiation if an IAC comes followed by anything but SE or another IAC.
  2814. This prevents C-Kermit from hanging if the terminating IAC SE never comes, for
  2815. example because the telnet server is broken or there is a network glitch.  As
  2816. part of this, IAC IAC within subnegotiation data is now recognized as a quoted
  2817. IAC, as specified in RFC 855.  The unexpected TELNET command is lost, but at
  2818. least now we don't hang forever waiting for the IAC SE.  ckcnet.c.
  2819.  
  2820. DG/UX uses mailx and lp rather than mail and lpr.  Eugenia Harris.  ckufio.c.
  2821.  
  2822. Fixed ttinl() prototype for OS-9.  Christian Hemsing.  ckcdeb.h.
  2823.  
  2824. Prevented ASKMORE double definition. Christian Hemsing.  ckuusx.c.
  2825.  
  2826. Added code to opent() to change transfer mode to text.  This was preventing
  2827. REMOTE commands from working right when client had SET FILE TYPE BINARY
  2828. and it had nonstandard line terminators, as OS-9 does.  Problem noted by
  2829. Christian Hemsing and this fix tested OK by him also.  ckcfn3.c.
  2830.  
  2831. Changed getpkt() and all calls to it to make sure that C-Kermit never
  2832. constructs a packet whose *total length* is greater than the receive
  2833. packet-length given by the receiver.  Previously, the receive packet-length
  2834. was taken to mean the biggest "length field".  Now we take it to mean the
  2835. total packet length, to avoid overrunning the receiver's input buffer.  This
  2836. is especially important for use with Kermit-370 in "Doomsday" mode.  ckcfns.c.
  2837.  
  2838. Changed fnparse() to put a null element at the end of file filespec list.
  2839. This should fix the problem of spurious files being sent in response to GET
  2840. commands.  ckuusx.c.
  2841.  
  2842. Added a new Kermit designator for the Japanese EUC transfer character set:
  2843. I14/87/13.  C-Kermit accepts this as an alternate form when receiving a file,
  2844. but continues to send the old form, I14/87E.  Later, the I14/87E designator
  2845. will be demoted to an alternate form, and eventually retired.  The rationale
  2846. for this is to have meaningful character-set designators.  The new form means
  2847. Japanese Roman (ISO 14) is designated to G0, JIS X 0208 (ISO 87) to G1, and
  2848. Katakana (ISO 13) to G2 (and therefore invoked by SS2).  ckuxla.c.
  2849.  
  2850. (Later that day...)  By agreement among all parties (Hiro, John, Joe, me),
  2851. exchanged the two Japanese EUC designators, simultaneously with MS-DOS Kermit
  2852. 3.12 and Kermit-370 4.2.3, so now all three will send I14/87/13, but will
  2853. accept both forms.  ckuxla.c.
  2854.  
  2855. Added a new block-check type: SET BLOCK BLANK-FREE-2.  Also used by MS-DOS
  2856. Kermit 3.12 and Kermit-370 4.2.3.  Just like type 2 block-check, but with 1
  2857. added to each byte so the block check will not contain any blanks.  Part of
  2858. the "Doomsday Kermit" protocol, used (e.g.) when a 3270 protocol converter
  2859. strips trailing blanks from packets.  ckuus3.c, ckcfns.c, ckcfn2.c, ckcfn3.c,
  2860. ckuus4.c.  Tested with MS-DOS Kermit 3.12.  Needs more testing.
  2861.  
  2862. Moved the logic for ignoring echoed packets from input() to rpack().  This
  2863. allows echoed packets to be ignored even if they are corrupted and their
  2864. checksum is wrong, so we don't wind up sending NAKs for crunched echoes, which
  2865. can result in a hideous slowdown.  Another feature of Doomsday Kermit.
  2866. ckcfn2.c.
  2867.  
  2868. More Doomsday Kermit work...  (1) Treat incoming ACKs and NAKs as echoed
  2869. packets if we are the file receiver (this handles the case where the 3270
  2870. protocol converter echoes packets in a different order than Kermit sent them
  2871. -- it happens!).  (2) Don't resend() the first ACK if we don't still have a
  2872. copy of it -- it will be missing the Send-Init data, and the resent version
  2873. might easily have the wrong kind of block check.  (3) Accept E packets with
  2874. Type 1 block checks always.  ckcfn2.c.
  2875.  
  2876. Numerous changes to resend() to make it work better, etc etc.  ckcfn[s2].c.
  2877. See comments in resend().
  2878.  
  2879. Tested all of this against Kermit-370 4.2.3 on VM/CMS through two types
  2880. of nontransparent 3270 protocol converters and it works great.  Slow, but
  2881. solid.  The slowness is because, among other things, each packet sent to
  2882. the mainframe gets echoed not once, but twice.
  2883.  
  2884. Changed ttinl() to call parchk() only once per protocol operation, not on
  2885. every packet.  Previously, parchk() was called on every packet if Kermit's
  2886. parity was set to was NONE and the packets contained no parity bits.  This
  2887. improvement was accomplished by setting a global (to ckutio.c) flag in 
  2888. ttpkt(), which is called at the beginning of each protocol operation.
  2889. ckutio.c.
  2890.  
  2891. Changed UNIX version of zrtol() to strip leading and trailing blanks and
  2892. controls from incoming filename to compensate for a bug in Norsk Data SINTRAN
  2893. Kermit.  ckufio.c
  2894.  
  2895. Added support for IEXTEN (^O/^V) processing in a general way, based on
  2896. the existence of the symbol IEXTEN, but for the specific benefit of BSDI/386.
  2897. Changes to tthang() for BSDI (and POSIX in general).  New makefile entry
  2898. for BSDI.  John T. Kohl, <jtkohl@kolvir.elcr.ca.us>.
  2899.  
  2900. Changes to tthang() for the IBM RT PC and RS/6000.  Previously, after hanging
  2901. up a modem line, it was impossible to use it again, e.g. to dial another
  2902. number.  Thanks to Jamie Watson for extensive research into this problem, and
  2903. its solution.  ckutio.c.
  2904.  
  2905. Added support for advisory locks (lockf()) for SET LINE device for Dell
  2906. System V R4 only, in ttlock() and ttunlck(), from Donn Baumgartner, Dell.
  2907. ckutio.c.
  2908.  
  2909. Added support for nap() via syscall(3112,...) on SVR4 Intel-based systems
  2910. if -DNAPHACK is included in CFLAGS.  David Wexelblat <dwex@mtgzz.att.com>.
  2911.  
  2912. Many prototype fixups from Tim Theisen <tim@cs.wisc.edu> -- mostly arrays
  2913. that were referred to as pointers in the prototypes.  Many header files and
  2914. modules.  Compiled OK with gcc -Wall.
  2915.  
  2916. Dynix PTX uses memcpy, doesn't have memmove.  ckcnet.c.
  2917.  
  2918. Added makefile entry for HP-UX 5.21 with WIN/TCP from John Dunlap.
  2919.  
  2920. Added support for Mark Williams Coherent 386, from Manfred Prange.
  2921.  
  2922. Minor Olivetti X/OS changes from Fulvio Marino.
  2923.  
  2924. Received new OS-9 ck9*.c modules from Christian Hemsing.
  2925.  
  2926. Discovered that ttflui() (flush communications input buffer) was a no-op for
  2927. TCP/IP network connections, at least on UNIX.  It called netflui(), which did
  2928. nothing.  Tried using regular ttflui() on a net connection, but the ioctl's
  2929. didn't work (at least not on my SUN).  So I filled in netflui() to call ttchk
  2930. to see if any chars were waiting to be read, and then to read that many.
  2931. Also added code to do this to ttflui() itself in the case where no system call
  2932. is available to flush the buffer.  ckutio.c, ckcnet.c.
  2933.  
  2934. Fixed code for reading multiline GET commands from TAKE files.  Previously
  2935. it failed to trim leading and trailing spaces and control characters.
  2936. ckuus6.c.
  2937.  
  2938. Added SET LANGUAGE FRENCH.  When translating from DEC MCS to ASCII or Latin-1,
  2939. this enables translation of OE digraph to O and E (both upper and lower case).
  2940. ckuxla.c.
  2941.  
  2942. Minor changes to ckcdeb.h, cdcfn3.c, ckcmai.c, ckcnet.c, ckuusr.c, and
  2943. ckuusx.c to support Data General AOS/VS, from Eugenia Harris at DG.
  2944. System-dependent modules for AOS/VS still to come.
  2945.  
  2946. Updated the Macintosh / Latin-1 translations in ckuxla.c and ckmxla.c
  2947. to put Icelandic Thorn and Eth in the same positions as used in the Macintosh
  2948. Icelandic character set.
  2949.  
  2950. New makefile entry for DEC OSF/1 on (MIPS) DECstation, plus one minor required
  2951. change to ckutio.c, from Bill Whitney <whitney@wcw.enet.dec.com> at DEC.  Also
  2952. added special herald to ckuver.h, SHOW VERSION info to ckuus5.c.
  2953.  
  2954. Added a curses-style file transfer display for local-mode transfers, adapted
  2955. from a minimal bare-bones version sent in by Christopher Pratt, APV Baker, UK.
  2956. Rewrote it to produce a complete MS-DOS-Kermit-like file transfer display on a
  2957. 24x80 screen.  Mostly in ckuusx.c, new routine screenc().  Also changed SET
  2958. FILE DISPLAY command to include a "curses" option, and SHOW FILE to show the
  2959. display mode, and words about it to HELP SET FILE.  This is elected only if
  2960. CK_CURSES is defined, which, in turn, is possible only if UNIX is defined.
  2961. Compiled and tested OK on SUN-4, Dell SVR4, NeXT, RS/6000, Ultrix 4.2, Encore,
  2962. and even VAX/VMS (but on VMS it works only once).  The curses and termcap
  2963. libraries add a lot of K to the core image: 491K vs 467K on SUN-4.  The
  2964. display is cute, even quite useful.  But on a fast connection (like TCP/IP),
  2965. it can slow the transfer down by as much as 100%.  On a serial connection, it
  2966. doesn't hurt at all.
  2967.  
  2968. Added (nonworking) support for DGUX 4.30 to makefile, ckutio.c, from Chris
  2969. Sylvain <cgs@umd5.umd.edu>.  Also added herald to ckuver.h, etc.
  2970.  
  2971. ------------------------------
  2972. 5A(179) Mon Feb 17 12:46:36 1992
  2973.  
  2974. Edit 179 is the first BETA release.  After it was released to the private
  2975. C-Kermit Developers and Testers group on Feb 8, a few bugs were fixed and a
  2976. few system-dependent changes made.  These are listed in this section.  The
  2977. main version number and release date were not changed because of the massive
  2978. number of documentation and other files that refer to edit 179, but individual
  2979. module version numbers were updated for sanity.
  2980.  
  2981. Some minor changes were added within #ifdef GEMDOS (Atari ST) and #ifdef OS2
  2982. (OS/2).  The edit number and date have not been changed.
  2983.  
  2984. Also found one place in rcvfil() in ckcfns.c where we were storing into a
  2985. literal pointed to by cmarg2, which caused the Convex (POSIX) version to core
  2986. dump, and probably many other versions too (but naturally, none of the ones I
  2987. tested...)  Fixing this uncovered a place in the RECEIVE command parsing code
  2988. in ckuusr.c where we were actually strcpy'ing into cmarg2, which was usually
  2989. pointing to "".  Fixed that one too.  Bumped the edit number of ckcfns.c from
  2990. 71 to 72 and ckuusr.c from 81 to 82, so we can tell the difference.
  2991.  
  2992. This change in edit 177 was removed:
  2993.  
  2994.   Relaxed the restriction on sliding windows that required the user to SET
  2995.   WINDOW n on both Kermits.  Now the receiver can determine the window size,
  2996.   just like with packet length.  ckcmai.c, ckcfns.c.
  2997.  
  2998. It turns out that this prevents C-Kermit from working with other Kermit
  2999. software that implements sliding windows incorrectly.  For example, a certain
  3000. commercial package always asks for 14 window slots, but then chokes if you
  3001. actually try to use them.  Furthermore, it doesn't give its users any way to
  3002. change the window size.  Therefore C-Kermit must allow its own SET WINDOW
  3003. command to take precedence over the other Kermit's bid.  The #ifdef COMMENT
  3004. and corresponding #endif directives were commented out in ckcfns.c and its
  3005. edit number was increased to 73.
  3006.  
  3007. Increased ttoc()'s timeout interval from 2 to 15 seconds.  For some reason
  3008. that I can't figure out, when a timeout actually occurs, AND Kermit is running
  3009. under cron under SUNOS, Kermit dumps core (this doesn't happen when it's
  3010. running interactively in the foreground, so it's not a bad system call).
  3011. Also, made sure the beeps try to come out only when Kermit is in the foreground
  3012. (since conoc() was mentioned in the adb $r register dump).
  3013.  
  3014. It seems the addition of the -C command-line switch broke the "application
  3015. file" feature, when the application file included a definition for a macro
  3016. and then executed the macro.  In fact, the -C feature didn't work quite right
  3017. either, e.g.:
  3018.  
  3019.   kermit -C "echo hi there, define xx echo hello from xx, do xx, echo bye"
  3020.  
  3021. The symptom was that when the macro was finished executing, Kermit would
  3022. wait for input from the keyboard instead of continuing with the application
  3023. file, command-line, or whatever.  Fixed by making a couple tiny changes to
  3024. ckuus5.c.
  3025.  
  3026. Some Olivetti OXOS changes from Fulvio Marino at Olivetti in Italy, all
  3027. within #ifdef OXOS..#endif.  ckufio.c, ckutio.c.
  3028.  
  3029. Rearranged #ifdef's in conres() in ckutio.c for sony_news.  Its return
  3030. statement, which restored the console Kanji mode, was not being reached.
  3031.  
  3032. Also, several minor changes to the makefile.  Added "make pyramid" (Graham
  3033. Jenkins, Australia), "make sco3r2lai" for SCO Xenix 2.3.3 with Lachman
  3034. Associates Inc TCP/IP (Bob Hain, bob@ht2.me.umn.edu), "make ptx13" for Sequent
  3035. DYNIX/PTX 1.3 (Mark Vasoll, OK State U), corrected "make install" to use
  3036. man page directory for the man page (Scott Kramer, SRI).
  3037.  
  3038. New 179-level executable for Amiga from Steve Walton.
  3039.  
  3040. Fix for whoami() in ckutio.c, in which Kermit could core dump if the user
  3041. who was running it did not have an entry in the passwd file (i.e. getwpnam
  3042. returned a null pointer).
  3043.  
  3044. Removed duplicate declaration of SUB from ckcasc.h.
  3045.  
  3046. Another new executable + cksfio.c for Atari ST.
  3047.  
  3048. Compiled and tested on SUN, NeXT, Aviion, PC with Sys V/386 R4, VAX/VMS, HP-UX
  3049. 7.05, Encore 510 UMAX 4.3, Convex C210 OS 9.1 / POSIX, Macintosh, ...
  3050. Made new hex files for VMS, Mac.
  3051.  
  3052. Interactive Systems Corp fixes from Howard Weiss, Sparta Inc, Columbia, Md.
  3053.  
  3054. Released to the general public for testing 18 Feb 1992.
  3055.  
  3056. ------------------------------
  3057. 5A(179) Sat Feb  8 20:01:45 1992
  3058.  
  3059. Brainstorm: now that Kermit can read packets without terminators, it should
  3060. also be able to read packets with printable start-of-packet characters.
  3061. Tried it, it works!  Kermit file transfer with NO CONTROL CHARACTERS AT ALL.
  3062. This bodes well for the 3708...  ckuus7.c (all I had to change was the SET
  3063. { SEND, RECEIVE } START-OF-PACKET command to accept characters in the
  3064. printable ASCII range.)
  3065.  
  3066. Changed sr10-bsd make entry from -DBSD4 to -DBSD43.  Added a missing (char *)
  3067. cast in ckcpro.w.  Moved unhex() prototype in ckucmd.c to top of file, so it
  3068. takes effect even if -DNOICP.  Michael Pins <amigapd@icaen.uiowa.edu>.
  3069.  
  3070. Changed ckcdeb.h to define UNIX if COHERENT or MINIX are defined, if
  3071. UNIX is not defined already.
  3072.  
  3073. Removed many unneeded and/or redundant extern declarations from ckuus4.c.
  3074. This lets the COHERENT compiler get a lot farther.  But not far enough...
  3075.  
  3076. Added some missing HELP commands.  ckuus2.c.
  3077.  
  3078. Fixed handling of input lines from command files that are too long for the
  3079. command buffer:
  3080.  1. Interactive: error message, back to prompt.
  3081.  2. TAKE file: error message, back to prompt.
  3082.  3. Redirected standard input: error message + "error in background..."
  3083.  4. Init file: error message, straight to prompt (or exit).
  3084. ckucmd.c, ckuus5.c.
  3085.  
  3086. Jay Rouman reported that edit 178 TELNET didn't work right with the MTS
  3087. (Michigan Terminal System) telnet server.  Changed Kermit to start out like
  3088. a real, vanilla half-duplex NVT.  Also discovered that MTS sends IAC GA, a
  3089. two-byte command, but tn_doop() always reads three bytes.  Hence the
  3090. screwed-up echo.  Fixed tn_doop() to read a third byte only if the command is
  3091. DO, DONT, WILL, WONT, or SB.  Result works fine on all systems previously
  3092. tested, as well as on MTS.  ckcnet.c (and msntnd.c -- same code, slightly
  3093. adapted, runs in MS-DOS Kermit).
  3094.  
  3095. Fixed askmore() to fflush() the "more?" prompt.  This appears to have been
  3096. the only casualty so far of -DNOSETBUF (see edit 177).  ckuusx.c.
  3097.  
  3098. Made it possible to pass an open file descriptor for a network connection
  3099. on the Kermit command line, just like for an open terminal device:
  3100.  
  3101.   -l name   = terminal device name, e.g. /dev/ttyh8 or ttx3:
  3102.   -l number = file descriptor for an open terminal device
  3103.   -j name   = IP network host name or (dotted numeric) address [:service]
  3104.   -j number = file descriptor for an open TELNET connection
  3105.   -X number = an X.25 address
  3106.   -Z number = file descriptor for an open X.25 connection
  3107.  
  3108. The -X and -Z are necessary to force the difference between an X.25 address,
  3109. which might be totally numeric, and an open file descriptor.  Also, in doing
  3110. this, discovered that "-l <number>" resulted in the line getting set to a
  3111. random speed.  Fixed this.  ckuusy.c, ckuus2,c and ttopen() in ckutio.c.
  3112.  
  3113. Discovered that a second remote disconnect during CONNECT on a pure Sys-V
  3114. system crashed the program because SIGUSR1 was armed but wasn't being caught
  3115. any more.  (How come this never showed up before?)  Changed conn_int() to
  3116. disarm the signal after it is caught.  It is re-armed when CONNECT mode is
  3117. entered again.  ckucon.c.
  3118.  
  3119. Joe Doupnik reported that when locking shifts are in effect, filenames can
  3120. become garbled.  Fixed in ckcfns.c.
  3121.  
  3122. Found a case where Kermit was not freeing a discarded packet-receive buffer,
  3123. namely when it detects it has read the echo of the packet it just sent (one --
  3124. maybe the only? -- source of the onerous "Receive window full" message).  Also
  3125. found that sent packets can be echoed more than once, e.g.  by a 3270 protocol
  3126. converter: once in place, then once again in the echo area.  Both fixed in
  3127. ckcfn2.c.  Now C-Kermit can transfer files with (a newly modified test
  3128. version) of IBM mainframe Kermit through a 3270 protocol converter that is
  3129. *not* in transparent mode!
  3130.  
  3131. Noticed that when C-Kermit is in packet mode, AND parity is not NONE, AND it's
  3132. a BSD-based implementation (not System V, etc): (a) ^C^C out of packet mode
  3133. does not work, and (b) ^Z suspends Kermit, but leaves the terminal modes
  3134. messed up.  Diagnosis: When parity is not NONE on BSD versions, ttpkt() puts
  3135. the terminal in CBREAK/NOECHO mode rather than RAW mode.  But it was
  3136. forgetting to disable the handling of the interrupt and quit characters.
  3137. Cure: Added this code to ttpkt() in ckutio.c (just copied it from the
  3138. now-defunct LPASS8 section).
  3139.  
  3140. Added -S command-line argument.  Means "Stay" in Kermit after executing
  3141. command-line action arguments, i.e. enter the interactive command parser
  3142. (if any), similar to MS-DOS Kermit's STAY command.  ckcmai.c, ckuusy.c.
  3143.  
  3144. Added -C command-line argument.  Takes a quoted string which is one or more
  3145. interactive commands.  The commands are defined as a macro called cl_commands
  3146. and are executed when Kermit starts up, after the init file, after the other
  3147. command-line arguments, before any "application file", and before entering
  3148. interactive mode.  The cl_commands macro remains defined for subsequent use if
  3149. desired.  Only #ifndef NOICP and NOSPL.  -C does not count as an "action
  3150. command", even if it contains interactive versions of action commands
  3151. (CONNECT, SEND, etc), so if no other action commands were given on the command
  3152. line, the interactive command parser is entered after these commands are
  3153. executed.  To defeat this behavior, include EXIT in the list of commands.
  3154. ckuusy.c, ckcmai.c.
  3155.  
  3156. Fixed bug in GET command noticed by Max Evarts.  In the multiline version of
  3157. GET, if a local filespec was given, it was erroneously converted to "bland
  3158. form" (e.g. lowercased) instead of being used literally.  Actually, that was
  3159. only one symptom.  In many cases, the "as-name" did not work at all during 
  3160. file reception.  ckcfns.c.
  3161.  
  3162. Added support for Motorola CPU type symbols m68k and m88k for \v(cpu) from
  3163. Ron Heiby, Motorola.  ckuver.h, ckuus5.c.
  3164.  
  3165. temp buffer was being written into before it was allocated in ckucon.c.
  3166. Now fixed.  Noticed by Bruce J Moore. 
  3167.  
  3168. genbrk() call in ckutio.c was lacking an argument (used by V7 only).
  3169. Also noticed by Bruce J Moore. 
  3170.  
  3171. Got new ckiker.boo for Amiga (for edit 178) from Steve Walton.
  3172.  
  3173. Got C-Kermit 5A(178) for the Atari ST from Bruce J Moore <moorebj@icd.ab.com>.
  3174. New cksfio.c, ckstio.c, ckscon.c, plus minor changes to the ckc*.* and cku*.*
  3175. files, all within #ifdef GEMDOS..#endif.
  3176.  
  3177. Added makefile entries for Motorola Delta 68K and 88K systems from Ron Heiby
  3178. at Motorola.
  3179.  
  3180. Added makefile entry for Silicon Graphics Iris Indigo IRIX 4.0 from Nelson
  3181. Beebe at U of Utah.
  3182.  
  3183. Finally, against my better judgement, added a -DNOSHOW build option to remove
  3184. the SHOW command and all supporting code in a last-ditch attempt to get
  3185. ckuus4.c to compile for Coherent.  If that works, then maybe MINIX will work
  3186. too.  Added "coherentmi" (minimum interactive) entry to makefile that
  3187. deselects just everything possible, including SHOW.  ckuus[r245].c, makefile.
  3188.  
  3189. ------------------------------
  3190. NOTE: The history of all version 5A edits prior to the Beta edit, 179, have
  3191. been moved to the (big) file CKU178.UPD.
  3192.  
  3193. ------------------------------
  3194. END OF CKCKER.UPD
  3195.