home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c-kermit / ckc192.txt < prev    next >
Text File  |  2020-01-01  |  532KB  |  10,111 lines

  1. File CKC192.UPD, Update history for C-Kermit.                      -*- text -*-
  2.  
  3. For most recent entries, search for "*******"
  4.  
  5. As of version:      6.0.192
  6. Most recent update: Sat Apr 11 12:48:21 1998
  7.  
  8. Author:  Frank da Cruz
  9. Address: The Kermit Project, Columbia University
  10.          612 West 115th Street, New York, NY 10025-7799, USA
  11. Phone:   +1 212 854-5126
  12. Fax:     +1 212 662-6442  -- or --  +1 212 663-8202
  13. E-Mail:  fdc@columbia.edu
  14.  
  15.   Copyright (C) 1985, 1995, Trustees of Columbia University in the City of New
  16.   York.  The C-Kermit software may not be, in whole or in part, licensed or
  17.   sold for profit as a software product itself, nor may it be included in or
  18.   distributed with commercial products or otherwise distributed by commercial
  19.   concerns to their clients or customers without written permission of the
  20.   Office of Kermit Development and Distribution, Columbia University.  This
  21.   copyright notice must not be removed, altered, or obscured.
  22.  
  23. This file is for programmers.  It contains the detailed edit history for
  24. C-Kermit 5A-6.0 edits 190-192; that is, all the changes since 5A(189) was
  25. released on 30 June 1993.
  26.  
  27. The edit history prior to the version 5A(188) release in November 1992 can be
  28. found in the following files:
  29.  
  30.   CKCV4E.UPD -- Version 4E and earlier (through January 1989)
  31.   CKCV4F.UPD -- Version 4F (which was never formally released)
  32.   CKC178.UPD -- Version 5A prior to the first Beta release, edit 179 (huge).
  33.   CKC188.UPD -- Version 5A from edit 179 until final release, edit 188.
  34.  
  35. And the following files contain the edit history since 5A(188):
  36.  
  37.   CKC189.UPD -- Version 5A edit 189, November 1992 - June 1993.
  38.   CKC192.UPD -- Edits 190-192, July 1993 - present (this file).
  39.  
  40. ------------------------------
  41. C-KERMIT DOCUMENTATION
  42.  
  43.   Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Digital Press /
  44.   Butterworth-Heinemann, Woburn, MA, 1993, 514 pages, ISBN: 1-55558-164.1.
  45.  
  46.   US single-copy price: $39.95; quantity discounts available.  Available in
  47.   computer bookstores or directly from Columbia University:
  48.  
  49.     The Kermit Project
  50.     Columbia University
  51.     612 West 115th Street
  52.     New York, NY  10025-7799  USA
  53.     Telephone: +1 (212) 854 3703
  54.  
  55.   Domestic and overseas orders accepted.  Price: $39.95 (US, Canada, and
  56.   Mexico), $50 elsewhere.  Orders may be paid by MasterCard or Visa, or
  57.   prepaid by check in US dollars.  Add $35 bank fee for checks not drawn on
  58.   a US bank.  Price includes shipping.  Do not include sales tax.
  59.   Inquire about quantity discounts.
  60.  
  61.   You can also order by phone from the publisher, Digital Press /
  62.   Butterworth-Heinemann, with MasterCard, Visa, or American Express:
  63.  
  64.     +1 800 366-2665   (Woburn, Massachusetts office for USA & Canada)
  65.     +44 1865 314627   (Oxford, England distribution centre for UK & Europe)
  66.     +61 03 9245 7111  (Melbourne, Vic, office for Australia & NZ)
  67.     +65 356-1968      (Singapore office for Asia) 
  68.     +27 (31) 2683111  (Durban office for South Africa)
  69.  
  70.   A German-language edition is also available:
  71.  
  72.     Frank da Cruz and Christine M. Gianone, "C-Kermit - Einfuehrung und
  73.     Referenz", Verlag Heinz Heise, Hannover, Germany (1994).
  74.     ISBN 3-88229-023-4.  Deutsch von Gisbert W. Selke.  Price: DM 90,00.  
  75.     Verlag Heinz Heise GmbH & Co. KG, Helstorfer Strasse 7, D-30625 Hannover.
  76.     Tel. +49 (05 11) 53 52-0, Fax. +49 (05 11) 53 53-1 29.
  77.  
  78. ------------------------------
  79. C-KERMIT 5A(190) EDIT HISTORY, 5 AUG 93 - 4 OCT 94.
  80.  
  81. In ckutio.c, corrected a typo that might have prevented setting a serial
  82. port's speed to 57600 bps.  Also, consistently added support for 57600 and
  83. 115200 bps if symbols for those speeds are defined.  (But this is still an
  84. issue for the command processor, which does not have access to
  85. system-dependent symbols like this).  ckutio.c 5A(111), 5 Aug 93.
  86.  
  87. From Bill Glass - fixed a statistics counter (file bytes) that was still
  88. counting some non-file material (contents of server command packets) in
  89. the decode() function.  ckcfns.c 5A(090), 6 Aug 93.
  90.  
  91. Added types to all functions in VMS-specific modules, CKVFIO.C and CKVTIO.C
  92. (CKVCON was already OK) to pacify the new, stricter Alpha AXP (DEC C)
  93. compilers.  CKVFIO.C 5A(056), CKUTIO.C 5A(101), 8 Aug 93.
  94.  
  95. Added patches to enable SET FLOW RTS/CTS in Linux, originally from Rick
  96. Sladkey, jrs@world.std.com.  Depends on symbol "linux".  ckcdeb.h, ckutio.c.
  97.  
  98. Terry Kennedy pointed out that VMS C-Kermit follows FILE TYPE when
  99. TRANSMITting, even if it is IMAGE or LABELED.  Changed the TRANSMIT command
  100. to treat any of the system-specific binary modes (IMAGE, LABELED, MACBINARY,
  101. etc) as ordinary binary mode, i.e. saved and restored the "binary" variable
  102. in the TRANSMIT command.  ckuus4.c, 10 Aug 93.
  103.  
  104. Shinichi Sakata <ssakata@weber.ucsd.edu> discovered that if an "application
  105. file" (a file whose name is given as the first command-line argument) contains
  106. a CD command, that C-Kermit would, after finishing the application file,
  107. act as if it had been given an invalid command-line argument.  Fixed by adding
  108. yet another flag, cfilef - set in ckcmai.c, tested in ckuusy.c.  10 Aug 93.
  109.  
  110. From Rob Weiner <rweiner@watsun.cc.columbia.edu>, a new makefile entry,
  111. sys5r4sxtcpc, for CONSENSYS System V R4.2-1 with TCP/IP and curses.  makefile.
  112. 12 Aug 93.
  113.  
  114. From Rich Sladkey <jrs@world.std.com>: (1) fix prototype of ttrpid() in
  115. ckutio.c; (2) fix fixes to Linux hardware flow control.  It's still ugly
  116. internally, but cleaning up the hardware flow control code would be a major
  117. undertaking due to the geometrically expanding combinations of flow control
  118. settings and different APIs for setting them.  ckutio.c 5A(112) 22 Aug 93.
  119.  
  120. Added conditional compilation support for system-wide init file.  If the
  121. compile-time symbol CK_SYSINI is defined (to be a character string in
  122. doublequotes), it is taken as the file specification of the initialization
  123. file, to be used instead of the built-in default.  This can be absolute or
  124. relative, so it can point to a single system-wide file, or to something like
  125. ~/.kermrc (UNIX) or SYS$LOGIN:CKERMIT.INI (VMS) to indicate the user's own.
  126. If it is system wide, it can (and probably should) still "chain" to the user's
  127. own initialization file, by ending (or starting, depending on the desired
  128. precedence) with a command like:
  129.  
  130.   if exist \v(home)ckermit.ini take \v(home)ckermit.ini
  131.  
  132. ckuus5.c, 10 Sep 93.
  133.  
  134. Fixes for VMS C-Kermit, all in CKVTIO.C:
  135.  * 058 27-Sep-93 HG   Fix for real the SHARE issue when allocating terminal
  136.  *              by dropping SHARE before trying to assign the channel.
  137.  * 059  7-Oct-93 mlo  Added support for CMU-OpenVMS/IP ("CMU/Tek").  Requires
  138.  *                    CMU-OpenVMS/IP sockets library, also by mlo.
  139.  * 060  9-Oct-93 HG   Fix improper call to vms_assign_channel in edit 058,
  140.  *                    noticed by Fritz@GEMS.VCU.EDU.
  141.  * 061  9-Oct-93 fdc  For some reason, conbin() was turning off flow control.
  142.  *                    This caused massive data loss during CONNECT mode when
  143.  *                    running C-Kermit from a low-speed connection through
  144.  *                    a DECserver.  Now conbin() leaves the console flow
  145.  *                    control setting alone.
  146.  * 062 10-Oct-93 ttj  Correcting parameters to time() and ctime(). Was long,
  147.  *                    is now time_t (pointers).  Made prototype for
  148.  *                    vms_assign_channel and caught an erroneous function call.
  149.  
  150. Plus CMU/Tek TCP/IP support for VMS C-Kermit from Mike O'Malley at DEC
  151. <mlomall@sav324.sandia.gov>; minor source changes to CKCNET.C, CKCNET.H,
  152. CKUUS4.C, and (noted above) CKVTIO.C.
  153.  
  154. Plus compiler-related and/or typo fixes to CKVFIO.C from Tarjei Jensen:
  155.  * 102 18-Aug-93 ttj Minor updates in zsattr() and do_label_recv() mainly to
  156.  *                   quieten the compiler (which had every reason to complain).
  157. (Installed 10 Oct 93).
  158.  
  159. Added keypad period (".") to the list of numeric keypad keys that return
  160. different scan codes from their main keypad equivalents -- final step in
  161. making the PC numeric keypad able to work like the DEC one.  From Kai Uwe
  162. Rommel.  ckotio.c 5A(105) 11 Oct 93.
  163.  
  164. Corrections to X.25 functions from <David_Lane_@vos.stratus.com>: A PAD
  165. command (either a SET, READ, or SETANDREAD) without any parameters specified
  166. in the command means "all supported parameters."  For the SET commands, it is
  167. a "reset to initial values."  As passed to qbitpkt(), n is the number of data
  168. bytes in the packet, which starts at s.  The control byte has already been
  169. stripped off.  When passed to either setpad() or readpad(), n is the number of
  170. parameters in the command/query.  ckcnet.c 5A(020) 13 Oct 93.
  171.  
  172. A change from Alex Dupuy <dupuy@smarts.com>: if C-Kermit is compiled with
  173. -DNOCMDL (no command-line arguments) and -DNOICP (no interactive command
  174. parser), then instead of building a program that just exits, build one that
  175. goes into server mode with all default settings.  Alex suggests that we can
  176. also rip out all local-mode supporting code in this case (since there is no
  177. way to SET LINE any more) to make a truly minimal remote-only version.
  178. Settings can still be accomplished via REMOTE SET commands.  C-Kermit built
  179. on a PC with 'make dellsys5r4m "KFLAGS=-DNOCMDL -DNOICP"' weighs in at 90K.
  180. ckcmai.c 5A(190) 14 Oct 93.
  181.  
  182. Changed the protocol module to issue "KERMIT READY TO blah..." messages
  183. consistently, and to make them appear (in remote mode) no matter whether
  184. the file transfer command was given interactively or from a command file
  185. or macro.  ckcpro.w 5A(056) 14 Oct 93.
  186.  
  187. Changes for BSDI from John T. Kohl <jtk@kolvir.blrc.ma.us>.  ckcdeb.h,
  188. ckutio.c.  Aside from adjusting BSDI-isms, John (partially) fixed a big
  189. problem with tthflow() that had previously been hacked around in the Linux
  190. case, by passing the appropriate terminal info structure to tthflow() as an
  191. argument.  I removed the special case for Linux.  Unfortunately, the hardware
  192. flow control status is not kept in the terminal info on some systems,
  193. e.g. SVR4, SunOS.  And since John started things off in this direction, I made
  194. further attempts to clean up the hardware flow control situation in the UNIX
  195. version, adding a new parameter to tthflow() to specify whether hardware f/c
  196. is to be turned on (1) or off (0), and then replacing various chunks of
  197. misplaced system-specific code by calls to tthflow().  Compiles OK on SunOS
  198. 4.1.3, 4.4BSD, SVR4, needs testing.  ckutio.c 5A(113) 20 Oct 93.
  199.  
  200. John also added a new command, which he called PUSHREM and which I decided to
  201. call REDIRECT, which is like RUN, but with stdin and stdout redirected to the
  202. communication device (serial or network connection).  For UNIX only, needs
  203. forks, dup(), wait(), and needs <sys/wait.h> to define WIFEXITED() and
  204. WEXITSTATUS().  This command is compiled in only if the symbol CK_REDIR is
  205. defined at compile time, and then only when NOPUSH is not defined.  Fixed up,
  206. adapted to, and tested on SunOS 4.1.3, SVR4, Linux.  Could not get it working
  207. on the NeXT or AIX, which have no definition for WEXITSTATUS().  If you try to
  208. build the program with CK_REDIR defined and the required macros are not
  209. available, C-Kermit will print a message "?Sorry, can't execute this command -
  210. missing pieces" if you try to use the REDIRECT command.  Also, I added a new
  211. token, "<" (leftbracket), as a synonym for REDIRECT (like "!" is a synonym for
  212. RUN), and, when CK_REDIR is defined, made "red" and "redi" valid non-unique
  213. abbreviations for REDIAL.  ckuusr.h, ckuusr.c 5A(104), ckutio.c, ckuus[25].c.
  214. 25 Oct 93.
  215.  
  216. Added "designer banners" for Linux and BSDI BSD/386.  ckuver.h.  20 Oct 93.
  217.  
  218. After testing of new RTS/CTS code by Rick Sladkey, made some more changes,
  219. unified Linux and BSDI RTS/CTS code, reorganized, consolidated, cleaned up,
  220. documented.  ckutio.c 5A(114) 21 Oct 93.
  221.  
  222. Fixes from Chuck Goodhart <ceg@hyper-bret.jpl.nasa.gov>:
  223.  . The SCRIPT command can sometimes cause TELNET negotiations to be ignored.
  224.  . The SCRIPT command is slowed by unbuffered output to the console
  225.    and the session log.
  226.  . The SCRIPT command does not filter out carriage returns when
  227.    SET SESSION-LOG TEXT is set.
  228.  . While SET SESSION-LOG TEXT, TELNET negotiations should not be logged.
  229.  . The INPUT command is also slowed by unbuffered output to the console and
  230.    the session log.
  231.  . ttinc(timo) should ignore the timeout when, if MYREAD buffered
  232.    input is being used, a character is known to be available.  This
  233.    saves two calls to signal() and two calls to alarm(), dramatically
  234.    improving the performance of the INPUT command.
  235. ckuscr.c 5A(017), ckutio.c 5A(115), ckuus4.c 5A(105), ckcnet.c 5A(021),
  236. 21 Oct 93.  And again, ckuscr.c 5A(018) 25 Oct 93.
  237.  
  238. Fixed a bug that caused TELNET negotiations to be ignored if C-Kermit was
  239. used to make a TELNET connection, then a serial connection, and then a
  240. another TELNET connection, in that order.  ckuus7.c, 25 Oct 93.
  241.  
  242. Merged in support for a whole new and different proprietary operating system,
  243. Stratus VOS, from David Lane at Bellsouth <David_Lane_@vos.stratus.com>.  This
  244. is a full new C-Kermit implementation, including TCP/IP and X.25.  Changes to
  245. all modules are within #ifdef STRATUS..#endif.  For X.25, the symbol is
  246. STRATUSX25.  Elements common to SunLink and Stratus X.25 are now combined
  247. under the new ANYX25 symbol.  All ckc* and cku* modules affected (except
  248. cku[ft]io.c).  All modules must now #include "ckcsym.h" first thing to pick up
  249. other symbol definitions -- the VOS C compiler doesn't allow -D/-d for this.
  250. David also VOS-ified the ckbmkb and ckbunb programs, wart, and the malloc
  251. debugger.  25 Oct 93.  Supporting system-dependent modules -- ckl*.[ch] --
  252. still to come, along with VOS-specific documentation, build procedure, etc.
  253.  
  254. Last month, Olaf Seibert <rhialto@mbfys.kun.nl> pointed out that C-Kermit,
  255. particularly on the Mac, would seem to operate in stop-and-wait mode,
  256. even though a nonzero window size was successfully negotiated.  The behavior
  257. would sometimes change during the transfer a particular file -- windowing
  258. one minute, stop-and-wait the next.  Olaf figured out that, in the "PARSENSE"
  259. case (in which C-Kermit's packet reader is length-driven rather than waiting
  260. for the packet terminator), the packet terminator is left over in the buffer.
  261. Meanwhile, back in sdata() -- the Data-Packet sender in ckcfns.c -- the
  262. following code:
  263.  
  264.     spack('D',pktnum,len,data);    /* Send the data packet. */
  265.     x = ttchk();            /* Peek at input buffer. */
  266.     debug(F101,"sdata ttchk","",x);    /* ACKs waiting, maybe?  */
  267.     if (x) return(1);        /* Yes, stop sending data packets */
  268.  
  269. checks whether *any* data has arrived, in which case it breaks out of sending
  270. the current windowful and goes to read a packet.  And that's just what happens
  271. when the packet terminator is still waiting to be read.  The fix turned out to
  272. be simple:
  273.  
  274.     if (x) return(1);
  275. becomes:
  276.     if (x > 4) return(1);
  277.  
  278. The minimum number of characters in a Kermit packet is 5, so we don't break
  279. out of the send loop unless there are at least that many characters waiting.
  280. This tiny change should speed things up quite a bit in situations where
  281. windowing is needed.  ckcfns.c 5A(092) 25 Oct 93.
  282.  
  283. Fixed an incorrect test (nettype == NP_TELNET) in ckvtio.c.  5A(030) 27 Oct 93.
  284. Noticed by David Lane.
  285.  
  286. Fixed incorrect setting of network type via command-line arguments.
  287. Noticed by David Lane.  ckuusy.c.
  288.  
  289. Changed the UNIX CONNECT command to buffer keystrokes, rather than reading
  290. them one at a time.  This turns out to be important when C-Kermit is "in the
  291. middle", in CONNECT mode, between two other computers that are transferring
  292. data.  Fulvio Marino of Olivetti in Italy recoded C-Kermit's communications
  293. and console i/o for this very reason, but his changes are massive and would
  294. require months or years of testing, debugging, adaptation to every UNIX
  295. variant in the world, etc, which might well be worth it, since his generalized
  296. i/o buffering scheme makes most kinds of i/o in Kermit MUCH faster and easier
  297. on the system in terms of cycles, system calls, etc...  In other words, the
  298. present change is just a quick fix to get a modest improvement in this
  299. particular case.  Benchmarks using a 58K file on a network connection:
  300.  
  301.                        No Buffering   With Buffering
  302.   SEND through C-Kermit in CONNECT mode:      102 sec         47 sec
  303.   TRANSMIT thru C-Kermit in CONNECT mode:     237 sec         94 sec
  304.  
  305. So, about a 100%+ speedup.
  306.  
  307. The buffer size is only 256 bytes, since that's the biggest amount that UNIX
  308. itself seems to buffer from the console (i.e. tests on SunOS showed that
  309. conchk() never returned a value greater than 256).  No ill or side effects
  310. were noted -- CONNECT works in the normal way during interactive use.
  311. ckucon.c 5A(055) 27 Oct 93.
  312.  
  313. This code could not be adapted to VMS C-Kermit because of the insane way that
  314. it reads characters from the keyboard.  It was not adapted to OS/2 because
  315. OS/2 C-Kermit is never "in the middle".
  316.  
  317. Changed the SET NETWORK keyword table to allow any combination of networks
  318. without getting compile-time syntax errors caused by too many or too few
  319. commas.  Problem noticed by David Lane when he built VOS C-Kermit with X.25
  320. and no TCP/IP.  ckuusr.c 5A(107), 28 Oct 93.
  321.  
  322. Added vanity herald for NetBSD based on preprocessor symbol __NetBSD__.
  323. ckuver.h, 28 Oct 93.
  324.  
  325. Disabled -j command-line option if TCPSOCKET not defined.
  326. Disabled -X and -Y command-line options if ANYX25 not defined.
  327. Suggested by David Lane.  ckuusy.c, 29 Oct 93.
  328.  
  329. Added a new variable, \v(parity), to allow script programs to get the current
  330. parity, in case they need to save, change, and restore it, e.g. around a
  331. dialog with a modem that doesn't work right if it sees a parity bit.
  332. ckuusr.h, ckuus4.c, 29 Oct 93.
  333.  
  334. Added a new variable, \v(dialstatus), a return code from the last DIAL
  335. command, either success or else any of twenty-some specific error codes (busy,
  336. no answer, no dialtone, etc).  This allows users to write script programs that
  337. can decide whether to redial based on the failure reason.  For now, the value
  338. of \v(dialstatus) is a number.  ckcker.h, ckudia.c, ckuus4.c.  The failure
  339. reason codes are:
  340.  
  341. #define DIA_UNK  -1            /* No DIAL command given yet */
  342. #define DIA_OK    0            /* DIAL succeeded */
  343. #define DIA_NOMO  1            /* Modem type not specified */
  344. #define DIA_NOLI  2            /* Communication line not spec'd */
  345. #define DIA_OPEN  3            /* Line can't be opened */
  346. #define DIA_NOSP  4            /* Speed not specified */
  347. #define DIA_HANG  5            /* Hangup failure */
  348. #define DIA_IE    6            /* Internal error (malloc, etc) */
  349. #define DIA_IO    7            /* I/O error */
  350. #define DIA_TIMO  8            /* Dial timeout expired */
  351. #define DIA_INTR  9            /* Dialing interrupted by user */
  352. #define DIA_NRDY  10            /* Modem not ready */
  353. #define DIA_ERR   20            /* Modem command error */
  354. #define DIA_NOIN  21            /* Failure to initialize modem */
  355. #define DIA_BUSY  22            /* Phone busy */
  356. #define DIA_NOCA  23            /* No carrier */
  357. #define DIA_NODT  24            /* No dialtone */
  358. #define DIA_RING  25            /* Ring, incoming call */
  359. #define DIA_NOAN  26            /* No answer */
  360. #define DIA_DISC  27            /* Disconnected */
  361. #define DIA_VOIC  28            /* Answered by voice */
  362. #define DIA_NOAC  29            /* Access denied, forbidden call */
  363. #define DIA_UERR  98            /* Unknown error */
  364. #define DIA_UNSP  99        /* Unspecified failure detected by modem */
  365.  
  366. From Jamie Watson <jw@adasoft.ch>:
  367.  
  368. - On AIX 3.x, the xon/xoff and rts/cts values in the tty line discipline
  369.   stack are saved on startup and restored on exit.  This fixes a very
  370.   irritating problem in which C-Kermit could leave a tty in a state that
  371.   was unusable by uucp or cu.
  372.  
  373. - The REDIRECT command is enabled and working on AIX 3.x and on DEC Ultrix.
  374.   The AIX version has been tested on AIX 3.1.5 and AIX 3.2.x (heaven only
  375.   knows what the "x" might be; I defy anyone to assign a specific value
  376.   to any currently running AIX 3.2 system).
  377.   The Ultrix version has been tested on a DECsystem 5000/25, Ultrix 4.3,
  378.   and on a MicroVAX 2000, Ultrix 4.2.
  379.  
  380. ckutio.c 5A(116) 1 Nov 93.
  381.  
  382. Jamie also noticed that the new keyboard-input buffering invariably caused
  383. CONNECT/TELNET to fail under AIX, as it would have under most any System V
  384. implementation.  The culprit turns out to be that the read() in kbget() was
  385. getting interrupted by the lower CONNECT fork as a result of TELNET echo
  386. negotiations, thus read() would fail with EINTR.  Solution: ignore EINTR
  387. errors when read()ing from keyboard during CONNECT.  ckucon.c 5A(056) 1 Nov 93.
  388.  
  389. Fixed prototype-mismatch complaints in new buffering code in SCRIPT and INPUT
  390. commands.  ckuscr.c 5A(019), ckuus4.c, 1 Nov 93.
  391.  
  392. Added a compile-time symbol for ckufio.c: ISREGBUG.  If this symbol is
  393. defined, it tells ckufio.c to define S_ISREG and S_ISDIR itself, rather than
  394. using definitions from header files, when the latter don't work.  There is
  395. already code in ckufio.c to do this for certain systems, but the new symbol
  396. allows it to be done from the CC command line (or with KFLAGS on the "make"
  397. command line) without modifying the source code.  This is necessary for at
  398. least one of the NCR UNIX versions.
  399.  
  400. Added numeric C-Kermit program version number to OS/2 C-Kermit ENQ/Answerback
  401. string so now it says "OS/2 C-Kermit 501190".  ckocon.c 5A(104), 2 Nov 93.
  402.  
  403. From CKUKER.BWR:
  404. "If a file arrives that has the same name as a directory, and C-Kermit's FILE
  405. COLLISION setting is BACKUP, C-Kermit will either: (a) rename the directory,
  406. or (b) not be able to rename the directory and so will refuse the incoming
  407. file with the message "Can't transform filename".  Similarly, if C-Kermit's
  408. FILE COLLISION setting is OVERWRITE, C-Kermit will, hopefully (!), not be able
  409. to delete the directory, and so will refuse the incoming file."
  410.  
  411. And from CKOKER.BWR:
  412. "You can't give a command like "RECEIVE A:".  C-Kermit will fail to open
  413. the output file.  You must also include a filename, e.g. "RECEIVE A:X.X"."
  414.  
  415. These are now fixed.  C-Kermit -- at least the UNIX and OS/2 versions -- now
  416. has the ability to recognize disk and directory names when they are given as
  417. output filespecs.  When this happens, primarily when "as-names" are given in
  418. RECEIVE or GET commands, or in a '-a' command-line argument, C-Kermit now
  419. changes its directory (or disk) to the one given for the duration of that
  420. command, and then restores the previous current disk/directory when the
  421. command is done.  So now in UNIX, you can say "receive foo", where foo is a
  422. directory name (relative or absolute, need not end in slash), and C-Kermit
  423. will CD to that directory and store all the incoming files there under their
  424. own names until protocol mode exits, at which time C-Kermit goes back to the
  425. directory that was current when the RECEIVE command was given.  If "foo" is
  426. not a directory, then C-Kermit stores the (first) incoming file in the current
  427. directory, under the name of "foo", as before.  This feature depends on the
  428. symbol CK_TMPDIR, which is automatically defined in ckcker.h for UNIX and
  429. OS/2, and a new supporting CK?FIO.C function, isdir(), which has been filled
  430. in for UNIX and OS/2.  Also, files that arrive under names which correspond to
  431. directory names are no longer able to cause renaming or other modification to
  432. directory files, and useful error messages are now returned in this case.
  433. Also, 'kermit -r' is bit more careful about checking whether the output file
  434. can be created before going into protocol mode.  ckcker.h, ckcfns.c 5A(093),
  435. ckuus[r56y].c 5A(108), ckufio.c 5A(075), 2 Nov 93.
  436.  
  437. (Ideally, the receiving system should be able to send back a fully qualified
  438. file specification in the ACK to F packet, but most systems where C-Kermit
  439. runs are not able to do this.  The temporary directory name might be absolute
  440. or relative, might have or lack a terminating separator, etc, so we'd need a
  441. ton of system-dependent code to do this right.)
  442.  
  443. Added the ability to repaint the fullscreen file transfer display screen, for
  444. example if the screen gets messed up by talk or broadcast messages during file
  445. transfer.  User types Ctrl-L (or L) to repaint.  Internally, two methods are
  446. used.  If the symbol CK_WREFRESH is defined, which can be added to ckcdeb.h
  447. for a particular version (as I have done for SunOS, NeXTSTEP, and AIX), or
  448. added to a makefile entry, or given as "KFLAGS=-DCK_WREFRESH", or otherwise
  449. defined at compile time, then the real-curses-library functions clearok() and
  450. wrefresh() are called, which totally repaint the screen -- just what we want.
  451. Otherwise, Kermit uses a do-it-yourself method which clears the screen and
  452. repaints most of the fields, but not all of them, because certain information
  453. might be lost by the time repainting occurs, such as the filename and the
  454. direction of transfer.  The latter method works for all implementations of
  455. fullscreen file transfer display, but making this method work for all fields
  456. would be a major recoding task, and would add a lot of complexity and storage
  457. space, basically duplicating the functionality of curses itself (keeping each
  458. field, or an entire screen image, for repainting purposes).  ckcdeb.h,
  459. ckuusx.c, ckuus5.c, 3 Nov 93.
  460.  
  461. Added CK_WREFRESH for AT&T System V R3 and later, since it's in the SVID.
  462. Also for BSD 4.4 and derivatives.  However, this type of change is always
  463. risky, so I also added a new symbol, NOWREFRESH, to allow this decision to be
  464. overridden from the CC or 'make' command line.  In other words, if your linker
  465. complains that _clearok or _wrefresh are undefined, then "touch ckuusx.c"
  466. and rebuild with -DNOWREFRESH.  ckcdeb.h, 3 Nov 93.
  467.  
  468. Added VMS support for CK_WREFRESH, contributed by William Bader
  469. <wbader@pluto.CSEE.Lehigh.Edu>.  ckcdeb.h, ckuusx.c, 4 Nov 93.
  470.  
  471. Added a makefile entry for DECstation 5000 models based on R4000 "MIPS-3"
  472. chip, Ultrix 4.3A, from Jamie Watson <jw@adasoft.ch>.  4 Nov 93.
  473.  
  474. A few more minor Stratus VOS changes, having to do with X.25, from David Lane.
  475. ckcmai.c, ckuus7.c.  4 Nov 93.
  476.  
  477. Added KANJI, RTS/CTS, Curses, CK_WREFRESH to DEC OSF/1 version, built, tested
  478. OK on OSF/1-AlphaAXP 1.3.111.  RTS/CTS compiled OK, but I don't know if it
  479. actually works.  REDIRECT compiles but doesn't work ("missing pieces").
  480. 4 Nov 93.
  481.  
  482. Added CK_TMPDIR feature to VMS version.  isdir() function for VMS received
  483. from William Bader <wbader@pluto.csee.lehigh.edu>.  Moved CK_TMPDIR definition
  484. from ckcker.h to ckcdeb.h, because we might want to use it in the ck?fio.c
  485. modules.  ckuusr.c, ckcker.h, ckcker.h, ckcfns.c, ckuus[r6].c;
  486. ckvfio.c 5A(102), 5 Nov 93. 
  487.  
  488. Rearranged #ifdefs for CK_SYSINI (compile-time option for system-wide init
  489. file) and moved them from ckuusr.c to ckuusr.h.  Now you can (at least in
  490. UNIX) give CK_DSYSINI as a command-line option to accept a built-in default
  491. fully qualified file specification for a system-wide C-Kermit init file,
  492. /usr/local/bin/kermit.sysini.  5 Nov 93.
  493.  
  494. Added Stratus-VOS-specific modules from David R. Lane, SoftCom Systems Inc:
  495. cklcon.c, cklfio.c, ckltio.c, cklnet.c (includes TCP/IP and X.25), ckldef.c,
  496. plus build procedure cklmak.cm.  5 Nov 93.
  497.  
  498. Added automatic enabling of REDIRECT command for various UNIX systems where
  499. we know it works in ckcdeb.h.  Can be overridden by defining NOREDIRECT at
  500. compile time.  6 Nov 93.
  501.  
  502. Fixed stupid mistake in system-wide init-file #ifdefs, noticed by Jamie
  503. Watson.  ckuusr.h, 6 Nov 93.  Also, fixed SHOW commands to display system-wide
  504. init file name if it has been configured and used, and to allow more space for
  505. displaying it.  Also, changed init file name buffer to be dynamically
  506. allocated if DCMDBUF defined, and increased its size from 100 to 256 since it
  507. can now be a full path name.
  508.  
  509. Added a new command-line argument: -D n (uppercase D followed by a number),
  510. equivalent of SET DELAY command.  Jamie Watson noticed there was no way to
  511. get Kermit to use a shorter (or different) delay when sending files via
  512. command-line arguments.  ckuusy.c.  6 Nov 93.
  513.  
  514. Added correct identification of Alpha (AXP) CPU for \v(cpu), designer banners
  515. for DEC OSF/1 on Alpha.  Also added O2 optimization, ANSI C prototyping, plus
  516. REDIRECT command is now working on Alpha-OSF/1.  \v(cpu) also works on OpenVMS
  517. AXP.  Combined dec-osf and dec-osf-pc UNIX makefile entries.  6 Nov 93.
  518.  
  519. After EXITing from the wrong Kermit one time too many, unintentionally
  520. dropping a connection, I added a new command SET EXIT WARNING { ON, OFF }.
  521. If ON, and Kermit is in local mode, and it thinks it has an open serial or
  522. network connection, it will warn you and give you a chance to back out of
  523. the EXIT command.  EXIT WARNING OFF is the default, for compatibility.
  524. ckuusr.h ckuusr.c ckuus3.c, 6 Nov 93.  NOTE: the ability of C-Kermit to know
  525. whether a connection is open or not depends on a lot of system-dependent
  526. things.  In UNIX and OS/2, Kermit's guess is pretty reliable, based on the
  527. "tty" file descriptor (ttyfd), modem signals, etc.  In other versions, we
  528. can't tell so well, so we always warn and ask if EXIT WARNING is ON.
  529.  
  530. In the course of adding SET EXIT WARNING, fixed a bug in the command package,
  531. in which, if a temporary prompt was in effect and prompt() was called with a
  532. NULL conversion function, then ?-help would put back the regular prompt
  533. instead of the temporary one.  ckucmd.c 5A(055) 6 Nov 93.
  534.  
  535. Added SHOW EXIT to display EXIT WARNING setting, exit status.  ckuus5.c.
  536.  
  537. Added ttruncmd() code for OS/2 from Kai Uwe Rommel, and enabled
  538. REDIRECT command for OS/2.  ckotio.c 5A(106), 6 Nov 93.
  539.  
  540. Added IF DIRECTORY command.  Succeeds if operand is a directory, fails
  541. otherwise.  Uses new isdir() function, currently filled in for UNIX, VMS,
  542. OS/2.  Is included if CK_TMPDIR symbol is defined.  ckuusr.h, ckuus6.c,
  543. 6 Nov 93.
  544.  
  545. Added IF NEWER command.  Compares modification (or creation) date/times
  546. of two files, succeeds if first file is newer than second file.  Depends
  547. on zfcdat() function, which is defined for most versions, but not for VMS
  548. or OS-9.  Added a section to ckcdeb.h that defines the symbol ZFCDAT for
  549. each implementation that provides this function.  ckcdeb.h, ckuusr.h,
  550. ckuus6.c, 6 Nov 93.
  551.  
  552. Added new function \Fdate(filename).  Available if ZFCDAT is defined.
  553. Returns creation date of file in "yyyymmdd hh:mm:ss" format, or else the
  554. null string upon failure.  Also changed SHOW FUNCTIONS to do "more?"-style
  555. paging, like SHOW VARIABLES.  ckuusr.h, ckuus4.c, ckuus5.c.  6 Nov 93.
  556.  
  557. Changed SET BUFFERS command to default the second (receive) buffer to be
  558. the same size as the first (send) buffer, so user doesn't have to type two
  559. numbers.  ckuus3.c, 6 Nov 93.
  560.  
  561. Added CK_WREFRESH support for DEC ULTRIX (all versions) and IBM RT PC AIX.
  562. Verified by Jamie Watson.  ckcdeb.h, 7 Nov 93.
  563.  
  564. Increased -Olimit for ULTRIX 4.2, since new \v(dialstatus) code pushed the
  565. optimizer over the edge.  From Jamie Watson.  makefile, 7 Nov 93.
  566.  
  567. Changed SET EXIT WARNING to not warn on a serial connection if SET CARRIER
  568. is OFF.  ckuusr.c, 7 Nov 93.
  569.  
  570. Added SET EXIT STATUS to let user set program return code without actually
  571. having to exit.  For example, user can OR in various bits at different times.
  572. ckuus3.c, 7 Nov 93.
  573.  
  574. Updated UNIX man page.  ckuker.nr, 8 Nov 93.
  575.  
  576. Added zfcdat() to VMS version, for \fdate(filename), IF NEWER, etc.
  577. Contributed by William Bader.  CKVFIO.C 5A(104), 9 Nov 93.
  578.  
  579. Changed VMS C-Kermit version to always be in foreground mode, i.e. to never
  580. set the backgrd flag.  There is no notion of background (in the UNIX sense) in
  581. VMS.  If C-Kermit is not running on a real terminal, then either it has its
  582. SYS$INPUT and/or SYS$OUTPUT redirected, or it's running in batch.  In either
  583. case, it can always do console output.  Also, I installed a patch from
  584. <tcwkw@sf.msc.edu> to sysinit() to prevent it from trying to get info about
  585. the console terminal when the console is not a terminal.  CKVTIO.C 2.0(063),
  586. 9 Nov 93.
  587.  
  588. Got new LIBCMU ...
  589.  
  590. Discovered that the new INPUT buffering broke code the INPUT command under
  591. certain circumstances, notably when using a VMS C-Kermit script to make a
  592. TCP/IP connection; after the first 1-second timeout, netinc(1) would start to
  593. get i/o errors (socket_errno == EBUSY, "Mount device busy") and then would
  594. return -1 immediately without actually timing out any more.  The INPUT
  595. buffering code made the erroneous assumption that if ttchk() returned a
  596. positive number n, that n successive calls to ttinc() would succeed, and this
  597. is apparently not always the case in VMS.  For now, the quick fix is to remove
  598. the INPUT buffering code (I left it in place, but conditionalized on CK_BURST,
  599. which is #undef'd).  When I have some spare time, I'll change INPUT to do its
  600. own buffering, just like CONNECT, rather than relying on some unseen and
  601. possibly unreliable underlying buffering mechanism.  ckuus4.c, 9 Nov 93.
  602.  
  603. Edited OS/2 section of standard (sample) CKERMOD.INI file to not swap Esc and
  604. accent grave keys, and to include hint messages about key mapping and colors.
  605.  
  606. Changed -Otcl in SCO Xenix 3.2 to -O.  It seems that -Otcl was producing bad
  607. code, at least in the SCRIPT command (noticed by Michael Haws
  608. <michael@suntex.com>; expect strings would always fail).  makefile, 12 Nov 93.
  609.  
  610. Added \v(keyboard) for OS/2 C-Kermit.  Returns keyboard type: 88, 101, 122,
  611. are the known types.  If OS/2 senses some other type, its 4-byte hex code is
  612. returned.  If OS/2 fails to get the keyboard type, the empty string is
  613. returned.  Code adapted from Kai Uwe Rommel's example.  ckcdeb.h, ckuusr.h,
  614. ckuus4.c, ckotio.c, cpcplm.doc.  15 Nov 93.
  615.  
  616. Added WILL SGA response to DO SGA.  This never came up before.  Problem
  617. reported by Wayne Hauber <wjhauber@isstate.edu>, with Apartus Technologies
  618. Telnet Gateway Service to Iowa State U Library's NOTIS system.  ckcnet.c
  619. 5A(022), 17 Nov 93.
  620.  
  621. Changed debug log entries for TELNET negotiations to be one-liners, all
  622. starting with TELNET, looking mostly like the UNIX telnet "toggle options"
  623. display.  Now you can get all TELNET negotiations via "grep ^TELNET debug.log".
  624. ckcnet.c.  17 Nov 93.
  625.  
  626. Peter Kabal <kabal@aldebaran.ee.mcgill.ca> noticed that SET SPEED can fail in
  627. Ultrix 4.2 on the DECstation 2100 for speeds over 9600, but the system call
  628. does not return any error indication.  Therefore, all three places in C-Kermit
  629. that call ttsspd() to set the device's speed were changed to read it back
  630. with ttgspd() before setting the global 'speed' variable.  ckuus3.c, ckuus7.c,
  631. ckuusy.c, 17 Nov 93.
  632.  
  633. Changed the OS/2 C-Kermit installation procedure to skip all COM-port related
  634. questions if the user says she will not be using a COM port (e.g. for
  635. TCP/IP-only installation), and to skip modem-related questions if a modem will
  636. not be used.  ckoins.cmd (= install.cmd), 17 Nov 93.
  637.  
  638. Discovered why certain login scripts were not working on OS/2.  The clause
  639. "for (j = i; i-- > 0; )" was not generating the intended code, at least not
  640. when compiled by IBMCPP (the same code worked OK in most other versions).
  641. Moved the decrementing of i into the loop and then it worked fine.  ckuus4.c,
  642. 18 Nov 93.
  643.  
  644. After successfully executing a login script, OS/2 C-Kermit tended to have its
  645. echoing wrong.  To alleviate this problem, apparently caused by tn_ini() being
  646. called multiple times gratuitously, in spite of seemingly scrupulous setting
  647. and clearing of the tn_init flag at all appropriate places, I removed all
  648. calls to tn_ini() (and all references to tn_init) from all modules of all
  649. C-Kermit versions.  tn_ini() is now called only from within net_open(), after
  650. net_open() has determined that it has just made a successful TELNET
  651. connection.  Many modules affected: ck*tio.c, ck*net.c, ck*con.c, 18 Nov 93.
  652.  
  653. Changed OS/2 C-Kermit "set terminal color normal" to "set terminal color
  654. terminal-screen", which makes more sense.  Left "normal" as an invisible
  655. synonym.  ckuus7.c, 18 Nov 93.
  656.  
  657. Discovered that TELNET'ing from OS/2 C-Kermit to a host with a long name
  658. tended not to work.  In one case ("telnet martini.eecs.umich.edu 3000"), it
  659. would crash C-Kermit completely.  Traced the problem to (a) an inadequate
  660. buffer size in ckotio.c, which in turn was based on a pre-network definition
  661. of the symbol DEVNAMLEN, and (b) the use of strcpy() rather than strncpy() in
  662. ckocon for setting up the status line.  Also, I rearranged the status line
  663. to give more room to display the host name.
  664. ckocon.c 5A(105), ckotio.c 5A(108) 18 Nov 93.
  665.  
  666. REDIRECT doesn't work on OS/2 network connections, so I changed the REDIRECT
  667. command to fail under these conditions (instead of doing nothing).  ckuusr.c
  668. 5A(111) 18 Nov 93.
  669.  
  670. The INPUT command did not work correctly on VMS systems with DEC TCP/IP (UCX)
  671. when executed over a TELNET connection.  Diagnosis: when the socket_read()
  672. call was interrupted by an alarm/longjmp, subsequent calls to socket_read()
  673. would fail with socket_errno 16, EBUSY, "mount device busy".  Cure: replace
  674. the timer in netinc(), formerly alarm/signal/longjmp, with select().
  675. Complication: the UCX programming environment did not include the necessary
  676. header file, so the needed items (including copyright notice) had to be copied
  677. from 4.4BSD /usr/include/sys/types.h.  Note: It would also be possible to add
  678. select() for MultiNet, but it doesn't seem necessary; scripts, timeouts, etc,
  679. work ok.  ckcnet.h, ckcnet.c 5A, 20 Nov 93.
  680.  
  681. Now that the VMS and OS/2 INPUT commands are fixed, I tried turning on
  682. CK_BURST again (speedup for INPUT command by detecting bursts, code from Chuck
  683. Goodheart at NASA).  It works in MultiNet on the Alpha.  It works in MultiNet
  684. on the VAX.  It works in UCX on the VAX.  It works in UNIX.  It works in OS/2
  685. on both serial and TCP/IP connections.  And it's fast.  Tested with many
  686. services directory entries.  ckuus4.c, 20 Nov 93.
  687.  
  688. Added a new variable \v(cps), that tells the speed in characters per second of
  689. the last protocol operation.  ckuusr.h, ckuus4.c.  20 Nov 93.
  690.  
  691. Added a new function \fsize(filename), which returns the size of the given
  692. file.  ckuusr.h, ckuus4.c.  20 Nov 93.
  693.  
  694. Changed SHOW FUNCTIONS and SHOW VARIABLES not to list invisible items.
  695. ckuus5.c, 20 Nov 93.
  696.  
  697. Peter Manzella at DEC noticed that MSEND commands could fail in VMS because of
  698. a memory leak in ckuusr.c.  Solution: (1) increase the size of the buffer for
  699. VMS from 1K to 4K (since it needs it, and can afford the memory); (2) plug the
  700. memory leak.  The same thing could happen in UNIX as a result of
  701. tilde-expansion.  ckucmd.h (CMDBL definition), ckuusr.c 5A(112), 20 Nov 93.
  702.  
  703. Added a trailing catch-all #else clause for the new CK_TMPDIR section in
  704. the RECEIVE command, suggested by David Lane.  ckuusr.c, 20 Nov 93.
  705.  
  706. Changed SET KEY to allow { braces } around the key definition, like OUTPUT,
  707. INPUT, ECHO, and other commands, to allow easier specification of strings
  708. with leading and/or trailing blanks, and for consistency with all the other
  709. commands.  ckuusr.c, 20 Nov 93.
  710.  
  711. Noticed that curses did not always do a great job of optimizing screen
  712. writes, particularly in the "estimated time left" slot, so I added 3 lines
  713. of code to screenc() so Kermit could optimize this itself.
  714. ckuusx.c, 21 Nov 93.
  715.  
  716. From Kai Uwe Rommel, 21 Nov 93 (begin quote):
  717.  
  718. I have fixed the problems. Included I send a few diffs and a new ckotio.c,
  719. because I took the opportunity for a few cleanups in this module.
  720.  
  721. I have also made changes to allow compilation with IBM's TCP/IP 2.0, which has
  722. a 32-bit socket interface.  Unfortunately, this has the implication, that now
  723. *two* DLL's are required, SO32DLL.DLL and TCP32DLL.DLL.  Also, the executable
  724. doesn't run with TCP/IP 1.2.1 any longer.  So, we should make the distributed
  725. 32-bit executable for TCP/IP 1.2.1 and it also runs with TCP/IP 2.0.  I made
  726. changes only to allow someone to recompile C-Kermit if he has only TCP/IP
  727. 2.0.  To fully support it, we will have to wait until I finally find the time
  728. to restructure the TCP/IP support.
  729.  
  730. I have, BTW, dropped the IBMSELECT code, because it is not needed, both TCP/IP
  731. 1.2.1 and 2.0 support the BSD select() call and that is more portable.
  732.  
  733. Another problem: It is currently not possible to check for the return code of
  734. programs run via zshcmd().  In addition, the exit code was not returned
  735. correctly from zsyscmd() in the aegis and OS/2 cases.  I have somewhat quick-
  736. fixed zshcmd() for the OS/2 case to allow the "IF FAIL" command to work.  The
  737. UNIX branch has to be fixed too.  However, that only allows to check if the
  738. return code is not zero.  Sometimes it would be convenient to determine the
  739. exact exit code of the program.  How about adding a variable \v(exitcode)
  740. which holds the return code of the last program run via zshcmd() or zsyscmd()?
  741.  
  742. My current wish list of things I would like to do looks like:
  743. - Fix timed keyboard input with an additional thread instead of alarm()
  744. - Restructure TCP/IP code to support multiple vendors with one executable
  745. - Allow remote operation over serial lines and TELNET connections
  746. - Add Tektronix emulation
  747.  
  748. (End quote)
  749.  
  750. Built 16- and 32-bit OS/2 versions OK, 21 Nov 93; put cko190.zip up for
  751. testing on net.  All reactions so far are positive.
  752.  
  753. Another INPUT command speedup: Rather than always doing 1-second timed reads,
  754. time each read for the amount of time left in given timeout interval.  This
  755. reduces the number of system calls considerably, and still works fine --
  756. succeeds when it should succeed, fails when it should fail, terminates
  757. correctly under both extremes: no characters arriving at all; a steady stream
  758. of characters arriving.  ckuus4.c 21 Nov 93.
  759.  
  760. Revisited old problem of UNIX and VMS CONNECT showing a couple garbage
  761. characters upon first accessing a second or subsequent connection.  It was
  762. just a matter of having the CONNECT module reset its i/o buffer pointers
  763. whenever it knew it had a new connection, or that the current connection had
  764. terminated because of an i/o error.  CKVCON.C (VMS) 5A(031), ckucon.c (UNIX)
  765. 5A(058), 23 Nov 93.
  766.  
  767. When transferring a file with packets longer than about 2300, debug() calls
  768. would fail because the text to be logged was longer than the debug-record
  769. buffer.  This made it tough to track down certain kinds of errors related to
  770. long packets.  I changed the debug code to grow the buffer as necessary,
  771. dynamically.  ckuusx.c, 24 Nov 93.
  772.  
  773. Moved closing of debug log to just before _exit() is called, so now we can log
  774. the actions of ttres(), ttclos(), etc.  Reorganized UNIX ttclos() to not do a
  775. lot of silly things to the command terminal, especially if it was using stdin
  776. (file descriptor 0) to communicate with it.  ckutio.c, 24 Nov 93.
  777.  
  778. Added new WRITE-LINE (synonym: WRITELN) command.  Just like WRITE, except
  779. it writes its argument string in the form of a line or record, appropriate to
  780. the underlying operating system.  This lets scripts create output files
  781. in a system-independent fashion.  ckuusr.c 5A(113), 24 Nov 93.
  782.  
  783. Change ttclos() in ckutio.c for UNIX to unset the TIOCSINUSE flag for the
  784. device, since this bit had been set for it in ttopen().  I'm not sure if this
  785. fixes any problem, but it shouldn't hurt.  Also, changed sysinit() to call
  786. priv_ini() before doing anything else at all.  Apparently some UNIX versions
  787. (386BSD, etc) won't allow a set[gu]id program to open /dev/tty to get the
  788. terminal modes, etc, so this makes Kermit's effective UID be the user's real
  789. UID before any attempt is made to get terminal modes, etc.  ckutio.c 5A(117)
  790. 24 Nov 93.
  791.  
  792. Removed "#define WAIT_T pid_t" from ckcdeb.h (within #ifdef POSIX).
  793. Apparently, this is just completely wrong -- nowhere is the argument to wait()
  794. a pid_t; it's always either an int or else a struct of some kind.  According
  795. "Portable C Software", it's always safe to call wait() with an (int *).
  796. ckcdeb.h 24 Nov 93.
  797.  
  798. Changed lockfile for 386BSD from /var/spool/uucp to /var/spool/lock --
  799. suggested by many people.  makefile.
  800.  
  801. Changed ckhost(), the routine that gets the local host name, to call
  802. gethostbyname() in 386BSD, rather than utsname().  Suggested by Nick Sayer
  803. <mrappe@quack.kfu.com>, who says 386BSD (a.k.a. Jolix 0.1+pk0.2.4) didn't have
  804. utsname().  ckuusx.c.
  805.  
  806. Chased down a report that SET DIAL INIT-STRING didn't work when invoked from
  807. a macro.  As far as I can tell, it works fine.  However, SHOW DIAL did not
  808. report your DIAL INIT-STRING or PREFIX if you had not previously SET MODEM to
  809. something, which could be misleading.  ckudia.c 5A(051) 24 Nov 93.
  810.  
  811. The file attributes structure, zsattr, defined in ckcdeb.h, contained a member
  812. called passwd.  But some C compilers can't deal with structure members having
  813. the same names as other identifiers.  This killed C-Kermit compilation under
  814. Altos Xenix 3.0.  Reported by Ken George <nsaho@tuns.ca>.  ck*fio.c, 24 Nov 93.
  815.  
  816. Fixed BSEND and TSEND macros in standard CKERMIT.INI file; they would mess
  817. up if given wildcards.
  818.  
  819. Fixed SET HOST and TELNET commands to automatically SET CONTROL PREFIX 255
  820. for TCP/IP connections.  This omission pointed out by Bill Glass.  ckuus7.c,
  821. 25 Nov 93.
  822.  
  823. INPUT commands, when executed from VMS C-Kermit in remote mode for reading
  824. material from the console terminal (e.g. for checking terminal answerback
  825. sequence), were not working right because the VMS version of coninc() did not
  826. check to see if it timed out in certain cases and returned a character value
  827. like 0 or 127 rather than -1 in these cases.  Fixed in coninc(), CKVTIO.C
  828. 2.0-064 25 Nov 93.
  829.  
  830. VMS C-Kermit session logs were being written in Stream_LF format, but still
  831. contained carriage returns, which made them look funny when viewed in VMS
  832. editors (little arrows showed up at the end of each line).  This was fixed by
  833. opening the session log with "rfm=stm" (new) as well as "ctx=stm".  Suggested
  834. by Jason Seaman <jason@wccf.mit.edu>, Whitaker College, MIT.  CKVFIO.C
  835. 2.0-105, 25 Nov 93.
  836.  
  837. Executing a series of file transfer commands from a command file or macro took
  838. an inordinate amount of time because of long, annoying pauses between each
  839. command.  It seems there were some gratuitous sleep(1)'s and sleep(2)'s in the
  840. protocol module.  These were to allow "nonblocking" mode changes to take place
  841. between command and protocol mode.  These sleeps really had no business in the
  842. protocol module, and should be placed -- if necessary! -- in the appropriate
  843. system-dependent modules.  Removing them makes multiple local-mode transfers
  844. (send this, send that, send another, ...) go just as fast as a single wildcard
  845. transfer.  For remote-mode transfers: same speedup, but you have to remember
  846. to put SET DELAY 0 in your command file!  ckcpro.w 5A(057), ckutio.c 5A(118),
  847. 25 Nov 93.
  848.  
  849. Built today's version on SunOS 4.1.3, NeXTSTEP 3.0, Dell System V R4,
  850. OpenVMS/VAX, OpenVMS/AXP, Linux 0.99.13, RS/6000 AIX 3.1, DEC OSF/1-AXP.
  851.  
  852. A couple minor adjustments for FreeBSD to yesterday's code from Scott Mace
  853. <smace@freefall.cdrom.com>: declaration of sys_errlist[] in ckcfn3.c, SET
  854. SPEED keyword list in ckuus3.c, vanity banner for FreeBSD.  While futzing with
  855. the SET SPEED list yet again, I took the opportunity to redesign how it works.
  856. Kermit-specific symbols are now defined (or undefined) in ckcdeb.h for the
  857. uncommon speeds, and these can be augmented or overridden from the CC command
  858. line using BPS_xxxx or NOB_xxxx symbols.  Also, added 57600 and 115200 for
  859. Linux, and added an as-yet-unused entry for 230400 bps.  Documentation on
  860. speed configuration added to ckccfg.doc.  26 Nov 93.
  861.  
  862. Added SET CONSOLE as an invisible synonym for SET COMMAND, as the word CONSOLE
  863. is bit more intuitive, and in preparation for possibly adding other console-
  864. related items, like SPEED, PARITY, FLOW, ...  ckuusr.c 5A(114) 26 Nov 93.
  865.  
  866. About 6-8 weeks ago, Paul Placeway sent in a new set of source for Macintosh
  867. Kermit, in which several bugs were fixed in the Mac-specific (ckm*.*) modules,
  868. and which had been adapted for compilation under Think C as well as MPW C.
  869. These have now been adapted to C-Kermit edit 190, and I made several other
  870. changes too: added a fix to doactive() from Ed Huff <huff@mcclb0.med.nyu.edu>,
  871. apparently overlooked by Paul (?); I filled in the zhome() and zgtdir()
  872. functions (code from Steven Woolgar <famus2@dmi.usherb.ca>); enabled the CD
  873. and PWD commands as well as the corresponding functions and variables.  Some
  874. changes to ckcdeb.h, ckuus5.c, ckuusr.c, ckcfns.c.  Compiles under MPW C 3.2
  875. just fine, seems to run OK too, except CD command still pops up a bunch of
  876. windows on the screen saying "Writing to the console in applications is NOT
  877. supported!".  And zhome() always seems to return the null string.  And
  878. zgtdir() always seems to return the name of the disk, but not the current
  879. folder... (see code for these in ckmfio.c.)  26 Nov 93.
  880.  
  881. Added makefile entry for FreeBSD from Scott Mace <smace@freefall.cdrom.com>.
  882. 29 Nov 93.
  883.  
  884. Added SET PRINTER and SHOW PRINTER commands for OS/2 C-Kermit.  ckuusr.h,
  885. ckuusr.c, ckuus2.c, ckuus3.c, ckuus5.c.  30 Nov 93.
  886.  
  887. ID swapping needed for access() in the BSDI version: -DSW_ACC_ID added to
  888. the bsdi makefile entry.  From John Kohl.  1 Dec 93.
  889.  
  890. A fix from Kai Uwe Rommel for an OS/2 C-Kermit bug: if Kermit was left in
  891. CONNECT mode, the OS/2 system could not be shut down.  ckotio.c 5A(110)
  892. 1 Dec 93.
  893.  
  894. Added SET { FILE, TERMINAL } CHARACTER-SET HP-ROMAN8, to support Hewlett
  895. Packard's proprietary Latin-1-like 8-bit character set.  The translation used
  896. is the one provided by HP (e.g. via iconv); it is not invertible.  Also, fixed
  897. incorrect translation from DGI to Latin-2.  ckuxla.h, ckuxla.c 5A(021),
  898. 1 Dec 93.
  899.  
  900. Fixed TRANSLATE command to work right when one (or both) of the character-sets
  901. is Latin-2 or CP852.  ckuus4.c, 1 Dec 93.
  902.  
  903. Changed terminal emulator in OS/2 C-Kermit to not display transparent-print
  904. material on the screen, since this is how a real VT102 works.
  905. ckocon.c 5A(106) 1 Dec 93.
  906.  
  907. Consolidated and rearranged some Mac-specific definitions and declarations:
  908. ckcdeb.h, ckmusr.c, ckmtio.c, ckuus5.c, ckuus6.c.  The need for this was
  909. pointed out by Joe Bearly <jst@itsa.ucsf.edu>.  1 Dec 93.
  910.  
  911. Fixed sdata() to make a special case for the Atari ST when looking to see
  912. whether to interrupt the D-packet-sending loop, because the ST version of
  913. ttchk() never returns a value > 1.  ckcfn2.c 5A(049) 1 Dec 93.
  914.  
  915. Changed the packet-mode interruption defaults from 2 Ctrl-C's to 3 Ctrl-C's.
  916. This prevents protocol breakouts when users SET CONTROL UNPREFIX 3 or 131,
  917. because 3 Ctrl-C's in a row will be encoded with a repeat count.  This change
  918. might be a little disconcerting to users, but when they type two and nothing
  919. happens, they will almost certainly type a third.  ckcmai.c, 2 Dec 93.
  920.  
  921. Added a new compile-time symbol: NDGPWNAM.  If you define this, e.g. in
  922. CFLAGS or KFLAGS, it skips the forward declaration of getpwnam() in ckufio.c,
  923. presumably because it was already declared in <pwd.h>, and avoid "conflicting
  924. types for getpwnam" errors, e.g. from GCC 2.5.6.  ckufio.c 5A(077) 5 Dec 77.
  925.  
  926. The 32-bit version of OS/2 C-Kermit, when in server mode, failed to redirect
  927. the output of REMOTE DIRECTORY, REMOTE TYPE, and similar commands (which work
  928. by running a copy of CMD.COM via popen()), to the Kermit client.  Rather, the
  929. output would appear on the server's screen.  This was caused by a bug in the
  930. IBM C++ PDK Beta compiler which I have been using.  I upgraded to IBM C++ Set
  931. 2.0, and the problem went away.  8 Dec 93.
  932.  
  933. When Kai Uwe dropped the OS/2 C-Kermit IBM-style select() in favor of the BSD
  934. version, he forgot to update ckotcp.c and ckotcp.def, so OS/2 C-Kermit would
  935. no longer run on systems where IBM TCP/IP was not installed, because of a
  936. dynamic linking error at startup time caused by _bsdselect missing from the
  937. dummy DLL.  Kai Uwe to the rescue.  8 Dec 93.
  938.  
  939. Bo Kullmar noticed that SET TRANSFER CANCELLATION 3 3 does not quite make it
  940. safe to SET CONTROL UNPREFIX 3.  This is because the code in ttinl() to check
  941. for cancellation ignored the parity bit, so (for example) \x03\x83\x03 could
  942. still kill a transfer.  I changed ttinl() to ignore the parity bit only if
  943. PARITY was not NONE; this should be nearly 100% safe now that all C-Kermit
  944. programs capable of remote-mode operation also do automatic parity detection.
  945. Also, packet-mode interruption should occur only when C-Kermit is in remote
  946. mode, but ttinl() was letting it happen in local mode too, so I changed it.
  947. Also, I removed cancellation code from two C-Kermit programs that included it,
  948. but that could never be in remote mode: Mac Kermit and Atari ST Kermit.
  949. ck[9dlmsuv]tio.c, 9 Dec 93.  (OS/2 and Amiga Kermit were already OK.)
  950.  
  951. Added a new command-line option, -R (uppercase).  It is tied to a new IF
  952. command, IF REMOTE-ONLY.  This allows us to skip all the local-mode setups
  953. in the initialization files if we don't intend to use C-Kermit in local mode.
  954. ckuusr.h, ckuus6.c, ckuusy.c, ckuus2.c, ckuus4.c.  Also, in making this
  955. change, I discovered that prescan() did not handle bundled arguments
  956. correctly; fixed in ckuus4.c.  ckuusr.c 5A(115), 9 Dec 93.
  957.  
  958. Edited the standard initialization file, CKERMIT.INI, to skip dial and
  959. services directory setups if the -R command-line option given.  This makes
  960. C-Kermit startup WAY faster.  Ditto for CKERMOD.INI.  9 Dec 93.
  961.  
  962. Fixed another bug discovered by Bo Kullmar, namely that the automatic
  963. re-mallocation of the debug-log string buffer could make C-Kermit core dump
  964. under certain circumstances.  I flushed this code and used sprintf() formats
  965. to cut off the strings to fit in the buffer.  No more core dumps.  ckuusx.c,
  966. 9 Dec 93.
  967.  
  968. Michael Godfrey noticed that if a SET LINE command has been given (to open a
  969. serial line), a subsequent TELNET command, given without a hostname/address,
  970. acts like a CONNECT command on the serial line.  In OS/2 C-Kermit, which
  971. starts up using COM1 by default, this usually gives a message like "No carrier
  972. detected", which is not exactly what we want to say.  Now it gives an
  973. appropriate error message.  ckuus7.c, 9 Dec 93.
  974.  
  975. Backed off on yesterday's debug-log change because it turns out sprintf()
  976. field-width formats aren't portable after all.  Yesterday's change totally
  977. broke debug logging on VMS.  Now we just decline to log any string that's
  978. too big for the buffer.  ckuusx.c, 10 Dec 93.
  979.  
  980. One of the biggest problems with VMS C-Kermit was that it could not send
  981. packets longer than MAXBUF (a SYSGEN parameter), nor longer than any of
  982. various user quotas, such as BYTLM.  Attempts to do this resulted in SYS$QIOW
  983. failing with error 28, Quota Exceeded (as finally revealed by the new and
  984. improved debug log).  The low-level packet writer in VMS C-Kermit, ttol(), has
  985. now been recoded to handle these errors more or (mostly) less gracefully: if a
  986. write attempt fails with error 28, we chop the data in half and try again,
  987. repeating until the write succeeds or the length goes below 70, at which point
  988. we fail.  If the write succeeds, we remember the size for next time, so all
  989. subsequent writes use it and bypass the trial-and-error rigamarole.  The
  990. impact on performance is hardly noticeable, e.g. when sending 9000-byte
  991. packets with MAXBUF = 2064.  So now we no longer have to tell VMS sites to
  992. reconfigure and reboot their systems to solve this problem (though it is still
  993. a good idea to have sufficient MAXBUF and BYTLM on systems where file transfer
  994. is a commonplace activity).  Too see the new code in action, have VMS C-Kermit
  995. send a file using 9K packets, with its debug log active, preferably on a
  996. system with a small MAXBUF.  Then "search debug.log ttol" to see what happened
  997. internally.  The packet sizes are not optimal: This could be achieved using a
  998. binary-search trial-and-error technique, but it's not worth it -- the
  999. performance difference is negligible.  CKVTIO.C 5A(067), 15 Dec 93.
  1000.  
  1001. Catch and ignore SIGDANGER in sysinit().  Suggested by Marc Pawliger,
  1002. <marc@sti.com>.  This code is enabled if SIGDANGER is defined.  As far as I
  1003. know, this holds true only on RS/6000 AIX.  The new code prevents C-Kermit
  1004. from being killed by AIX's swap-space police, except as a final resort.
  1005. ckutio.c 5A(120), 17 Dec 93.
  1006.  
  1007. The VMS version was not releasing the OPEN READ file descriptor, so successive
  1008. OPEN READ commands could use them up and then no further files could be
  1009. opened.  Noticed by Carl Friedberg, fixed by Terry Kennedy, ckvtio.c 5A(106),
  1010. 22 Dec 93.
  1011.  
  1012. ESC/Tab keyword completion of R into RECEIVE did not work (as C does for
  1013. CONNECT and S for SEND).  Noticed and fixed by Mike Freeman
  1014. <mikef@pacifier.rain.com>, ckuusr.c, 27 Dec 93.
  1015.  
  1016. Added APC support to OS/2 C-Kermit's terminal emulator, and made various fixes
  1017. and speedups to it also.  ckocon.c 5A(107), ckuus4.c, 29 Dec 93.
  1018.  
  1019. Added SET TERMINAL APC { ON, OFF, UNCHECKED } to control execution of APC
  1020. commands received by C-Kermit.  Conditionalized all APC-execution-related code
  1021. under CK_APC, so it can easily be activated for the Macintosh too, or any
  1022. other C-Kermit implementation that has a built-in terminal emulator.  I might
  1023. even consider adding it to the UNIX and VMS versions, but for now, this
  1024. feature is activated only in the OS/2 version.
  1025. ckuus[r23457].c, ckuusr.h, 30 Dec 93.
  1026.  
  1027. Added automatic parity detection and DDK to OS/2 version.  This was done by
  1028. adapting UNIX ttinl() to OS/2, which is not the optimal solution.  My original
  1029. plan was to restructure the system-independent packet-reader, rpack(), to take
  1030. over the many functions that have been improperly delegated to ttinl() and, in
  1031. fact, to retire ttinl() altogether.  But this will be a much bigger job than
  1032. it seemed, because of the many and diverse ways in which the various ttinl()
  1033. versions handle timed reads, blocking vs nonblocking reads, buffering, etc.
  1034. We no longer allow the device driver to handle parity; like all other Kermit
  1035. programs, OS/2 C-Kermit now does this itself.  In particular, the ttsettings()
  1036. routine always sets no parity, 8 data bits.  ckotio.c, 5A(111) 30 Dec 93.
  1037.  
  1038. In adding parity detection to the OS/2 version, I discovered that it often
  1039. failed because, when looking at the packet control fields, it neglected to
  1040. strip the parity bit first, thus misinterpreting (in particular) the packet
  1041. length fields.  I migrated this fix into the UNIX, VMS, AOS/VS, and Stratus
  1042. versions.   ck[uvodl]tio.c, 31 Dec 93.
  1043.  
  1044. When using OS/2 C-Kermit's VT102 emulator with UNIX 'more', I discovered that
  1045. lines that were wrapped around the "more?" prompt caused the inverse video of
  1046. the "more?" prompt to extend to the right margin, but only when this occurred
  1047. at the bottom of the screen, i.e. when scrolling a wrapped line.  Experiments
  1048. showed this happening whenever scrolling any wrapped line that had nondefault
  1049. video attributes.  Diagnosis: the scroll() routine was creating the new bottom
  1050. line using the current attributes.  Cure: the scroll routine should use the
  1051. normal, default attributes to create the new bottom line, and then let
  1052. subsequent character-writing operations take care of the attributes.
  1053. ckocon.c, 5A(108) 4 Jan 94.
  1054.  
  1055. Added a new UNIX makefile entry for Amdahl UTSV with TCP/IP support, from
  1056. Gerald J. Werner, Marshfield Clinic <wernerg@dgabby.mfldclin.edu>.  5 Jan 94.
  1057.  
  1058. Installed new Stratus VOS modules: ckltio.c, cklfio.c, cklnet.c.  From David
  1059. Lane <David_Lane@vos.stratus.com>, 5 Jan 94.
  1060.  
  1061. Added print / dump screen to OS/2 C-Kermit.  Works in both the 32-bit and the
  1062. 16-bit version.  Activate during CONNECT mode via Alt-P (or Alt-p), or by
  1063. <Escape-character>F/f as in MS-DOS Kermit.  Also had to add special code to
  1064. make it work for rolled-back screens.  Entries added to the two CONNECT-mode
  1065. help screens.  ckocon.c 5A(109), 6 Jan 94.
  1066.  
  1067. Fixed a screen-rollback bug in OS/2 C-Kermit, which occurred when a wrapped
  1068. line scrolled off the screen; the wrapped portion was not saved in the
  1069. rollback buffer.  The same thing happened with Index (ESC D); that's fixed
  1070. too.  ckocon.c 5A(109), 6 Jan 94.
  1071.  
  1072. Added TELNET NAWS (Negotiate About Window Size, RFC 1073) to the UNIX and OS/2
  1073. versions.  This feature is configured only if the program is built with the
  1074. CK_NAWS symbol defined.  Requires new system-dependent support routine,
  1075. ttgwsiz(), described in ckcplm.doc.  In UNIX C-Kermit, NAWS works only if the
  1076. TIOCGWINSZ symbol is defined and the corresponding ioctl is available and
  1077. executes without error.  Defined CK_NAWS by default for SunOS 4.1, NeXT,
  1078. System V R4, 4.4BSD, and OSF/1.  Override these default assignments by
  1079. including -DNONAWS on the CC command line.  I don't see how to do it for POSIX
  1080. or others, but people are encouraged to send in code to make it work for more
  1081. systems, or to confirm that it works safely on systems not yet included.
  1082. Note: Don't define CK_NAWS unless there is also a ttgwsiz() routine.
  1083. ckcnet.[ch], ckutio.c, ckocon.c, etc, 12 Jan 93.
  1084.  
  1085. Now that we know how to get the rows and colums of the controlling terminal,
  1086. we can change the various "more?"-prompting items to use the actual screen
  1087. length.  This includes the HELP command, SHOW MACROS, SHOW VARIABLES, etc.
  1088. ckuus[25].c, 12 Jan 93.  Later, this can also be extended to the file transfer
  1089. display screen and the command parser keyword and file menus.
  1090.  
  1091. Added SIGWINCH trapping for the UNIX version.  If you're running C-Kermit in a
  1092. window and you change the window size, UNIX delivers a SIGWINCH signal.
  1093. C-Kermit now catches this signal, asks UNIX what its new window size is, and
  1094. if a TELNET connection is open (and we have received permission to send NAWS
  1095. reports) we send a NAWS report.  Tested in NeXT Terminal window by stretching
  1096. the window during C-Kermit CONNECT mode, seemed to work fine for a while, but
  1097. then started to fall apart -- it seemed to interfere with some of the other
  1098. TELNET negotiations, like echoing.  But only when TELNET'ing from NeXT to
  1099. NeXT.  Removing the SIGWINCH code didn't make any difference.
  1100.  
  1101. Hmmm...  It seems the problem with the NeXT has nothing to do with NAWS.  Even
  1102. versions 188 and 189 had a similar problem, namely that the SIGUSR2 signal
  1103. which we use during CONNECT mode to let the lower fork tell the upper fork
  1104. about TELNET-negotiated echoing changes does not get delivered immediately,
  1105. and sometimes gets lost.  The reason the problem is only noticeable when going
  1106. from NeXT to NeXT is that the NeXT TELNET server sends many echoing changes,
  1107. rapid fire, and only the NeXT client is exhibiting the signal-delivery
  1108. sluggishness.
  1109.  
  1110. (Well, I spent two days on this one and could not solve it.  Then I discovered
  1111. that if I ran Kermit in a Stuart window rather than a Terminal window on the
  1112. NeXT, it worked perfectly.  It also works fine if I TELNET to the NeXT and
  1113. start Kermit in a TELNET session -- i.e. not in any kind of NeXT window.)
  1114.  
  1115. (This note inserted Aug 13, 1994: The changes that were made to the CONNECT
  1116. fork signalling in July-August 1994 have cleared all of this up, and now
  1117. C-Kermit can be used under Terminal just as well as under Stuart.)
  1118.  
  1119. Added CK_NAWS to VMS version.  Code for ttgwsiz() supplied by Mark Berryman
  1120. at SAIC.  CKVTIO.C 5A(069) 14 Jan 94.
  1121.  
  1122. Fixed a bug in the VMS version that I introduced when I moved the tn_ini()
  1123. call to be inside netopen(), which resulted in initial TELNET negotiations
  1124. never being sent.  ckcnet.c 5A(025) 14 Jan 94.
  1125.  
  1126. Added NOSIGWINCH symbol to allow SIGWINCH trapping be disabled without
  1127. disabling the NAWS feature itself.  ckccfg.doc, ckcnet.c, 14 Jan 94.
  1128.  
  1129. Fixed some dependencies in the UNIX makefile.  14 Jan 94.
  1130.  
  1131. Added NODISPO symbol to allow C-Kermit to be built to always refuse incoming
  1132. MAIL and REMOTE PRINT files.  ckcfn3.c, 14 Jan 94.
  1133.  
  1134. Jeff Altman <p00118@psilink.com> noticed that sequences of bold characters
  1135. would alternate between bold and regular.  The fix turned out to be rather
  1136. complicated, since it had to work for both normal and reverse-video screens,
  1137. and in working on this I discovered that the handling of DECSCNM, ESC [ ? 5
  1138. h/l, reverse-video/normal screen (i.e. the one that flips your entire current
  1139. screen between normal and reverse video), was totally broken.  Previously, it
  1140. would (a) only affect the rightmost 1/4 of an 80-column screen, and (b) it
  1141. wasn't "sticky" -- i.e. subsequently received characters would be displayed in
  1142. the opposite mode.  Much code was rewritten and tested successfully, and it
  1143. now works independently of your screen colors, etc.  ckocon.c 5A(112),
  1144. 15 Jan 94.
  1145.  
  1146. Added additional printing capabilities to OS/2 C-Kermit's terminal emulator
  1147. via host-generated escape sequences.  All these are only for the 32-bit
  1148. version, since the 16-bit version crashes with a stack overflow if they are
  1149. used.  For the VT102 emulator:
  1150.  . ESC [ 0 i, print current screen (also ESC [ i).
  1151.  . ESC [ ? 1 i, print current line (i.e. the line where the cursor is).
  1152.  . ESC [ ? 19 h/l, select print extent (h = full screen, l = scrolling region).
  1153.    This applies when ESC [ 0 i or ESC [ i is received.
  1154.  
  1155. And for the VT52 emulator:
  1156.  . ESC V, print current line.
  1157.  . ESC ], print current screen.
  1158.  . ESC W, turn on transparent printing.
  1159.  . ESC X, turn off transparent printing.
  1160.  . ESC ^, autoprint on (treated like transparent print).
  1161.  . ESC _, autoprint off (treated like transparent print).
  1162.  
  1163. Implemented SRM (Send/Receive Mode), for host-controlled remote/local echo
  1164. in the VT102 emulator, ESC [ 12 h/l (h = remote echo, l = local echo).
  1165.  
  1166. Fixed VT52 reverse index.
  1167.  
  1168. Fixed an oversight in the new APC code, namely that if an APC, OSC, or similar
  1169. string-bearing escape sequence starts to arrive but never finishes, there was
  1170. no way to break the deadlock.  Now "reset terminal" (Alt-=) does it.
  1171.  
  1172. Restored host-directed switching between US and UK sets in VT102 emulation,
  1173. but ONLY if the terminal character-set is ASCII.  All other character-set
  1174. selections must be made by the user, via SET TERMINAL CHARACTER-SET.  That's
  1175. because this is a VT102, not a VT220 or higher, which allows the host to
  1176. control character-set designation and invocation.  ckocon.c 5A(112) 15 Jan 94.
  1177.  
  1178. After discussions with Jeffrey Altman about OS/2 C-Kermit, added a new
  1179. feature: SET { SEND, RECEIVE } PATHNAMES { ON, OFF }.  This applies to the
  1180. handling of filenames when SET FILE NAMES LITERAL is in effect.  SET SEND
  1181. PATHNAMES ON means to leave pathnames on outbound file names, which is the
  1182. default for compatibility with earlier behavior.  OFF means to strip path
  1183. information, leaving only the name.  SET RECEIVE PATHNAMES applies to the
  1184. filenames in incoming file header packets; ON means to leave the name alone
  1185. and attempt to use it as-is, OFF means to attempt to strip path information
  1186. ON THE ASSUMPTION that any path information found there would be in the
  1187. notation of the local file system.  If not, the results are unpredictable.
  1188. Use SHOW FILE to display the SEND/RECEIVE PATHNAME settings.
  1189. ckcmai.c, ckuus[r247].c, ckuusr.h, ckcfns.c, 16 Jan 94.
  1190.  
  1191. After the above, Jeffrey sent in new copies of ckcdeb.h, ckcfns.c, and
  1192. ckufio.c to allow OS/2 C-Kermit to accept incoming files that had long or
  1193. nonstandard names (e.g. mixed case, many periods), even on FAT file systems,
  1194. even when FILE NAMES LITERAL is in effect.  Before attempting to open the
  1195. file, C-Kermit checks to see if the name would be OK.  If not, it converts it
  1196. to a legal FAT (8.3) name.  ckcdeb.h; ckcfns.c 5A(096), ckufio.c 5A(078),
  1197. 16 Jan 94.
  1198.  
  1199. Added CK_NAWS capability for AIX/6000 3.x, Solaris 2.x, Ultrix 4.x.
  1200. ckcnet.h, 16 Jan 94.
  1201.  
  1202. Kai Uwe Rommel sent in a fix for ckocon.c, for a problem I had noticed
  1203. earlier, namely that if you enter the OS/2 command processor directly from
  1204. CONNECT mode via <esc-char>!, then upon exit from OS/2 back to the C-Kermit
  1205. terminal screen, the entire screen would be blinking -- at least for me (but
  1206. not for Kai Uwe).  But even though he couldn't see it, he fixed it.
  1207. ckocon.c 5A(113), 16 Jan 94.
  1208.  
  1209. Added code to catch the case where the keyboard read() during CONNECT mode on
  1210. a TELNET connection is interrupted and returns 0 or -1, with errno == EINTR
  1211. (interrupted system call).  Previously, it would spuriously return
  1212. successfully with a random character.  Now it retries, up to 10 times, and
  1213. either fails or succeeds reliably.  ckucon.c 5A(059), 16 Jan 94.
  1214.  
  1215. From Jeffrey Altman, code for OS/2 version to create the directory for an
  1216. incoming file, if possible, when the incoming filespec includes directory
  1217. information.  ckotio.c 5A(112), ckufio.c 5A(078), ckcfns.c 5A(096), ckcdeb.h,
  1218. 16 Jan 94.
  1219.  
  1220. Corrections from Jeff to yesterday's directory-creation code.  Also, the OS/2
  1221. version, upon receiving a file whose name is illegal for the FAT (DOS) file
  1222. system, will save the illegal name in the file's Extended Attributes before
  1223. creating the file with a valid FAT name.  Thus the "LongName" will still be
  1224. visible from the OS/2 desktop or when the file is copied to an HPFS volume.
  1225. EA stuff works only in the 32-bit version, since the MSC 6.00 compiler/linker
  1226. won't swallow it.  ckcfns.c 5A(097), ckufio.c 5A(079), 17 Jan 94.
  1227.  
  1228. Vincent Fatica <vefatica@mailbox.syr.edu> reported that OS/2 C-Kermit still
  1229. messed up "more" displays.  Turns out he was using a VT220 or higher terminal
  1230. type on the host and it was sending ESC [ Pn m sequences with Pn's (22-27)
  1231. that are not supported by the VT102; these turn off selected types of
  1232. highlighting individually: 22 = Turn Off Bold; 24 = Turn Off Underline;
  1233. 25 = Turn off Blink; 27 = Turn Off Reverse Video.  These are now implemented,
  1234. and they work fine in all combinations.  ckocon.c 5A(117) 17 Jan 94.
  1235.  
  1236. HOWEVER, in getting this to work, and also as a result of fixing the
  1237. "whole-screen reverse/normal video" (DECSCNM) feature, I discovered that the
  1238. whole idea of having special user-selectable colors for reverse video was a
  1239. bad idea.  The code became horrendously tangled and big because of this, and
  1240. still many things didn't -- and could never -- work.  For example, it did not
  1241. take into account the host's ability to send color-changing commands per
  1242. character.  Nor, for that matter, the propensity of some video adapters to
  1243. interpret the "blink" bit as a background color change.  So from now on,
  1244. reverse video is reverse video; it simply swaps the fore- and background
  1245. colors.  Everything works right now; you can even display all the colors of
  1246. the ANSI spectrum, in all conceivable mixtures of attributes, flip the screen,
  1247. and flip it back again, with no loss or distortion of colors or attributes.
  1248.  
  1249. A new Alt key was added to flip the screen from the keyboard: Alt-R (Reverse
  1250. the Screen).  And a visual bell was added: SET TERMINAL BELL { AUDIBLE,
  1251. VISUAL, NONE }, as in MS-DOS Kermit.  ckuusr.h, ckuus2.c, ckuus7.c, ckocon.c,
  1252. 17 Jan 94.
  1253.  
  1254. Jeff A. found out how to enable directory creation for the 16-bit OS/2 version
  1255. so I added that.  ckufio.c 5A(098) 18 Jan 94.
  1256.  
  1257. I made SET RECEIVE PATHNAME apply at all times, not just with SET FILE
  1258. NAMES LITERAL.  ckuus2.c, ckcfns.c 5A(080) 18 Jan 94.
  1259.  
  1260. Fixed OS/2 C-Kermit to strip off disk letters when sending files, except
  1261. when FILE NAMES are LITERAL *and* SEND PATHNAMES are ON.  ckcfns.c 5A(099),
  1262. 19 Jan 94.
  1263.  
  1264. Added automatic directory creation to UNIX version.  Redesigned and rewrote
  1265. zmkdir(), added its specification to ckcplm.doc.  When an incoming file
  1266. includes a directory name in the file header packet, an attempt is made to
  1267. create the specified directory if SET RECEIVE PATHNAMES is ON.  In UNIX, any
  1268. directories that are created inherit the permissions of their parents, and the
  1269. owner and group of the user who is running the Kermit program.  Naturally,
  1270. directory creation fails if the user lacks the appropriate permissions.
  1271. ckcfns.c, ckufio.c 5A(081), 19 Jan 94.
  1272.  
  1273. Added skeleton of REXX command to the OS/2 version.  Jeff A will fill it
  1274. in.  To activate the REXX interface, define CK_REXX.  ckuusr.h, ckuusr.c,
  1275. ckuus3.c, ckuus4.c, 19 Jan 94.
  1276.  
  1277. Changed OS/2 version to send the system ID for OS/2, not UNIX!, in the
  1278. Attribute packet.  ckufio.c, 19 Jan 94.
  1279.  
  1280. In OS/2 version, added REXX and REXXFILE commands.  Jeffrey Altman filled in
  1281. the system-dependent execution thereof in ckotio.c, 5A(113), 20 Jan 94.
  1282. REXX executes a Rexx command.  REXXFILE executes a Rexx program from a file.
  1283. Both of these return the Rexx return code (a string) in the variable \v(rexx).
  1284. ckuusr.h, ckuusr.c 5A(117), ckuus2.c, ckuus3.c, ckuus4.c, 19 Jan 94.
  1285.  
  1286. Enabled SET FILE TYPE LABELED for OS/2.  Jeff Altman will fill in the
  1287. system-dependent code.  A new symbol, CK_LABELED, governs this feature now;
  1288. previously it was dependent on VMS.  LABELED transfers will allow OS/2 files
  1289. to be sent with all their attributes, either for direct use on another OS/2
  1290. system, or for archival on a non-OS/2 system.  ckcfn3.c, ckuus4.c, ckuusx.c,
  1291. 20 Jan 94.
  1292.  
  1293. Added code to append ".~number~" to the OS/2 longname in the extended
  1294. attributes block whenever we rename a file using znewn().  ckcfns.c 5A(100),
  1295. 20 Jan 94.
  1296.  
  1297. Changed OS/2 C-Kermit to *never* send a disk letter, regardless of FILE
  1298. NAMES or SEND PATHNAMES settings.  (Of course, you can still send a disk
  1299. letter in an "as-name").  ckcfns.c 5A(100) 20 Jan 94.
  1300.  
  1301. Fixed OS/2 C-Kermit's terminal emulator to preserve brightness of foreground
  1302. colors selected by SET TERMINAL COLOR.  This feature was destroyed in the
  1303. edits of January 17.  Blinking, however, still does not work right, and so
  1304. is simulated by a high-intensity background.  ckocon.c 5A(115), 21 Jan 94.
  1305.  
  1306. Disabled Rexx features in 16-bit OS/2 version, because MSC can't cope with
  1307. the rexxsaa.h header file.  21 Jan 94.
  1308.  
  1309. Added a small modification to ttopen() for POSIX-based Lynx OS 2.2, in which
  1310. file descriptor zero is read-only rather than read-write, from Simon Park
  1311. <si@wimpol.demon.co.uk>, plus a new makefile entry for this system.
  1312. ckutio.c 5A(123), 24 Jan 94.
  1313.  
  1314. Replaced the previous HP Roman-8 / Latin-1 character translation tables, which
  1315. were not invertible, by new invertible tables, approved by HP.
  1316. ckuxla.c 5A(022), 24 Jan 94.
  1317.  
  1318. Added a new variable, \v(newline), that contains the appropriate newline
  1319. character or sequence for each system where C-Kermit runs (UNIX = LF,
  1320. MAC = CR, OS/2 = CRLF, etc).  Use this when writing script programs that
  1321. output data to a file and you need to terminate lines in a system-independent
  1322. way.  I considered making this a simple backslash escape, \n, but this could
  1323. have wreaked havoc with existing scripts in which \n simply quoted the "n"
  1324. character.  ckuusr.c 5A(118), 24 Jan 94, ckuus4.c, ckuus5.c.
  1325.  
  1326. Created a new routine, domac(name,definition).  Call it with a macro name
  1327. and definition string, and it defines the macro and executes it.  This is
  1328. now called by the APC code in the CONNECT command, but it is also usable
  1329. in any other context.  Works OK with APC.  This will soon be used also to allow
  1330. OS/2 Rexx programs to execute Kermit commands.  ckuus5.c, 24 Jan 94.
  1331.  
  1332. Integrated Jeff Altman's new code supporting OS/2 Extended Attributes in
  1333. SET FILE TYPE LABELED operations.  In other words, now you can actually use
  1334. SET FILE TYPE LABELED to transfer OS/2 files, just as you can with VMS files.
  1335. ckufio.c, etc etc.  24 Jan 94.
  1336.  
  1337. Jeff Altman filled in the function that exports C-Kermit commands to Rexx.
  1338. So now you can run a Rexx program under Kermit and the Rexx program can
  1339. execute Kermit commands.  Rexx support is still activated only in the 32-bit
  1340. version, due to problems with the 16-bit libraries.
  1341. ckotio.c 5A(115), 25 Jan 94.
  1342.  
  1343. Removed OS/2 Extended Attribute support from 16-bit OS/2 version, since it
  1344. could not be compiled with MSC.  Ditto labeled file transfer.
  1345. Many modules, 25 Jan 94.
  1346.  
  1347. Added SET FILE LABEL {ARCHIVE, READ-ONLY, HIDDEN, SYSTEM, EXTENDED} {ON, OFF}
  1348. so user can include (ON) or exclude (OFF) the given attributes when
  1349. transferring OS/2 files in LABELED mode; 32-bit version only.  By default all
  1350. but ARCHIVE are ON.  ckcmai.c 5A(190), ckcdeb.h, ckuusr.c 5A(119), ckuus2.c,
  1351. ckuus5.c, ckuus7.c, ckcfns.c 5A(102), ckcfn3.c, 25 Jan 94.  Labeled file
  1352. option bits are passed in the lblopts member (a bit mask) of the filinfo
  1353. struct.  The low-level ckufio.c routines still need the OS/2-specific code to
  1354. handle them, and the format of the OS/2 labeled file needs to be expanded to
  1355. include them.
  1356.  
  1357. Jeff Altman suspected there might be a memory leak somewhere in the DIAL
  1358. command, so I went through it thoroughly to make sure that all writes into
  1359. buffers were checked in advance against overflow, and that all malloc'd items
  1360. were free'd before returning.  Found several cases where these actions were
  1361. not taken previously, so memory leaks were definitely possible, especially
  1362. when a phone number or a device name was VERY long.  ckudia.c 5A(052),
  1363. 29 Jan 94.
  1364.  
  1365. Harvey Stein at Hebrew University pointed out that there was no way to have
  1366. C-Kermit dial from a command file before the prompt was issued, and still be
  1367. able to interrupt dialing and get to the prompt.  It seems that the rules for
  1368. command order listed on "Using C-Kermit", p.323, were not being followed.  It
  1369. should have been possible to interrupt '-C "command list"' execution and get
  1370. back to the prompt, but it wasn't.  So I moved a block of code.
  1371. ckcmai.c 5A(190), 29 Jan 94.
  1372.  
  1373. Discovered that on at least one operating system, SunOS 4.x, C-Kermit's
  1374. lowest-level command parsing function -- gtword() in ckucmd.c -- was failing
  1375. to detect "end of file" when commands were coming from redirected standard
  1376. input (e.g. "kermit < foo").  Debugging showed that errno was being set to
  1377. EINTR for some unfathomable reason, which was being explicitly checked for as
  1378. an exception to EOF detection, because it could occur when a backgrounded
  1379. C-Kermit was re-foregrounded.  So I added a counter to break out of the
  1380. infinite loop that results from this situation.  ckucmd.c 5A(054), 30 Jan 94.
  1381.  
  1382. Noticed that if you start up UNIX Kermit with "&" so it is in the background
  1383. initially, then the command parser doesn't work right after putting it in the
  1384. foreground.  In this case, Kermit was not able to get its console modes when
  1385. it started up, so concb() was not able to modify them for "cbreak" mode.
  1386. Solution: If concb() is called when the original console modes are not yet
  1387. available, AND we know we are not in the background, then try to get the
  1388. console modes before giving up.  concb(), ckutio.c 5A(124), 30 Jan 94.
  1389.  
  1390. Added automatic command retry.  If at interactive prompting level, a command
  1391. has a syntax error, the next prompt will include the fields that were correct
  1392. (if any); for example:
  1393.  
  1394.   C-Kermit>set block foo
  1395.   ?No keywords match - foo
  1396.   C-Kermit>set block _
  1397.  
  1398. (where "_" shows the position of the cursor).  ckuus5.c, 30 Jan 94.
  1399.  
  1400. Added command recall.  It is enabled if DCMDBUF is defined, since it makes
  1401. liberal use of malloc().  To recall a command, type Ctrl-P (familiar to EMACS
  1402. users) or Ctrl-B (familiar to VMS users).  Repeatedly doing this moves up in
  1403. the command history buffer, up to the top.  Ctrl-N moves back down.  Effective
  1404. only for interactive-mode commands.  Tested on UNIX, OS/2, VMS -- should work
  1405. everywhere, not system-dependent at all (as it would be, for example, if we
  1406. allowed arrow keys to be used for this purpose!).
  1407. ckucmd.c 5A(054), 30 Jan 94.
  1408.  
  1409. Added SET COMMAND RECALL-BUFFER-SIZE command, to let the user establish the
  1410. size of the rollback buffer.  ckuusr.h, ckuus3.c.  ckuusr.c 5A(120), 30 Jan 94.
  1411.  
  1412. Added SHOW COMMAND to display SET COMMAND items.  ckuus5.c, 30 Jan 94.
  1413.  
  1414. Updated general and specific help texts.  ckuus2.c, ckuus6.c, 30 Jan 94.
  1415.  
  1416. Changed OS/2 CONNECT command to print the error status code if it gets
  1417. an i/o error.  ckotio.c 5A(117), ckocon.c 5A(116), 2 Feb 94.
  1418.  
  1419. Added some parens around "if" conditions in gattr() in ckcfn3.c to force
  1420. the IBM OS/2 C++ compiler to use the right precedence.  2 Feb 94.
  1421.  
  1422. The change to allow Ctrl-P in OS/2 C-Kermit during command parsing
  1423. broke Ctrl-C interruption.  So now we go back to how it was before:
  1424. Ctrl-C works again, Ctrl-P is likely to be ignored (or toggle the printer).
  1425. ckotio.c 5A(118), 3 Feb 94.
  1426.  
  1427. Ric Anderson pointed out a problem with the RENAME command in UNIX and OS/2,
  1428. namely that it would hang forever (until user typed Ctrl-C) if the new name
  1429. was the name of an already-existing directory.  Reason unknown, but the
  1430. solution went approximately like this:
  1431.  
  1432.  1. Change cmofi() (parse output filename) to return 2 if user types the
  1433.     name of an existing directory.  This allows anybody who calls cmofi()
  1434.     to decide whether to handle directory-changing, or just diagnose an error.
  1435.     ckucmd.c 5A(055) 5 Feb 94.
  1436.  
  1437.  2. Changed zrename(old,new) to "do the right thing" if the second argument
  1438.     is the name of an existing directory, i.e. move the old file into it.
  1439.     Also changed zchko(name) to fail if given the name of an existing
  1440.     directory.  ckufio.c 5A(083) 5 Feb 94.
  1441.  
  1442. This also allowed simple checking in the higher-level command-parsing routines
  1443. for when users gave a directory name when an output file name was required,
  1444. e.g. in the various LOG commands, etc.
  1445.  
  1446. Applied patches to IBM OS/2 C/C++ compiler, bringing it up to Service Level
  1447. CT00006.  Hard to say yet what good this did, but it did not fix the Ctrl-C
  1448. during DIAL problem (at least not for me).
  1449.  
  1450. OS/2 C-Kermit's SET FILE COLLISION UPDATE feature was not working very well.
  1451. For example, If I download (say) 45 different files, and then I tell OS/2
  1452. C-Kermit to SET FILE COLLISION UPDATE, and then download the exact same set of
  1453. files (without having touched any of them in the meantime), OS/2 C-Kermit
  1454. failed to reject about 50% of them.  It appears that OS/2 stat(), when asked
  1455. for the file's modification date/time, always returns an even number (which is
  1456. strange, because the OS/2 DIRECTORY command shows odd-numbered seconds).
  1457. Thus, many incoming files will appear to be newer than the OS/2 files that are
  1458. exact copies of them.  So I added OS/2-specific code to zstime() in ckufio.c
  1459. to ignore a one-second difference if the local modification time is an even
  1460. number.  5 Feb 94.
  1461.  
  1462. I finally tracked down what was killing typeahead in the interactive command
  1463. parser: the call to concb() that preceded each command in the main loop of the
  1464. parser() function.  Although concb() does not explicitly clear the keyboard
  1465. input buffer, apparently it does this as a side effect of setting modes.  In
  1466. fact, this call to concb() was unnecessary, since the console is already put
  1467. into cbreak() mode upon entry to the parser() function, and also by popclvl()
  1468. whenever the command stack pops back to top level.  So now typeahead works
  1469. between interactive commands, but it still can't be done while a command
  1470. file or macro is active.  That's because a command file or macro might
  1471. itself request keyboard input, or go into CONNECT mode, or go into protocol
  1472. mode.  ckuusr.c 5A(121), ckuus5.c, 6 Feb 94.
  1473.  
  1474. The DIAL command (dodial() in ckuus6.c) was changed to save the current parity
  1475. (which might have just been picked up from a dialing directory entry) and set
  1476. the parity to NONE before calling the actual DIAL module, ckdial() in ckudia.c,
  1477. and then to restore the parity when after ckdial() returns.  Since ckudia.c
  1478. has its own internal SIGINT trap, this works even if the DIAL command is
  1479. interrupted.  This change should facilitate dialing with the new breed of
  1480. buggy modems that is sensitive to parity, as well as dialing through TCP/IP
  1481. TELNET modem servers.  Lots of testing needed!  ckuus6.c, 6 Feb 94.
  1482.  
  1483. Also, found one place in the ckdial() function where it was returning
  1484. after having set up some signal()s without calling dreset() to put them
  1485. back.  Maybe this explains the crashes when typing Ctrl-C while dialing.
  1486. ckudia.c 5A(053), 6 Feb 94.  (Later: No, it doesn't -- the program still
  1487. crashes consistently on OS/2 if you Ctrl-C a DIAL command that is trying
  1488. to dial a modem that is not turned on.)
  1489.  
  1490. It has bothered me for years that END and RETURN can't serve their normal
  1491. functions when used in the command-list of a FOR, WHILE, or XIF command,
  1492. simply because these three commands are implemented as macros themselves.  Now
  1493. they do work as expected.  A small piece of code was added to each command,
  1494. which, before popping the command stack from the current level (macro or TAKE
  1495. file), looks to see if the currently executing macro (if any) is one of these
  1496. commands, and if so, pops the command stack twice and copies the macro
  1497. arguments up two levels (_putargs), and keeps doing this until it encounters a
  1498. command level in which none of these commands is executing, and therefore
  1499. works correctly with nested XIF/WHILE/FOR commands in any combination.  Tested
  1500. fairly extensively, but obviously more widespread testing is needed.  New
  1501. cketest and ckedemo files created to exercise this feature.  ckuusr.c,
  1502. ckuus6.c, 6 Feb 94.
  1503.  
  1504. Bo Kullmar noticed that two Ctrl-N's were required to get a new command
  1505. when reversing command recall direction.  Actually, the same was true when
  1506. going from down to up (two Ctrl-P's needed).  Fixed, in a rather dumb way,
  1507. in ckucmd.c 5A(056), 6 Feb 94.
  1508.  
  1509. Extended dialing parity business from yesterday to mdmhup() routine, the
  1510. one that escapes back to the modem and gives a modem-specific hangup command.
  1511. ckudia.c 5A(054), 7 Feb 94.
  1512.  
  1513. Updated OS/2 code from Jeff Altman:
  1514.  . SET FILE TYPE LABELED now includes regular (DOS) attributes.
  1515.  . Rexx functions finished up.
  1516.  . Documentation provided.
  1517.  
  1518. Added UNIX makefile entry for Bull DPX/2 BOS/X.  7 Feb 94.
  1519.  
  1520. Fixed "invisible" attribute handling in OS/2 C-Kermit terminal emulator,
  1521. and enabled handling of the (undocumented) DEC VT220 escape sequence,
  1522. CSI 28 m, "turn off invisible selectively", after verifying that this works
  1523. on a real DEC VT320 terminal.  Also, radically simplified handling of the
  1524. invisible attribute and removed lots of complicated code -- Joe Doupnik's
  1525. idea: if we're invisible mode, just write any graphic character as a space.
  1526. ckocon.c 5A(118), 8 Feb 94.
  1527.  
  1528. Added an optional "switch", /QUIETLY, to the CONNECT command, to skip the
  1529. verbose CONNECT message.  ckuusr.h, ckuusr.c 5A(122), ckuus4.c, 8 Feb 94.
  1530.  
  1531. Implemented SET DEBUG SESSION in OS/2 C-Kermit.  Forces TERMINAL WRAP ON.  C0
  1532. control characters are shown as corresponding letters in the underline color,
  1533. e.g. Ctrl-A is shown as underline A.  DEL is shown as underline question mark.
  1534. C1 controls are shown as IBM PC characters from code page columns 8 and 9, but
  1535. in underline color.  All other characters are shown as-is.  TELNET
  1536. negotiations are written out in words, one per screen line (a change from
  1537. before, when they were all run-on).  ckocon.c, ckcnet.h, ckcnet.c 5A(027),
  1538. 8 Feb 94.
  1539.  
  1540. Added SET TERMINAL DEBUG { ON, OFF } as a synonym for SET DEBUG SESSION.
  1541. ckuusr.c, ckuusr.h, ckuus5.c, ckuus7.c, 8 Feb 94.  Also added this to SHOW
  1542. TERMINAL display.
  1543.  
  1544. Added Alt-D to OS/2 C-Kermit's terminal emulator to toggle debugging on and
  1545. off, and added an indication to the status line.  ckocon.c, 8 Feb 94.
  1546.  
  1547. Fixed a bug in the OS/2 C-Kermit terminal emulator, in which it would escape
  1548. back to the prompt if it received an APC sequence, even if APC was OFF.
  1549. ckocon.c, 8 Feb 94.
  1550.  
  1551. Added another keyboard ID to OS/2 C-Kermit's \v(keyboard) list.  ckotio.c
  1552. 5A(121), 8 Feb 94.
  1553.  
  1554. Enabled VT100 and VT220 emulation in OS/2 C-Kermit.  The VT220 emulation is
  1555. not complete, but here's what we have so far:
  1556.  
  1557.  . You can now SET TERMINAL TYPE { VT52, VT100, VT102, VT220 }.
  1558.  . Kermit will identify itself accordingly in response to DECID or DA.
  1559.  . SHOW TERMINAL shows the current terminal type and ID string.
  1560.  . VT100 is exactly like VT102 except no character insert/delete.
  1561.  . 8-bit controls (like CSI = 155) are now accepted, but you must SET TERMINAL
  1562.    BYTESIZE 8 (and, of course, SET PARITY NONE) in order for them to work, and
  1563.    you also must set your terminal character-set to something other than
  1564.    TRANSPARENT or any of the IBM code pages or other sets that put graphic
  1565.    characters in the C1 area.  C1 controls are handled by converting them (in
  1566.    just one place: the rdserwrtscr() routine) to their 7-bit escape-sequence
  1567.    equivalents internally -- thus session logging, debug display, etc, will
  1568.    not reveal them; e.g. CSI shows up as "ESC [".  This was a cheap approach,
  1569.    but it works fine except for the logging.
  1570.  . If SET TERMINAL ANSWERBACK is ON, C-Kermit now includes terminal-type name
  1571.    in the answerback string, e.g. "OS/2 C-Kermit 501190 VT220".
  1572.  . The VT220 extensions added earlier take care of the most common needs
  1573.    of VT220-and-above applications; tests mostly OK with EDIT/TPU (EVE) on
  1574.    VMS, but more work needed to fill in some higher-level escape sequences
  1575.    that are not yet handled: character-set designation & invocation, 
  1576.    many reports, etc.
  1577.  
  1578. ckocon.c, ckuus5.c, ckuus7.c, 8 Feb 94.
  1579.  
  1580. Added nextfat UNIX makefile entry from Ronald C.F. Antony <rcfa@cubiculum.com>;
  1581. generates a NeXTSTEP binary that will run on both Intel and Motorola platforms.
  1582. 14 Feb 94.
  1583.  
  1584. Found and fixed the problem in the OS/2 C-Kermit VT terminal emulator with
  1585. EDT/TPU (EVE): Erase In Display (ED), CSI Pn J, was being handled incorrectly.
  1586. Although the VT terminal manuals don't say it, this sequence sets cleared
  1587. cells to the default attributes, not to the prevailing attributes -- verified
  1588. by experimentation on real VT terminals.  Now EDT/TPU works nicely, even in
  1589. VT220 mode on an 8-bit connection with 8-bit controls.  ckocon.c 5A(119),
  1590. 14 Feb 94.
  1591.  
  1592. A couple minor syntactic corrections to ckcnet.c and ckotio.c.  14 Feb 94.
  1593.  
  1594. Fixed a bad bug noticed by Carlo@sg.tn.tudelft.nl: SET MODEM HAYES (or other),
  1595. SET LINE whatever, HANGUP, before a DIAL command had been given, would crash
  1596. the program (if it was compiled with the DYNAMIC option) because the modem
  1597. response buffer had not been malloc'd yet.  ckudia.c, 15 Feb 94.
  1598.  
  1599. Minor correction to ckuus6.c from Steve Walton -- IF REMOTE parsing code
  1600. needed to be in #ifdef CK_IFRO..#endif.  15 Feb 94.
  1601.  
  1602. Added VT220 DECDSR reports to OS/2 C-Kermit's terminal emulator: printer
  1603. status, keyboard dialect.  Now all VT220 reports are supported except
  1604. DECDSR/UDK ... 15 Feb 94.
  1605.  
  1606. Some minor cleanups -- and LOTS of testing -- of VMS version, especially
  1607. when running under DCL.  15 Feb 94.
  1608.  
  1609. Added DECDSR/UDK report response to OS/2 C-K VT220 emulator -- it always
  1610. replies "UDKs are locked".  16 Feb 94.
  1611.  
  1612. Looked into changing VMS C-Kermit to use SYS$COMMAND rather than SYS$INPUT
  1613. as the designator for the console device.  This would allow DCL command
  1614. procedures to use the CONNECT command even when they did not DEFINE
  1615. SYS$INPUT to be SYS$COMMAND.  However, this prevents the command parser from
  1616. reading from SYS$INPUT, and therefore prevents the use of "image data" in
  1617. DCL command procedures, which would throw most VMS users for a loop.
  1618. Conceivably, we could separate the command input from the CONNECT input, but
  1619. this would require massive recoding.  Deferred.
  1620.  
  1621. Looked into adding user-defined modem hangup strings, similar to SET DIAL
  1622. INIT-STRING, etc.  Not easy, because we have not only the string itself to
  1623. deal with, but also the escape sequence and guard time; thus we would need
  1624. at least 3 or 4 new SET COMMANDS, assuming the Hayes model (pause, +++,
  1625. pause, ATH0 or whatever).  And this doesn't even take into account the
  1626. method to be used for reading the response.  Deferred.  17 Feb 94.
  1627.  
  1628. In view of persistent (and confirmed) reports of C-Kermit crashing on certain
  1629. systems (VMS, OS/2), but not others (UNIX), when DIAL commands fail, or when
  1630. they are interrupted, I ripped out (a) the "failure-within-a-failure" handler
  1631. from ckudia.c, which had nested setjmps, alarms, and signals, and whose
  1632. purpose I really never understood (it's Herm Fischer's code from 10 years
  1633. ago).  I also removed the Microm modem code that did similar things, and
  1634. replaced it with simple, straightforward (input, output) code.  The Microcom
  1635. code crashed consistently on VMS.  ckudia.c 5A(156), 18 Feb 94.  This change
  1636. didn't do any good at all, foo.
  1637.  
  1638. Added SET COMMAND RETRY { ON, OFF }, because one edit 190 previewer complained
  1639. that this feature interfered with DCL wrappers he had written for Kermit,
  1640. which parsed error messages, etc.  ckuus[235].c, 18 Feb 94.
  1641.  
  1642. Fixed command retry to account for variables used in commands, which can
  1643. change size during parsing, thus giving partial or garbage fields in the retry
  1644. prompt.  Problem noticed by Jeff Altman.  ckuus5.c, 19 Feb 94.
  1645.  
  1646. Changed SET KEY to allow inclusion of \K verbs, in the same manner as the
  1647. OUTPUT command allows \B or \L to be included, without losing the backslash.
  1648. Ditto for \{Kverb}.  All \Kverb-related material is enclosed in
  1649. #ifndef NOKVERB..#endif.  ckuus3.c, 19 Feb 94.
  1650.  
  1651. Added keyboard verb handling to OS/2 C-Kermit.  Routine sendcharduplex() split
  1652. into two routines: (1) sendescseq(), used to send DEC special keys, and (2)
  1653. sendkeydef(), used to send user-defined key macros.  sendkeydef() looks for
  1654. \Kverbs (including \K{verbs}) and executes them.  New routine dokverb() does
  1655. the actual execution.  A new header file, ckocon.h, was added to define
  1656. symbols for the keyboard verbs, as well as a table associating the verbs with
  1657. their symbols.  ckocon.[ch] 5A(120), 19 Feb 94.
  1658.  
  1659. Filled in dokverb() with a few easy verbs: \Kbreak, \Kexit, \Klbreak, \Kdump,
  1660. \Knull, \Kreset, \Kignore.  Works fine.  Added DEC F keys, DEC editing keys,
  1661. DEC cursor keys, all other DEC key groups except UDKs, the rest of the Kermit
  1662. action verbs, etc.  Moved a lot of code out of vt100key(); now it's in
  1663. dokverb(), which can be called from various places.
  1664.  
  1665. All functions previously available are still available, but rather than being
  1666. tied to hardwired scan codes, they are tied to \Kverbs.  This means:
  1667.  . You can move them anywhere you want.
  1668.  . You can't "lose" them, as you could before if you mapped something else
  1669.    over a sacred key, and therefore you can redefine sacred keys.
  1670.  . That is, NO keys are sacred; no keys are preempted by Kermit in any
  1671.    way that you can't overcome; you can undefine/redefine any and all keys.
  1672.  . Key mapping files now contain descriptive verbs rather than magic numbers
  1673.    as the definitions.
  1674.  . SHOW KEY shows the \Kverb, rather than obscure numeric cross-reference.
  1675.  
  1676. Furthermore:
  1677.  . The \Kverbs are totally compatible with MS-DOS Kermit (even though
  1678.    the scan codes are not!)
  1679.  . You can combine characters, strings, and \Kverbs arbitrarily in a
  1680.    key definition; e.g. you can put two or more verbs on key, etc.
  1681.  
  1682. Examples (for F1):
  1683.  . set key \315 \161             ; Any single character
  1684.  . set key \315 Any string       ; Any string of ordinary characters
  1685.  . set key \315 { Any string }   ; String with leading & trailing spaces
  1686.  . set key \315 \KupArr          ; Up-Arrow
  1687.  . set key \315 \KupArr\KrtArr   ; Up-Arrow and Right-Arrow
  1688.  . set key \315 abc\{KupArr}xyz  ; "abc", then Up-Arrow, then "xyz"
  1689.  . set key \315 abc\KupArr xyz   ; "abc", then Up-Arrow, then " xyz"
  1690.  . set key \315 \v(time)         ; Time when SET KEY was executed (constant)
  1691.  . set key \315 \\v(time)        ; Time when key is pressed (variable)
  1692.  
  1693. Braces are not required except to resolve ambiguity or to preserve leading
  1694. and/or trailing spaces in the definition.  Note that \\v(name) is a special
  1695. case.  Other backslash quantities cannot have their evaluation postponed by
  1696. "double quoting" in this way; they are simply emitted literally, e.g.
  1697. "set key \315 \\%a" causes F1 to send "\%a".
  1698.  
  1699. User-defined macros are not supported -- the code's there, but it doesn't
  1700. work yet.
  1701.  
  1702. Rollback now works differently.  Previously, you could only look at rolled
  1703. back screens, but you couldn't do any work in them; while rolled back, only
  1704. the rollback keys were operative (except for a horrible hack that let you
  1705. print/dump a rolled-back screen).  You couldn't type any of the special keys,
  1706. like pop-up help, or Alt-x to get back, etc, and you couldn't transmit any
  1707. characters to the host, which was a big pain, because you often want to be
  1708. looking at rolled-back material when typing stuff to the host.  Also,
  1709. arriving characters were not displayed until unrolled all the way down to
  1710. bottom.  Now, all of these restrictions are lifted.
  1711.  
  1712. The following \Kverbs are supported:
  1713.  
  1714.  (About 70 of them; I'll fill this in later; for now, see ckocon.h.)
  1715.  (Basically, there's a verb for every DEC key, like PF4, Gold, Select,
  1716.  F20, arrow keys, keypad keys, etc, and each of these verbs tracks the
  1717.  terminal type, keypad mode, etc, dynamically, just like in MS-DOS Kermit.)
  1718.  (Plus all the Kermit action verbs, like \Kexit, \KupScn, etc...)
  1719.  
  1720. The default key mapping is:
  1721.  
  1722.  Key           Function     Description
  1723.  Scroll Lock   \KholdScrn   Hold Screen
  1724.  Up Arrow      \KupArr      DEC up arrow 
  1725.  ...
  1726.  (I'll fill this in later; for now see macrotabini() in ckocon.c; the
  1727.  default mapping is about the same as before.)
  1728.  
  1729. The major casualty in all this is the status line and the pop-up help screen.
  1730. There is no way of knowing what verbs are mapped to which keys without doing
  1731. an exhaustive search of all keys and looking for substrings, plus some verbs
  1732. might be mapped to more than one key, etc.  Plus even if we do find the key
  1733. that, say, \Kexit is assigned to, we still don't have an easy way to translate
  1734. the scan code into "English", especially given the fact that -- hopefully --
  1735. the scan codes will change to become compatible with MS-DOS Kermit.
  1736.  
  1737. Still to do:
  1738.  
  1739.  . Add \v(rows), \v(columns).
  1740.  . Add compose-key feature.
  1741.  . Implement user-defined keys (UDKs, in the VT220 sense).
  1742.  . Add macro execution (\Kfoo, where foo is a user-defined macro).
  1743.  . Do something about mode-line and alt-help screen; presently these
  1744.    still contain the hardwired Alt-key legends, which will not be true
  1745.    if you change the key assignments.
  1746.  
  1747. And finally (I was hoping to enlist Kai Uwe's help with this one), it would
  1748. be very nice to have OS/2 C-Kermit differentiate among more key combos,
  1749. like Alt-x and Alt-Shift-X, and, in fact, to have its scan codes compatible
  1750. with MS-DOS Kermit's, so the two programs can share key settings files.
  1751.  
  1752. And, finally + 1, to illustrate just the VT220 keyboard setup, there's a
  1753. complete key settings that incorporates all VT220 features (I think):
  1754. it's in ~kermit/test/ckovtk2.ini.
  1755.  
  1756. Corrected SHOW TERM -- it had arrow-key modes reversed.  ckocon.c, 24 Feb 94.
  1757.  
  1758. Fixed OS/2 C-Kermit TELNET terminal-type negotiations to send the name of
  1759. the terminal currently being emulated.  ckcnet.c 5A(028).
  1760.  
  1761. Rearranged the error-handling code in DIAL module, ckudia.c.  Persistent
  1762. reports of crashes during dialing were traced (mostly thanks to hints from
  1763. Mark Berryman) to the fact that the code (inherited from H. Fisher, circa 1985)
  1764. was doing longjmps to places that were not on the call stack.  Apparently,
  1765. most UNIX C compilers go out of their way to accommodate this situation, but
  1766. on OS/2 and VMS we have guaranteed disaster.  To aid in debugging, I also
  1767. added timestamps to certain messages that are shown if DIAL DISPLAY is ON.
  1768. I also cleaned up some of the the other messages and made them more consistent.
  1769. ckudia.c 5A(057), 25 Feb 94.
  1770.  
  1771. Preliminary results look good.  All of these would cause crashes previously
  1772. under VMS and OS/2:
  1773.                                                  OS/2  VMS   UNIX
  1774.   SET MODEM MICROCOM and DIAL                     OK    OK    OK
  1775.   DIAL on a Hayes modem that's turned off         OK    OK    OK
  1776.   DIAL on a Telebit modem that's turned off       OK    OK    OK
  1777.   Ctrl-C before init message                      OK    OK    OK
  1778.   Ctrl-C after init message                       OK    OK    OK
  1779.   Ctrl-C after dialing message                    OK    ??    OK
  1780.  
  1781. One small problem remains: Interrupting VMS C-Kermit DIAL commands repeatedly
  1782. sometimes makes it EXIT (just as though the EXIT command had been given).
  1783.  
  1784. Added code from <carlo@sg.tn.tudelft.nl> to enable high serial speeds for
  1785. Linux.  ckutio.c 5A(125), 26 Feb 94.
  1786.  
  1787. Fixed a bug that caused two consecutive "Up" (Ctrl-P or Ctrl-B) commands,
  1788. when given at the top of the command recall buffer, to crash the program.
  1789. Reported by Marko Teittinen <marko@cs.umd.edu>.  ckucmd.c 5A(057), 26 Feb 94.
  1790.  
  1791. From Carlo Kid at the Technical University of Delft <carlo@sg.tn.tudelft.nl>,
  1792. fixes for the INPUT command.  It spuriously matched the first character of the
  1793. search string except it was also the first character received.  Thus "input 5
  1794. oofa" would not match "sofa" (right) but would match "blah sofa" (wrong).
  1795. Second, when backing up through previously received characters to restart a
  1796. search, it did not always back up to the right place.  ckuus4.c, 26 Feb 94.
  1797.  
  1798. Also from Carlo Kid: a new command, MINPUT - "multiple input".  He supplied
  1799. the code for the actual string matching, as well as command-parsing code,
  1800. etc.  I kept his string-matching code (doinput() routine in ckuus4.c) pretty
  1801. much as-is, but totally rewrote the command parsing.
  1802.  
  1803. Syntax: MINPUT <sec> [ string1 [, string2 [, string2 [, ... ] ] ] ]
  1804.  
  1805. Works just like the INPUT command, except more than one search string is
  1806. allowed.  Strings are separated by commas.  If any of the search strings is
  1807. encountered within the timeout interval, the command succeeds and the
  1808. \v(minput) variable is set to the number of the string that was found: 1, 2,
  1809. 3, etc.  If none of the search strings is found, the command times out,
  1810. fails, and \v(minput) is set to 0.  All SET INPUT parameters apply - CASE,
  1811. etc.  Example:
  1812.  
  1813.   minput 30 Login:, Username:, Ready
  1814.   if success goto LBL\v(minput)
  1815.   end 1 Prompt didn't arrive.
  1816.  
  1817. Looks for any of the three strings "Login:", "Username:", or "Ready" and
  1818. then goes to one of the labels "LBL1", "LBL2", or "LBL3", depending on which
  1819. string was matched.
  1820.  
  1821. To include a comma in a string, enclose it in { braces }, or quote the comma
  1822. with two (yes, two) backslashes:
  1823.  
  1824.   minput 20 {a,b}, c
  1825.   minput 20 a\\,b, c
  1826.  
  1827. Both of these commands search for either "a,b" or "c".
  1828.  
  1829. As in the regular INPUT and REINPUT commands, leading and trailing spaces are
  1830. stripped from each search string unless it is enclosed in { braces }.
  1831. Example:
  1832.  
  1833.   minput 20 {  abc  }, {{ def }},    ghi
  1834.  
  1835. searches for "  abc  ", "{ def }", or "ghi".
  1836.  
  1837. This feature is included in C-Kermit if (a) NOMINPUT is not defined,
  1838. and (b) NOSPL is not defined.  So by default, all versions that include the
  1839. script programming language get the MINPUT command.
  1840. ckuusr.c 5A(125), 26 Feb 94; ckuusr.h, ckuus2.c, ckuus4.c.
  1841.  
  1842. Added zmkdir() for VMS, contributed by Mark Berryman of SAIC
  1843. <Mark.Berryman@Mvb.Saic.Com>.  Defined CK_MKDIR for VMS, thus enabling all
  1844. of the directory-creation code.  ckcdeb.h, ckvfio.c 2.0-107, 26 Feb 94.
  1845.  
  1846. Installed another new LIBCMU from Mike O'Malley.  26 Feb 94.
  1847.  
  1848. Changed OS/2 INSTALL.CMD (CKOINS.CMD) to use CKOVTK2.INI rather than
  1849. CKOVTK.INI.  Updated OS/2 READ.ME (CKOAAA.DSK) file.  27 Feb 94.
  1850.  
  1851. Found and plugged a tiny (1-byte) memory leak in the INPUT command.
  1852. ckuus4.c, 27 Feb 94.
  1853.  
  1854. In OS/2 C-Kermit, changed default VT cursor key mode to be "normal" (cursor)
  1855. rather than "application", and default keypad mode to be "numeric" rather than
  1856. "application", in accordance with power-up state of real DEC terminals.
  1857. ckocon.c 5A(121), ckuus5.c, ckuus7.c, 27 Feb 94.
  1858.  
  1859. Added a call to setcursormode() to doreset() in ckocon.c.  This fixes the
  1860. screen if it goes into all-blinking mode, which can happen if you have a
  1861. high-intensity background color and Alt-Esc back to the workplace shell,
  1862. and then resume Kermit.  Now Alt-= (\Kreset) stops the blinking.  ckocon.c,
  1863. 27 Feb 94.
  1864.  
  1865. Fixed OS/2 C-K's treatment of "Linefeed/Newline Mode".  On a real terminal,
  1866. this is controlled by the host via CSI 20 h/l (h = set, l = reset).  This
  1867. sequence (LNM) affects both sending (when set, Return and Enter send CRLF) and
  1868. receiving (when set, LF, FF, VT are displayed as CRLF).  But Kermit can
  1869. control the sending and receiving aspects separately via SET TERMINAL
  1870. NEWLINE-MODE and SET TERMINAL CR-DISPLAY.  ckocon.c previously used one
  1871. variable (linemode) for LNM, and two others (tlnm and tt_crd) for the
  1872. commands, somewhat inconsistently.  Now the linemode variable is eliminated
  1873. and the tlnm and tt_crd variables are set and reset appropriately by both
  1874. the LNM sequences and the Kermit commands, and used appropriately during
  1875. sending and receiving.  ckocon.c, 27 Feb 94.
  1876.  
  1877. Added SET KEY CLEAR to restore default key mappings.  ckuus3.c, 27 Feb 94.
  1878.  
  1879. Implemented DECTCEM, cursor enable/disable, in OS/2 C-K VT emulator.  Added
  1880. cursor-enable and newcursor() calls to doreset().  ckocon.c, 27 Feb 94.
  1881.  
  1882. Implemented DECPFF, print form feed mode, in OS/2 C-K VT emulator.  Only
  1883. affects host-generated print-screen operations, not user-initiated ones.
  1884. ckocon.c, 27 Feb 94.
  1885.  
  1886. Added a new \Kverb, \KprintFF, to send a formfeed to the printer.
  1887. ckocon.[ch], 27 Feb 94.
  1888.  
  1889. Cleaned up OS/2 C-Kermit's scrollback a bit; it seems less confus(ed/ing) now.
  1890.  
  1891. Since we now have NO IDEA of \Kverb assignments, I removed references to
  1892. Alt keys from the Status Line, and replaced them by escape-character notation
  1893. (e.g. "Return: ^]C  Help: ^]?").  I also removed the "Alt-Help" screen,
  1894. because it's useless now that all Alt functions can be moved, combined with
  1895. other functions, etc, plus the fact that there is no good way to translate
  1896. a scan code into a key name (even if the bits are consistent, we still have
  1897. national keyboards to contend with).  Finally, I made the \Khelp verb
  1898. invoke the regular Escape-Character help screen.  ckocon.c, 27 Feb 94.
  1899.  
  1900. Added SHOW KVERBS command to list the available \Kverbs; operative only in
  1901. OS/2.  Wrote a nice routine to display them, that arranges them on the screen
  1902. in columns dynamically according to the screen dimensions and the width of the
  1903. widest keyword (this can be adapted later to other SHOW commands, and maybe
  1904. also to "?" menus).  ckuus5.c, 27 Feb 94.
  1905.  
  1906. Made new kwdhelp() routine, show \Kverbs and \Functions() with it.
  1907.  
  1908. It was bothering me that if you SET EXIT WARNING ON in OS/2 C-Kermit, that
  1909. it thought a TCP/IP connection was still open after it had been closed by
  1910. the other side (e.g. when you log out).  It also annoyed me that if you try
  1911. to CONNECT again, it pops you right back to command mode.  Both of these
  1912. problems were because the TCPIPLIB code in ckcnet.c was not closing the
  1913. connection from its own side and setting ttyfd to -1 when it got an i/o error.
  1914. Now fixed.  28 Feb 94.
  1915.  
  1916. Fixed the problems with OS/2 C-Kermit screen rollback.  ckocon.c 5A(122),
  1917. 28 Feb 94.
  1918.  
  1919. Anna Tomecka <anna@vax.clarku.edu> noticed that SET QUIET ON didn't work
  1920. for C-Kermit's CONNECT messages any more (because of the new /QUIETLY switch).
  1921. Fixed in ckuus4.c, 2 Mar 94.
  1922.  
  1923. My previous interpretation of \Kprtscn was wrong.  In MS-DOS Kermit, it
  1924. toggles screen-printing on and off, so I made it that way in OS/2 C-Kermit
  1925. too.  \Kdump copies the current screen to the printer (or file).  Also, I
  1926. added a PRINTER ON indication to the status line.  ckocon.c 5A(123), 2 Mar 94.
  1927.  
  1928. Since it will be relatively rare for people to assign \Kverbs to keys in
  1929. combination with other characters, strings, or \Kverbs, I made a special case
  1930. for when a single \Kverb, and nothing else, is assigned to a key.  In this
  1931. case, the \Kverb is preinterpreted and its numeric index is stored in the
  1932. keymap[], indicated by setting a special bit.  When the user hits that key,
  1933. there is no need to toodle through the string looking for \Kverbs, and then
  1934. look them up to get their indices -- we just go execute the \Kverb directly
  1935. and immediately: dokverb(index), no lookups needed.  Changed the default
  1936. keymap to be preloaded with \Kverb indices rather than strings; got rid of
  1937. macrotabinit() routine, moved all key initializations to keymapinit(), moved
  1938. keymapinit() to ckocon.c, where it belongs.  Changed SHOW KEY to account for
  1939. the \Kverb indices.  ckuus3.c, ckotio.c, ckocon.c, 2 Mar 94.
  1940.  
  1941. This change lets us easily find out which functions are assigned to which
  1942. keys, which once again lets us give accurate help -- at least for US
  1943. keyboards.  Added an array of key names, indexed by scan code.  Added a lookup
  1944. through the keymap for the \Kexit and \Khelp codes, and if found to display
  1945. the corresponding key name.  2 Mar 94.
  1946.  
  1947. Created a structure of Very Important Keys (VIKs), whose names are needed
  1948. in the status line or popup help screens, which is filled in each
  1949. time the CONNECT command is entered, eliminating all key lookups during the
  1950. CONNECT session.  ckocon.c, 3 Mar 94.
  1951.  
  1952. Used the VIK structure to fill in all key references in the status line,
  1953. including the special rolled-back screen status line.  ckocon.c, 3 Mar 94.
  1954.  
  1955. Restored the \Khelp popup screen.  Now it lists everything that Alt-? used
  1956. to list before, but with the correct key legends in case the assignments
  1957. changed, and with functions omitted that are not assigned to any keys.
  1958. If a function is assigned to more than one key, only the first (lowest scan
  1959. code) key is listed.  ckocon.c, 3 Mar 94.
  1960.  
  1961. Added SET TERMINAL ROLL { ON, OFF } as in MS-DOS Kermit.  This controls what
  1962. happens when screens are rolled back.  OFF (the default) means a rolled-back
  1963. screen is treated just like a normal screen: you can communicate with the host
  1964. without affecting the rollback status -- this allows you to send characters
  1965. while viewing a rolled-back screen, and allows arriving characters to be
  1966. displayed on the "old" screen.  ON restores the earlier behavior, in which you
  1967. are constrained to typing only rollback keys while the screen is rolled back;
  1968. no characters are sent to the host, and newly arrived characters are displayed
  1969. only after rolling forward to the bottom of the rollback buffer, i.e. to the
  1970. current screen.  ckuusr.h, ckuus[357].c, ckocon.c, 3 Mar 94.
  1971.  
  1972. The \KprtScn was acting just like host-directed transparent print, i.e.
  1973. sending all received characters to the printer *instead* of to the screen.
  1974. This was a little surprising, so I added a flag to distinguish between host-
  1975. directed printing and user-directed printing.  ckocon.c, 3 Mar 94.
  1976.  
  1977. It seems there was a large installation that was using C-Kermit 5A(165) or
  1978. thereabouts, which had deployed thousands of MS-DOS Kermit scripts that looked
  1979. for strings in the old server message, which changed in 5A(183), August 1992.
  1980. They could not upgrade to the current release without visiting numerous sites
  1981. and installing new script programs.  So I added an OLDMSG compilation option.
  1982. ckcmai.c, 3 Mar 94.
  1983.  
  1984. In OS/2 C-Kermit, HANGUP did not do anything on network connections.
  1985. Fixed in tthang(), ckotio.c 5A(123), 4 Mar 94.
  1986.  
  1987. Added to OS/2 C-K pop-up \Khelp screen: printer toggle, screen forwards, push
  1988. to OS/2, print formfeed.  Changed default mappings so that their key names are
  1989. reasonably portable among all national systems/keyboards/versions.  Help is
  1990. now Alt-Tab rather than Alt-?, Reset is now Alt-R rather than Alt-= (but Alt-=
  1991. is kept active too for compatibility), and flip screen is moved from Alt-R
  1992. to Alt-V (for Video).  ckocon.c 5A(125), 4 Mar 94.
  1993.  
  1994. Enabled \Kdump (print/dump screen) during rollback, again, even when
  1995. TERMINAL ROLL is ON.  ckocon.c, 4 Mar 94.
  1996.  
  1997. Made a new popup help screen for rolled-back screens.  Made popup help box
  1998. use its own screen buffer, so it would work with rolled-back screens too.
  1999. Made popup help save and restore status line; previously the rollback status
  2000. line was wiped out after a help box.  ckocon.c, 4 Mar 94.
  2001.  
  2002. Cleaned up the cursor on/off routines in OS/2 C-Kermit a bit -- it turned out
  2003. you couldn't call the cursor-on routine if the cursor was already on, you'd
  2004. lose the cursor, or turn it into some weird blob.  Made these routines protect
  2005. themselves against this.  So now it's harder to make the cursor disappear.
  2006. Also, made "reset terminal" turn the cursor back on if it was off.
  2007. ckocon.c, 4 Mar 94.
  2008.  
  2009. Fixed bug in parsing SET TERMINAL DEBUG and ROLL in which the command-editing
  2010. keys didn't work right.  ckuus7.c, 4 Mar 94.
  2011.  
  2012. Added two new variables: \v(rows), \v(cols) -- console screen rows and columns.
  2013. ckuus4.c, 4 Mar 94.
  2014.  
  2015. Fixed SHOW VARIABLES -- it had stopped pausing after a screenful.
  2016. ckuus5.c, 4 Mar 94.
  2017.  
  2018. Added support for CK_REDIR (REDIRECT command) for NeXTSTEP, from Dave Johnson
  2019. <ddj@gradient.com>.  ckcdeb.h, ckutio.c 5A(126), 6 Mar 94.
  2020.  
  2021. phaniraj@badlands.NoDak.edu (V. Phaniraj) noticed that SET TERMINAL
  2022. { ARROW-KEYS, KEYPAD } { ON, OFF } was working backwards.  Fixed in ckuus7.c,
  2023. 6 Mar 94.
  2024.  
  2025. Fixed an error in ckuus5.c in which tt_rows and cmd_rows, etc, were
  2026. referenced but not declared if CK_NAWS was not defined, reported by many.
  2027. 6 Mar 94.
  2028.  
  2029. Backed off on enabling REDIRECT for NeXT -- it broke a lot of NeXT
  2030. compilations.  ckcdeb.h, ckutio.c, 6 Mar 94.
  2031.  
  2032. Changed OS/2 default key map again.  Alt-Tab was a bad choice -- in a windowed
  2033. session, it moves the window to the background.  So now Alt-h is Help, Alt-u
  2034. is Hangup.  ckocon.c 5A(126), 7 Mar 94.
  2035.  
  2036. Made VT220 the default emulation for OS/2, since it is, after all, a superset
  2037. of VT102 and VT100.  ckocon.c 5A(126), 7 Mar 94.
  2038.  
  2039. Changed OS/2 emulator's response to color-setting escape sequences, CSI 3x;4xm,
  2040. to reverse the fore/background sense if the screen is in reverse video mode
  2041. (DECSNM).  ckocon.c 5A(126), 7 Mar 94.
  2042.  
  2043. Corrected REDIRECT code for NeXT -- I had messed up Dave Johnson's changes the
  2044. first time.  ckutio.c, 7 Mar 94.
  2045.  
  2046. Marko Teittinen (marko@cs.umd.edu) noticed that SET KEY \blah \27b was
  2047. erroneously misinterpreted as \Kbreak.  Fixed in ckuus3.c and ckucmd.c by
  2048. adding a new xlookup() function, requires exact match, and by fixing a couple
  2049. out-of-order entries in the keyboard verb table in ckocon.h.  7 Mar 94.
  2050.  
  2051. Marko also reported the following: "I have noticed that when the normal mode
  2052. background is low intensity color (for example lgray), underline attribute
  2053. background doesn't display high intensity.  My preferred color settings are
  2054. (these worked for 189):
  2055.  
  2056.   set term color normal black lgray
  2057.   set term color under black white
  2058.   set term color status white blue
  2059.  
  2060. (end quote)".  I said this was because the background intensity was reserved
  2061. to indicate blinking.  Marko persisted: "I would still argue that both high
  2062. and low intensity backgrounds should be allowed.  There could be a warning in
  2063. the doc files, that blinking may pass unnoticed on the screen, if mixed
  2064. backgrounds are used, but please don't make me lose my favorite feature in
  2065. C-Kermit.  I've never seen blinking color attributes except in some animated
  2066. text files, but I'm willing to lose those for good underline highlighting.  I
  2067. want to have black text color, and all low intensity backgrounds (except light
  2068. gray) are terrible.  Then again the bright white background is too bright to
  2069. use for the whole window (=hurts my eyes).  Using high intensity backgrounds
  2070. I'm able to get highlight marker effect for the special attributes."  This
  2071. seems quite reasonable, so I made the suggested change.  ckocon.c, 7 Mar 94.
  2072.  
  2073. Added \Kignore for Num Lock to the default key map, to prevent the Num Lock
  2074. key from beeping.  ckocon.c, 7 Mar 94.
  2075.  
  2076. Added new verbs \Ktn_ip (send TELNET Interrupt Process) and \Ktn_ayt (send
  2077. TELNET Are You There).  By default, they are not assigned to any keys.
  2078. ckocon.[ch], 7 Mar 94.
  2079.  
  2080. Ric Anderson noticed that OS/2 C-Kermit would crash if you Ctrl-C'd the file
  2081. transfer display screen.  Sure enough, an alarm was left active that should
  2082. have been turned off.  This happened not only in the OS/2 version, but also
  2083. the VMS version.  Fixed in trap(), ckuusx.c.  8 Mar 94.
  2084.  
  2085. Ric Anderson also noticed that 0x80 (NUL with 8th bit on), received by
  2086. OS/2 C-Kermit's terminal emulator, was treated as CSI (ESC [).  In fact, it
  2087. turns out that *any* C1 control was treated as CSI because two statements
  2088. were transposed.  This is now fixed too.  ckocon.c 5A(127) 8 Mar 94.
  2089.  
  2090. Jim Reisert <reisert@wrksys.enet.dec.com> noticed a case where clear-to-end-
  2091. of-line was "leaking attributes" (while running DEC Notes on VMS).  Several
  2092. of the clearing functions were indeed filling the cleared area with the
  2093. current video attribute rather than the default attribute.  Fixed in ckocon.c
  2094. 5A(128), 9 Mar 94.
  2095.  
  2096. Changed OS/2 C-Kermit's session debugging facility to show 8-bit C1 characters
  2097. literally, rather than as ESC blah, to aid in debugging of 8-bit VMS sessions.
  2098. ckocon.c, 9 Mar 94.
  2099.  
  2100. Fixed the bug in which the TELNET lead-in character (255) would sometimes be
  2101. shown on the terminal emulation screen (often as y-diaeresis).  And conversely,
  2102. the one in which a quoted IAC (255) would *not* be shown on the terminal
  2103. screen.  ckocon.c, ckucon.c 5A(060), ckvcon.c 5A(033), ckdcon.c 5A(045),
  2104. cklcon.c 5A(002), 9 Mar 94.
  2105.  
  2106. I seem to have fixed the problem of the cursor being in the wrong place after
  2107. escaping back to the OS/2 command screen.  I'm not sure how I did it, but I
  2108. can't make it happen any more.  ckocon.c, 9 Mar 94.
  2109.  
  2110. Fixed a subtle bug in the command parser, in which a temporary program
  2111. prompt would be forgotten if the user typed ? to get help, if the
  2112. prompt-setting call did not include a pointer to an evaluation function.
  2113. ckucmd.c 5A(057), 9 Mar 94.
  2114.  
  2115. Enabled \Kxxxx, where xxxx is a macro name.  ckuus3.c, ckuusr.c 5A(125),
  2116. ckocon.c, 9 Mar 94.  Example:
  2117.  
  2118.   define download receive, connect
  2119.   set key \417 \Kdownload
  2120.  
  2121. This puts the act of receiving a file from a remote Kermit that has already
  2122. been told to send it on a "hot key", in this case Alt-Page-Down on the PC.
  2123. C-Kermit will not automatically reenter terminal emulation upon completion of
  2124. the macro unless the macro includes a CONNECT command, as in the example
  2125. above.
  2126.  
  2127. Enabled SET KEY commands to be given on separate lines, as in MS-DOS Kermit.
  2128. SET KEY <return> now prompts you press a key or key combo, so you don't have
  2129. to know the scan code.  Then it shows you the current definition and prompts
  2130. you for a new one.  ckuus3.c, 9 Mar 94.
  2131.  
  2132. In OS/2 C-Kermit, added a 5-second write timeout to reduce the amount of
  2133. popping back to command mode that happens when the user types something but
  2134. CTS is not being asserted by the DCE.  Doesn't seem to make a lot of
  2135. difference.  ckotio.c, 9 Mar 94. 
  2136.  
  2137. Changed CKERMIT.CMD to use arg(1) rather than %1 %2 ... %9 to pass arguments
  2138. to OS/2 C-Kermit, suggested by Drew Derbyshire <kermit@kew.com>.  10 Mar 94.
  2139.  
  2140. Replaced the white-background OS/2 C-Kermit icon with a transparent-background
  2141. one, from Hugo Jimenez <jimenez@gaus90.chem.yale.edu>.  10 Mar 94.
  2142.  
  2143. Installed a patch from Mike Freeman <mikef@pacifier.rain.com> to enable
  2144. Ctrl-A status reports even when FILE DISPLAY is NONE.  ckuusx.c, 10 Mar 94.
  2145.  
  2146. Fixed the bug with the cursor being restored to the wrong position (sometimes)
  2147. when escaping back to the OS/2 C-Kermit prompt from CONNECT mode.  The problem
  2148. was introduced when I implemented the VT220 DECTCEM (cursor enable/disable)
  2149. feature (27 Feb 94), I used the cursoron flag to indicate whether the cursor
  2150. was enabled or disabled (makes sense, right?).  When the CONNECT command
  2151. exits, it calls restorescreen(&commandscreen), which restores the saved
  2152. command screen.  restorescreen() then calls lgotoxy() to put the cursor in the
  2153. saved place.  But lgotoxy() doesn't do anything unless cursoron != 0.  Well,
  2154. cursoron would be zero if characters were arriving at the time we escaped back
  2155. (because we gain screen-painting speed by turning off the cursor whenever more
  2156. than 20 characters are waiting to be read).  It can also be off if the screen
  2157. is rolled back, etc.  The obvious solution would have been to simply set
  2158. cursoron to 1 before restoring the command screen, but that would break the
  2159. DECTCEM feature.  So now we save the cursoron value, set cursoron to 1, call
  2160. restorescreen(), and then restore the cursoron value before returning from
  2161. CONNECT mode.  ckocon.c 5A(129), 10 Mar 94.
  2162.  
  2163. OS/2 C-Kermit's DEC keypad verbs were badly fractured.  SET TERMINAL KEYPAD
  2164. NUMERIC and APPLICATION were backwards, but the corresponding escape sequences
  2165. were not.  Furthermore, much of the \Kverb-interpreting code was backwards too
  2166. (thus compensating for the first mistake...).  Thanks to Jim Reisert for
  2167. persistent reports about this.  Fixed in ckocon.c 5A(129), 10 Mar 94.
  2168.  
  2169. Added default assignments for DEC keypad minus, period, comma, and Enter, to
  2170. the corresponding main keypad Alt combinations.  Also made default assignments
  2171. for screen scroll and arrow keys to the appropriate numeric keypad keys when
  2172. Num Lock is Off.  ckocon.c, ckcker.upd, 10 Mar 94.
  2173.  
  2174. Fixed SHOW KEY command not to say "Undefined" when a key is defined.
  2175. ckuus5.c, 10 Mar 94.
  2176.  
  2177. Added support for VT220 S7C1T and S8C1T escape sequences for selecting 7
  2178. and 8-bit transmission of DEC keys (ESC [ vs CSI, etc).  ckocon.c, 10 Mar 94.
  2179.  
  2180. Added an ANSI terminal type to OS/2 C-Kermit.  This involved adding support
  2181. for some escape sequences used by ANSI.SYS that are not in the VT100++
  2182. repertoire, plus forcing white on black coloration, character-set
  2183. transparency, and no chopping of 8th bits, and restoring all of that if the
  2184. user sets the terminal type to something else after using ANSI.  ckuusr.h,
  2185. ckuusr.c 5A(126), ckuus7.c, ckocon.c 5A(130), 11 Mar 94.
  2186.  
  2187. Added SET TERMINAL TYPE NONE to OS/2 C-Kermit.  The idea was to let the
  2188. console driver handle the screen.  Theoretically, this would allow
  2189. substitution of different emulations by installing different console drivers,
  2190. and might also allow "pass-through" types of connections (dial up OS/2, run
  2191. C-Kermit, dial out from C-Kermit to someplace else).  ckuus7.c, ckocon.c, 11
  2192. Mar 94.  But it didn't work, at least not as intended -- the console driver
  2193. seems to have its ANSI features disabled.  Control characters are handled
  2194. OK, but escape sequences are simply printed.  (Turns out this could be fixed
  2195. by using different "write" calls, but it's not worth it.)
  2196.  
  2197. Joel Seiferas <joel@cs.rochester.edu> reported that reading news on UNIX
  2198. produced "striped" screens when OS/2 C-Kermit's screen was in reverse video
  2199. mode (\Kflipscrn).  Sure enough.  Fixed in ckocon.c 5A(130), 11 Mar 94.
  2200.  
  2201. Removed SET TERMINAL TYPE NONE from OS/2 C-Kermit.  It doesn't do anything, so
  2202. there's no point.  ckuus3.c, 12 Mar 94.
  2203.  
  2204. Changed all sets and tests of tt_keypad and tt_arrow to reference symbolic
  2205. values for clarity: TTK_NORM means normal (numeric or cursor) mode; TTK_APPL
  2206. means application mode.  These have tricked me too many times, no more!
  2207. ckuusr.h, ckocon.c, ckuus3.c, 12 Mar 94.
  2208.  
  2209. Fixed "more"-prompting in SHOW VARIABLES to account for the length of the
  2210. \v(input) string, and also improved the display to show control chars
  2211. symbolically.  ckuus5.c, 12 Mar 94.
  2212.  
  2213. Added dummy code to set the code page from Kai Uwe -- it doesn't do anything,
  2214. since when he tried to use it, it crashed; also, the call to set the code
  2215. page is no longer documented in OS/2 2.x.  ckotio.c, 12 Mar 94.
  2216.  
  2217. Added code to OS/2 C-K from Kai Uwe Rommel to make RTS/CTS work during CONNECT
  2218. mode.  When transmission is blocked due to lack of CTS, an asterisk appears in
  2219. the status line on the name of the COM port, e.g. "*COM1".
  2220. ckocon.c, 12 Mar 94.
  2221.  
  2222. Added SET TERMINAL CTS-TIMEOUT to let user specify the longest CTS blockage
  2223. to tolerate during CONNECT mode.  ckuusr.h, ckuus7.c, ckuus2.c, 12 Mar 94.
  2224.  
  2225. Fixed SHOW TERMINAL to include CURSOR and CTS-TIMEOUT.  This involved some
  2226. rearranging of the screen, since it was already full.  You still can't find
  2227. out what the terminal colors are set to -- not only do we lack the screen
  2228. real estate, but we don't really know -- they are not simple variables that
  2229. "stay put" when we set them -- they also have attribute bits that change,
  2230. they get reversed, etc etc.  ckuus5.c, 12 Mar 94.
  2231.  
  2232. Compose-key support for OS/2 C-Kermit.  Keyboard verb \Kcompose enabled, can
  2233. be assigned to any key.  Compose sequences are roughly those used by DEC VT220
  2234. and higher for Latin-1.  No support for Latin-2, Cyrillic, Hebrew, etc.  Made
  2235. a special status line while a compose sequence is going on, and made a special
  2236. popup help screen too.  ckocon.[ch], 12 Mar 94.
  2237.  
  2238. Minor cosmetic improvements to the Alt-H popup help screen.
  2239. ckocon.c, 12 Mar 94.
  2240.  
  2241. Changed OS/2 C-Kermit's CONNECT-mode character-sending function to beep and
  2242. discard characters entered while in its transmission-failure retry loop.
  2243. This prevents typeahead from being passed along to the command prompt when the
  2244. retry timer expires and CONNECT mode is broken, with possibly disastrous
  2245. results; suggested by Ric Anderson.  ckocon.c 5A(132), 13 Mar 94.
  2246.  
  2247. When transmission is blocked, instead of putting a cryptic "*" in the status
  2248. line, now we write a new status line saying "TRANSMISSION BLOCKED: x", where
  2249. x is the countdown timer.  Fun to watch, and informative too!
  2250. ckocon.c 5A(132), 13 Mar 94.
  2251.  
  2252. Changed SET TERMINAL CTS-TIMEOUT to SET TERMINAL TRANSMIT-TIMEOUT -- easier
  2253. for most people to understand, and it might also apply to other situations.
  2254. ckuus[257].c, 13 Mar 94.
  2255.  
  2256. There were major problems with the OS/2 C-Kermit CONNECT-mode status line.
  2257. With all the recent additions to the program, the status line was being used
  2258. for lots of things in addition to its normal purpose (to show emulation, how
  2259. to get help, how to escape back, the comm device, etc): rollback status,
  2260. Compose-key minibuffer, how to make a popup help screen go away, debug mode,
  2261. printer active, transmission blocked, etc etc.  Some of these conditions could
  2262. occur while others were active: for example, after rolling back some screens,
  2263. you might start a compose sequence, and then request popup help -- at this
  2264. point, the status line is pushed three levels deep.  But till now, there was
  2265. no stack to push the status lines onto.  Now we have a stack that will hold up
  2266. to ten levels of status lines, including their separate parts (usertext,
  2267. helptext, exittext, etc), so that massive amounts of recoding were not
  2268. necessary to get this working fairly well.  ckocon.c 5A(132), 13 Mar 94.
  2269.  
  2270. Fixed a bug in OS/2 C-Kermit VT emulation: ESC [ 2 J clears the whole
  2271. screen but does NOT move the cursor.  In ANSI emulation, however, ESC [ 2 J
  2272. also homes the cursor (ref: DOS 5.0 manual, ANSI.SYS description; DEC VT 220
  2273. Programmers Manual).  ckocon.c 5A(133), 14 Mar 94.
  2274.  
  2275. Added a WINNT symbol for Windows-NT-specific features, in preparation for a
  2276. Windows NT version, which, presumably, will follow the OS/2 32-bit path.
  2277. ckcdeb.h, ckuver.h, 24 Mar 94.
  2278.  
  2279. A few minor corrections to the makefile for Solaris 2.3 builds with gcc and
  2280. SunPro cc, plus some minor tweaks to ckuus3.c, ckuus6.c, ckcfn2.c, in which
  2281. variables named partab conflicted with Solaris library functions.  Added two
  2282. new makefile options for Solaris 2.x, which should be the preferred, normal
  2283. ones from now on: solaris2x (for use with SunPro C) and solaris2xg (for GCC).
  2284. 25 Mar 94.
  2285.  
  2286. Changed the way the UNIX man page is produced.  Instead of one man-page fits
  2287. all, the man page is now generated automatically as part of the C-Kermit build
  2288. procedure, based on the CFLAGS used at compile time.  The "source code" for
  2289. the man page is now called ckuker.cpp.  It is run through the C preprocessor
  2290. with the same CFLAGS as used for compiling C-Kermit.  It contains #ifdef's
  2291. just like C-Kermit source code.  An output file, ckuker.nr, is produced that
  2292. is suitable for use as input to "nroff -man", i.e. as a UNIX man page.
  2293. Requires cc -E and grep.  The man page itself contains very little in the way
  2294. of #ifdefs (for now, only a small amount of special wording for HP-UX 10.0 and
  2295. SunOS/Solaris), but the way is now clear to add them liberally -- for example,
  2296. to remove references to TCP/IP if TCPSOCKET is not defined, etc.
  2297. ckuker.cpp, makefile, 25 Mar 94.
  2298.  
  2299. Backed off on automatic man page generation.  Turns out the cc -E method is
  2300. not portable.  The first system I tried it on outside of SunOS 4.1.x choked
  2301. on it.  Man pages are now generated by hand.  To produce the default general-
  2302. purpose man page:
  2303.  
  2304.   make manpage
  2305.  
  2306. To make a custom man page:
  2307.  
  2308.   make CFLAGS=-DHPUX100 manpage
  2309.  
  2310. 26 Mar 94.
  2311.  
  2312. Installed an HPFS partition and a "real printer" on my OS/2 system so I can
  2313. exercise more of OS/2 C-K's features.
  2314.  
  2315. From Kai Uwe Rommel, new OS/2 C-Kermit scan codes for Tab (to distinguish
  2316. from Ctrl-I) and Shift-Esc.  ckocon.c 5A(134), ckotio.c 5A(124), 26 Mar 94.
  2317.  
  2318. From Kai Uwe Rommel, OS/2 C-Kermit code to get and set the title bar text,
  2319. not used, saved for future reference under #ifdef CK_SETTITLE.  ckotio.c,
  2320. 26 Mar 94.  Kai Uwe's comments:
  2321.  
  2322.   There is an undocumented system call for this purpose. I have added
  2323.   two functions to ckotio.c for this purpose, as well as code to
  2324.   save/restore the original session title. I have not yet added code
  2325.   where to call it since we should first think a bit over where it may
  2326.   make sense to change the title. 
  2327.  
  2328.   Unfortunately, as I said, the call is undocumented, although it is
  2329.   used by CMD.EXE itself to control the title bar of sessions. I would
  2330.   therefore like it if that code were not in the distributed executables
  2331.   but only available for those who want to recompile themselves. I have
  2332.   added a symbol CK_SETTITLE for this purpose. The call does also
  2333.   require a definition for the system loader where to find it. That can
  2334.   be provided by
  2335.  
  2336.       IMPLIB SESMGR.LIB C:\OS2\DLL\SESMGR.DLL
  2337.  
  2338.   And linking C-Kermit with that library.
  2339.  
  2340.   The opposite call, to determine the current title, is documented but
  2341.   only for PM applications. It happens to work for text mode programs
  2342.   too, but that is to be considered "undocumented" too.  Only PM
  2343.   applications have real control over their title bar. What is better
  2344.   documented possible is to change the value of the entry of a session
  2345.   in the task list (window list).
  2346.  
  2347. Added \v(terminal) to get the terminal type.  In OS/2, it's the current
  2348. SET TERMINAL TYPE, in others, it's getenv("TERM").  ckuusr.h, ckuus4.c,
  2349. ckuusr.c 5A(127), 26 Mar 94.
  2350.  
  2351. Changed OS/2 C-Kermit's escape-character argument for hanging up to be U
  2352. rather than H.  Now it's more like the default "hot keys": H for help, U
  2353. for hangup.  Previously, it was too easy to hang up by accident this way.
  2354. ckocon.c, 26 Mar 94.
  2355.  
  2356. Added SET TERMINAL COLOR BORDER <color> to OS/2 C-Kermit, based on info
  2357. from Kai Uwe Rommel -- this sets the color of the border around the terminal
  2358. emulation screen in OS/2 fullscreen sessions only.  Added this to CKERMOD.INI;
  2359. a green border seems nice; changed the status line to white on gray.
  2360. ckuusr.h, ckuus7.c, ckocon.c, 26 Mar 94.
  2361.  
  2362. Changed OS/2 C-Kermit's SET TERMINAL TYPE ANSI command to automatically set
  2363. the code page to 437, saving the old one, and to restore the old code page
  2364. upon SET TERM TYPE <anything-else>, based on info provided by Kai Uwe.  Also
  2365. added a SET TERMINAL CODE-PAGE command, but left it commented out because it
  2366. needs to verify that the given code-page number is valid, and then succeed or
  2367. fail immediately -- it seemed to me like switching code pages was a bad way
  2368. to do this...  ckuus7.c, 26 Mar 94.
  2369.  
  2370. Several people reported that the previous edit of OS/2 C-Kermit would hang
  2371. uninterruptibly when sent the ESC Z or CSI 0 c (What are you?) query in VT220
  2372. mode on a serial (not network) connection.  It seems that sendstr() was
  2373. overrunning the output device by calling ttoci() too rapidly; this happened
  2374. whenever the string to be sent was longer than 4 or 5 characters, and probably
  2375. also when the UART did not have an output silo (mine doesn't, so I could
  2376. reproduce this problem easily).  I added an msleep(50) between each character
  2377. as a bandaid.  This should only affect the sending of escape sequences (mostly
  2378. query responses, since VT key sequences are never more than 3-4 chars long).
  2379. ckocon.c, 26 Mar 94.
  2380.  
  2381. Changed OS/2 C-Kermit INSTALL script to ask the user about the VT220 key
  2382. mappings and to put a TAKE command in CKERMOD.INI for them if she wants them.
  2383. ckoins.cmd / install.scr, 26 Mar 94.
  2384.  
  2385. Michael Godfrey noticed that in OS/2 C-Kermit, during DEBUG terminal-emulation
  2386. display, if you escape back while control characters are being shown in
  2387. underline coloration, and then SET TERM DEBUG OFF, and then CONNECT again,
  2388. that the colors don't go back to normal.  There were also some coloring mixups
  2389. when making TELNET connections; TELNET negotiations would be printed in
  2390. seemingly random colors.  Fixed in ckuus7.c and ckocon.c, 26 Mar 94.
  2391.  
  2392. Also noticed that session debugging could write stuff to the terminal screen
  2393. even when we weren't in CONNECT mode, oops!  Fixed in ckocon.c, 26 Mar 94.
  2394. But this fix means we lose the first couple negotiations from the terminal
  2395. screen, since they happen at ttopen() time, before the CONNECT module is
  2396. entered.  No big deal, they can still be captured in the debug.log.
  2397.  
  2398. Changed SET TERMINAL DEBUG to show TELNET options in boldface.
  2399. ckocon.c, ckcnet.c, 26 Mar 94.
  2400.  
  2401. Fixed WRITE TRANSACTION-LOG command; previously, it would accept no
  2402. abbreviations.  Noticed by Max Evarts.  ckuusr.c, 26 Mar 94.
  2403.  
  2404. Found a bunch of SET commands that were returning SUCCESS when there
  2405. were parsing errors.  Fixed in ckuus7.c, 26 Mar 94.  There are probably
  2406. more of these in other modules...
  2407.  
  2408. There were complaints that VMS C-Kermit sometimes failed to SET SPEED.
  2409. Evidently, the actual speed setting worked OK, but then the SET SPEED command
  2410. went back to read the speed and compare with what it thought it had set, and
  2411. they did not compare.  Turns out the VMS ttgspd() routine didn't really do
  2412. anything except return the speed variable -- which was not SET yet!  A slight
  2413. amount of creative recoding fixes the problem.  CKVTIO.C 2.0-072, 27 Mar 94.
  2414. (But it would, of course, be better to have the VMS ttgspd() actually make a
  2415. system call to read the device speed...)
  2416.  
  2417. Added support for file-append operations -- OPEN APPEND, LOG .. APPEND,
  2418. SET FILE COLLISION APPEND, etc, in VMS C-Kermit, code from Terry Kennedy.
  2419. CKVFIO.C 2.0-108, 27 Mar 94.
  2420.  
  2421. Added SET TERMINAL CODE-PAGE to OS/2 C-Kermit, thanks to a new support
  2422. routine, os2checkcp(), from Kai Uwe Rommel, ckuus7.c, 17 Mar 94.
  2423.  
  2424. Cleaned up SHOW TERMINAL DISPLAY, added CODE-PAGE to it, added LOG SESSION
  2425. to it, etc, ckuus5.c, 17 Mar 94.
  2426.  
  2427. In OS/2 C-Kermit, it was still possible for the cursor to disappear if you
  2428. executed the \Kpush verb (os2push() routine) during CONNECT mode and then ran
  2429. an application (such as SYSLEVEL) that turned off your cursor -- noticed by
  2430. Ric Anderson.  os2push() now explicitly turns the cursor on when resuming
  2431. CONNECT mode unless the cursor was previously disabled.  Also changed
  2432. os2push() to restore the CONNECT-mode border color upon return to CONNECT
  2433. mode.  ckocon.c 5A(135), 27 Mar 94.
  2434.  
  2435. The VMS C-Kermit DELETE, DIRECTORY, and RENAME commands would change the
  2436. terminal mode, but forgot to change it back, so command editing didn't work
  2437. any more after giving these commands.  Fixed in ckuus6.c, 27 Mar 94.
  2438.  
  2439. Added some more helpful info to the OS/2 C-K rollback popup help screen.
  2440. ckocon.c, 27 Mar 94.
  2441.  
  2442. Removed "^L to refresh screen" from OS/2 C-K's fullscreen file transfer
  2443. display.  ckuusx.c, 27 Mar 94.
  2444.  
  2445. Added support for 57600 and 115200 bps for NetBSD, from Mike Long
  2446. <Mike.Long@analog.com>, plus various other NetBSD fixups.  ckcdeb.h, ckcfn3.c
  2447. (sys_errlist[] declaration), ckutio.c 5A(127) (UUCP lockfile directory).
  2448. Also, SHOW PROTOCOL display was malformatted if C-Kermit built with NOSERVER.
  2449. ckuus4.c.  27 Mar 94.
  2450.  
  2451. John Chandler reported that when C-K is doing a non-windowed transfer
  2452. (i.e. window size < 2), and an ACK arrives (again) for the previous packet,
  2453. C-Kermit just sits there & does nothing.  In the non-windowed case, it should
  2454. treat this as a NAK for the current packet, so it can retransmit the current
  2455. packet right away, rather than waiting for its timer to go off.  ckcfn2.c,
  2456. ckcfns.c 5A(104), 27 Mar 94.
  2457.  
  2458. In the process of testing the previous item, discovered that OS/2 C-Kermit
  2459. lowercased any strings that were given to SET KEY.  Fixed in xlookup(),
  2460. ckucmd.c 5A(058), 27 Mar 94.
  2461.  
  2462. Added SET SEND / RECEIVE PAUSE <msec> command, hopefully to help when engaging
  2463. in Kermit protocol with a real slow or buggy machine, like the HP48, which
  2464. goes deaf for a short time after sending a packet.  ckuus7.c, 27 Mar 94.
  2465.  
  2466. Bo Kullmar got Kermit to crash while dialing, a traceback indicated it was
  2467. in a free() -- so changed every "free(blah);" to "if (blah) free(blah);
  2468. blah = NULL;".  ckudia.c 5A(058), 27 Mar 94.
  2469.  
  2470. Added some simple code, suggested by Terry Kennedy, to cut down on the
  2471. zombie processes left behind when the VMS C-Kermit server gets a BYE.
  2472. ckvtio.c, 27 Mar 94.
  2473.  
  2474. 28 Mar 94: Started getting 5A(190) ready for public testing.  Changed
  2475. designation from "Development" to "ALPHA.01".  Fixed a minor glitch with the
  2476. status line during screen rollback in OS/2.  Changed the CHECK command to name
  2477. the missing feature if it gives an error message.  Compiled, linked, and ran
  2478. on many systems and in many configurations, fixing compiler & makefile
  2479. glitches along the way: SunOS 4.1.3, Solaris 2.3, NeXTSTEP 3.1, Linux 0.99.14,
  2480. Dell SVR4, HP-UX 8.0, 4.4BSD, OSF/1, DG/UX 5.4, AIX 3.2, ULTRIX 4.2, ...
  2481.  
  2482. Discovered a typo in ckuxla.h that caused Macintosh Latin and DG Multinational
  2483. character sets to get the same designator.  Macintosh Latin translations were
  2484. broken since HP-Roman8 was added in December '93; nobody noticed until me,
  2485. using OS/2 C-Kermit to look at the Mac Kermit makefile...  29 Mar 94.
  2486.  
  2487. Got C-Kermit to compile on Solaris 2.3 with SunPro CC.  29 Mar 94.
  2488.  
  2489. Data General AOS/VS version compiles and links without complaint, but won't
  2490. run: "Memory allocation error on program initialization: insufficient pages
  2491. available for stack/heap space".  But 189 runs OK on the same system.  Sent
  2492. a message to DG asking about this.  29 Mar 94.
  2493.  
  2494. Spent a long time trying to compile the Macintosh version with MPW C 3.2.  Ran
  2495. into problems with wart (ckwart.c) -- Finally I realized that the fakeouts for
  2496. fopen and friends that were done in ckcdeb.h did not (and must not) apply to
  2497. ckwart.c, because ckwart.c is not linked with the module (ckmfio) where the
  2498. fakeout routines (mac_fopen, etc) are defined.  Then there were compilation
  2499. problems with ckmtio.c & some others, fixed.  29 Mar 94.
  2500.  
  2501. So the Mac version compiled and linked OK, but crashed when I tried to run it.
  2502. Luckily I had Macsbug loaded and was able to get a stack dump -- it crashed in
  2503. cmdini() in ckuus5.c.  It seems Mac Kermit was trying to open an init file --
  2504. apparently somebody added part of the code for this, but not all of it, so
  2505. mac_fopen() was being passed an uninitialized string pointer for the file
  2506. name.  I #ifndef MAC'd all of the init-file code, and now it works OK.
  2507. ckuus5.c, 29 Mar 94.
  2508.  
  2509. Eugenia Harris of DG changed the LINK command for AOS/VS C-Kermit to make
  2510. it allocate a bigger heap+stack, now it runs OK.  30 Mar 94.
  2511.  
  2512. In fact, now it compiles, links, and runs OK on all platforms where I am able
  2513. to test it, so we're just about ready for public Alpha testing.
  2514.  
  2515. OS/2 C-Kermit would no longer recognize the Tab key for purposes of command
  2516. completion.  Fixed in ckotio.c, 30 Mar 94.
  2517.  
  2518. Added display of valid code pages to OS/2 C-Kermit SHOW TERM, and simplified
  2519. SET TERM CODE-PAGE, code from Kai Uwe Rommel, 30 Mar 94.
  2520.  
  2521. Jim Reisert reported that leaning on a function key while OS/2 C-Kermit was in
  2522. CONNECT mode on a serial connection resulted in "TRANSMISSION BLOCKED" errors.
  2523. I noticed that there were two routines in ckocon.c that did essentially the
  2524. same thing: sendstr() and sendescseq().  I had already modified one of them to
  2525. insert a 50-msec pause between each character; this time I just merged the
  2526. two routines.  The result tests just fine at both 19200 bps and 300 bps.
  2527. ckocon.c 5A(136), 30 Mar 94.
  2528.  
  2529. Made new makefile entries for, and built C-Kermit on, UnixWare 1.1.
  2530. "make unixware" (no TCP/IP, no curses), and "make unixwarenetc" (Lachman
  2531. TCP/IP, curses).
  2532.  
  2533. Fixed another OS/2 C-Kermit terminal bug, reported by Ric Anderson: if
  2534. SET TERMINAL ROLL ON, and the End key is pushed before any other rollback
  2535. keys, we get the Black Screen Of Death.  Fixed in ckocon.c 5A(137), 31 Mar 94.
  2536.  
  2537. Same deal as yesterday, but this time when sending strings assigned to keys.
  2538. ckocon.c, 31 Mar 94.
  2539.  
  2540. Thanks to a report from wilkins@rockvax.rockefeller.edu, I learned that the
  2541. APC command was ineffective if it was given as the last line in a command
  2542. file (in this case, the last line of the .kermrc file) in the Solaris version.
  2543. Turns out the Solaris version did not include -DNOSETBUF, and so the APC
  2544. sequence was not being followed by an fflush(), on the assumption that output
  2545. was unbuffered anyway.  I added -DNOSETBUF to the Solaris version, and I also
  2546. made the apres-APC fflush() unconditional.  ckuus5.c, 31 Mar 94.
  2547.  
  2548. Jeffrey Altman noticed that the OUTPUT command was generating garbage
  2549. under OS/2.  Another apparent case of IBM C generating bad code.  I rewrote
  2550. the code to use no macros and simpler types of expressions, seems to work
  2551. ok now, but somewhat slower.  ckuus5.c, 1 Apr 94.
  2552.  
  2553. Jamie Watson <jw@adasoft.ch>, working with IBM engineers, changed the
  2554. AIX/RS-6000 flow control code to comply with IBM's recommendations.
  2555. ckutio.c 5A(129), 4 Apr 94.  Jamie tested this on:
  2556.  
  2557.   RS/6000-520, AIX 3.2.5 (rs6aix32c)
  2558.   RS/6000-520, AIX 3.2.3 (rs6aix32c)
  2559.   RS/6000-320, AIX 3.1.5 (rs6000c)
  2560.   RT/PC 6150-125, AIX 2.2.1 (rtaixc)
  2561.  
  2562. as well as several ULTRIX systems.
  2563.  
  2564. New OS/2 INSTALL.CMD from Jeffrey Altman, keeps old CKOVTK2.INI file intact
  2565. if it already existed, since the user might have customized it, and to avoid
  2566. asking the user CKERMOD.INI-related questions if the user already has a
  2567. CKERMOD.INI in the destination directory.  4 Apr 94.
  2568.  
  2569. Added \v(connection) to show the connection when in local mode:  "serial",
  2570. "tcp/ip telnet", "decnet lat", etc.  This allows a script program to take
  2571. different actions depending on the connection type.  ckuusr.h, ckuus4.c,
  2572. 4 Apr 94.
  2573.  
  2574. Bill Schlesinger of the Motorola System Support Center pointed out that the
  2575. DIR and REMOTE DIR commands did not (necessarily) work under a restricted
  2576. shell in UNIX, because DIRCMD and DIRCMD2 were defined to include the
  2577. full path, instead of just the command name, and so did not follow the PATH
  2578. environment variable.  Removed the path from these strings, made them just
  2579. "ls -l".  ckufio.c 5A(084) 4 Apr 94.
  2580.  
  2581. Added SET TERMINAL HIDE-CURSOR { ON, OFF } to OS/2 version, to allow user to
  2582. turn off the cursor-hiding feature; this reduces confusion at the expense of
  2583. slower screen updating.  On a 486/66, with TERMINAL HIDE ON (the default), on
  2584. a TELNET connection (where the CPU is the limiting factor), fullscreen, it
  2585. takes 20 seconds to dump a 1000-line, 80-column file to the screen; with HIDE
  2586. OFF, it takes 33 seconds.  The difference is negligible on a serial
  2587. connection, where the communication speed is the bottleneck.  The same file
  2588. takes about 46 seconds to display on a 19200 bps connection with SET TERMINAL
  2589. HIDE OFF or ON.  ckuusr.h, ckuus2.c (HELP), ckuus5.c (SHOW), ckuus7.c (SET),
  2590. ckocon.c 5A(138), 5 Apr 94.
  2591.  
  2592. In OS/2 C-Kermit, reinstalled Kai Uwe's code to get and set the session name
  2593. in the task list, and added a call to the SET LINE / SET HOST code in
  2594. ckuus7.c to actually set the name to the current communication device or
  2595. host name.  ckuus7.c, ckotio.c 5A(128), 5 Apr 94.
  2596.  
  2597. Looked into adding APC support to the UNIX version, but there were too many
  2598. obstacles, the worst being that the APC command would be collected in the
  2599. lower CONNECT fork, which has no good way to pass it back upstairs when it
  2600. exits.  So forget it.  5 Apr 94.
  2601.  
  2602. Added code to VMS version from Terry Kennedy to fill in the LENGTH-IN-K
  2603. file attribute, which heretofore had always been specified as 0.
  2604. CKVFIO.C 2.0-109, 5 Apr 94.
  2605.  
  2606. Looked into making the TAKE command in OS/2 not require a full filespec if
  2607. the file is in INIT, DPATH, or PATH.  This one turned out to be impractical
  2608. too -- it would require a custom copy of cmifi(), which is a very long
  2609. procedure.  5 Apr 94.
  2610.  
  2611. System-wide init file for UNIX et al...  Better to let the user's personal
  2612. init file, if any, take precedence.  The system-wide copy is used only if
  2613. the user doesn't have one.  This way we don't have thousands of users
  2614. wondering why their init files don't work any more.  Also, I discovered some
  2615. code that I thought had been removed years ago: if the specified or default
  2616. init file could not be found, then Kermit looked in the current directory for
  2617. one -- bad idea!  ckuus5.c, 5 Apr 94.
  2618.  
  2619. More of this...  Actually, there is no single right way to handle the
  2620. system-wide init file.  There are reasons why it should take precedence over
  2621. the user's, and equally valid reasons why it shouldn't.  So I added two new
  2622. symbols: CK_INI_A means the system-wide init file should take precedence,
  2623. CK_INI_B means the user's init file should take precedence.  If neither one is
  2624. defined, CK_INI_A is assumed.  These symbols have effect only if CK_SYSINI is
  2625. also defined.  Also, in the former case, if the system-wide init file can't be
  2626. opened, C-Kermit takes the user's instead.  Details in ckuins.doc.
  2627. ckuusr.h, ckuus5.c, 5 Apr 94.
  2628.  
  2629. By arrangement with HP, made a default system-wide init file for HP-UX 10.0:
  2630. /usr/share/lib/kermit/ckermit.ini.  ckuusr.h, makefile, 5 Apr 94.
  2631.  
  2632. New INSTALL.CMD from Jeffrey Altman for OS/2 C-Kermit, which does not replace
  2633. the program object / icon if one is already there.  6 Apr 94.
  2634.  
  2635. Added SET TERMINAL OUTPUT-PACING to allow users to overcome UART buffer
  2636. overrun problems when pasting into OS/2 C-Kermit terminal window.
  2637. ckocon.c 5A(139), ckuusr.h, ckuus7.c, ckuusr.c 5A(131), 7 Apr 94.
  2638.  
  2639. Albert Crosby <acrosby@comp.uark.edu> pointed out that if OS/2 C-Kermit is
  2640. started with a -c command-line argument, the "Prompt: Alt-x" message in the
  2641. status line is misleading.  Changed the CONNECT module to write "Exit: Alt-x"
  2642. if it knows that escaping back will exit from C-Kermit.
  2643. ckocon.c 5A(140), 8 Apr 94.
  2644.  
  2645. Vincent Fatica noticed that the scrolling region (or rather, the bottom of
  2646. it) was lost between sessions.  Fixed in ckocon.c, 8 Apr 94.
  2647.  
  2648. Added a new command PSEND <filename> <starting-position> [ <as-name> ].  It's
  2649. just like send, except no wildcards are allowed, and it begins sending from
  2650. the given position (0-based byte-offset number) in the file.  The only problem
  2651. with it is that on systems where an int (in C terms) is 16 bits, we can't
  2652. parse starting positions bigger than 32767, because cmnum() returns an int;
  2653. there's a check in the parser for this.
  2654. ckuusr.h, ckuusr.c, ckcfn3.c, ckufio.c.  9 Apr 94.
  2655.  
  2656. Designed and coded a recovery feature.  It works only on stream format files,
  2657. only for binary-mode transfers, and requires the failed transfer to have been
  2658. done also in binary mode and with SET FILE INCOMPLETE KEEP on the receiving
  2659. end.  The only new command is RESEND.  It has exactly the same syntax as the
  2660. SEND command.  Recovery capability is negotiated at protocol startup time, and
  2661. the starting position is negotiated automatically.  9 Apr 94.
  2662.  
  2663. Inclusion of this feature, and also of the PSEND command, is governed by the
  2664. compile-time symbol CK_RESEND, which is defined (in ckcdeb.h) by default for
  2665. UNIX (all versions except pdp11) and OS/2.  The feature can be turned off in
  2666. these versions by adding -DNORESEND to the compile-time CFLAGS.  C-Kermit
  2667. builds and works OK if CK_RESEND is not defined.
  2668.  
  2669. The underlying support for CK_RESEND is available only in ckufio.c for UNIX
  2670. and OS/2: the new zfseek(pos) routine.  This needs to be filled in for the
  2671. other versions: VMS, etc.
  2672.  
  2673. Made SET FILE INCOMPLETE KEEP be the default.  Otherwise, RESEND and PSEND
  2674. will be of little use.  10 Apr 94.
  2675.  
  2676. Fixed file transfer display "Estimated Time Left" to work right for resending.
  2677. ckuusx.c, 10 Apr 94.
  2678.  
  2679. Got RESEND to work for the 16-bit OS/2 version by adding an MSC 6.00
  2680. compile-time switch suggested by Kai Uwe.  10 Apr 94.
  2681.  
  2682. Three years ago, Seth Chaiklin <psykseth@aau.dk> worked very hard on the
  2683. MAIL and REMOTE PRINT handling by the Kermit receiver.  The idea was that if
  2684. the receiver knew it was mail (or a print job), it (a) did not have to create
  2685. a file, but instead could pipe the incoming material to the appropriate
  2686. program (Mail or lpr), and (b) mail messages could have a nice subject; that
  2687. is, the "filename" from the F packet would actually be the subject.  But there
  2688. were massive problems accomplishing this; Seth actually did get it working,
  2689. but many issues remained unresolved, such as what to do about an interrupted
  2690. transfer, etc.  After all the reorganization above, it seemed like a good time
  2691. to revisit this question.  But it's still not worth it.  The basic problem is:
  2692. the F packet comes before the A packet.  We don't know it's Mail until the A
  2693. packet comes.  But it's at F-packet time we have to handle the filename
  2694. checking and collision options.  There's just no good way around this.  Also,
  2695. the idea of piping into a Mail program, etc, is specific to UNIX and so we
  2696. would still have to keep the old temp-file code around for all the other
  2697. systems.  Plus the interruption problems would remain, which we don't have now
  2698. using the temp-file method.  Plus the MAIL and REMOTE PRINT commands are so
  2699. little used that the work and the risk are not worth it.  I still have Seth's
  2700. voluminous notes and diffs (75K of them) in case this should come up again.
  2701.  
  2702. In verifying edit 190 on 2.11BSD (on a PDP-11), I found that somehow the
  2703. call to gethnam() is no longer resolved by the linker, so I removed it from
  2704. ckhost() in the pdp11 case.  ckuusx.c.  I also had to shuffle the overlays
  2705. around again to make them all 15K or less; one of them had exceeded the 15K
  2706. limit by 192 bytes. I also had to add switches to deselect some of the new
  2707. features like REDIRECT, RETRY, MSEND.  Overlays all OK, but the main segment
  2708. is still too big by 2K.  Two choices: remove UUCP support, or try to build
  2709. with -DDYNAMIC (I can't remember why this was never done before).  (Several
  2710. hours later...)  Now I know: for some reason, -DDYNAMIC compilation results
  2711. in *bigger* object files, rather than smaller ones, on this system.  So
  2712. out goes UUCP lockfile support.  Still not enough.  Added -DNOFRILLS.  Still
  2713. not enough.  15 Apr 94.
  2714.  
  2715. Removed CK_TMPDIR from PDP-11 version.  Still not enough.  Removed automatic
  2716. parity detection.  That did it.  ckubs2.mak, 18 Apr 94.
  2717.  
  2718. Checked DEC OSF/1 2.0.  C-Kermit compiled under OSF/1 1.3 still runs OK.
  2719. Same code compiles and runs fine under 2.0.  23 Apr 94.
  2720.  
  2721. Changed OS/2 section of CKERMOD.INI to eliminate garish and bold colors for
  2722. normal screens (terminal-screen, status-line, underline, etc).  Easier on the
  2723. eyes, and prevents the all-screen-blinking effect that occurs on some systems
  2724. when switching back to the terminal screen when it had a bright (white)
  2725. background.  23 Apr 94.
  2726.  
  2727. Changed OS/2 C-Kermit SET TERM TYPE ANSI to use light gray rather than white
  2728. as the foreground color, by popular demand.  ckuus7.c, 23 Apr 94.
  2729.  
  2730. Changed OS/2 C-Kermit terminal reset routine to restore the border.
  2731. ckocon.c 5A(141), 23 Apr 94.
  2732.  
  2733. Steven Asher <sasher@intel9.intel.com> and Russ Herman <rwh@gov.on.ca> noticed
  2734. that several keyboard verbs in OS/2 C-Kermit were wrong: \KdecInsert,
  2735. \KdecRemove, \KdecSelect, \KdecNext.  Fixed, ckocon.c, 23 Apr 94.
  2736.  
  2737. Ever since edit 189 was released, there have been scattered reports of
  2738. corrupted files after transfer.  Tom Kloos <tk@sequent.com> finally provided
  2739. the vital clue: it happened when certain control characters were unprefixed
  2740. *and* PARITY was not NONE (and, therefore, locking shifts were in effect).
  2741. Diagnosis: the packet decoder had never been changed to account for this
  2742. combination, and so left Ctrl-P's in the file instead of treating them as Data
  2743. Link Escapes for locking shifts.  Fix: a very small change to the decode()
  2744. routine in ckcfns.c, 5A(107), 23 Apr 94.
  2745.  
  2746. Changes in various places to enforce prefixing of carriage return when we know
  2747. we have a TELNET connection.  Bare carriage returns in packets are very
  2748. confusing to TELNET servers, as they should be, since they defy the TELNET
  2749. specification, which says a carriage return must always be followed by either
  2750. LF or NUL.  ckcpro.w, ckuus3.c, 23 Apr 94.
  2751.  
  2752. Changed UNIX, VMS, OS/2, AOS/VS C-Kermit CONNECT commands to quote not only
  2753. IAC but also DEL if it has a parity bit on a TELNET connection.  23 Apr 94.
  2754.  
  2755. Changed protocol module to clear counters a bit earlier to cut down on
  2756. spurious info in the file transfer display.  23 Apr 94.
  2757.  
  2758. Hugo Jimenez <jimenez@gaus90.chem.yale.edu> noticed that the OS/2 C-Kermit
  2759. server was sending only linefeeds, rather than CRLFs, at the end of each line
  2760. output by an inferior process, e.g. in response to REMOTE DIRECTORY.  Cure
  2761. from Kai Uwe Rommel: in zxcmd(), open the pipe with mode "rb" rather than
  2762. just "r".  ckufio.c 5A(086) 26 Apr 94.
  2763.  
  2764. Downloaded IBM C/C++ CSDs from IBM OS/2 BBS and applied them to the OS/2
  2765. C compiler.  27 Apr 94.
  2766.  
  2767. A tester complained that if OS/2 C-Kermit starts a Rexx program and the
  2768. Rexx program includes "call ckcommand connect", that Kermit terminates after
  2769. 2 seconds.  This turned out to be caused by the fact that the setjmp was
  2770. being done in one thread, but the longjmp in another, which happened when the
  2771. call to congks(2) (wait 2 sec for a keystroke) timed out.  The reason for the
  2772. timeout is to allow Kermit to check every 2 seconds to see if the connection
  2773. has dropped, in which case it can pop back to the prompt automatically.
  2774. Fixing this required complete redesign and rewriting of the keyboard input
  2775. routines, which was done by Jeffrey Altman.  ckocon.c, ckotio.c, 27 Apr 94.
  2776.  
  2777. But it doesn't work in the 16-bit version...  Jeff then conditionalized the
  2778. new code for the 32-bit version only, keeping the old code in the 16-bit
  2779. version.  29 Apr 94.
  2780.  
  2781. Jeff also fixed a bug with PUSH, RUN, ! in the OS/2 version.  ckufio.c
  2782. 5A(087) 29 Apr 94.
  2783.  
  2784. Joel Seiferas <joel@cs.rochester.edu> reported crashes when receiving files
  2785. in the OS/2 version and SET FILE COLLISION RENAME.  The debug log revealed
  2786. this had something to do with the .LONGNAME extended attribute -- somehow
  2787. a huge name was being generated and written to the static buffer, which was
  2788. too short for it.  Jeff made a workaround for this -- a dynamic buffer, an
  2789. additional debugging statement -- in ckufio.c, so we can track down the real
  2790. reason this is happening.  Installed and announced as 5A(190) ALPHA.04.
  2791. ckufio.c, ckcfns.c, 29 Apr 94.
  2792.  
  2793. An hour later...  Jeff found and fixed the .LONGNAME bug.  ckufio.c, ckcfns.c,
  2794. again, 29 Apr 94, 5A(190) ALPHA.05.
  2795.  
  2796. New OS/2 C-K keyboard reading code, again, from Jeff, to correct problems that
  2797. were discovered by testers over the weekend.  ckotio.c 5A(130), ckocon.c,
  2798. 2 May 94.
  2799.  
  2800. I fixed one last Black Screen Of Death problem in OS/2 C-K that occurred when
  2801. the screen was rolled back when nothing had yet been placed in the rollback
  2802. buffer.  ckocon.c 5A(143), 2 May 94.
  2803.  
  2804. Closed a potential memory leak that could occur when collecting a debug log
  2805. during a TELNET connection.  ckcnet.c, 2 May 94.
  2806.  
  2807. Fixed HP-UX 10.0 support to use HDB-style, rather than SVR4-style, UUCP
  2808. lockfile names.  ckutio.c 5A(130), 3 May 94.
  2809.  
  2810. Fixed SET TERMINAL CHARACTER-SET <remote> [ <local> ], in the OS/2 version,
  2811. to default the <local> character set to the current code page, if known.
  2812. ckuus7.c, 3 May 94.
  2813.  
  2814. Added a few #includes to ttgwsiz() in ckutio.c to allow compilation under
  2815. SCO UNIX 3.2v4.0, from William Bader <wbader@csee.lehigh.edu>, ckutio.c
  2816. 5A(130), 3 May 94.  Also from William, some ANSIfication in ckufio.c.
  2817.  
  2818. An SCO UNIX 3.2v4.1-related fix to the sco32v4net makefile entry (the
  2819. addition of -D_IBCS2 to CFLAGS, so make the winsize structure in termio.h
  2820. be defined) from Han Holl <100327.1632@compuserve.com>.  3 May 94.  Also,
  2821. at Han's suggestion, ANSIfied the declarations of dodebug() and tlog() in
  2822. ckuusx.c, to suppress complaints.
  2823.  
  2824. Added support for the DECHEBM escape sequence, CSI ? 35 h/l, to OS/2 C-Kermit.
  2825. Upon receipt of CSI ? 35 h, it executes the macro KEYBOARDS, which must be
  2826. defined by the user.  Upon receipt of CSI ? 35 l, it executes the macro
  2827. KEYBOARDR.  This is just like in MS-DOS Kermit 3.13, and allows host-initiated
  2828. switching of keyboard mode, e.g. between English and Hebrew.  The KEYBOARD[RS]
  2829. macros, presumably, contain a bunch of SET KEY commands.  After actually using
  2830. this with the ALEPH software, however, I discovered it was intolerably slow
  2831. and irritating -- ALEPH sends *lots* of DECHEBM commands, and so Kermit's
  2832. screen was constantly blacking out, etc.  So I switched to a hardwired
  2833. approach -- very fast, no blinking, but also not remappable by the user.
  2834. We'll see what people think about it...  ckocon.[ch] 5A(144), 4 May 94.
  2835.  
  2836. Added skeleton for named pipe support to OS/2 C-Kermit.
  2837. ckcnet.h defines PIPENAML to be maximum length of server name.
  2838. ckuus3.c defines char pipename[PIPENAML], parsers SET NETWORK NAMED-PIPE
  2839. <pipename>, sets nettype to NET_PIPE, and stores pipename in pipename[].
  2840. ckuus7.c, routine setlin(), adds SET HOST <servername> if nettype is NET_PIPE,
  2841. and constructs \\pipename\pipe\servername in ttname, to be passed to ttopen().
  2842. If Kermit is to be a named-pipe server, awaiting a connection, the user must
  2843. type SET NET NAMED-PIPE <servername>, SET HOST *.  Jeff A will fill in
  2844. the supporting code in cko???.?.  5 May 94.
  2845.  
  2846. Changed SET TERM TYPE ANSI to give appropriate warning message if it could
  2847. not change code page to 437.  ckuus7.c, 5 May 94.
  2848.  
  2849. Rec'd named pipe support routines from Jeff Altman:  ckonet.[ch], ckotio.c,
  2850. corrections to ckuus[37].c.  NOTE: Named pipe support is only for the 32-bit
  2851. version -- MSC chokes on undefined symbols, etc, in ckonet.c.  6 May 94.
  2852.  
  2853. Fixed SHOW NET to display named-pipe info.  ckuus4.c, 6 May 94.
  2854.  
  2855. Fixed TELNET command to work right after a previous SET NET NAMED-PIPE
  2856. command.  ckuusr.c, 6 May 94.
  2857.  
  2858. HP-UX 9.03, 6 May 94:
  2859.  . Added new makefile entry, hpux90, to be used with restricted HP compiler.
  2860.  . Enabled RTS/CTS, REDIRECT, Kanji, so now it's a full version.
  2861.  . Added custom version herald.
  2862.  . Checked uucp lockfile -- it's ok.
  2863.  . Added CK_POLL.
  2864.  . Added RENAME.
  2865.  . Added more \v(cpu) tests (for model 700, etc).
  2866.  . With all the above new features, stripped executable = 626K.
  2867.  . Tried unrestricted C compiler:
  2868.      OK with -O (= +O2), stripped executable = 495K
  2869.      OK with +O3, stripped executable = 512K (bigger because of inlining)
  2870.      Not ok with +Obb780.
  2871.      (+Obb780 = +O2, 780 max number of basic blocks)
  2872.  . Tried ANSI compilation with "KFLAGS=-Aa -CK_ANSIC -D_HPUX_SOURCE":
  2873.      It died right away.
  2874.  . Tested modem communications:
  2875.      Works great with RTS/CTS, DIALs OK, etc etc.
  2876.      Passes ripple & download tests at 57600 bps over V.32bis.
  2877.      Gets about 2200 cps on Kermit transfer of text files.
  2878.      But does not pop back to prompt automatically upon loss of carrier.
  2879.  . Tested direct serial communications:
  2880.      Null modem cable from tty00 to tty01, getty on tty01.
  2881.      Loses characters at 115200 bps, even with RTS/CTS turned on.
  2882.      Works perfectly at 57600 bps, gets about 5100 cps on text file xfers.
  2883.      Does not seem to detect any modem signals.
  2884.  . NOTE: Program must not be installed setuid or setgid to root.
  2885.  
  2886. Added Hebrew-keyboard-mode indication to OS/2 C-Kermit status line: "-H" is
  2887. appended to the terminal-type when the keyboard is in Hebrew mode, e.g.
  2888. "VT220-H".  Also fixed reset function to clear (reset) Hebrew mode.
  2889. ckocon.c 5A(145), 7 May 94.
  2890.  
  2891. Fixed the annoying problem with the beginning of file-transfer error messages
  2892. being cut off, which has been there for years.  Mostly in ckcfn2.c -- created
  2893. a separate buffer, pktmsg, for these messages.  Allocated in ckcfn3.c,
  2894. declared in ckcmai.c, used in ckcfn2.c and ckcpro.w.  7 May 94.
  2895.  
  2896. Added a local option to the OS/2 named-pipe support, "SET HOST .", which
  2897. allows users (like me) who don't have Named Pipe support installed on their
  2898. PCs to still use this feature for connections between two C-Kermit processes
  2899. on the same computer, e.g. for testing stuff.  ckonet.c 5A(013), 7 May 94.
  2900.  
  2901. Defined POSIX_CRTSCTS for NetBSD, from Mike Long.  ckcdeb.h, 8 May 94.
  2902.  
  2903. Documented modem initialization strings for several modems that are not
  2904. directly supported by C-Kermit's DIAL command: AT&T DataPort 14400, Boca 14.4
  2905. Faxmodem, Hayes Ultra 144, Multitech MT1432, Practical Peripherals 14400FXMT,
  2906. Zoom Telephonics 14400.  ckcker.bwr, 8 May 94.  Added a sample to the OS/2
  2907. section of CKERMOD.INI.
  2908.  
  2909. New code for OS/2 from Jeff Altman, 8 May 94:
  2910.  . Beginnings of mouse support, not turned on.
  2911.  . Beginnings of NETBIOS support, not turned on.
  2912.  . New ttoci() uses DosWrite(), but checks connection first.
  2913.  . Fix for Named Pipe buffering.
  2914.  
  2915. Added command-level support for SET NET NETBIOS, SET TERMINAL MOUSE, including
  2916. HELP, SHOW NET, SHOW TERMINAL, SHOW FEATURES, etc.  Lots of files.  8 May 94.
  2917.  
  2918. Tested new OS/2 ttoci() on a 57600-bps serial connection thru a non-buffered
  2919. UART with TERMINAL OUTPUT-PACING set to 0 -- works great: does not get blocked
  2920. at all when typing, using F or arrow keys, using keys that have long strings
  2921. assigned to them, and even when pasting massive amounts of text into the
  2922. window.  But it still does give the TRANSMISSION BLOCKED indication if, for
  2923. example, RTS/CTS is in effect and the modem turns off CTS.  And it still pops
  2924. back to the prompt if CD drops.  So I changed the default TERMINAL
  2925. OUTPUT-PACING to be 0 (no pacing!) instead of -1, and changed CKCKER.UPD
  2926. accordingly.
  2927.  
  2928. Also tested Named Pipe support -- works much better -- file transfers with
  2929. 4 window slots x 2K-byte packets go without a hitch.
  2930.  
  2931. Fixed OS/2 VT emulator's newline-mode to go by the book (DEC VT220
  2932. programmer's manual): "Causes a received LF, FF, or VT code to move the cursor
  2933. to the first column of the next line."  Also fixed CR-DISPLAY CRLF to echo a
  2934. linefeed locally (as well as a CR) when TERMINAL ECHO is LOCAL.  Also
  2935. straightened out a small mess with SO/SI.  Also documented the flow of
  2936. incoming data in the source code.  Also discovered that code-paging switching
  2937. doesn't work in a window.  ckocon.c 5A(146), 8 May 94.
  2938.  
  2939. Added SIGTSTP suspend support to HP-UX 9.0 and later versions.  ckutio.c
  2940. 5A(131), 9 May 94.
  2941.  
  2942. Added parsing for SET NET NETBIOS <name> and SET HOST for NETBIOS.  ckcnet.h,
  2943. ckuus[37].c, 9 May 94.
  2944.  
  2945. Howie Kaye <howie@columbia.edu> discovered a bug in REINPUT (it was matching
  2946. things it shouldn't have been).  He also noticed that it was not possible to
  2947. refer to \%letter variables in uppercase, e.g. \%A.  Both fixed in ckuus4.c,
  2948. 9 May 94.
  2949.  
  2950. Fixed HP-UX 9.0 ANSI + optimizing compilation.  ckufio.c, makefile.  10 May 94.
  2951.  
  2952. Fixed some glitches in the CRT and FULLSCREEN file transfer display during
  2953. and/or after RESEND operations.  12 May 94.
  2954.  
  2955. Steve Walton enabled RESEND for the Amiga version.  Defined CK_RESEND in
  2956. ckcdeb.h for the Amiga.  16 May 94.
  2957.  
  2958. New set of Stratus-VOS-specific files from David Lane
  2959. <David_Lane@vos.stratus.com>, 16 May 94.
  2960.  
  2961. After an extended debugging session with Jeff Altman, it was determined that
  2962. LINK386 2.01.012 or later is needed to build 32-bit OS/2 C-Kermit; otherwise
  2963. we get garbage like two variables allocated to the same storage, etc.
  2964. 16 May 94.
  2965.  
  2966. New ckotio.c, ckocon.c, ckoker.mak files from Jeff Altman with mouse support
  2967. and keyboard buffering added, removal of critical sections, now replaced by
  2968. threads.  Also, I fixed a bug with DEC line-drawing characters that I
  2969. introduced in May 8th's cleanup.  This is Alpha.11, dated 18 May 94.
  2970.  
  2971. Changed E-PACKET command to always send packet 0 with block-check type 1.
  2972. Otherwise there's a good chance the other Kermit won't be able to read it.
  2973. ckcmai.c, ckcpro.w, ckuusr.c.  19 May 94.
  2974.  
  2975. Changed PCGET macro (APC version) in CKERMIT.INI to account for the
  2976. possibility that the requested file might not exist on the other end.
  2977. 19 May 94.
  2978.  
  2979. After wiping out my connection once too often by accident, I decided to make
  2980. SET EXIT WARNING also apply to SET HOST, SET LINE, SET PORT, and TELNET
  2981. commands.  ckuus[r37].c, ckuusr.h.  20 May 94.
  2982.  
  2983. While reading code in cmifi() - input filename parser - I noticed that it
  2984. could return without freeing malloc'd memory.  Fixed in ckucmd.c, 19 May 94.
  2985.  
  2986. Changed the OS/2 CD command to allow unquoted backslashes in directory
  2987. names.  cmdir() in ckucmd.c 5A(060), 20 May 94.
  2988.  
  2989. Ditto for input file parsing in cmifi() and output file parsing in cmofi() in
  2990. ckucmd.c.  I also added special cases for IF EXIST and IF DIRECTORY in
  2991. ckuus6.c.
  2992.  
  2993. In cmdir() and cmifi(), Kermit now tries to parse the string as a file or
  2994. directory name literally.  If it succeeds, fine; if not, then it passes the
  2995. string through the variable-expander (xxstring()) and tries again.  In
  2996. cmofi(), the process is somewhat different: the string is scanned to see if
  2997. contains C-Kermit variable or function names, and if it does, it is evaluated;
  2998. otherwise it is taken literally.  The reason for this is that C-Kermit
  2999. variable names can easily be legal OS/2 filenames; "receive \%a" could create
  3000. a file called %A in the root directory.
  3001.  
  3002. The previous syntax (using / or \\ as the directory separator) continues to
  3003. work.
  3004.  
  3005. The new scheme follows the "principle of least astonishment" for regular
  3006. users, but might confound (a very small number of) diehard script programmers;
  3007. the rules are spelled out in the OS/2 section of CKCKER.UPD, along with
  3008. techniques that script programmers can use for resolving ambiguities.
  3009.  
  3010. Fixed the DIRECTORY, TYPE, and DELETE commands in OS/2 C-Kermit to work when
  3011. given a filespec that contains a directory field.  This never worked before.
  3012. Also, changed the DIRECTORY command to accept trailing switches to be passed
  3013. to OS/2, like "directory c:\temp\foo.* /p /o-d", as well as output redirection,
  3014. so now it accepts almost everything the OS/2 DIR command accepts, including
  3015. lone disk letters.  ckuusr.c, ckuus6.c, ckucmd.c, 20-21 May 94.
  3016.  
  3017. Added some text about the mouse to OS/2 C-K HELP TERMINAL. ckuus2.c, 21 May 94.
  3018.  
  3019. Fixed the HELP command's "more?" prompter not to set the FAILURE flag if the
  3020. user says No.  This was causing command retry to kick in.  ckuus2.c, 21 May 94.
  3021.  
  3022. Work of 19-21 May installed as Alpha.12, 21 May 94.
  3023.  
  3024. Added a few lines of code to allow OS/2 C-Kermit to use up- and down arrow
  3025. keys for command recall, in command mode only.  ckotio.c 5A(135), ckuus2.c,
  3026. 22 May 94.
  3027.  
  3028. Added CHECK RTS/CTS to let script programs check whether RTS/CTS flow
  3029. control is available before trying to use it.  ckuus3.c, 23 May 94.
  3030.  
  3031. Fixes for OS/2 C-K from Kai Uwe Rommel: a problem with Named Pipe connections;
  3032. SET DIAL DIRECTORY command parsing; REMOTE SPACE execution by OS/2 C-K server. 
  3033. ckcpro.w 5A(062), ckonet.c 5A(016), 25 May 94
  3034.  
  3035. Fixed CHECK command to show full name of feature, even if user only gave an
  3036. abbreviation, or used completion.  ckuus3.c, 25 May 94.
  3037.  
  3038. Added conditional assembly support to ckcmai.c and ckcnet.c for the SOCKS
  3039. Internet relay package, from Rainer Glaschik <glaschick.kd@sni.de>, Siemens,
  3040. Paderborn.  25 May 94.
  3041.  
  3042. Discovered that C-Kermit lost its mind if it tried to evaluate a variable
  3043. whose value was "\" (a single backslash).  Fixed in xxstring(), ckuus4.c,
  3044. 25 May 94.
  3045.  
  3046. Added a new command: GETC.  Like ASK, but gets just a single character, with
  3047. no confirmation or editing; returns immediately when user pushes any key
  3048. (i.e. any key that can be read by coninc(0)).  ckuusr.h, ckuusr.c 5A(137),
  3049. ckuus6.c, 25 May 95.
  3050.  
  3051. Rec'd confirmation that OS/2 C-K works with FTP Software's PC/TCP from
  3052. Patrick W. Foster, Tech Support, FTP Software Inc., 2 High Street, North
  3053. Andover, MA  01845, pwf@ftp.com.
  3054.  
  3055. Call this one 5A(190) ALPHA.14 25 May 94.
  3056.  
  3057. Started working on HP-UX 10.0 makefile entry.  Added -DCK_POLL and -DCK_RENAME.
  3058. 25 May 94.
  3059.  
  3060. Added EVALUATE command - trivial, since we already have the \feval() function.
  3061. ckuusr.h, ckuus2.c, ckuusr.c 5A(138), 26 May 94.
  3062.  
  3063. Kai Uwe Rommel sent in massive changes to the OS/2 version:
  3064.  . A new intermediate TCP/IP DLL now sits between Kermit and the real
  3065.    TCP/IP DLL (if any), so we no longer have to worry about whether or not
  3066.    to install the old "dummy" DLL.  The new DLL itself determines, at run
  3067.    time, whether TCP/IP is installed.  This change affects many CKO*.*
  3068.    modules, the makefile, etc.
  3069.  . The Rexx interface was changed to (a) remove the need for the
  3070.    CKCOMMAND command in Rexx programs, and (b) the need for the REXXFILE
  3071.    command in C-Kermit.
  3072.  
  3073. Jeff Altman integrated Kai Uwe's diffs and updated the install script
  3074. and the CKOREXX.DOC file.  He also did some more work on the mouse support,
  3075. but it isn't complete, so mouse support was disabled.
  3076.  
  3077. This is C-Kermit 5A(190) ALPHA.15, 1 June 1994.
  3078.  
  3079. New HP-UX 10.0 makefile entries for ANSI C optimizing compiler.  makefile,
  3080. 4 Jun 94.
  3081.  
  3082. New OS/2 C-K mouse copy & paste support from Jeff Altman.  ckocon.c.  Also,
  3083. NETBIOS support cleanups -- even though this feature doesn't work yet, the
  3084. previous changes broke compilation; now at least it compiles again.  4 Jun 94.
  3085.  
  3086. ANSI prototyping fixes for HP-UX 10.0, ckufio.c, 5 Jun 94.
  3087.  
  3088. Discovered that "def \%a { foo }" did not produce the expected result, i.e.
  3089. strip the braces, keep the spaces.  Fixed in ckuus6.c.  5 Jun 94.
  3090.  
  3091. Fixed ttgmdm() to correctly report on Ring Indicator for HP-UX; ckutio.c
  3092. 5A(132), 5 Jun 94.
  3093.  
  3094. Changed the protocol module to accept an I-packet when in RECEIVE mode.  It
  3095. does no harm, and helps the client recover quickly when it sends a REMOTE,
  3096. GET, FINISH, or BYE command to a non-server.  ckcpro.w 5A(063), 6 Jun 94.
  3097.  
  3098. For selected systems where we know it's safe to do this, I increased the
  3099. default maximum buffer size from 9K to 90K: SunOS 4.x, Solaris, HP-UX 10.0,
  3100. NeXTs, 32-bit OS/2, IRIX 4.0, VMS, etc.  ckcker.h, 6 Jun 94.
  3101.  
  3102. Fix to CKVFIO.C for zchki() to make it use private data structures, to
  3103. prevent unrelated input-file operations (e.g. OPEN READ) from interfering
  3104. with each other, from Terry Kennedy.  CKVTIO.C 2.0-110, 8 Jun 94.
  3105.  
  3106. New-&-improved mouse support for OS/2 from Jeff Altman.  ckocon.c 5A(150),
  3107. ckuus5.c, ckcdeb.h, 9 Jun 94.
  3108.  
  3109. Support added for WHATAMI field in protocol initialization string.  This
  3110. quietly helps get text/binary and similar items right in client/server
  3111. connections when both client and server support this feature by letting the
  3112. client's settings predominate.  No fanfare.  ckcker.h, ckcfns.c 5A(112),
  3113. ckcpro.w 5A(064), 8 Jun 94.
  3114.  
  3115. NETBIOS support added to OS/2 C-Kermit for IBM's LAN Adapter and Protocol
  3116. Support product (ACSNETB.DLL), but not yet for the Novell LAN Server / Netware
  3117. Requestor (NETAPI.DLL), by Jeff Altman.  Many modules.
  3118.  
  3119. From Terry Kennedy - a fix to allow VMS C-Kermit to construct an attribute
  3120. packet even if the VMS system does not have a rights database (which shouldn't
  3121. happen, but did).  ckvfio.c 2.0-111, 17 Jun 94.
  3122.  
  3123. The services directory has always used login macros (VMSLOGIN, UNIXLOGIN, etc)
  3124. that have their respective host prompts (such as \13\10$) hard-coded.  But
  3125. since prompts on VMS, UNIX, and other systems can differ (and are often
  3126. customized per site, or by the user), it would be preferable to include the
  3127. prompt as a parameter to the login macro.  However, there was no obvious way
  3128. to do this without changing the format of the services directory, which would
  3129. break existing services directories, and also because a services directory
  3130. already can have up to 9 fields, which is the maximum number of macro
  3131. arguments.  This was fixed in today's edition of CKERMIT.INI via what Baldric
  3132. would call a "cunning plan"...  The second item in a services directory entry
  3133. is the name of the login macro, such as:
  3134.  
  3135.   vmslogin
  3136.  
  3137. Now it can also, optionally, be the login macro name followed by the system
  3138. prompt, grouped by braces, as in:
  3139.  
  3140.   {vmslogin chemvax:\32}
  3141.  
  3142. Old services directories continue to work as before, in which case the default
  3143. (hardwired) prompt is looked for.  The new form can be used to specify a
  3144. non-default prompt.  ckermit.ini, 17 Jun 94.
  3145.  
  3146. Fixed DIAL command to catch the case where a dialing directory includes an
  3147. entry name but nothing else (i.e. no phone number).  ckuus6.c, 18 Jun 94.
  3148.  
  3149. Added -DCK_POLL to DG/UG 5.4 version.  makefile, 18 Jan 94.
  3150.  
  3151. Spent the day building and testing this version:
  3152.  . DEC 5800 MIPS Ultrix 4.2 - OK
  3153.  . DEC Alpha AXP OSF/1 1.3 - OK
  3154.  . DEC Alpha AXP OSF/1 2.0 - OK
  3155.  . DEC Alpha AXP OpenVMS 1.5 / MultiNet - OK
  3156.  . DEC Alpha AXP OpenVMS 1.5 / no net - OK
  3157.  . DG AViiON DG/UX 5.40 - OK
  3158.  . HP-9000/300 4.4BSD - OK
  3159.  . HP-9000/550 HP-UX 5.21 - OK
  3160.  . HP-9000/385 HP-UX 8.00 - OK
  3161.  . HP-9000/715 HP-UX 10.0 - OK
  3162.  . Linux 0.99.14 - OK
  3163.  . NeXT - OK
  3164.  . PC with OS/2 16- and 32-bit - OK
  3165.  . PC with UnixWare 1.1.1 - OK
  3166.  . Solaris 2.3 with gcc - OK
  3167.  . SunOS 4.1.3 - OK
  3168.  . SunOS 4.1.3 POSIX universe - OK
  3169.  
  3170. BUT...
  3171.  . DG AOS/VS version compiles and links OK, but does not work.  Various script
  3172.    commands (IF, OPEN READ) are mysteriously broken.  Discovered this was
  3173.    because of a misplaced #endif in the IF EXISTS / IF DIRECTORY code, which
  3174.    would have affected any C-Kermit version that did not have CK_TMPDIR
  3175.    defined.  Fixed 19 Jun 94.  Also fixed the AOS/VS CD command -- when given
  3176.    without an operand, it would fail because "homdir" ended in a colon.
  3177.  
  3178.  . PDP-11 2.11 BSD version is too big, again.  By 64 bytes in root segment.
  3179.    Tried getting rid of 81-byte pktmsg[] buffer, only for pdp11, in a
  3180.    disgusting hack in which it shares the user interface's tmpbuf[].  But that
  3181.    made no difference at all.  Removed E-PACKET fixes from May 19.  Still not
  3182.    small enough.  Added -DNOWHATAMI.  Finally built OK.  19 Jun 94.
  3183.  
  3184. Built VAX/VMS versions (no net, MultiNet, UCX) and Macintosh version.
  3185. 19 Jun 94.
  3186.  
  3187. This is 5A(190) ALPHA.18, 16 Jun 94.
  3188.  
  3189. Updates to VMS makefile from Terry Kennedy to allow for linking on VMS systems
  3190. that have the new FORTRAN V6 library (don't ask), plus insertion of a warning
  3191. message in the generated CKVKER.COM file that it is generated automatically
  3192. from the makefile, and all changes should be made to the makefile itself.
  3193. 20 Jun 94.
  3194.  
  3195. From Jeff Altman: maximum scrollback in OS/2 32-bit version 
  3196. increased from 4K lines to 2,000,000 lines = 512M max process memory / 132 / 2.
  3197. Plus numerous NETBIOS changes/fixes.  20 Jun 94.
  3198.  
  3199. Changed reporting ownership of UUCP lockfile in ttopen() in UNIX version.
  3200. Previously, if the device had a lockfile, ttopen() would try to print a
  3201. directory listing of the lockfile.  But if the lockfile directory was not
  3202. read-accessible to the user, Kermit would give a stupid message like:
  3203.  
  3204.   /var/spool/locks/LCK..tty00 not found
  3205.   Sorry, device is in use: /dev/tty00
  3206.  
  3207. This is because Kermit's own setuid/setgid privilege is/are not (and should
  3208. not be) passed along to ls.  Rather than building an entire ls program into
  3209. Kermit, I changed it to read the lockfile (since Kermit itself has the needed
  3210. privs), get the pid, if any, and display it.  The directory listing is now
  3211. attempted only if we fail to get a pid.  ckutio.c 5A(133), 22 Jun 94.
  3212.  
  3213. Fixed CKERMIT.INI login macros again; the previous fix broke the feature that
  3214. allows the password to be given on the macro command line.  22 Jun 94.
  3215.  
  3216. Fixed a bug in which a TERMINAL ECHO setting could be spuriously "restored" to
  3217. half duplex (local echo) upon return from a non-TELNET network CONNECT session
  3218. (e.g. Named Pipe or NETBIOS).  Discovered by Jeff Altman.
  3219. ckuus7.c 22 Jun 94.
  3220.  
  3221. Improvements in OS/2 NETBIOS support from Jeff Altman.  ckonbi.[ch],
  3222. ckuus[3x].c.
  3223.  
  3224. This is 5A(190) BETA.01, 22 Jun 94, 11:30pm EST.
  3225.  
  3226. Fixes to OS/2 NETBIOS support from Jeff Altman, ckuus[3x].c (these were
  3227. including <os2.h>, but <os2.h> #defines COMMENT, which turns on all the
  3228. commented-out code in these modules).  Also, improvements to OS/2 mouse
  3229. support, ckocon.c 5A(152), 23 June 94, 8:00am EST.  Today's changes affect
  3230. only the OS/2 version.
  3231.  
  3232. This is 5A(190) BETA.02, 23 Jun 94.
  3233.  
  3234. Small change to ckcdeb.h to allow compilation on DECstation with Mach 2.6,
  3235. which has the same "union wait" "feature" as the NeXT, from Paul Placeway.
  3236. 23 Jun 94.
  3237.  
  3238. Changed REMOTE SET FILE TYPE to also set the local file type correspondingly,
  3239. to help prevent surprises when WHATAMI takes effect.  ckuus7.c, 24 Jun 94.
  3240.  
  3241. Allow OS/2 C-Kermit server to respond to REMOTE WHO (it just sends back
  3242. a string saying it's an OS/2 C-Kermit server).  Jeff Altman, ckufio.c
  3243. 5A(089), 25 Jun 94.
  3244.  
  3245. Numerous fixes and cleanups for OS/2 C-Kermit from Jeff Altman, primarily
  3246. moving mouse support to its own module, ckomou.c, because ckocon.obj was
  3247. getting too big for the linker, which resulted in runtime errors.  Many cko*
  3248. modules.  Also, Jeff updated the mouse and NETBIOS material, and other OS/2
  3249. specifics, in CKCKER.UPD and CKOKER.BWR.  25 Jun 94.
  3250.  
  3251. Made Interactive UNIX #include <sys/stream.h> and <sys/ptem.h> for picking up
  3252. TIOCGWINSZ structure member declarations.  Problem reported by Kenneth W
  3253. Cochran.  25 Jun 94.
  3254.  
  3255. Made a scad of new UNIX makefile entries to differentiate HP-UX 9.0x on the
  3256. model 800 (where poll() is not available) from all other models (where poll()
  3257. *is* available), using a new compile-time symbol NOPOLL, which overrides
  3258. CK_POLL.  makefile, 25 Jun 94.
  3259.  
  3260. Added a new symbol, LINUXFSSTND, which can be used in Linux compilations to
  3261. select the "new" (ho hum) lockfile conventions (/var/lock/LCK..name, decimal
  3262. ASCII 10-byte PID string with leading zeros) rather than the "old" ones
  3263. (/usr/spool/uucp/LCK..name, int PID).  Suggested by Phil Keegstra
  3264. <keegstra@aruba.gsfc.nasa.gov>.  ckutio.c 5A(135), 25 Jun 94.  
  3265.  
  3266. Fixed a problem in the Data General AOS/VS version, reported by Cory Sane
  3267. <sane@musc.edu>, namely that if Kermit failed to find CKERMIT.INI in the
  3268. user's home directory, it should (and used to) look in the user's searchlist,
  3269. but this was broken in edit 190 (when I made a change that I thought affected
  3270. only UNIX).  Old behavior restored in ckuusr.c 5A(140), ckuus5.c, 25 Jun 94.  
  3271.  
  3272. Also, at Cory's suggestion, added RESEND capability to AOS version.  This was
  3273. simply a matter of copying the zfseek() routine from the UNIX version and
  3274. defining CK_RESEND at compile time.  ckdfio.c 5A(066) 25 Jun 94;
  3275.  
  3276. This is 5A(190) BETA.03, 25 Jun 94.
  3277.  
  3278. Fixed indexing in UNIX man page.  26 Jun 94.
  3279.  
  3280. Got VMS C-Kermit makefile additions and corrections from Bernie Volz
  3281. <VOLZ@PROCESS.COM> for Process Software TCPware on the VAX and the Alpha AXP,
  3282. plus C-Kermit binaries for those two combinations.  These same binaries also
  3283. run under UCX and, presumably also under TGV MultiNet, which has a UCX
  3284. compatibility mode...  There is also a small change to ckuus4.c for SHOW NET.
  3285. I also learned that the CKVHEX program can be run on a VAX to make a hex file
  3286. out of an AXP binary.  27 Jun 94.
  3287.  
  3288. Discovered that the DEC OSF/1 2.0 C compiler generates bad code if
  3289. optimization is used.  Created a new makefile entry, dec-osf20, for this,
  3290. which omits optimization.  makefile.  27 Jun 94.
  3291.  
  3292. Eduard Vopicka in the Czech Republic added code to enable hardware flow
  3293. control for SCO UNIX 3.2.something-or-other == ODT 3.0.  It worked fine for
  3294. turning RTS/CTS ON, but RTS/CTS did not get turned off when FLOW was set back
  3295. to NONE or XON/XOFF after having been set to RTS/CTS.  This turns out to be my
  3296. fault.  So, more rearranging of tthflow() in ckutio.c, 5A(136), 27 Jun 94,
  3297. plus adding in Eduard's code.  The result compiles OK on SunOS, UnixWare,
  3298. HP-UX, etc, but needs testing.
  3299.  
  3300. Fix from Jeff Altman for OS/2 C-Kermit TCP/IP sessions.
  3301. ckonet.c 5A(018), 27 Jun 94.
  3302.  
  3303. This is 5A(190) BETA.04, 27 Jun 94.
  3304.  
  3305. For better debugging, rearranged things to make the "-d" command-line
  3306. option take effect first thing, rather than waiting until after sysinit()
  3307. is called.  ckcker.h, ckcmai.c, ckuus4.c.  28 Jun 94.
  3308.  
  3309. Changes for SET FLOW KEEP for OS/2 from Kai Uwe.  He discovered a device
  3310. (a radio clock) that gets power from the RTS line, which must be low. 
  3311. Previously, OS/2 C-Kermit always set RTS high.  Now SET FLOW KEEP leaves it
  3312. alone.  ckotio.c 5A(136), 28 Jun 94.
  3313.  
  3314. At the urging of Eduard Vopicka <Eduard.Vopicka@vse.cz>, added APC code to the
  3315. UNIX version.  But it doesn't work because of the two-forks business (memory
  3316. is not shared, data is changed in the wrong fork).  Eduard might take a look
  3317. at using pipes, etc.  28 Jun 94.
  3318.  
  3319. Added End-of-Attributes attribute ("@ ") to end of A packet.  sattr(),
  3320. ckcfn3.c.  ckcfns.c 5A(113), 29 Jun 94.
  3321.  
  3322. Raised maximum window size from 31 to 32.  The proof that this may be safely
  3323. done is left as an exercise for the reader.  ckcker.h, ckcfns.c, ckuus3.c,
  3324. 29 Jun 94.
  3325.  
  3326. More OS/2 Netbios fixes from Jeff Altman.  ck[co]net.c, 29 Jun 94.
  3327. And again, 30 Jun 94.
  3328.  
  3329. It turns out that some UNIX versions that are not based on System V R4
  3330. nevertheless implement RTS/CTS flow control via <[sys/]termiox.h>, e.g.
  3331. HP-UX 9.0.  So I removed the #ifdef SVR4..#endif around the [S]TERMIOX
  3332. section in ckutio.c.  1 Jul 94.
  3333.  
  3334. Due to a typo in ckcdeb.h, REXX support disappeared from the 32-bit OS/2
  3335. version in Beta.04.  Now fixed, 1 Jul 94.
  3336.  
  3337. Eduard Vopicka changed ckucon.c to use a pipe for all types of communication
  3338. between the upper and lower fork.  This enabled the APC code to function in
  3339. the UNIX version -- the lower fork sends the APC command to the upper one by
  3340. interrupting it with SIGUSR1 and then sending a function code and the APC
  3341. string through the pipe.  This eliminates the need for SIGUSR2.  I cleaned up,
  3342. debugged, and rearranged the code a bit, but it still has a few minor glitches
  3343. (e.g. unpredictability of messages, sometimes you have to hit Return to get
  3344. back, etc), and so I have not added -DCK_APC to any of the makefile entries.
  3345. Use at your own risk.  Without CK_APC defined, ckucon.c should operate as
  3346. before, but with the pipe.
  3347.  
  3348. This is 5A(190) BETA.05, 1 Jul 94.
  3349.  
  3350. From Jeff Altman: ckotio.c 5A(137), ckonet.c 5A(020), and ckonbi.c 5A(004),
  3351. with corrections affecting NETBIOS and, to some degree, other networking
  3352. methods in OS/2 C-Kermit.  2 Jul 94.
  3353.  
  3354. Added "resend" and "psend" indications to fullscreen file transfer display.
  3355. Also added some small fixes involving too-long names, from Bill Glass
  3356. <glass@vixvax.mgi.com>.  ckuusx.c, 2 Jul 94.
  3357.  
  3358. More work on APC for UNIX.  Ensured that when TERM APC is OFF, that the APC
  3359. is passed through transparently, so if UNIX C-Kermit is "in the middle", in
  3360. CONNECT mode, that an APC sent from the remote host will be visible to the
  3361. most local computer, e.g. MS-DOS Kermit or whatever on your desktop PC.
  3362.  
  3363. Ensured that APC ON does not interfere with character-set translation, neither
  3364. 7-bit national character sets, nor 8-bit sets.  However, note that when
  3365. transferring files through C-Kermit "in the middle", in CONNECT mode, this
  3366. Kermit (the one in the middle) better have its TERMINAL CHARACTER-SET set to
  3367. TRANSPARENT; otherwise, the packets will be changed on their way through and
  3368. the transfer will fail.
  3369.  
  3370. Noted that pipe() is supposedly available in all versions of UNIX, and that
  3371. the smallest maximum amount of stuff that can be written to a pipe is
  3372. something like 4K, whereas an APC sequence can never be more than about 1K.
  3373. Built C-Kermit on a bunch of different UNIX systems (NeXT, SunOS, SVR4, etc)
  3374. with APC enabled with no apparent problems in compilation, linking, or
  3375. execution.  So I defined CK_APC by default for all UNIX versions that are also
  3376. built with the script programming (i.e. for which NOSPL is not defined).
  3377. ckuusr.h, 2 Jul 94.
  3378.  
  3379. There is still one problem with UNIX APC: Any characters that come in on the
  3380. communication line while the APC commands are being executed are lost.  This
  3381. does not happen in the OS/2 version.  But this doesn't happen in UNIX version
  3382. when APC is not involved -- if you escape back to the C-Kermit prompt while
  3383. the remote end is generating output, it will be saved up (given buffer
  3384. capacity, flow control, etc) for when you next CONNECT.
  3385.  
  3386. Added APC support to VMS C-Kermit.  This was much easier, since the CONNECT
  3387. command does not run in two forks.  It works, but has exactly the same problem
  3388. as the UNIX version: losing the remote Kermit's next prompt upon reconnecting.
  3389. To be figured out tomorrow...  CKVCON.C 5A(034), 2 Jul 94.
  3390.  
  3391. Noticed that spurious "Type escape character (^\) followed by..." message
  3392. was still being given in cases where it wasn't needed when the file transfer
  3393. display was not fullscreen.  Fixed in ckuusx.c, 3 Jul 94.
  3394.  
  3395. While looking at the previous problem, I realized that there was a lot of
  3396. inconsistency and overlap between ttchk() and conchk() in ckutio.c.  So I
  3397. created a new (static) routine, in_chk(), which replaces both of them, and
  3398. adds new methods of checking to each, including select(), which had never been
  3399. used here before.  Addition of select() covers HP-UX systems prior to 9.0,
  3400. which previously were not covered (I checked the oldest HP-UX system I have
  3401. access to, 5.21, and it had select()).  But then after building and testing
  3402. the new code on HP-UX, I discovered that all HP-UX versions also had FIONREAD,
  3403. which is preferable to select() because it returns not only the state of the
  3404. read buffer, but the number of bytes in it.  The new in_chk() routine is
  3405. structured to use FIONREAD, if it is available, in preference to select(),
  3406. poll(), rdchk(), or other methods, because FIONREAD gives not just a yes/no
  3407. status, but the actual number of characters waiting.  This is a major
  3408. improvement for HP-UX and probably many others -- not only does it make
  3409. local-mode file transfer interruption easier, but it makes sliding windows
  3410. work better (see notes above from Oct 25, 93).  In doing this, I also got rid
  3411. of usleep() in the SunOS, NeXTSTEP, and BSDI, versions, replacing it by
  3412. select(), in msleep().  Also, I moved the compile "logic" (#ifdefs) for
  3413. deciding about all this to ckcdeb.h, so it would be available at all times to
  3414. all modules, and added display of their status to SHOW FEATURES.  makefile,
  3415. ckcdeb.h, ckuus5.c, ckutio.c 5A(137), 3 Jul 94.
  3416.  
  3417. Since HP-UX doesn't need CK_POLL any more, I removed all the HP-UX 9.0
  3418. model-800 specific makefile entries that I added a few days ago to account for
  3419. poll() not being available on the 800 series.  I also removed it from the
  3420. HP-UX 10.0 entries.  Also added -DRENAME to HP-UX 8.0 makefile entries, and
  3421. cleaned them up.  Tested on HP-UX 5.21, 8.0, 9.03, and 10.0.
  3422. makefile, 3 Jul 94.
  3423.  
  3424. Noticed that file dates weren't recorded correctly by 4.4BSD (BSDI, etc) when
  3425. receiving files.  This is because there was no code in zstime() in ckufio.c
  3426. to adjust for the timezone.  After some digging, I found out how to do it
  3427. and added the needed code.  Tested on BSD4.4-Lite and BSDI 1.0.  It won't work
  3428. (obviously) if the system does not have its timezone set correctly, but
  3429. otherwise it seems fine.  ckufio.c 5A(090), 3 Jul 94.
  3430.  
  3431. Linus Torvalds told me that Linux supports both select() and FIONREAD, so I
  3432. defined SELECT for all Linux builds, allowing it to be used in (at least)
  3433. msleep().  FIONREAD is not available on Linux 0.99.14.  I'm not sure which was
  3434. the first release to have it, but if Kermit is built on a system that has
  3435. FIONREAD defined in <sys/ioctl.h> (?), then it will be used by in_chk().  In
  3436. any event, the Linux version now has a working in_chk(), and so users no
  3437. longer have to precede local-mode file-transfer interruption characters with
  3438. the CONNECT-mode escape character, and sliding-window transfers will work
  3439. better now.  ckcdeb.h, ckutio.c 5A(138), 4 Jul 94.
  3440.  
  3441. Removed -DUSLEEP from Linux makefile entries, fixed the static-linking Linux
  3442. entries (which never worked before), and consolidated all the Linux entries
  3443. into linux, linuxs, linuxtcp, linuxtcps.  makefile, 4 Jul 94.
  3444.  
  3445. Discovered that UnixWare 1.1.1 supports select() too, but didn't do anything
  3446. about because who knows about 1.1, 1.0, etc, and it already uses poll(), so
  3447. who cares.
  3448.  
  3449. Rearranged and fixed the Linux hi-speed stuff again, via suggestions from
  3450. Alan Modra <alan@spri.levels.unisa.edu.au>.  I also got rid of the messages
  3451. telling about LINUX_HI_SPEED or ASYNC_SPD_MASK.  It turns out that it does no
  3452. harm to always build Linux C-Kermit with high speeds enabled.  If the
  3453. underlying Linux version does not support a high speed, the corresponding
  3454. SET SPEED command will fail (tested on Linux 0.99.14).  If it turns out I'm
  3455. wrong, you can add -DNOHISPEED to CFLAGS.  ckcdeb.h, makefile, ckutio.c,
  3456. 6 Jul 94.
  3457.  
  3458. Minor changes for SCO Xenix 2.2.3 & 2.2.4 with Excelan and Lachman TCP/IP,
  3459. respectively, from William Bader.  6 Jul 94.
  3460.  
  3461. Fixed prescan() to compile OK with -DNODEBUG, change from Douglas Boyce
  3462. <ak272@freenet.buffalo.edu>.  ckuus4.c, 6 Jul 94.
  3463.  
  3464. Changed OS/2 default flow control from KEEP to NONE, because KEEP no longer
  3465. explicitly turns on Request To Send (RTS), but all the other methods do.  This
  3466. was preventing communication from taking place at all for some people
  3467. (reported by Bob Babcock).  ckotio.c 5A(138), 6 Jul 94.
  3468.  
  3469. Made separate keyword tables for SET FILE TYPE and REMOTE SET FILE TYPE.  On
  3470. VMS, OS/2, etc, users should not be allowed to REMOTE SET FILE TYPE LABELED or
  3471. other system-specific types -- only TEXT and BINARY.  Thanks to Max Evarts for
  3472. noticing this anomaly.  Also, hooked SET SESSION-LOG into the REMOTE table,
  3473. since TEXT and BINARY should be the only combinations.  Also, made ASCII an
  3474. invisible synonym for TEXT.  ckuus3.c, ckuus7.c, 6 Jul 94.
  3475.  
  3476. More fixes to OS/2 NETBIOS support from Jeff Altman, ckonet.c, 6 Jul 94.
  3477.  
  3478. Minor ANSIfications to CKVFIO.C and ckcnet.c for VMS with GCC, from James
  3479. Sturdevant <sturdeva@watsun.cc.columbia.edu>.  CKVFIO.C 5A(112),
  3480. ckcnet.c, 8 Jul 94.
  3481.  
  3482. Added code, but left it commented out, for setting socket buffer size for
  3483. TCP/IP connections, from William Bader <wbader@csee.lehigh.edu>.
  3484. ckcnet.c 5A(032), 8 Jul 94.
  3485.  
  3486. Eduard Vopicka pointed out that problems with UNIX APC losing characters might
  3487. be exacerbated by the arrangement of the two CONNECT forks.  But we can't
  3488. switch to using select() in one fork, because select() is not portable.  Nor
  3489. can we use lightweight processes, shared memory, threads, etc, for the same
  3490. reason.  The current structure (top fork reads/sends keystrokes, bottom fork
  3491. reads/displays communications device input) was chosen arbitrarily about 10
  3492. years ago, and we have built upon it ever since.
  3493.  
  3494. One problem with the CONNECT module is that it clears its internal buffers
  3495. (ibuf, obuf) and pointers (ibp, obp) every time it is entered.  So I
  3496. rearranged the code to ensure that these buffers and pointers are allocated
  3497. and set only upon first entry.  This way, if we read (for example) an APC
  3498. escape sequence followed by the subsequent prompt into the CONNECT command's
  3499. internal buffer, we don't clear out the material after the escape sequence
  3500. in the act of popping back to the command parser.  This won't help with UNIX
  3501. because of the fork problem, but to test this hypothesis, I rearranged the VMS
  3502. CONNECT module (one fork) to behave this way.  And now it works.
  3503.  
  3504. In the UNIX version, the upper and lower forks have their own private copies
  3505. of the communications-device input buffer, ibuf[].  If the lower fork exits
  3506. with characters remaining in ibuf[], they are lost.  This could be fixed, as
  3507. Eduard Vopicka suggests, reversing the forks.  Let's say the fork that reads
  3508. the keyboard and sends the keystrokes is the called KEYB fork, and the fork
  3509. that reads from the communications device and displays on the screen is called
  3510. the PORT fork.  Currently, the PORT fork is the lower fork.
  3511.  
  3512.  1. The PORT fork can get a disconnect indication when trying to read from
  3513.     the communications device, and it must inform the KEYB fork.  Likewise,
  3514.     the KEYB fork can get a disconnect indication when trying to send to
  3515.     the communications device, and it must kill the PORT fork.  The same
  3516.     would be true if the forks were reversed.
  3517.  
  3518.  2. The PORT fork gets incoming TELNET negotiations, and so it must inform the
  3519.     KEYB fork of echoing changes, since the KEYB fork is responsible for
  3520.     echoing.  Thus, no matter what the arrangement of the forks, the two must
  3521.     keep their echoing status in sync.
  3522.  
  3523.  3. The PORT fork gets X.25 PAD parameters, so it must convey them to the KEYB
  3524.     fork because the KEYB fork uses them all.
  3525.  
  3526.  4. The PORT fork gets the APC escape sequence, and must convey it to the
  3527.     command parser.  It also may have read ahead, and so therefore must not
  3528.     destroy the low-level communications input buffer.
  3529.  
  3530. If the forks were reversed, we would still need signals from the lower to the
  3531. upper fork in cases 1-3.  We would still need to send data through pipes in
  3532. cases 2 and 3, but from top to bottom rather than vice versa.  So we would
  3533. gain nothing in simplicity of structure.  Tons of code would need to be
  3534. rearranged and tested.  The ramifications could be far-reaching, the effort
  3535. and risk great, and the benefits by no means assured.  So no reversing the
  3536. forks.
  3537.  
  3538. A simpler solution was found: the lower fork, upon detecting the end of an APC
  3539. sequence, first flushes its output buffer to refresh the screen (ckcputf), and
  3540. then passes the values of its input buffer pointers (ibp), count (ipc), and
  3541. contents (ipc characters starting at ibp) to the upper fork through the pipe.
  3542. We know that no characters are sitting in the lower level ck*tio.c buffers,
  3543. because the last call to ckcgetc() got all that there were.  Any other
  3544. characters that have arrived from the host in the interim are still in the
  3545. operating system's buffers, and we can still read them later.  Now since ibp,
  3546. ipc, and ibuf (as of today) stay put from one conect() invocation to the next,
  3547. the CONNECT command will pick up exactly where it left off previously, with
  3548. the next newly-created lower fork inheriting the correct buffer counts,
  3549. pointers, and contents from the upper fork.  The only glitch seems to be that
  3550. when the APC commands include an ECHO command, sometimes the first character
  3551. of the echoed text is lopped.  ckucon.c 5A(065), 8 Jul 94.
  3552.  
  3553. Glitch fixed.  The problem was that we always would output the Esc character
  3554. that starts an APC sequence, because we did not yet know it was going to be an
  3555. APC.  This would cause bizzare effects in the terminal emulator or window,
  3556. since any character at all could show up after the APC sequence.  So now, when
  3557. APC processing is enabled (i.e. SET TERM APC is not OFF), we hang on to the
  3558. Esc character until the next character arrives; if it is not the APC
  3559. introducer (underscore), then we output the Esc before outputting the next
  3560. character.  If it is the APC introducer, we process the entire APC sequence
  3561. internally, including the Escape.  ckucon.c 5A(066), 9 Jul 94.
  3562.  
  3563. Migrated today's changes to the VMS version.  CKVCON.C 5A(035), 9 Jul 94.
  3564.  
  3565. From Jeff Altman, more fixes and improvements to OS/2 NETBIOS support,
  3566. including enabling of sliding-window transfers, plus a new OS/2 makefile.
  3567. 9 Jul 94.
  3568.  
  3569. Installed LINK386 2.01.016 on my OS/2 system, which fixes a stack problem
  3570. that was causing OS/2 C-Kermit to crash when the mouse was used.  9 Jul 94.
  3571.  
  3572. Added REDIRECT command for Linux.  ckcdeb.h, 9 Jul 94.
  3573.  
  3574. Tried adding -DSELECT for Solaris, but it seemed to screw things up; put it
  3575. back to how it was, using poll().  Tried "#define FIONREAD FIORDCHK" for
  3576. Solaris, but that REALLY did not work.  In case anybody ever asks you,
  3577. FIORDCHK != FIONREAD.
  3578.  
  3579. Built new OS/2 C-Kermits, 16 and 32 bit, with above fixes and new linker.
  3580.  
  3581. And new VMS C-Kermits, VAX and AXP, UCX and TGV.  And new UNIX C-Kermits:
  3582. SunOS 4.1.3, Solaris 2.3, NeXTSTEP 3.1, Linux, UnixWare, HP-UX, etc, working
  3583. out glitches long the way.
  3584.  
  3585. (Note: still need to test -DNOCSETS, -DNOAPC, -DNOESCSEQ, etc...)
  3586.  
  3587. (Note: still need to fix up X.25 code in ckucon.c...)
  3588.  
  3589. This is Beta.07, 9 Jul 94.
  3590.  
  3591. Noticed that when TELNETing from Linux or Solaris (System-V-style signal
  3592. handling) to NeXTSTEP (which has a bizarre TELNET server that sends lots of
  3593. echo changes when you first connect to it, probably 3 or 4 within a couple
  3594. microseconds), that when the TELNET server breaks the connection, Kermit would
  3595. hang.  Turns out that this was caused by our nice new pipeint() routine and
  3596. consolidation of SIGUSR1 and SIGUSR2.  The problem was that we were trying to
  3597. read from a pipe (to handle the duplex change) after the port fork was already
  3598. pause()'d.  So I went back to having two signal handlers, one for
  3599. disconnections (forkint() on SIGUSR1) and the other for mode-change messages
  3600. to be read from the lower fork through the pipe (pipeint() on SIGUSR2).  This
  3601. fixed the problem on both Solaris and Linux.
  3602.  
  3603. However, Linux is having one heck of a time handling SIGUSR2s...  Signals do
  3604. not seem to be delivered reliably, or else they are not blocked while being
  3605. handled.  When TELNETing to the NeXT, Linux C-Kermit almost always gets the
  3606. echoing wrong because Linux can't seem to handle the repeated SIGUSR2 signals
  3607. caused by rapid-fire echoing changes without dropping some.  The pre-APC
  3608. version of ckucon.c had exactly the same problem on Linux so we can't blame it
  3609. on the new code.  Hopefully, this won't affect anybody, ha ha.
  3610.  
  3611. Ha ha indeed.  Next I tried the new code on Unixware.  Upon TELNETing to a
  3612. NeXT, it politely said "User signal 2" and then Kermit's upper fork simply
  3613. vanished, leaving the lower CONNECT fork merrily spinning away, like a
  3614. headless chicken.  Evidently, the default action for SIGUSR2 in Unixware is to
  3615. _exit().  This problem turns out to be present also for earlier versions -- it
  3616. was evidently *never* possible to TELNET from C-Kermit on Unixware to a NeXT.
  3617.  
  3618. To fix, I began by putting signal(SIGUSRx,SIG_IGN)'s everywhere (program
  3619. startup in sysinit(), CONNECT exit code, etc) to ensure these signals are
  3620. never armed when Kermit's handler is not ready.  When pipeint() gets SIGUSR2,
  3621. it rearms it immediately as its first statement.  Thus there is only the
  3622. tiniest possible window during which a SIGUSR2 is caught and the time at which
  3623. it is re-armed -- i.e. the time that it takes to execute the signal() call.
  3624. Nevertheless, this problem will occur about 50% of the time when TELNET'ing
  3625. with C-Kermit from Unixware to a NeXT.  In looking at Unixware <signal.h>, I
  3626. see that SIGUSR1 and SIGUSR2, normally 30 and 31, have different values: 16
  3627. and 17, which are more often used (on other systems) for such items as SIGURG
  3628. and SIGSTOP.  Then I discovered that in Linux, the values are 10 and 12.  I
  3629. wonder if that's the trouble...  No.  Logs reveal that when TELNET'ing to a
  3630. normal kind of host, like a Sun, pipeint() gets invoked as expected and works
  3631. properly.
  3632.  
  3633. OK, so back to Linux.  After having honed this code down to the bone, I ran
  3634. it again on Linux and found:
  3635.  
  3636.   CONNECT TELNET duplex change=0
  3637.   pipeint arg=12
  3638.   pi** PORT=255 <-- Aha! pipeint is interrupted before it can do anything.
  3639.  
  3640. It read the function code from the pipe, but was interrupted before it
  3641. could (a) finish writing the debug entry (which should have said "pipeint
  3642. code=3"), and (b) execute the function, i.e. change duplex.  And again:
  3643.  
  3644.   TELNET SENT DONT ECHO=1
  3645.   CONNECT TELNET duplex change=1
  3646.   pipeint arg=12
  3647.   pi** PORT=13   <-- And again.
  3648.   ...
  3649.   tn_doop returns=2
  3650.   CONNECT TELNET duplex change=0
  3651.   pipeint arg=12
  3652.   pCKCGETC 1 calling ttinc(0)  <-- And again.
  3653.  
  3654. So the (disgusting, bleh) solution is for the lower fork, after signalling a
  3655. duplex change to the upper fork, to sleep for a few hundred milliseconds.
  3656. This should be totally transparent to the user, because, after all, how often
  3657. could it possibly happen during a telnet session?  This change makes the
  3658. Linux version echo correctly, and it seems to fix the Unixware situation too.
  3659.  
  3660. All this: ckucon.c 5A(067), 10 Jul 94.
  3661.  
  3662. This is Beta.08, 10 Jul 94.  The changes from 07 to 08 are strictly specific
  3663. to UNIX.
  3664.  
  3665. From Mark <markd@sco.com>, who works at SCO...  He says that RTS/CTS
  3666. (CK_RTSCTS) and Sys V R3 Job Control (SVR3JC) can safely be added to all SCO
  3667. UNIX 3.2v4 makefile entries.  makefile, 11 Jul 94.  Also, a fix for a typo in
  3668. ckucon.c which breaks compilation when DYNAMIC is not defined, reported by
  3669. Mark and many others.  11 Jul 94.
  3670.  
  3671. Changed default SET TERMINAL APC in OS/2 from ON to OFF for security reasons.
  3672. ckuus5.c, 13 Jul 94.
  3673.  
  3674. Jeff Altman cured a problem in OS/2 C-Kermit, in which the system could hang
  3675. under certain conditions during execution of spawned subprocesses. 
  3676. ckufio.c 5A(091), 13 Jul 94.
  3677.  
  3678. Also from Jeff, more improvements to the OS/2 Netbios code.  Now long-packet
  3679. sliding-window transfers go very smoothly over Netbios.
  3680. ckonbio.c 5A(006), ckonet.c 5A(023), 13 Jul 94.
  3681.  
  3682. Also from Jeff, updates to the OS/2 makefile.  ckoker.mak, 13 Jul 94.
  3683.  
  3684. This is Beta.09.
  3685.  
  3686. Fixed CKETEST.INI to be able to TAKE CKEDEMO.INI even if it is not being
  3687. executed from the current directory, as long as it is in the same directory
  3688. that CKETEST.INI was TAKEn from, using a diabolical trick involving
  3689. \freverse(\v(cmdfile))...  CKETEST.INI, 14 Jul 94.
  3690.  
  3691. More NetBios fixes from Jeff, plus a fix for an off-by-one error in the
  3692. file transfer display.  ckonbi.c, ckonet.c, ckuusx.c, 14 Jul 94.
  3693.  
  3694. Made OS/2 C-Kermit screen writes during execution of REMOTE commands be
  3695. unbuffered to alleviate jerkiness.  ckcfns.c, 14 Jul 94.
  3696.  
  3697. Added \v(ftype) = file type ("text", "binary", etc).  ckuus4.c, 14 Jul 94.
  3698.  
  3699. Made REMOTE SET WINDOW also set the local window size.  ckuus3.c, 14 Jul 94.
  3700.  
  3701. Got access to an Alpha AXP VMS 6.1 system with Wollongong TCP/IP, courtesy of
  3702. the Mount Sinai School of Medicine of the City University of New York, with
  3703. special thanks to Ragu Nagalingam.  Built Kermit OK, but the TELNET command
  3704. doesn't work.  Turns out to be because of some kind of DEC C prefixing.  Larry
  3705. Henry at Wollongong pointed me at the Wollongong makefile sample showing how
  3706. to get around this, but when I use it, some of the modules (like ckvfio.c)
  3707. won't compile because of conflicting definitions in Wollongong and DEC header
  3708. files.  Just for laughs, I tried building CKVFIO.C with the old makefile,
  3709. which works (luckily, CKVFIO.C contains no network references), and then
  3710. building the rest with the new procedure (a temporarily hacked-up .COM file),
  3711. and then linking them together.  It worked.  Will have to sort all this out
  3712. later.
  3713.  
  3714. This is Beta.10.
  3715.  
  3716. New XSEND.CMD Rexx procedure from Jeff Altman, for sending directory trees
  3717. from OS/2 C-Kermit, similar to the XSEND.EXE program for DOS, except there
  3718. is no intermediate command file.  CKOXSE.CMD (= XSEND.CMD on the diskette).
  3719. 14 Jul 94.
  3720.  
  3721. Bob Babcock reported: "If I want to send file Bin/foo, and I type:
  3722.  
  3723.    send B<tab>f
  3724.  
  3725. then realize that the file name completion has not generated a path
  3726. separator, and try to backspace to correct the problem, I get a message that
  3727. file Bin is not readable.  Somehow it doesn't seem right for Kermit to
  3728. complain that I've entered something invalid in response to my attempt to
  3729. backspace to fix what I've typed."  Fixed in ckucmd.c 5A(061), 15 Jul 94.
  3730. Now if you activate filename completion on a directory name (except in the VMS
  3731. version, where path specifications have more complicated syntax), Kermit will
  3732. complete the name of the directory, then supply the path separator, and then
  3733. beep to let you know that the file specification is not complete.  CK_TMPDIR
  3734. must be defined, because we need the isdir() function for this.
  3735.  
  3736. \m(foo) is supposed to be a "long variable name", and should act like any
  3737. other variable, such as \%a.  However, it turns out that it never did, and
  3738. nobody ever noticed.  The difference that \m(foo) returned the definition of
  3739. the "macro" foo, literally, without bothering to evaluate it any further.  So:
  3740.  
  3741.   def \%a \v(date)
  3742.   echo \%a
  3743.   15 Jul 94
  3744.  
  3745. but:
  3746.  
  3747.   def foo \v(date)
  3748.   echo \m(foo)
  3749.   \v(date)
  3750.  
  3751. In other words, \m(foo) was the same as \fdefinition(foo).  Now \m(foo)
  3752. returns the fully evaluated definition of foo, but \fdef(foo) still returns
  3753. its "bare" definition, as before, and as it should.  I hope nobody depended on
  3754. the old erroneous behavior; if so, they need only change \m to \fdef wherever
  3755. it matters.  The new behavior is compatible with MS-DOS Kermit.  ckuus4.c,
  3756. 15 Jul 94.
  3757.  
  3758. Added CHECK REDIRECT.  ckuusr.c 5A(142), 15 Jul 94.
  3759.  
  3760. New command file, ckuszrz.ini, for UNIX, for defining macros to run sz, rz,
  3761. sb, rb, sx, rx as external protocols.  Depends on the \m(foo) change and on
  3762. CHECK REDIRECT.  15 Jul 94.
  3763.  
  3764. Never mind.  Backed off on \m(foo) change, and reworked ckurzsz.ini
  3765. accordingly.  The \m(foo) change had disastrous consequences when "foo"
  3766. was defined to be an OS/2 file specification that included \ as the path
  3767. separator.  This totally broke almost everything in CKERMIT.INI.  Live and
  3768. learn (again).  15 Jul 94.
  3769.  
  3770. Roger J Allen <rja@sispro.sis.rpslmc.edu> noticed that TELNET BREAK wasn't
  3771. working any more on DYNIX/ptx, since some time after Alpha.02.  Turns out
  3772. it was broken in a lot more places than that -- everywhere but OS/2.  Fixed
  3773. in ckcnet.c 5A(034) 15 Jul 94.
  3774.  
  3775. This is Beta.11.
  3776.  
  3777. Corrected a typo in the sco3v4 makefile entry noticed by Lawrence Kirby.
  3778. 20 Jul 94.
  3779.  
  3780. From Jeff Altman, a fix to the OS/2 version, which could crash if you:
  3781.  
  3782.   SET NETWORK NETBIOS BLAH
  3783.   SET HOST *
  3784.  
  3785. twice in a row, if you did not have TCP/IP installed on your system.
  3786. ckonet.c 5A(025) 21 Jul 94.
  3787.   
  3788. Made an executable for VAX/VMS 5.5-2 / Wollongong Pathway 1.1 thanks to access
  3789. provided by the Mt. Sanai School of Medicine in New York City.
  3790.  
  3791. This is Beta.12.
  3792.  
  3793. Fixes from Jeff Altman for OS/2 C-Kermit:  "(1) SET NETWORK NETBIOS now
  3794. defaults to the myhost[] string instead of 'kermit' for the local NetBios
  3795. name.  ckuus3.c.  (2) Refixed yesterday's tcp_avail fixes.  The previous
  3796. fixes probably broke DECNet.  I also fixed an extremely rare bug which would
  3797. occur if a file transfer was broken prematurely by the Kermit server while
  3798. using DecNet, Named Pipes, or NetBios as the transfer media.  Since these
  3799. media use a local buffer, a netflui() call must flush the local buffer as well
  3800. as the network.  Otherwise, kermit would get very confused.  ckonet.c."
  3801.  
  3802. Also, I changed the SET NETWORK command to fail on OS/2 if it is given for
  3803. any type of network that is not loaded.  And I changed the default network
  3804. type in OS/2 to be the first one on the following list which actually is
  3805. loaded:  TCP/IP, DECnet, NETBIOS, Named Pipe.  I also fixed the SHOW NETWORK
  3806. command to fit on one screen again by omitting details of networks which are
  3807. not loaded or active.  ckonbi.c, ckonet.c, ckuus4.c.  22 Jul 94.
  3808.  
  3809. Changed OS/2 SET NETWORK to hide the network names of uninstalled networks so
  3810. they won't show up in the SET NET ? listing, and changed the SET NET default
  3811. string from a hardwired "tcp/ip" to the name of the highest installed network
  3812. from the list above.  ckuus3.c, 22 Jul 94.
  3813.  
  3814. Fixed OS/2 C-Kermit server's response to REMOTE HELP to contain CRLFs rather
  3815. than only LFs.  ckcmai.c, 22 Jul 94.
  3816.  
  3817. This is Beta.13, 22 Jul 94.
  3818.  
  3819. Changed REMOTE SET FILE TYPE { TEXT, BINARY } to also allow LABELED.
  3820. VMS and OS/2 only.  ckuus[37].c, 23 Jul 94.
  3821.  
  3822. Added \v(sysid) variable to return the Kermit code for the system ID
  3823. (see pp.275-278 of the Kermit book), e.g. U1 for UNIX, UO for OS/2, etc.
  3824. ckuusr.h, ckuus4.c, 23 Jul 94.
  3825.  
  3826. Added \v(space) variable -- for OS/2 only for now.
  3827. ckuusr.h, ckuus4.c, 23 Jul 94.
  3828.  
  3829. Added client and server end of REMOTE PWD.  This is a new Generic server
  3830. command, "A".  ckuusr.h, ckuus7.c, ckuusr.c 5A(143), ckcpro.w 5A(065),
  3831. 23 Jul 94.
  3832.  
  3833. Designed and implemented REMOTE QUERY and REMOTE ASSIGN, to let a Kermit
  3834. client inquire about and set the values of a Kermit server's variables.  The
  3835. design is system independent, allowing separate querying of "kermit" read-only
  3836. variables (like C-K's and MSK's \v(...) items), "system" read-only variables
  3837. (like environment variables in UNIX or DOS, or logical names in VMS), and
  3838. "global" variables (for want of a better term), which can be queried or set.
  3839. When C-Kermit is the client, results of queries (up to 1K in length) go into
  3840. the new \v(query) variable, which refers to the query response buffer, which
  3841. is 1K in length.  Anything after 1K is discarded.
  3842.  
  3843. Added QUERY and ASSIGN to ENABLE / DISABLE server-feature list.
  3844. ckuusr.h, ckuus6.c, ckcpro.w 5A(066) 24 Jul 94.
  3845.  
  3846. Added text about REMOTE QUERY and ASSIGN to server help text.
  3847. ckcmai.c, 24 Jul 94.
  3848.  
  3849. Added help text for REMOTE { QUERY, ASSIGN } to ckuus2.c.  24 Jul 94.
  3850.  
  3851. Changed REMOTE QUERY to display as well as store.  All the other REMOTE
  3852. commands display whatever comes back, so REMOTE QUERY should too.  ckcfns.c,
  3853. 24 Jul 94.
  3854.  
  3855. Noticed that in OS/2 version, the DIRECTORY command, when given a wildcard
  3856. filespec which matched no files or exactly one file, would give a parse error.
  3857. rather than reporting "file not found" or listing the single matching file.
  3858. Fixed in ckuus6.c, and ckucmd.c 5A(062), 24 Jul 94.
  3859.  
  3860. Discovered that SET BUFFERS never worked in 16-bit C-Kermit implementations
  3861. where malloc() requires an integer argument, if given numbers that were too
  3862. big for the wordsize.  The 16-bit OS/2 version, for example, would just hang.
  3863. Fixed inibufs() to use unsigned ints and to catch and recover from integer
  3864. overflow, and fixed the SET BUFFERS parser also to catch integer overflow and
  3865. give an informative message.  ckcfn3.c, ckcfns.c 5A(115), 24 Jul 94.
  3866.  
  3867. This is Beta.14.
  3868.  
  3869. Cast away a bunch of complaints about (CHAR *) vs (char *) mismatches from
  3870. ckcpro.w.  26 Jul 94.
  3871.  
  3872. Fixed a bug in the rejection of files on the basis of size, noticed by Jeff
  3873. Altman.  ckcfn3.c, ckcfns.c 5A(116) 26 Jul 94.
  3874.  
  3875. Changed #ifdef COMMENT to #ifdef CK_LINGER around the block of TCP/IP
  3876. code that William Bader sent in for netopen().  This turns off the socket
  3877. "linger" parameter, which makes a close() block until all data is sent, but
  3878. which can result (he says) in Kermit hanging when telnet'ing to a flaky server
  3879. or to a modem server when the modem is in use.  Also included is some code
  3880. to increase socket buffer sizes, now selected by CK_SOCKBUF.  Both of these
  3881. symbols are undefined by default.  On SunOS 4.1.3, enabling CK_LINGER revealed
  3882. that the linger parameter was already off, so it had no effect.  Enabling 
  3883. CK_SOCKBUF increased the socket buffers from 24576 to 32768, but no
  3884. improvement in performance was noted.  ckcnet.c 5A(035), 30 Jul 94.
  3885.  
  3886. From Steve Walton: Commodore Amiga support for the DIAL and SCRIPT commands.
  3887. ckudia.c 5A(059), ckuscr.c 5A(020), 30 Jul 94.
  3888.  
  3889. Don't call prescan() if NOICP is defined.  ckcmai.c 5A(190), 30 Jul 94.
  3890. From Michael T Pins <amigapd@icaen.uiowa.edu>.
  3891.  
  3892. A lot of recoding in the system-independent modules to allow F and G packets
  3893. (as well as ACKs) to be long packets of any length at all, up to the maximum
  3894. negotiated length.  Elimination of various extraneous limited-length static
  3895. buffers and arcane code regarding encstr() -- encstr() now encodes directly
  3896. into the packet data buffer.  I don't remember what the problem was before
  3897. that prevented this from working, but I must have fixed it since then.  These
  3898. changes allow filenames, server commands, and ACK data fields up to the
  3899. maximum negotiated packet length, and thus allow short-form responses to
  3900. server commands to be made via long ACK packets.  C-Kermit server tested
  3901. against both C-Kermit and MS-DOS Kermit client successfully.  ckcpro.w
  3902. 5A(067), ckcfns.c 5A(117), ckcfn2.c, ckuusx.c, etc etc, 30 Jul 94.
  3903.  
  3904. Changed REMOTE QUERY GLOBAL to REMOTE QUERY USER -- just the name, not the
  3905. semantics... GLOBAL is too computery.  ckuus7.c.  30 Jul 94.
  3906.  
  3907. Ever since the UNIX APC code went into ckucon.c on July 9th, Eduard Vopicka in
  3908. Prague <Eduard.Vopicka@vse.cz> has been finding and closing little race
  3909. conditions in the interprocess communication between the two CONNECT forks.
  3910. First, he found that the msleep(250) was not necessarily enough, so what was
  3911. needed was a portable equivalent of semaphores.  To make a 3-week-long story
  3912. short, we now have the two CONNECT forks interrupting each other in *both*
  3913. directions, rather than just one, and using pipes in both directions to ensure
  3914. that needed actions have completed.  Also, we're back to using one signal
  3915. rather than two, and that signal can be defined at compile time.  It turns out
  3916. that SIGUSR1 is not safe on all systems -- for example, it is said to do take
  3917. the place of SIGURG in SCO versions, to signal OOB data on a TCP socket.  And
  3918. of course, we learned earlier that SIGUSR2 is dangerous elsewhere, like in
  3919. UnixWare.  So in ckucon.c we now use CK_FORK_SIG, which can be defined at
  3920. compile time to be any signal you want.  Because of the new synchronization
  3921. between the forks, many msleeps and sleeps could be removed, resulting in
  3922. noticeably snappier performance.  Eduard also discovered that under certain
  3923. conditions -- apparently only involving APCs -- the CONNECT module can be
  3924. entered with an alarm() active, which eventually goes off causing a longjmp to
  3925. a long-gone place and thus a core dump.  The cause was not found, but adding a
  3926. call to ttimoff() in the CONNECT module fixes the problem.  I took Ed's work
  3927. pretty much as-is, but had to fix assorted portability problems, mainly with
  3928. preprocessor constructions & identifier names, and also fixed the problem with
  3929. the disappearing "Back at..." message after an APC had been executed.
  3930. ckucon.c 5A(068), ckutio.c 5A(142), 30 Jul 94.
  3931.  
  3932. Tested new UNIX CONNECT module on SunOS 4.1.3, NeXTSTEP 3.1, UnixWare 1.1.1,
  3933. Solaris 2.3 (with both GNU cc and SUNPro CC), Linux 0.9.14, HP-UX 9.03.
  3934. It seems to function perfectly everywhere.
  3935.  
  3936. Also from Eduard: an ASCII-graphic percent-done thermometer for the fullscreen
  3937. file transfer display.  Included only if you define CK_PCT_BAR, which is not
  3938. defined by default.  ckuusr.c 5A(144), ckuusx.c, 30 Jul 94.
  3939.  
  3940. Changed HELP module to check terminal rows not only in HELP command, but
  3941. also in INTRO and anything else that calls hmsga().  ckuus2.c, 31 Jul 94.
  3942.  
  3943. Added #define NOJC to ckoker.h, because SUSPEND is not supported in OS/2 C-K.
  3944. 31 Jul 94.
  3945.  
  3946. Added \v(startup) (startup device:directory) to OS/2 version.  ckuusr.h,
  3947. ckuus4.c, 31 Jul 94.
  3948.  
  3949. More changes to OS/2 NETBIOS support from Jeff Altman, primarily that NETBIOS
  3950. can never be the default network type because the user has to choose a session
  3951. name.  ckonet.c 5A(027), 31 Jul 94.
  3952.  
  3953. OS/2 space-checking routine fixed by Jeff A to account for the space that will
  3954. be vacated by an existing file that will be removed because of the file
  3955. collision action.  ckufio.c 5A(092), 31 Jul 94.
  3956.  
  3957. Removed "ioctl(ttyfd,TCSAFLUSH,&n);" from the BSD44 section of UNIX ttflui().
  3958. TCSAFLUSH is not a valid argument for ioctl().  This call was making console
  3959. messages ("ser0: ioctl(,2,,)") pop up on the system console of (at least)
  3960. NetBSD/Mac68k systems.  Reported by Ken Nakata <kxn3796@hertz.njit.edu>.
  3961. ckutio.c 5A(143), 31 Jul 94.
  3962.  
  3963. I discovered that when C-Kermit has a connection to a Kermit server upon
  3964. which C-Kermit's own packets are echoed back at it, C-Kermit's "echo
  3965. cancellation" technique fails under certain circumstances, and one of them
  3966. leads to an infinite loop.  Most of this has to do with the overloading of
  3967. packet 0...  Anyway the solution was to have the protocol state machine ignore
  3968. E packets and Y packets when in server command wait state.  Previously,
  3969. C-Kermit would answer an E packet received in this state with another E
  3970. packet, which not only was wrong, but results in an infinite exchange of
  3971. E-packets.  And when the C-Kermit server replies to a G command with a
  3972. short-form response (i.e. in the data field of an ACK) and the ACK is echoed
  3973. back, C-K would not detect it as an echo.  So ACKs received during server
  3974. command wait are also now ignored.  ckcpro.w 5A(068), 31 Jul 94.
  3975.  
  3976. In the course of this investigation it was discovered that the mysterious
  3977. messages like:
  3978.  
  3979.   @-|3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$5$0___E
  3980.  
  3981. that we sometimes see were the result of an Init string (in the data field of
  3982. an ACK to an I packet) being misinterpreted as encoded data, which happens
  3983. when the client's G packet is clobbered: the server times out and retransmits
  3984. its previous ACK to the client's I packet, which contains the Init string, but
  3985. the client thinks it is a short-form reply to the G packet "decodes" it,
  3986. producing results like the above.  There is no way for the client to tell the
  3987. difference because the two Y packets have the same sequence number (0):
  3988. If-I-Had-It-To-Do-Over Dept.
  3989.  
  3990. Nelson Beebe reported that if you used C-Kermit under Solaris 2.3 in local
  3991. mode to transfer a file with its FILE DISPLAY set to FULLSCREEN, then upon
  3992. return to the prompt, keystrokes would no longer echo.  I fixed this by
  3993. adding -DCK_NEWTERM to the Solaris makefile entries.  31 Jul 94.
  3994.  
  3995. This is Beta.15, 31 Jul 94.
  3996.  
  3997. Corrected a typo in the incoming-file-size-checking code, from Jeff Altman.
  3998. ckufio.c 5A(093) 1 Aug 94.
  3999.  
  4000. Minor correction to an error-handling section in UNIX CONNECT module from
  4001. Eduard Vopicka.  Also, reshuffling of some of the declarations to allow
  4002. non-DYNAMIC compilations to work right.  ckucon.c 5A(069), 1 Aug 94.
  4003.  
  4004. Added -DDYNAMIC -DCK_CURSES + "LIBS= -lcurses -ltermcap" to Tandy 16/1600
  4005. makefile entry, from Jay Rouman <jsr@dexter.mi.org>.  Makefile, 2 Aug 94.
  4006.  
  4007. Added Transfer Rate (CPS) to the fullscreen file transfer display, and
  4008. made a couple other minor changes to it.  ckuusx.c, 2 Aug 94.
  4009.  
  4010. Added \v(charset), which in the general case is the current file character
  4011. set, and in OS/2 is the current codepage (which is usually also the current
  4012. file set).  ckuusr.h, ckuus4.c, 3 Aug 94.
  4013.  
  4014. A correction to ckcmai.c from Mike Long <Mike.Long@Analog.com> to prevent
  4015. hlptxt from coming up undefined when built with -DNOSERVER, and correction
  4016. to some wording in SHOW FEATURES in ckuus5.c.  3 Aug 94.
  4017.  
  4018. Added the file transfer thermometer as a runtime selection in all CK_CURSES
  4019. versions: SET FILE DISPLAY FULL { THERMOMETER, NO-THERMOMETER }.  No
  4020. thermometer is the default except in OS/2, which has a nice-looking one.
  4021. ckuusr.h, ckuus7.c, ckuusx.c.  3 Aug 94.
  4022.  
  4023. Core dumps reported on NetBSD.  In tracking this down with gdb, I discovered
  4024. that SIGQUIT was always armed in SVORPOSIX versions, even when FIONREAD,
  4025. CK_POLL, SELECT, or RDCHK were available, a mistake which makes it impossible
  4026. to escape back to the prompt under gdb, because gdb takes over SIGQUIT.
  4027. So now esctrp() and all references to it in ckutio.c are enabled only if
  4028. SVORPOSIX is defined *and* FIONREAD, SELECT, RDCHK, and CK_POLL are *all*
  4029. undefined.  ckutio.c 5A(144), 4 Aug 94.
  4030.  
  4031. NetBSD saga: Crash is reproducible.  It happens every time we return to the
  4032. prompt after showing a curses display.  It's because something overwrites the
  4033. cmprom pointer.  When transferring files without using a curses display, it
  4034. never crashes.  So this narrows it down to the code in ckuusx.c that handles
  4035. the curses display, or else the curses library itself.  Trying to debug this
  4036. with gdb, placing a watchpoint on cmprom takes hours and hours...  (Hours and
  4037. hours later...)  It turns out the problem was caused by a bcopy() within
  4038. getwd() writing over random memory.  Cured by using getcwd() instead.  (The
  4039. real cause, pointed out by Mike Long, is that MAXPATHLEN was not appropriately
  4040. defined, because ckufio.c was not #including <sys/param.h> -- who knew.
  4041. ckufio.c 5A(094) 4 Aug 94.
  4042.  
  4043. However, there must have been some reason I was using getwd() in 4.4BSD to
  4044. begin with, but I can't find it in my notes.  Vangogh at Berkeley is down now,
  4045. but that's where I would have done it.  Checking on BSDI, it seems OK there,
  4046. no core dumps, etc, but something else is wrong: the curses display only works
  4047. once.  The second time, many of the fields are stuck against the left and
  4048. right margins.  Session logs show that curses is sending different stuff the
  4049. second time around -- the escape sequences and graphic characters are the
  4050. same, but the tabs are all messed up -- too many or too few in many cases.
  4051. But this does not happen on NetBSD.
  4052.  
  4053. Fixes from Jeff Altman for the situation in which rapid-fire APCs from the
  4054. host could hang OS/2 C-Kermit.  ckocon.c 5A(152), ckomou.c 5A(002), 5 Aug 94.
  4055.  
  4056. Changes to OS/2 NETBIOS support to allow multiple virtual adapters, e.g. when
  4057. IBM and Novell NETBIOS to coexist on the same machine, from Jeff Altman.
  4058. ckuus[4y].c.  5 Aug 94.
  4059.  
  4060. Made 4.4BSD-based versions search <sys/param.h> to get MAXPATHLEN, and
  4061. put a little more bullet-proofing, debugging, and comments in this area.
  4062. ckufio.c 5A(095), 5 Aug 94.
  4063.  
  4064. Changes to SET PORT NETBIOS command to allow switching from a NETBIOS
  4065. connection to (say) a TCP/IP connection, and then back to the same NETBIOS
  4066. connection without getting an error.  ckuus3.c, 5 Aug 94.
  4067.  
  4068. Adjustments to previous edit by Jeff Altman.  ckuus3.c, 6 Aug 94.
  4069.  
  4070. QNX work, QNX 4.2.1, Watcom C16 9.5, 6 Aug 94:
  4071.  . Basic 32-bit version, OK: 366259.
  4072.  . Added KANJI, TCPSOCKET, OK: 400459.
  4073.  . Job Control doesn't work: ^Z has no effect, SUSPEND hangs (sh, ksh),
  4074.    leaves zombies behind after disconnecting.
  4075.  . ANSIC OK, Optimize -O OK: 433669.
  4076.  . CK_NAWS, CK_TMPDIR, OK.
  4077.  . CK_REDIR <sys/wait.h>: 435179.  Works too.
  4078.  . CK_CURSES OK: 396363 (curses but no TCP)
  4079.  . curses-related core dump - happens 2nd time curses is invoked.
  4080.    Fixed by calling initscr() every time, but 2nd & subsequent displays
  4081.    are messed up, like on BSDI.  Several hours spent fooling with this
  4082.    one, to no avail.
  4083.  . CK_WREFRESH added, works OK, but using stdscr instead of curscr
  4084.    because QNX curses doesn't have curscr.
  4085.  . Added 57600, 76800, 115200 bps.  No way of testing them.
  4086.  . ckhost() didn't work; it was calling uname(), changed to gethostname().
  4087.  . Input-buffer-peeking methods available are FIONREAD and select().
  4088.    FIONREAD works, but needed <sys/ioctl.h> included, works ok.
  4089.  . Including <sys/ioctl.h> also gives us modem signals (TIOCMGET, etc).
  4090.  . For msleep, added -DSELECT for select(), for which <sys/select.h> needed
  4091.    including.
  4092.  . "INPUT n string" doesn't work in remote mode, i.e. coninc(x) where x > 0
  4093.    (timed console read) does not work.  Ditto for local mode and ttinc(x).
  4094.    But ttinl(timo..) does work.  It's as if a single-character read() can't
  4095.    be interrupted, but a multiple-character read can be.  Thus, an INPUT that
  4096.    fails will hang forever.
  4097.  
  4098. Outstanding problems:
  4099.  
  4100.  . Ctrl-C trap doesn't work, I can't see why.  SIGINT is armed in in conint(),
  4101.    but it is never caught.  It is probably something to do with the c_cc[]
  4102.    array that is set up in concb() in ckutio.c.  Anyway, in command mode,
  4103.    C-Kermit reads Ctrl-C just like any other character.
  4104.  . Job control doesn't work.  Code compiles and links ok, but SIGTSTP key
  4105.    is ignored and SUSPEND command makes the program hang, no matter which
  4106.    shell is used.
  4107.  . Reactivating the curses display after first leaving it doesn't work right.
  4108.  . ttinc(n) and coninc(n) single-character read()s never get interrupted by
  4109.    alarm()/signal(), so INPUT can hang.
  4110.  . Hardware flow control needs to be added, I don't see how to do it.
  4111.    termios.h has bits called TT*HW, but they are for tcflow(), which is used
  4112.    for flow control actions, not flow-control mode selection, so I don't see
  4113.    how to do it.  There is no termios.h, and there is no CRTSCTS symbol
  4114.    defined anywhere, nor CTSFLOW or RTSFLO, nor RTSXOFF, etc etc.
  4115.  . A 16-bit version still needs to be built.
  4116.  . SET SPEED, especially high speeds, needs testing.
  4117.  . Does QNX use UUCP lockfiles?  If so, which kind?  /usr/spool/uucp/LCK..???
  4118.  . Dialout and serial comms in general needs testing.
  4119.  
  4120. Discovered why Ctrl-C trap didn't work in QNX.  concb() (the routine that
  4121. sets the console terminal modes for command parsing) did not set the ISIG
  4122. flag in c_lflag unless job control was enabled.  Very silly -- it should
  4123. always be set, otherwise we can't catch SIGINT.  This partially fixes the
  4124. problem.  Now the first Ctrl-C is caught but subsequent ones are ignored;
  4125. they don't even show up as data characters any more.  And yet the signal is
  4126. definitely being rearmed, as revealed in the debug.log.
  4127.  
  4128. Changed UNIX C-Kermit to check the handling of SIGTSTP immediately upon
  4129. startup, and if it is SIG_IGNored, then not to catch SIGTSTP signals and
  4130. suspend itself, since the shell above won't know what to do with a suspended
  4131. Kermit, and will just hang.  This doesn't help QNX though.
  4132. ckutio.c 5A(145), 6 Aug 94.
  4133.  
  4134. On the QNX system I was using, it turns out that I can't get *any* process to
  4135. suspend, so it's not just Kermit -- no matter what shell I use (sh, csh, ksh).
  4136. stty -a says that ^Z is the suspend character, and so does Kermit's debug log.
  4137. (Later, I learned that QNX does not support job control, and so added -DNOJC
  4138. to the compilation).
  4139.  
  4140. At the suggestion of James Lummel <jlummel@caprica.com>, changed jmp_buf,
  4141. setjmp, and longjmp to sigjmp_buf, sigsetjmp, and siglongjmp in the QNX
  4142. version, because QNX uses POSIX signal-handling, namely that whenever a signal
  4143. is generated, it is masked off, and the signal handler must unmask it.  This
  4144. is done by sigjmp_buf, sigsetjmp, and siglongjmp.  This is why SIGINT would be
  4145. caught only once.  A new symbol governs this: CK_POSIX_SIG, which is currently
  4146. defined (in ckcdeb.h) only for QNX.  ckcmai.c, ckcnet.c 5A(036), ckucon.c
  4147. 5A(071), ckudia.c 5A(060), ckuscr.c 5A(022), ckutio.c 5A(146), ckuusx.c,
  4148. ckuusr.c 5A(145), 7 Aug 94.  Testing on QNX shows that this change clears up
  4149. the problems with Ctrl-C and with timeouts not working (but it makes me wonder
  4150. why C-Kermit works without these changes on all the other POSIX-based UNIX
  4151. implementations -- I guess they are not so strictly POSIX after all), so now
  4152. we need:
  4153.  
  4154.  . The restarting-curses problem fixed.
  4155.  . UUCP lockfile conventions worked out.
  4156.  . setuid/setgid operation checked out.
  4157.  . DIAL command checked out.
  4158.  . Serial communications checked out.
  4159.  . Hardware flow control added.
  4160.  . A 16-bit version produced.
  4161.  
  4162. I built Kermit on Linux 0.99.14 with CK_POSIX_SIG and it works fine, so I
  4163. added this to the makefile, plus some warning comments about how to back off.
  4164. Linked the Linux version with libncurses rather than libcurses, and the
  4165. second-invocation-of-curses problem went away.  Added this to the makefile
  4166. too.  makefile, 7 Aug 94.
  4167.  
  4168. Fixed VMS RUN and DIRECTORY commands to return success/failure status
  4169. according to return codes from zshcmd(), based on whether LIB$SPAWN returns
  4170. SS$_NORMAL (it always does).  Larry Henry of TWG just sent in code to get
  4171. the actual return code from the command, but I haven't quite figured out how
  4172. to use it -- it almost works...  ckuus6.c, ckvfio.c 5A(112), 7 Aug 94.
  4173.  
  4174. Beta.16.
  4175.  
  4176. Aug 8... QNX again.  Disabled job control because QNX does not yet implement
  4177. it.  Worked on 16-bit version with much assistance from Dan Hildebrand of QNX
  4178. Software Systems Inc in Kanata, ON <danh@qnx.com>.  Removed various features:
  4179. speeds higher than 38400 because of 16-bitness; ioctl() can't be used because
  4180. it is not in the 16-bit libs.  Aside from that, everything is there: TCP/IP,
  4181. curses, all character sets, etc.  Makefile, ckuusx.c, ckutio.c, 8 Aug 94.
  4182.  
  4183. Tried adding hardware flow control to QNX version based on info from danh:
  4184. IEXTEN must be set in c_lflag, and then IHFLOW|OHFLOW are set in c_cflag.
  4185. It compiles and runs OK, but who knows if it works.  ckutio.c 5A(147),
  4186. 8 Aug 94.
  4187.  
  4188. Discovered that bad things could happen if a file arrived whose name was
  4189. longer than C-Kermit's maximum filename length, e.g. the file would not be
  4190. transferred because C-Kermit failed to open the output file.  zrtol() changed
  4191. to cut the name off at the maximum length.  ckufio.c 5A(096) 8 Aug 94.
  4192.  
  4193. The #ifdefs around the POSIX signal-handling changes were inconsistent in
  4194. ckuusx.c, noticed by Eduard Vopicka, and this would result in a memory leak
  4195. that could cause a core dump.  Fixed (#ifdef QNX => #ifdef CK_POSIX_SIG) in
  4196. ckuusx.c, ckuusr.c 5A(146), 9 Aug 94.
  4197.  
  4198. Added serial high speeds back into the 16-bit QNX version.  This required an
  4199. internal change to ttsspd() and ttgspd(), which should be safe, namely 
  4200. declaring the internal speed variable to be of type speed_t rather than int
  4201. if it is a POSIX compilation, since this type is required by POSIX.1 for
  4202. cfsetispeed(), etc.  Tested OK on QNX, BSDI, and Linux.  Also, changed
  4203. ttgwsiz() to work on 16-bit QNX as well as 32-bit QNX.  ckcdeb.h, ckutio.c
  4204. 5A(148) 9 Aug 94.
  4205.  
  4206. Got access to an SGI IRIX 5.2 system, built today's C-K with no problems.
  4207. Looked thru header files, found no evidence of hardware flow control or serial
  4208. speeds > 19200.  9 Aug 94.
  4209.  
  4210. This is Beta.17
  4211.  
  4212. Discovered the QNX version omitted SET SPEED 57600 due to a typo.
  4213. ckcdeb.h 10 Aug 94.
  4214.  
  4215. Added QNX-specific modem-signal code to ttmget() in ckutio.c 5A(149),
  4216. 10 Aug 94.
  4217.  
  4218. Verified that serial comms work ok on QNX: SET LINE, DIAL, CONNECT, file
  4219. transfer, etc.  RTS/CTS seems to work, but I can't tell for sure.
  4220.  
  4221. From Jeff Altman: fullscreen file transfer display now updates the
  4222. Estimated Time Remaining no more than once per second.  ckuusx.c, 10 Aug 94.
  4223.  
  4224. Decided to use the thermometer in the curses display by default after all.
  4225. It kind of grew on me.  ckuus7.c, 10 Aug 94.
  4226.  
  4227. Tried building on Solaris 2.3 with SunPro CC.  It compiles fine but doesn't
  4228. link because ckuus5.o is only about 1/10 of its normal size.  Building it by
  4229. hand, however, via cc -E "CFLAGS=(same ones)..." > foo.c, then cc -c foo.c
  4230. produces a normal object file (!?), which can then be linked with the others,
  4231. producing a normal executable.  Better try this on some other machine...
  4232. (Later, it turns out that Sun cc 2.0.1 does this -- with patches applied,
  4233. not sure which ones, the problem goes away.)
  4234.  
  4235. Changed format of ASCII thermometer slightly, at Eduard Vopicka's suggestion,
  4236. and used new, simplified, unified code for OS/2 and all others, from Ed.
  4237. ckuusx.c, 11 Aug 94.
  4238.  
  4239. Added -DNOSETBUF to QNX makefile entries.  11 Aug 94.
  4240.  
  4241. Made VMS conoll() return a proper return code.  Until now, it always returned
  4242. a success indication, even if it failed, which could wreak havoc when the
  4243. user's job become disconnected in the middle of a TRANSMIT command.  CKVTIO.C
  4244. 5A(073), 11 Aug 94.  Also, changed TRANSMIT command to check conoll's return
  4245. code.
  4246.  
  4247. From Jeff Altman, a fix to ckcpro.w that allows labeled-mode transfers to
  4248. work when a GET command is given.  11 Aug 94.
  4249.  
  4250. Added debugging statements to zopeno() and zclose() in ckmfio.c in an attempt
  4251. to track down the cause for Mac Kermit failures on the newer Macs.  12 Aug 94.
  4252.  
  4253. Added some bulletproofing to the console routines in the VMS version to better
  4254. catch when the job becomes disconnected from its console terminal.  12 Aug 94.
  4255.  
  4256. Added percent efficiency to fullscreen file transfer display summary. ckuusx.c,
  4257. 13 Aug 94.
  4258.  
  4259. Vincent Fatica reported that the SET SPEED command in the Linux version was
  4260. broken.  After three hours of debugging, it finally hit me: s (the speed) is
  4261. now declared of type speed_t in POSIX implementations, and in Linux speed_t is
  4262. typedef unsigned int (POSIX.1 says that speed_t "shall" be unsigned, but in
  4263. other systems I looked at it, was simply "long").  Today's lesson: comparisons
  4264. of unsigned variables with negative constants don't produce the desired
  4265. results -- e.g. don't use -1 as a value for the speed variable, to mean the
  4266. speed is unknown.  It took quite a while to recover from the fallout -- ttvt()
  4267. and ttpkt() needed some head-bashing, etc.  Made and tested many new binaries
  4268. on Linux, SunOS, Solaris, Unixware, IRIX, QNX, HP-UX, etc etc.  ckutio.c
  4269. 5A(150), 13 Aug 94.
  4270.  
  4271. Discovered that REDIRECT works OK in QNX on serial connections, but not on
  4272. TCP/IP connections.
  4273.  
  4274. Fixed "Network type" in fullscreen file transfer display.  ckuusx.c, 13 Aug 94.
  4275.  
  4276. Max Evarts <evarts@columbia.edu> reported the following scenario: MS-DOS
  4277. Kermit is a TCP/IP Kermit server ("set port tcp *"), C-Kermit is the client.
  4278. MS-DOS Kermit side goes away (e.g. user Ctrl-C's and hangs up).  The next
  4279. packet-related command given to C-Kermit makes the C-Kermit process
  4280. immediately and silently disappear.  This happens under at least SunOS,
  4281. NeXTSTEP, and Unixware.  It occurs when ttol() is called to send a packet to
  4282. the server.  ttol() calls upon write(), and write(), rather than returning an
  4283. error, kills the entire process.  To avoid this situation, I devised a cunning
  4284. plan: ttol(), before issuing a write() on a TCP/IP connection, checks to see
  4285. if the connection is still there by issuing a read() for zero bytes.  On SunOS
  4286. the read always succeeds if the connection is active, and fails with
  4287. ECONNRESET if the connection has been dropped.  This allows us to print an
  4288. informative error message, close down our end of the connection, and
  4289. gracefully return a failure code rather than vanishing without a trace.
  4290. However, a quick check of other OS's shows that this technique is not a bit
  4291. portable.  It's OK in NeXTSTEP, but not in Unixware.  So it will be used only
  4292. if CK_READ0 is defined, and presently it is defined only for SUNOS41 and NEXT.
  4293. ckcnet.h, ckutio.c 5A(151), 14 Aug 94.
  4294.  
  4295. This also required some adjustments to ckcpro.w, ckcfn*.c, etc, to ensure that
  4296. failure return codes are propagated up the call stack.  14 Aug 94.
  4297.  
  4298. Added a new command, FORWARD.  It is exactly like GOTO except it searches for
  4299. the given label forward from the current position in the macro or TAKE file,
  4300. rather than rewinding to the beginning first.  This command is purely for
  4301. performance -- executing long scripts from diskettes, for example, can be
  4302. painfully slow if every GOTO must rewind the command file.  (It might have
  4303. been better to fix GOTO to first search forward, then rewind, then search up
  4304. to where the first search started, but that would (a) need a lot of recoding,
  4305. and (b) break a lot of existing scripts.)  This is not an example of a quality
  4306. control structure, and its use is not recommended except where script
  4307. performance is critical.  ckuusr.h, ckuus6.c, ckuusr.c 5A(147), 14 Aug 94.
  4308.  
  4309. Added transaction log entries for incoming file refusal.  Also, when receiving
  4310. files, don't send an error packet if there is an error opening the output file
  4311. -- instead, just refuse the file.  That way, an error on one file does not
  4312. prevent subsequent files from coming.  Added a statistic for files that were
  4313. discarded/rejected/interrupted, so STATISTICS and the transaction log now show
  4314. the number of files that were actually successfully transferred.
  4315. ckcfns.c 5A(118), ckcfn2.c, ckcfn3.c, ckuus4.c, 15 Aug 94.
  4316.  
  4317. Fixed Mac Kermit not to crash when downloading files under System 7.1.x by
  4318. removing the call to PBFlushFile() from ckmfio.c.  And fixed the Mac Kermit
  4319. READ command not to crash.  Tested on Mac IIx with System 6.0.3, Mac LC with
  4320. System 7.0, Centris 660 AV with System 7.1, and a Power Mac 7100/66 with
  4321. System 7.1.2 (the latter two being platforms where downloads would crash
  4322. Kermit or the Mac prior to today), including downloads of 1MB-long files.
  4323. ckmfio.c 5A(084), 16 Aug 94.
  4324.  
  4325. Changed Mac Kermit's version number from 0.99(190) to 0.991(190) so people can
  4326. tell the difference between the one that works and previous ones.  Fixed LOG
  4327. SESSION, LOG TRANSACTIONS, LOG PACKETS, which never worked before.  In the
  4328. case of LOG SESSION, this required consolidation of the Session Log menu
  4329. selection and the LOG SESSION command, which used totally different
  4330. mechanisms.  Changed text files to be TeachText ('ttxt') applications, rather
  4331. than MacWrite ('MACA').  Fixed format of log and other text files to be like
  4332. regular Mac text files.  Removed Mac-specific tlog() and had Mac Kermit use
  4333. the regular one, which works fine.  Fixed file transfer display not to lie
  4334. about "Sending" and "Receiving".  Fixed Mac-specific modules not to mess with
  4335. file type setting behind the back of the protocol modules so downloads would
  4336. take the right data type from the attribute packet.  Added SET FILE TYPE
  4337. MACBINARY to command parser.  Updated the ckmker.bwr file.  ckcfn3.c,
  4338. ckcker.h, ckmfio.c, ckmini.c, ckmsfp.c, ckmusr.c, ckmutl.c, ckuus4.c,
  4339. ckuus7.c, ckuusx.c, 17 Aug 94.
  4340.  
  4341. Made Mac Kermit's file transfer display screen correctly show the transfer
  4342. mode of incoming files.  Made the SET FILE TYPE command immediately affect the
  4343. internal file transfer mode of the Mac modules, so the Settings..File Defaults
  4344. dialog shows the right modes, no matter how they were set.  It works for
  4345. MacBinary too.  ckmscr.c, ckmfio.c, ckmsfp.c, 18 Aug 94.
  4346.  
  4347. Fixed Mac zgtdir() routine to return the actual working directory -- the full
  4348. pathname, not just the current folder name, rather than the disk name, with
  4349. help from Rick Watson <rick@akbar.cc.utexas.edu>.  Previously, it returned
  4350. the name of the current disk.   Zhome() was corrected to return the name of
  4351. the boot disk.  ckmfio.c, 18 Aug 94.
  4352.  
  4353. Discovered why we get "Writing to console not allowed" alert boxes all the
  4354. time: they are caused by perror().  Nobody ever bothered to for perror what
  4355. had been done for printf().  So I did it.  ckcdeb.h, ckmptp.h,
  4356. ckmtio.c 5A(082), 18 Aug 94.
  4357.  
  4358. Changed the CD command for Mac Kermit to allow spaces in the directory name,
  4359. and to use the top-level directory of the boot disk as its default place to
  4360. CD to.  ckuus5.c, 18 Aug 94.
  4361.  
  4362. Added the current directory to Mac Kermit's file transfer display.
  4363. ckmscr.c, 18 Aug 94.
  4364.  
  4365. A couple more fixes to Mac Kermit's file transfer display, so that file
  4366. transfer commands issued at the Mac-Kermit> prompt would be reflected
  4367. correctly (e.g. it would not say "Receiving" if it was sending).  ckuusr.c
  4368. 5A(148), 19 Aug 94.
  4369.  
  4370. Added a DIRECTORY command to Mac Kermit.  It shows regular files and their
  4371. sizes, but does not show directory files.  ckuusr.c, ckuus6.c, 19 Aug 94.
  4372.  
  4373. Removed SET FILE COLLISION DISCARD from Mac Kermit because it crashes the
  4374. program.  Removed { APPEND, NEW } options from Mac Kermit LOG command because
  4375. append operations don't work.  ckuus4.c, ckuus7.c, 19 Aug 94.
  4376.  
  4377. Added a new command-parsing function, cmtxtnq(), which is just like cmtxt()
  4378. except it treats question mark and backslash like ordinary text characters.
  4379. ckucmd.c 5A(063), 19 Aug 94.  (Later removed)
  4380.  
  4381. Changed the ASK and ASKQ commands to use cmtxtnq() rather than cmtxt(),
  4382. so script-driven interactive dialogs can be carried on with unsuspecting
  4383. users without scaring them if they type a question mark.  This is also a good
  4384. idea for situations like "ask \%x \27Z", in which the terminal might send back
  4385. a string containing question marks, like ESC [ ? 1 c, which would otherwise
  4386. cause an infinite round of "getty babble".  It's also handy for prompting
  4387. users for DOS-like filenames, such as C:\TEMP\OOFA.TXT, which could not
  4388. otherwise be entered except by making the users double each backslash.  See
  4389. ckcker.upd for more about this.  ckuus6.c, 19 Aug 94.
  4390.  
  4391. Added CHECK FORWARD to allow .INI & other files to select GOTO or FORWARD.
  4392. ckuusr.c 5A(149), 20 Aug 94.
  4393.  
  4394. Jeff Altman had changed CKERMIT.INI to use FORWARD instead of GOTO, but this
  4395. was a rather drastic change that would prevent it from working at all with
  4396. last week's or earlier Kermit versions, so the new CKERMIT.INI does a CHECK
  4397. FORWARD first to see if this is OK.  20 Aug 94.
  4398.  
  4399. VMS 6.0 (or 6.1) changed its "terminal inquire" feature.  Old versions of VMS
  4400. sent ESC Z first, then ESC [ c if the ESC Z response timed out.  The new
  4401. version reverses this, and then also sends a "resize" sequence.  I needed to
  4402. change the VMSLOGIN macro to account for both methods, but found it was
  4403. virtually impossible to put an MINPUT command into a macro because of the
  4404. comma that is used to separate the MINPUT arguments.  Luckily, some time ago
  4405. James Sturdevant had sent in code to let space, rather than comma, be the
  4406. separator, with {...} used for grouping items that have embedded spaces.  This
  4407. also required a change at the deepest level of the command parser (the
  4408. gtword() function), which is something we always wanted -- the ability to
  4409. group words where they could not be grouped before.  E.g. now we can do:
  4410.  
  4411.   if equal \%a {This is a bunch of words} echo It's equal.
  4412.  
  4413. Previously, this would break on the space after "This" and give a parse error.
  4414. The new code was tested with all the various command-testing suites
  4415. (ckermit.ini, ckermod.ini, cketest.ini, ckedemo.ini, etc) and no ill effects
  4416. were noted.  ckucmd.c 5A(064), ckuusr.c 5A(149), 20 Aug 94.
  4417.  
  4418. More about this from James's notes:
  4419.  
  4420. I did "white box" testing, looking for places in the code where cmfld was
  4421. called and then testing them.  The modules are
  4422.  
  4423.     ckuusr  array names
  4424.             labels  (A label :{This label} is accepted
  4425.                      but GOTO won't find it)
  4426.             minput (now)
  4427.     ckuus5  macro names
  4428.              This works:Define {Space name} The name has a space
  4429.                         echo \m({Space name})
  4430.     ckuus6  variable names and file names
  4431.     ckuus7  user id and password.
  4432.             IP name/number
  4433.             TCP service name/number
  4434.     calls to cmfld or gtword in ckucmd:
  4435.             cmfld cmnum cmofi cmifi cmdir cmtxt cmkey
  4436.  
  4437. New VMSLOGIN macro handles old and new terminal inquiry sequences.
  4438. CKERMIT.INI, 20 Aug 94.
  4439.  
  4440. Added code from Jeff Altman to (a) display a weighted CPS rate in the
  4441. fullscreen file transfer display, rather than a flat average, with a weight
  4442. of 1/4 going to the most recent second, and 3/4 going to past history.  The
  4443. final CPS is still calculated the normal way -- (total file chars / secs).
  4444. And also from Jeff, code to allow the file-transfer display screen to be
  4445. refreshed in OS/2.  ckuusx.c, 20 Aug 94.
  4446.  
  4447. Added SET COMMAND QUOTING { ON, OFF }.  ON means normal behavior.  OFF (new)
  4448. means to treat \ and ? as ordinary text characters during input to the command
  4449. parser.  The main purpose of this is allow a script writer to confer the same
  4450. behavior on other commands as was given to ASK a couple days ago, or to let
  4451. the experienced user turn off backslash processing to make it easier to deal
  4452. with DOS or OS/2 filesnames, e.g.:
  4453.  
  4454.   set command quoting off
  4455.   send foo.bar c:\foo\bar\baz\oofa.txt
  4456.   get d:\files\???.?
  4457.   set command quoting on
  4458.  
  4459. instead of:
  4460.  
  4461.   send foo.bar c:\\foo\\bar\\baz\\oofa.txt
  4462.   get d:\\files\\\?\?\?.\?
  4463.  
  4464. Or in OS/2 itself:
  4465.  
  4466.   set command quoting off
  4467.   cd \
  4468.   set port \\server\modem
  4469.   directory e:\pictures\pic???.gif
  4470.   set command quoting on
  4471.  
  4472. rather than:
  4473.  
  4474.   cd \\
  4475.   set port \\\\server\\modem
  4476.   directory e:\\pictures\\pic\?\?\?.gif
  4477.   set command quoting on
  4478.  
  4479. Use with caution.  ckucmd.c, ckuus6.c, 20 Aug 94.
  4480.  
  4481. In VMS version, make congm() get terminal type, etc, to remove annoying
  4482. "Sorry, terminal type not supported" messages when running from a .COM file,
  4483. SPAWN'd, etc.  From James Sturdevant.  CKVTIO.C 5A(075), 20 Aug 94.
  4484.  
  4485. Added #include "ckcsym.h" to all modules that didn't already have it, and
  4486. added dependencies on it to all rules in the makefile.  From Mike Long.
  4487. 20 Aug 94.
  4488.  
  4489. Fixed up "kermit -h" help screen to include recently added options, and to
  4490. report bad options by saying what they were.  ckuus[2y].c, 20 Aug 94.
  4491.  
  4492. Reorganized the ckcker.upd file.  21 Aug 94.
  4493.  
  4494. This is Beta.18
  4495.  
  4496. Removed a prototype for a static function from ckcnet.h.  Today's lesson:
  4497. never use the word "static" in a header file, and certainly not in one that is
  4498. shared by more than one module.  22 Aug 94.
  4499.  
  4500. Fixed the VMS C-Kermit makefile to build correctly with MultiNet on the 
  4501. Alpha, thanks to a suggestion from Steve Smail at Wollongong:
  4502.  
  4503.   "After I generated a link map, I realized that the link is pulling in the
  4504.   DEC C/UCX based socket routines, not those provided by PathWay.  These
  4505.   routines return the DEC C version of a file descriptor, not a VMS device
  4506.   channel; the QIO system service needs the channel, and is rejecting that
  4507.   parameter as invalid.  I suspect the same issue occurs when building KERMIT
  4508.   against TGV's product (though I have no way to test this).
  4509.  
  4510.   "The DEC C compiler will prepend the string DECC$ to the name of most
  4511.   "known" C library entries.  For example, references to fopen() become
  4512.   decc$fopen(), socket() to decc$socket(), etc ... at link time, DEC's entries
  4513.   are used, not those provided by PathWay in the TWGLIB.OLB object library.
  4514.  
  4515.   "We typically get around this issue by making use of the DEC C compiler
  4516.   /PREFIX_LIBRARY_ENTRIES qualifier to request that the compiler not prepend
  4517.   DECC$ to our socket library routines."
  4518.  
  4519. Tested successfully on VMS 1.5 and 6.1 on Alphas, and VMS 5.3 on a VAX.
  4520. The Alpha VMS 1.5 version runs fine on 6.1.  23 Aug 94.
  4521.  
  4522. Converted OS/2 C-Kermit update file from plain text to INFO (VIEW) format.
  4523. 25-29 Aug 94.
  4524.  
  4525. Exchanged "thermometer" definitions between ckuus7.c and ckuusx.c to allow
  4526. successful linking with -DCK_CURSES and -DNOICP.  29 Aug 94.
  4527.  
  4528. Added SIGPIPE handling to ckudia.c, which is needed to catch the case where
  4529. a connection to a TELNET modem server is broken while dialing (previously, as
  4530. reported by Ray Moody, Kermit would just disappear when this happened).
  4531. 29 Aug 94.
  4532.  
  4533. Minor corrections to makefile for SCO UNIX 3.2v4 & ODT 3.0.  Minor change to
  4534. ckutio.c to allow cross compilation under UNIX for Xenix.  From William Bader.
  4535. makefile, ckutio.c 5A(152), 30 Aug 94.
  4536.  
  4537. Ray Moody found some other places (SCRIPT, INPUT, etc etc) where remotely
  4538. broken TCP/IP connections could result in the Kermit process vanishing (in
  4539. UNIX, not sure about others).  He suggested setting SIGPIPE to SIG_IGN in
  4540. ttol() & then restoring it, but that only plugs the hole in one place.
  4541. Instead, I added signal(SIGPIPE,SIG_IGN) to sysinit(), so SIGPIPE is ignored
  4542. the whole time Kermit is running, and removed all other SIGPIPE-related code
  4543. from ckudia.c, ckutio.c, and ckucon.c, as well as the CK_READ0 business from a
  4544. couple weeks ago.  Tested successfully on SunOS by SET HOST to MS-DOS Kermit
  4545. that had been told to "set port tcp *", and then issuing HANGUP from MS-DOS
  4546. Kermit while C-Kermit is transferring files, dialing, in CONNECT mode, running
  4547. a script program, etc etc.  30 Aug 94.
  4548.  
  4549. TMPDIR and RESEND capabilities added to Stratus VOS Kermit by David Lane.
  4550. Changes merged into ckcdeb.h, ckuus6.c, cklfio.c 5A(003), 30 Aug 94.
  4551.  
  4552. Fixed server to encode response to REMOTE PWD, noticed by David Lane (because
  4553. VOS directory names include #).  ckcpro.w 5A(070), 30 Aug 94.
  4554.  
  4555. Changes to OS/2 install script from Jeff Altman, so it now correctly updates
  4556. the desktop icon, even if an old one was already there.  Also a minor change
  4557. to ckotio.c to recognize CKERMIT as a synonym for CKCOMMAND from REXX scripts.
  4558. 30 Aug 94.
  4559.  
  4560. Fixed OS/2 C-Kermit to allow SET { SEND, RECEIVE } START-OF-PACKET to be
  4561. a printable character.  ckuus7.c, 30 Aug 94.
  4562.  
  4563. This is Beta.19, 30 Aug 94.
  4564.  
  4565. Fixed editing of several SET TERMINAL commands (WRAP, ANSWERBACK) -- OS/2
  4566. only.  31 Aug 94.
  4567.  
  4568. Cast long arguments to shocps() to int.  ckuusx.c, 31 Aug 94.
  4569.  
  4570. Updates to CKVKER.MMS from Mike Freeman (CMU/Tek, Mattgoat MMK support).
  4571. 1 Sep 94.
  4572.  
  4573. From Eduard Vopicka, 1 Sep 94:
  4574.  
  4575. (1) Solution to previously mentioned ftime redefinition problem in
  4576.     ckufio.c: ODT30 has prototype for ftime() in header file, so always
  4577.     use it, no matter what it is. Just as mentioned in the original
  4578.     comments. Tested on both XPG4 and pre-XPG4 version of SCO 3.2v4.2.
  4579.  
  4580. (2) -DCK_WREFRESH can be safely added to the sco32v4net makefile entry.
  4581.  
  4582. (3) Hot keys (X to cancel file etc) do not work during file transfer!!!
  4583.     This is certainly serious problem, but fortunately, the fix is fairly
  4584.     easy (namely that FIONREAD is defined, but doesn't do anything and so
  4585.     needs to be undefined after #including <sys/socket.h>).
  4586.  
  4587. From Mike Long <mike.long@analog.com>, Analog Devices Inc, Norwood MA, USA:
  4588.  
  4589.   These patches modify Kermit to use the 4.4BSD seteuid() and setegid()
  4590.   functions.  You want to use sete[ug]id() on 4.4-based systems because
  4591.   setreuid() is a compatibility function that is implemented on top of them,
  4592.   and it doesn't behave exactly the same.  Also, the system I use (NetBSD)
  4593.   sends an obnoxious warning to the console if setreuid() is used.  I've been
  4594.   using these patches for the past month without any problems.
  4595.   ckutio.c, 1 Sep 94.
  4596.  
  4597. Added CK_POLL to MIPS makefile entries -- not only does it work, it also
  4598. eliminates core dumps in msleep() (thanks to Bob Bolio (sp?) at Santa Cruz
  4599. Metro Transit for testing this out over the phone).  makefile, 1 Sep 94.
  4600.  
  4601. Added a call to con_cancel() to syscleanup() in ckvtio.c in hopes of curing
  4602. problems with VMS C-Kermit leaving zombie processes behind after being
  4603. disconnected and/or interrupted.  ckvtio.c 5A(076) 2 Sep 94.
  4604.  
  4605. New code and makefile for OS/2 C-Kermit to support FTP Software 32-bit PC/TCP
  4606. from Jeff Altman.  ckoker.mak, ..., ckonet.c 5A(030) 2 Sep 94.
  4607.  
  4608. Added code to allow spaces in input and output file names (cmifi, cmofi) and
  4609. directory names (cmdir) when either expressed as \32 or when the name is
  4610. enclosed in braces.  It works in commands like CD, SEND, and RECEIVE, which
  4611. are executed by Kermit itself, but an additional level of quoting might still
  4612. be needed if the result is being passed to (say) a UNIX shell, e.g.
  4613. DIRECTORY {"a b"} (the braces are for Kermit, the doublequotes are for UNIX).
  4614. Note that quoting space with \ still does not work (e.g. DIRECTORY a\ b), nor
  4615. has it ever.  ckucmd.c 5A(065), 2 Sep 94.
  4616.  
  4617. Added code to display which TCP/IP DLL was loaded to OS/2 version of SHOW NET.
  4618. ckuus4.c, ckonet.c 5A(031), 3 Sep 94.
  4619.  
  4620. New code and makefile for OS/2 C-Kermit to support FTP Software 16-bit PC/TCP
  4621. from Jeff Altman.  ckoker.mak, ..., ckonet.c 5A(031) 2 Sep 94.  A new set of
  4622. DLLs now goes on the OS/2 C-Kermit disk, and is handled by the installation
  4623. procedure, and the appropriate one is loaded automatically at startup.
  4624.  
  4625. Fixed ASK and ASKQ to not save their responses in the command-recall buffer.
  4626. ckuus6.c ckucmd.c, 3 Sep 94.
  4627.  
  4628. This is Beta.20
  4629.  
  4630. When sending a file group in local mode and some of the files are rejected
  4631. (size, date, name, whatever), the file transfer display thermometer would go
  4632. nuts.  Fixed in ckuusx.c, 4 Sep 94.
  4633.  
  4634. Added \v(modem) (current SET MODEM value) and \v(evaluate) (result of most
  4635. recent EVALUATE command).  ckuusr.h, ckuus4.c, ckuusr.c 5A(150), 5 Sep 94.
  4636.  
  4637. Updates to OS/2 .inf file, make file, install script, external protocol
  4638. scripts, etc, from Jeff Altman.  Added a new external protocol script for
  4639. CEXYZ/2 from Jim Reisert.  5 Sep 94.
  4640.  
  4641. Make DIAL module echo commands sent to the modem if DIAL DISPLAY is ON and
  4642. DUPLEX is set to HALF.  Also make DIAL module not treat "964" response from
  4643. Telebit model-number inquiry as if it were a "4" (ERROR).  Reported by Simon
  4644. Casady <cap@hces.com>.  ckudia.c 5A(061) 5 Sep 94.
  4645.  
  4646. This is Beta.21
  4647.  
  4648. Fixed DECREQTPARM report in OS/2 VT220 emulator to correctly indicate 7 or
  4649. 8 bit mode, taking TERMINAL BYTESIZE setting into account.  Noticed by
  4650. Andrew Orndorff <aorndorff@nhtsa.dot.gov>.  ckocon.c 5A(153), 6 Sep 94.
  4651.  
  4652. Added \N to OUTPUT string to send a NUL.  Prior to this, there was no way
  4653. to send a NUL from a script program.  ckuusr.c 5A(151), 9 Sep 94.
  4654.  
  4655. Various #ifdef cleanups from Mike Long, ckuus*.c, 9 Sep 94.
  4656.  
  4657. Changes from Jeff Altman to allow coexistence of OS/2 C-Kermit 5A(190) with
  4658. the "fake TCPIPDLL" that was distributed with 5A(189).  ckonet.c 5A(032),
  4659. 9 Sep 94.  Also, changes to the makefile, cko*.def files, etc.
  4660.  
  4661. This is Beta.22.
  4662.  
  4663. A new OS/2 icon.  Also in OS/2, allow Named Pipe handles on the server to be
  4664. inherited by child processes (such as P.EXE).  Jeff Altman.  ckonet.c 5A(033),
  4665. 11 Sep 94.
  4666.  
  4667. Added SET TELNET NEWLINE-MODE RAW to send CR as just a bare CR, in addition to
  4668. ON (send CR as CRLF) and OFF (send CR and CR-NUL), for use when talking to
  4669. non-TELNET servers that do not react poorly to both CRLF and CR-NUL (such as
  4670. certain rlogin-based modem servers).  Suggested (most recently) by Kerry Schwab
  4671. <kschwab@healthcare.com>.  ckcnet.h (symbols), ckcnet.c (default), ckuus3.c
  4672. (SET TELNET command), ckuus4.c (OUTPUT command), ckcfn2.c (packets), ckuusr.c
  4673. 5A(152), ckucon.c (CONNECT) 5A(073), 15 Sep 94.
  4674.  
  4675. Also: ckvcon.c 5A(036), ckocon.c 5A(154), ckdcon.c 5A(046), cklcon.c 5A(005),
  4676. 15 Sep 94.
  4677.  
  4678. Bill Chen <chen@columbia.edu> noticed that (a) WRITE-LINE SESSION-LOG added
  4679. material to the session log out of sequence, and (b) this command would core
  4680. dump if given after opening, using, and closing the session log.  The problem
  4681. was that zsoutl() was not coded in parallel with zsout() in ckufio.c.  The
  4682. latter (and also zchout()) used unbuffered i/o for the session log, but
  4683. buffered i/o elsewhere.  Also, zsoutl() was not checking the file descriptor
  4684. before writing to it.  ckufio.c 5A(097) 15 Sep 94.
  4685.  
  4686. From Mike Long <mike.long@analog.com>: Fix a backwards #ifdef regarding IEXTEN
  4687. in UNIX ttpkt(): ckutio.c 5A(154).  Fix an incorrect #ifdef for selecting the
  4688. SHOW NETWORK command, ckuusr.c.  Plug a hole in the decode() logic in which a
  4689. variable (a7) could be used when not initialized, ckcfns.c 5A(119), 15 Sep 94.
  4690. Also remove double inclusion of ckcsym.h from ckcmai.c.
  4691.  
  4692. Put contents of UNIX ttgwsiz() within #ifndef NONAWS, because evidently some
  4693. systems (AT&T 3B2) define TIOCGWINSZ in their header files but do not define
  4694. the associated winsize struct, which causes compilation of ckutio.c to fail.
  4695. ckutio.c 5A(154), 15 Sep 94.
  4696.  
  4697. New Amiga ckitio.c from Steve Walton, fixes timeouts, adds modem signal
  4698. support.  16 Sep 94.
  4699.  
  4700. Adapting SUNX25 support to Solaris 2.3 + SunLink X.25 8.0, 16 Sep 94....  Had
  4701. to change ckcnet.h to allow SUNX25 under SOLARIS as well as under SunOS.  Had
  4702. to remove #includes for <sys/mbuf.h> and <sys/domain.h> since they don't exist
  4703. under Solaris.  Added #include for <sys/sockio.h>.  Fixed bad call to
  4704. x25reset() in ckucon.c.  The X.25 get/set facilities function had totally
  4705. changed (e.g. reverse-charge, closed user group, etc).  Also, various
  4706. ANSIfications were needed.  All of this taken care of in ckcnet.h and ckcnet.c
  4707. 5A(037).  New makefile entry, solaris2x25, added for this.  Compiles and links
  4708. OK, but doesn't work: connect() complains that "address family and protocol
  4709. family do not agree".  There are evidently some additional differences between
  4710. the old and new versions of SunLink that I haven't figured out yet.  Sample
  4711. programs supplied with new SunLink are still the old ones and don't work.
  4712. Needs more work, which will have to wait till I get documentation & access.
  4713.  
  4714. Fix for SET TELNET TERMINAL-TYPE for OS/2 from Jeff Altman.  ckcnet.c 5A(038),
  4715. 17 Sep 94.
  4716.  
  4717. Discovered that C-Kermit, when sending a file and the file was rejected
  4718. because of size, type, etc, which means that the transfer failed, still
  4719. reported success, when it should have failed.  In general, a file transfer
  4720. should fail whenever an attribute rejection occurs EXCEPT if the rejection
  4721. indicates that the file did not need to be transferred because it was already
  4722. there, namely if the reason was "date" (#) (SET FILE COLLISION UPDATE) or name
  4723. (SET FILE COLLISION DISCARD / NO-SUPERSEDE).  A new attribute tag was added to
  4724. indicate the latter case: "?" means "name", but can only be used in attribute
  4725. replies, not in A-packets themselves (because A packets are not encoded, but
  4726. filenames might have to be).  ckcfn*.c 5A(120), ckcpro.w 5A(071), 17 Sep 94.
  4727.  
  4728. The treatment by HP-UX 10.00 of UUCP lockfiles turns out to be so different
  4729. from all the others that I had to write an entire custom version of ttlock()
  4730. for it, allowing for (a) four or more possible different names for the same
  4731. dialout device, and (b) creation of two lockfile names rather than just one
  4732. (sometimes), plus the cleaning up of any number of stale lockfiles, plus
  4733. allowances for symbolic links to device names, plus recovery from all sorts
  4734. of errors, etc.  An all-day+night project.  ckutio.c 5A(155), 17 Sep 94.
  4735.  
  4736. Added a message when C-Kermit interrupted during initialization file or
  4737. command-line processing to let user know why it is disappearing.  Suggested
  4738. by Eduard Vopicka.  ckcmai.c 5A(190), 18 Sep 94.
  4739.  
  4740. Some fixes to yesterday's work on file transfer success/failure.  ckcfn*.c,
  4741. ckcpro.w.
  4742.  
  4743. Made -h command-line option imply -Y, i.e. if all they want is the command-line
  4744. help screen, don't bother reading in the init file, since Kermit will exit
  4745. anyway as soon as the help screen is printed.  ckuus4.c, 18 Sep 94.
  4746.  
  4747. Fixed a bug in command recall reported by Clifford L. Pelletier
  4748. <PELLETIER@CCSUA.CTSTATEU.EDU>, with help from Jeff Altman.  ckucmd.c 5A(066),
  4749. 18 Sep 94.
  4750.  
  4751. Fixed the "more?" prompter to be smart enough not to prompt if it knows
  4752. it's on the last line of the text.  ckuus2.c, 18 Sep 94.
  4753.  
  4754. This is Beta.23.
  4755.  
  4756. A couple minor corrections to #ifdefs based on compiling it in dozens of
  4757. different environments...  Added a new makefile entry for LynxOS 2.1, from
  4758. Michael Brennen <mbrennen@maverick.intecom.com>.  19 Sep 94.
  4759.  
  4760. Added -DCK_NEWTERM to dynixptx20c makefile entry to fix terminal-mode problems
  4761. reported by Tom Kloos at Sequent.  Also, a correction to a typo in ckuusx.c
  4762. from Tom.  20 Sep 94.
  4763.  
  4764. New Stratus VOS files from David Lane: Automatic recovery from incomplete
  4765. packet sends, updated documentation, simulated "curses" support, new binaries
  4766. and updated docs.  20 Sep 94.
  4767.  
  4768. Fixes to 4.4BSD priv_xxx() package from John Kohl <jtk@kolvir.blrc.ma.us>.
  4769. ckutio.c 5A(156).  Also, John updated the ckuuid program to test for 4.4BSD
  4770. semantics.
  4771.  
  4772. From Mike Long: "4.4BSD doesn't have the lockf() function.  I verified this by
  4773. checking the original 4.4BSD distribution that freebsd.cdrom.com has up for
  4774. FTP.  So the following is probably appropriate (also fixes an unterminated
  4775. comment that gcc -Wall found)" -- patches to ckutio.c, 21 Sep 94.
  4776.  
  4777. From Steven Schultz <sms@WLV.IIPO.GTEGSC.COM>: BSDI does not use string-format
  4778. PIDs in lockfiles.  ckutio.c 5A(157), 22 Sep 94.
  4779.  
  4780. Changed ASK and ASKQ to take "comments" literally.  ckucmd.c, 26 Sep 94.
  4781.  
  4782. Increased max wildcard matches from 500 to 4096 in VMS C-Kermit,
  4783. ckvfio.c 5A(114), 29 Sep 94.
  4784.  
  4785. Fixed a prototype in ckcnet.c so SunLink X.25 code would compile again under
  4786. SunOS 4.1.x and old (pre-8.00, not sure exactly which version) SunLink.
  4787. Compiles, links, runs, and even works -- CONNECT, file transfer (7 and 8 bit),
  4788. various SET and SHOW commands all tested successfully.  ckcnet.c 5A(039),
  4789. 30 Sep 94.
  4790.  
  4791. Numerous improvements to #ifdefs (esp NOLOCAL and NOSERVER) and removal of
  4792. declarations for unused variables, from Mike Long.  Many modules.  1 Oct 94.
  4793.  
  4794. Many other similar cleanups in other modules.
  4795.  
  4796. Increased OS/2 C-Kermit's HANGUP interval for dropping DTR from 1/2 sec to
  4797. one full second, suggested by Ric Anderson.  1 Oct 94.
  4798.  
  4799. Fixed OS/2 C-Kermit's display of TELNET TERMINAL-TYPE.  ckuus4.c, 1 Oct 94.
  4800.  
  4801. Added an #ifdef to enable REDIRECT support for Sony News (like NeXT) from
  4802. Bernard Chen <bern@CS.UCLA.EDU>, ckutio.c 5A(158) 1 Oct 94.
  4803.  
  4804. Discovered that somehow in the past month I seem to have destroyed the
  4805. much-touted benefits of SET COMMAND QUOTING OFF, e.g. for entering DOS
  4806. filespecs in their natural form.  The code for this command had a part of it
  4807. commented out (the part that makes the xxstring function pointer either point
  4808. to the real string processing function, zzstring(), or else NULL), so I
  4809. uncommented it and that fixed everything right up.  I can't remember why I
  4810. commented it out previously, so that's a little worrisome...
  4811. ckuus3.c, 1 Oct 94.
  4812.  
  4813. Jeff Altman noticed that MINPUT 30 {\13\10$ } ... ... didn't work.  Yup,
  4814. setatm() was breaking on the CR.  I changed SETATM to accept any characters
  4815. at all that are inside braces.  ckucmd.c 5A(067), 2 Oct 94.
  4816.  
  4817. Due to the accumulated weight of questions and complaints about the often
  4818. wildly fluctuating CPS figure in the fullscreen file transfer display, I
  4819. #ifdef'd out the weighted calculation and restored the simple, flat average.
  4820. The 1/4 weighted CPS can be put back with -DCPS_WEIGHTED; Vince Fatica's
  4821. formula can substituted by adding -DCPS_VINCE.  shocps(), ckuusx.c, 2 Oct 94.
  4822.  
  4823. Added SET CMD and SHOW CMD as invisible synonyms for SET COMMAND and SHOW
  4824. COMMAND.  ckuusr.c, 2 Oct 94.
  4825.  
  4826. This is Beta.24.
  4827.  
  4828. Updated MINPUT help message (spaces, not commas, separate items).
  4829. ckuus2.c, 4 Oct 94.
  4830.  
  4831. Fixed a type in the dynixptx20c makefile entry, reported by Tom Kloos.
  4832. 4 Oct 94.
  4833.  
  4834. Added 57600 bps for BSDI.  makefile, 4 Oct 94.
  4835.  
  4836. Added automatic recognition of Telebit Qblazer Plus to dial module and plugged
  4837. a nearby possibly null-pointer dereferencing, thanks to Brian Utterback
  4838. <blu@jericho.mc.com>, ckudia.c 5A(062), 4 Oct 94.
  4839.  
  4840. William Bader noticed that if C-Kermit received (for example) "apc ls -l",
  4841. and he then Ctrl-C'd out of "ls", that PUSH, !, RUN, etc, did not work any
  4842. more.  Fixed in ckuusx.c.  4 Oct 94.
  4843.  
  4844. Eduard Vopicka said to change from using rdchk() to poll() in SCO UNIX
  4845. 3.2v4, so I did -- he's the expert.  makefile, 4 Oct 94.
  4846.  
  4847. Fixed a malloc/free problem that could result in a segmentation fault when
  4848. INPUT and MINPUT were called alternately and repeatedly, noticed by
  4849. Corey Minyard <minyard@wf-rch.cirr.com>.  ckuusr.c 5A(156), 4 Oct 94.
  4850.  
  4851. Shuffled the 2.10/2.11 BSD overlays to make them all fit within their
  4852. allotted sizes.  ckubs2.mak, 4 Oct 94.
  4853.  
  4854. Changed UNIX congm() not give an error message and fail if it can't
  4855. open "/dev/tty", but instead to just go ahead and use 0 as the file
  4856. descriptor.  This is for cases where "/dev/tty" does not exist, i.e. when
  4857. there is no controlling terminal, e.g. when launched from a daemon.
  4858. ckutio.c 5A(159) 4 Oct 94.
  4859.  
  4860. Revised the makefile entry for Solaris 2.3 / SunLink X.25.
  4861.  
  4862. Added a makefile entry for IBM AIX 4.1 and 4.1.1.
  4863.  
  4864. Added TELNET CR handling to DIAL and SCRIPT command execution.
  4865. ckudia.c 5A(063) and ckuscr.c 5A(023).
  4866.  
  4867. From Mark Berryman: RESEND support for VMS.  ckvfio.c 5A(115) 4 Oct 94,
  4868. ckcfn3.c, ckcdeb.h.  zfseek() routine added to ckvfio.c.  It is strictly
  4869. block-oriented, since all binary file transfers in VMS are also block-oriented.
  4870. Later, fix resending to stop at FFB. ckvfio.c 5A(116).
  4871.  
  4872. Fix for OS/2 C-Kermit DECnet support from Jeff A.  ckonet.c 5A(035), 4 Oct 94.
  4873.  
  4874. Fix for OS/2 C-Kermit DECnet file transfer.  ckonet.c 5A(036), 4 Oct 94.
  4875.  
  4876. Removed the word "Beta" from the version herald.  ckcmai.c 5A(190), 4 Oct 94.
  4877.  
  4878. ========================= released 5A(190) 4 Oct 94 ==========================
  4879.  
  4880. Fixed bug in server in which "get blah" (where file blah does not exist)
  4881. followed by "send foo" resulted in "unexpected packet type" error.  ckcpro.w
  4882. 5A(073) 14 Feb 95.  The fix is in "<serve>R", change "if (sinit() >= 0)" to
  4883. "if (sinit() > 0)".
  4884.  
  4885. Added code to TCP/IP section of netopen() to try additional IP addresses
  4886. returned in hostent structure (if any), in case first IP address doesn't
  4887. connect.  This code is used only if HADDRLIST is defined at compile time, and
  4888. then only if h_addr is also defined, presumably in <netdb.h>.  ckcnet.c
  4889. 5A(041), 20 Feb 95.  Can't test it, but it doesn't seem to break normal
  4890. connections.
  4891.  
  4892. Changed telnet code to reply to WONT ECHO with DONT ECHO if the SGA flag
  4893. is set.  A certain telnet server, gatekeeper.epsilon.com, seems to hang if
  4894. if this reply does not come.  The risk is that we might get caught in a
  4895. negotiation loop.  Needs testing.  5A(042), 20 Feb 95.
  4896.  
  4897. Changed APC command to use communication channel, rather than always using
  4898. stdout, like MS-DOS Kermit 3.14.  ckuusr.c 5A(157), 20 Feb 95.
  4899.  
  4900. Fixed dooutput() to account for the case when its argument ends in a
  4901. backslash.  Previously, it was impossible to OUTPUT any string that ended
  4902. with a backslash.  ckuus4.c, 20 Feb 95.
  4903.  
  4904. Added code to ckucon.c to guard against APC buffer overruns, e.g. when APC
  4905. arrives as garbage, followed by many K of stray characters.  Previously, we
  4906. would stay in string-gathering mode until the terminator came and then attempt
  4907. to execute the partial APC, which could be a disaster.  Now we just discard it
  4908. and go back to normal mode immediately (otherwise we'd be hung if no ST were
  4909. to arrive).  ckucon.c 5A(074) 22 Feb 95.  Sent changes to Jeff A for OS/2
  4910. version.  Still need to add to VMS, etc.
  4911.  
  4912. Russian keyboard mode for OS/2 C-K. 22 Feb 95.
  4913.  
  4914. Fix from Jeff A for Telnet negotiations; C-K was neglecting handle
  4915. DONT TERMINAL_TYPE.  ckcnet.c 5A(043) 23 Feb 95.
  4916.  
  4917. Changes from ulli@Vincent.LfM.rwth-aachen.de (Ulrich Schlueter) for OS-9:
  4918.  . Add automatic directory changing and creation for OS-9
  4919.  . Add automatic parity detection for OS-9
  4920.  . Don't call sleep(0) (OS-9 treats this as sleep(infinity)
  4921.  . Fix command-recall display for OS-9
  4922.  . Add text/binary session log for OS-9
  4923.  . And fix for bug: you RESEND a file from a remote kermit and then put it in
  4924.    server mode, escape back to your local kermit and issue a GET command in
  4925.    text mode, then the message "Refused: disposition" will appear because
  4926.    'sendmode' is still set to SM_RESEND, therefore reset sendmode to SM_SEND
  4927.    before server mode is entered.
  4928. Many modules, 24 Feb 95.   
  4929.  
  4930. Some small changes to VMS modules to allow compilation with DEC C on VAX,
  4931. which was not possible before, from Martin P.J. Zinser, Gesellschaft
  4932. fuer Schwerionenforschung GSI, Darmstadt <zinser@axp603.gsi.de>.  24 Feb 95.
  4933.  
  4934. Some small changes for __FreeBSD__ from Andrew Chernov <ache@astral.msk.su>.
  4935. ckutio.c 5A(161), 24 Feb 95.
  4936.  
  4937. Enclose stray reference to deblog() in ckuusx.c in #ifdef DEBUG..#endif.
  4938. From Steve Layten, Chemical Abstracts.  24 Feb 95.
  4939.  
  4940. Fix for SCO ODT 3.0 dialing from Rob Weiner <robert@progplus.com> - use
  4941. nap() rather than poll() in msleep().  ckutio.c 5A(161), 24 Feb 95.
  4942.  
  4943. From Tom Pinkl <tom@hbsrx.com>, make UNIX zshcmd() return child's exit status,
  4944. so script programs can check success/failure of RUN commands.  ckufio.c
  4945. 5A(099), ckuusr.c 5A(159), 24 Feb 95.
  4946.  
  4947. Minor corrections to various messages, etc.  ckuus2.c.
  4948.  
  4949. Fix SHOW SERVER to show all items.  Conditionalize all references to
  4950. "copy".  Conditionalize various unprotected ANSIisms that snuck in since
  4951. October.  etc etc.
  4952.  
  4953. For non-OS/2 systems, the intentions of the changes of recent days is to
  4954. fix a few minor problems, but not to introduce any new functionality, and
  4955. to integrate the updated sources for OS/2 and OS-9.  For non-OS/2 systems,
  4956. the version number remains at 5A(190), but with a new date.
  4957.  
  4958. Compiled OK on SunOS 4.1.3 (non-ANSI), Solaris 2.4 (SPARC and Intel) (ANSI),
  4959. HP-UX (ANSI and non-ANSI).
  4960.  
  4961. More from Ulli Schlueter:
  4962.  . Fix off-by-one error in initialization of command recall buffer.
  4963.  . Fix confusion after character deletion over {}'s in command processor,
  4964.    e.g. "xif eq {} {}^H} {echo y} else {echo n}".
  4965. ckucmd.c 5A(069) 2 Mar 95.
  4966.  . SET TERM FONT was not in OS2 conditionals.
  4967.  . Prevent "ok to hang up?" response from overwriting name of new host
  4968.    in setlin().
  4969. ckuus7.c / ckuusr.c 5A(160), 2 Mar 95.
  4970.  . Server was not ACKing REMOTE RENAME / COPY.
  4971. ckcpro.w 5A(074) 2 Mar 95.
  4972.  . Add OS-9 support in ckhost().
  4973. ckuusx.c / ckuusr.c 5A(160), 2 Mar 95.
  4974.  . Add TCP/IP support for OS-9.
  4975. ckcnet.h, ckuusy.c, ck9*.*.  It can now be built with or without TCP/IP.
  4976.  
  4977. From Jeff A - fix an array reference in a debug() statement to check that
  4978. the subscript is in range.  This was causing the OS/2 version to crash if
  4979. debug log was on during CONNECT mode.  ckuus5.c, 4 Mar 95.
  4980.  
  4981. From Ulli S - DEC TCP/IP (UCX) getservbyname() never worked right -- calling
  4982. it, e.g. via "kermit -j blah" or "telnet blah telnet", would crash the
  4983. program in VMS.  Ulli supplied a replacement.  ckcnet.c 5A(044) 7 Mar 95.
  4984.  
  4985. Added MOVE and MMOVE commands.  Just like SEND and MSEND, but they delete
  4986. each source file after sending it successfully.  ckuusr.[ch] 5A(161),
  4987. ckcpro.w 5A(075), 1 Apr 95.
  4988.  
  4989. Added SET TELNET BINARY-MODE { DISABLED, ENABLED }.  ckuusr.h, ckuus[34].c,
  4990. ckcnet.c 5A(047), 1 Apr 95.
  4991.  
  4992. Made necessary changes to get C-Kermit to compile and link under IRIX 6.01.
  4993. Many modules, all changes minor, to satisfy overzealous type-checking
  4994. compiler.
  4995.  
  4996. Changed DIAL MNP default to ON.  Changed DIAL SPEED-MATCHING default to OFF.
  4997. Added DIAL ERROR-CORRECTION and DIAL COMPRESSION commands, but for now they
  4998. are just synonyms for MNP.  ckudia.c 5A(065), ckuus7.c, 15 Apr 95.
  4999.  
  5000. Added dial init-strings for various types of modems as comments to CKERMOD.INI.
  5001. Added XDIAL macro to CKERMIT.INI.  Fixed UNIXLOGIN macro not to look for \13.
  5002. Added DEC Store entries to sample dialing and services directories.
  5003. 15 Apr 95.
  5004.  
  5005. Fixed a bug in \fcontents() that prevented it from evaluating array names
  5006. correctly.  ckuus4.c, 17 Apr 95.
  5007.  
  5008. ========== released 5A(191) 24 Apr 95 for OS/2 only ========================
  5009.  
  5010. Fixed a bug in INPUT that made it drop every 256th character.  ckuus4.c.
  5011. 23 May 95.
  5012.  
  5013. Added -lmalloc to SCO UNIX 3.2v4 makefile entries to make it use SCO's
  5014. malloc, rather than the one in libc.a, which was crashing.  24 May 94.
  5015. From Tom Pinkl.
  5016.  
  5017. Fix TRANSMIT command to obey TELNET NEWLINE setting and to double IACs on
  5018. TELNET connections.  ckuus4.c, 25 May 95.
  5019.  
  5020. Added #ifdef TNCODE around these changes.  ckuus4.c, 31 May 95.
  5021.  
  5022. Fixed bug in ASK/ASQ in which deletion of entered material could sometimes
  5023. delete too much.  ckuus6.c, 31 May 95.
  5024.  
  5025. Added -8 (8-bit clean) command-line option.  ckuusy.c, 3 Jun 95.
  5026.  
  5027. Remove #ifdef ZCOPY..#endif from around REMOTE COPY command.  ckuusr.c,
  5028. 4 Jun 95.
  5029.  
  5030. June 10-11, 1995:  Overhaul DIAL mechanism.  Here are very rough notes, to
  5031. be prettied up later:
  5032.  
  5033. Changed DIAL MNP default to ON.  Changed DIAL SPEED-MATCHING default to OFF.
  5034. Added DIAL ERROR-CORRECTION and DIAL COMPRESSION commands, but for now they
  5035. are just synonyms for MNP.  ckudia.c 5A(065), ckuus7.c, 15 Apr 95.
  5036.  
  5037. Added dial init-strings for various types of modems as comments to CKERMOD.INI.
  5038. Added XDIAL macro to CKERMIT.INI.  Fixed UNIXLOGIN macro not to look for \13.
  5039. Added DEC Store entries to sample dialing and services directories.
  5040. 15 Apr 95.
  5041.  
  5042.  
  5043. [ OK ] Fill in MDMINFs for:
  5044.  
  5045. ok    NULL,                /* 26 Dataport */
  5046. ok    NULL,                /* 27 Boca */
  5047. ok    NULL,                /* 28 Motorola UDS Fastalk */
  5048. no    NULL,                /* 29 Digicomm */
  5049. no    NULL,                /* 30 Dynalink */
  5050. ok    NULL,                /* 31 Intel */
  5051. no    NULL,                /* 32 Microcom QX */
  5052. ok    NULL,                /* 33 Multitech */
  5053. ok    NULL,                /* 34 Supra */
  5054. no    NULL,                /* 35 Zoltrix */
  5055. ok    NULL,                /* 36 Zoom */
  5056. ok    NULL,                /* 37 ZyXEL */
  5057.  
  5058. [ OK ] Full          39K  <-- Do these again when finished...
  5059. [ OK ] NOOLDMODEMS   34K
  5060. [ OK ] MINIDIAL      22K
  5061.  
  5062. Files changed:
  5063.  ckcdeb.h, ckuusr.h, ckcker.h, ...
  5064.  ckuus2.c, ckuus3.c, ckuus4.c, ckuus5.c, ckuus6.c, ckuus7.c, ckudia.c, ...
  5065.  ckccfg.doc, ...
  5066.  
  5067.  ckcker.upd <--   Do these...
  5068.  ckcker.bwr <--
  5069.  
  5070. Incompatibilities:
  5071.  
  5072.   No more v34-telebit, v42-telebit, slow-telebit.
  5073.   No more automatic sensing of many Telebit models, now just NEW and OLD.
  5074.   Use other SET commands to accomplish these effects.
  5075.   SHOW COMM doesn't show DIAL settings any more.
  5076.  
  5077. [ OK ] Put support for old modems in #ifdef OLDMODEM..#endif.
  5078.        Define OLDMODEM by default
  5079.        M_OLD makes old modem names invisible (keep, but hide)
  5080.  
  5081. [ OK ] Get rid of special handling for Telebits.
  5082.  
  5083. [ OK ] Got rid of "augmdmtyp", "mymdmtyp", etc.
  5084.  
  5085. [ OK ] add "name" (description) to MDMINF structure?
  5086.  
  5087. [ OK ] add separate SET commands for non init-string items:
  5088.  
  5089. SET DIAL STRING { ERROR-CORRECTION, COMPRESSION } { ON, OFF } [ string ]
  5090. SET DIAL STRING { HANGUP, HWFC, SWFC, NOFC } [ string ]
  5091. SET DIAL STRING { DIAL-COMMAND, INITIALIZATION, PREFIX } [ string ] <- synonyms
  5092.  
  5093. [ OK ] Make previous string commands invisible but still accept them.
  5094.  
  5095. [ OK ] SET DIAL FLOW-CONTROL { HARD, SOFT, NONE }
  5096. [ OK ] Add  SET DIAL FLOW-CONTROL to SHOW DIAL
  5097.  
  5098. [ OK ] Add all of the above into the ckudia module.
  5099.  
  5100. [ no ] Turn flow control off during dialing, restore it when CONNECTed.
  5101.        This would actually be done in ttpkt() when the flow argument is
  5102.        DIALING.  This could be done by treating DIALING as NONE.  A bit risky.
  5103.  
  5104. [ OK ] Make SHOW COMM not include SHOW DIAL, but just a pointer to it.
  5105.  
  5106. [ OK ] Don't keep dialing directory open.
  5107.  
  5108. [ OK ] move mdminf struct definition to ckcker.h.
  5109.  
  5110. [ OK ] Moved BREAK transparency to init string, since we always want it.
  5111.  
  5112. [ OK ] SET DIAL COMPRESSION, ERROR-CORRECTION
  5113.        ON  means enable it in the modem it if the modem has it.
  5114.        OFF means disable it in the modem it if the modem has it.
  5115.  
  5116. [ OK ] COMPRESSION ON => ERROR-CORRECTION ON
  5117. [ OK ] ERROR-CORRECTION OFF => COMPRESSION OFF
  5118. [ OK ] SET MODEM should override previous SET DIAL INIT
  5119.  
  5120. [ OK ] Get rid of all references to dialmnp,
  5121.        make MNP-ENABLE be a synonym for ERROR-CORRECTION.
  5122.  
  5123. [ OK ] Add to modem structure:
  5124.  
  5125.      capabilities:
  5126.        EC      if ec_on_str is not NULL or ""
  5127.        DC      if dc_on_str is not NULL or ""
  5128.        SB      recycle sb_auto_action
  5129.        HWFC    if hwfc_str ...
  5130.        SWFC    if swfc_str ...
  5131.        Kermit spoof
  5132.  
  5133. [ OK ] SET MODEM to a particular modem sets COMPRESSION, EC, and SPEED-MATCHING
  5134.        ON or OFF according to the modem's capabilities.
  5135.  
  5136. [ OK ] Flow control:
  5137.  
  5138. DIAL FLOW == *local* flow-control for modem,
  5139. set automatically to AUTO when SET MODEM is given.
  5140.  
  5141. if DIAL FLOW == RTS/CTS ..OR..
  5142.    DIAL FLOW == AUTO && flow == RTS/CTS
  5143.      then set it from dialhwfc or mp->hwfc, if any, else warn
  5144.  
  5145. else if DIAL FLOW == XON/XOFF ..OR..
  5146.    DIAL FLOW == AUTO && flow == XON/XOFF && EC is ON <-- (note!)
  5147.      then set it from dialswfc or mp->swfc, if any, else warn
  5148.  
  5149. else if DIAL FLOW == NONE
  5150.      then set it from dialnofc or mp->nofc, if any, else warn
  5151.  
  5152. [ OK ] BUT now allow for SET DIAL { STRING, FLOW } overrides ...
  5153.  
  5154. [ no ] Add SET DIAL METHOD { TONE, PULSE } ???
  5155.  
  5156. [ OK ] Clean up Telebit mess.
  5157.  
  5158. [ no ] Do something about interface speed vs modulation speed in stats?
  5159.  
  5160. [ OK ] Add WINDIAL type.
  5161.  
  5162. [ OK ] Update SHOW DIAL <-- keep doing this
  5163.  
  5164. [    ] Update help messages...
  5165.  
  5166. [    ] Write instructions for adding a new modem type.
  5167.  
  5168. LOOSE ENDS:
  5169.  
  5170. [    ] What do do about generations of same modem -
  5171.  
  5172. PPI and friends...  Do all models pick the highest modulation method
  5173. automatically, so this need not be set?  ditto for others?
  5174.  
  5175. Hayes and friends...  Do we need separate entries for Hayes Optima,
  5176. Accura, etc?
  5177.  
  5178. TESTING:
  5179.  
  5180. Build on OS/2, HP, or NeXT where I can test.
  5181.  
  5182. Test CCITT
  5183.  
  5184. WRITE IT up...
  5185.  
  5186. So instructions should say SET MODEM first, then SET DIAL to override
  5187. any modem-specific settings that were picked up automatically.
  5188.  
  5189. However, since settings can be given in any order, we don't really know for
  5190. sure what they are until after the DIAL cmd is given, so we can't really
  5191. check things until then.
  5192.  
  5193. (much more DIAL work ...)
  5194.  
  5195. Added SET ALARM / IF ALARM / SHOW ALARM.  ckuus*.[ch], 19 Jun 95.
  5196.  
  5197. It seems that { braces } could not be used in the expected manner on
  5198. \function() args, i.e. for grouping, as they can be in MS-DOS Kermit; another
  5199. blow to portable script programming.  What was worse, without being able to
  5200. use braces for grouping, it was next to impossible to include a comma or a
  5201. parenthesis as part of a function argument.  Fixed in ckuus4.c, 22 Jun 95.
  5202. To illustrate:
  5203.                         Old    New
  5204.   \flength(abc)          3      3
  5205.   \flength({abc})        5      3
  5206.   \flength(a{b}c)        5      3
  5207.   \flength({{abc}})      7      5
  5208.   \flength(a,b,c)        1      1
  5209.   \flength({a,b,c})      2      5
  5210.   \flength(a{,}b{,}c)    9      5
  5211.  
  5212. Note that only outermost braces are stripped, and inner ones are kept, so
  5213. whenever you need to include braces themselves, just double them up.
  5214.  
  5215. \fliteral() is an exception, since various constructions already in use
  5216. counted on it preserving braces (e.g. the dialing & services directories,
  5217. while loops, etc).  However, \fliteral now (for the first time) returns its
  5218. entire argument literally, even if it contains commas.  Previously, commas and
  5219. parentheses were sacred and of the highest priority to the function argument
  5220. parser.  Alpha.007.
  5221.  
  5222. Added REGET.  Client end: add "reget" to command table (ckuusr.h, ckuusr.c),
  5223. use GET command parser, but remember that the command was REGET (doget() in
  5224. ckuus6.c).  Send J-packet (new packet type) instead of R-packet (ckcpro.w,
  5225. ckcfn2.c).  Server end: handle incoming J packets, just like incoming R
  5226. packets, but remember that we're resending instead of just sending.  This
  5227. required adding one more action, and moving the code for the former GET
  5228. action (<server>R) to a routine that could be shared between <server>R and
  5229. <server>J.  Also, twiddled some #ifdefs so -DNOICP would automatically
  5230. set NOCSETS -- ckcker.h, ckcxla.h, ckuus4.c, etc, and ensured that -DNOICP
  5231. by itself without any other -DNOxxx's would result in a clean build.
  5232. Alpha.008, 23 Jun 95.
  5233.  
  5234. Richard Staunton at Berkeley discovered a problem that was introduced by my
  5235. fixing \fliteral() -- it appeared to break the dialing directory, although the
  5236. real explanation was that there was some very low-level code in the command
  5237. parser that depended on the old (broken) behavior, which wound up causing big
  5238. problems when trying to execute a macro that was defined inside an XIF,
  5239. WHILE, or FOR construction (as XDIAL is).  Fixed in litcmd() in ckuus5.c.
  5240. Also, Added "generic Rockwell" modem types for V.32, V.32bis, V.34.  Untested.
  5241. ckudia.c 5A(069) 24 Jun 95.  Alpha.009.
  5242.  
  5243. Changed UNIX zchki() to allow for FIFOs as well as regular files.
  5244. Suggested by Glenn Thobe <thobe@getunx.quake.com>.  This lets Kermit both
  5245. send and receive FIFOs, providing a new mechanism for pre- and postprocessing
  5246. of transferred data.  Added SET DIAL LOCAL-AREA-CODE to allow for
  5247. area-independent dialing directories.  Totally untested.  Alpha.010, 25 Jun 95.
  5248.  
  5249. From Ulli Schlueter... Some fixes for REGET (restoring file type and
  5250. collision after, etc); add null device support (/dev/nil) for OS-9; a bit
  5251. of support TELNET binary mode in ckucon.c (I hadn't gotten around to doing
  5252. this yet); DIAL interrupt handler fix for OS-9; fixes for ZyXEL modem
  5253. commands; fixes to poll() calls for SCO; corrections to SHOW TELNET display;
  5254. support for SPACE <device> command for OS-9; askmore() fixes for OS-9;
  5255. CRT file-transfer display fixes.  June 26.
  5256.  
  5257. Merged in recent changes from Jeff Altman for XXX.  Added \frindex(s1,s2,n),
  5258. "right index", which, ignoring the rightmost n characters (if n is given) in
  5259. s2, returns the position (index) in s2 of the rightmost occurrence of the
  5260. string s1.  Added \fverify(s1,s2,n), which returns the position (index) of the
  5261. first character in s2 that is not also in s1.  If n is given, we only look at
  5262. s2 beginning at position n.  Use for pre-verifying hex numbers, phone
  5263. numbers, etc etc.  ckuusr.[ch], ckuus4.c.  Alpha.011, 3 Jul 95.
  5264.  
  5265. Relaxed syntax on array references to allow spaces in them, as in \&a[ 3 ] or
  5266. \&a[ \feval( 1 + 1 ) ].  Increased maximum variable name length VNAML from 20
  5267. to 32, and separated array refs from other variables names by tying their max
  5268. length to a new symbol, ARRAYREFLEN, which is now defined in ckuusr.h to be
  5269. 80.  ckuus5.c, 4 Jul 95.
  5270.  
  5271. Allow partial DIAL commands for Hayes-like modems.  If a DIAL command results
  5272. in an OK or 0 response, count it as SUCCESS rather than FAILURE, but report
  5273. "Partial call complete" rather than "Call complete", and set \v(dial_status)
  5274. to a new value, 11, meaning partial call complete.  This allows calls to be
  5275. placed in several steps by ending a partial number with a semicolon (feature
  5276. of Hayes-like modems).  ckudia.c.
  5277.  
  5278. Whenever a serial line is closed implicitly, either by SET LINE or by EXIT,
  5279. and it is an open modem connection, then call mdmhup() before calling
  5280. ttclos().  This way, if a modem-hangup string is defined, it will be used to
  5281. ensure the modem is hung up, plus if the user has redefined the DIAL COMMAND
  5282. HANGUP string, e.g. to turn call-waiting back on, as is necessary in some
  5283. PBXs, that will be done too.  ckuusr.c, ckuus7.c.
  5284.  
  5285. Fleshed out the Microcom SX-command-mode support a bit.  Totally untested.
  5286.  
  5287. OS-9 updates from Ulli.  Alpha.013, 7 Jul 95.
  5288.  
  5289. Added SET MODEM CARRIER as synonym for SET CARRIER.  ckuus3.c, 8 Jul 95.
  5290.  
  5291. Jeff Altman restructured ckcmai.c to allow a more flexible style of exception
  5292. handling, since the old setjmp/signal/longjmp-out-of-signal-handler model
  5293. doesn't necessarily work in multithreaded environments.  8 Jul 95.
  5294.  
  5295. Added control-character (un)prefixing info to STATISTICS display.
  5296. ckcmai.c, ckcfns.c, ckuus4.c, 9 Jul 95.
  5297.  
  5298. Added two lines to arraynam() in ckuus5.c that allows the array subscript
  5299. to be treated as an expression and evaluated as if it were enclosed in
  5300. \fneval().  So now we can write \&a[\%i + 1], which is simpler and easier to
  5301. read than \&a[\fneval(\%i+1)].  Added to MSK also.  12 Jul 95.
  5302.  
  5303. Added new function \fipaddr(s,n).  Finds and returns the first IP address
  5304. in string s starting at position n (= 1 by default).  IP address must be
  5305. four decimal numeric fields of 1-3 digits each, separated by commas.  No
  5306. range checking is done (i.e. for 255 or less), though it easily could be.
  5307. 12 Jul 95.
  5308.  
  5309. Fixed compilation error in ckcnet.c for Motorola SV/88R4 regarding arg type
  5310. to setsockopt().  12 Jul 95.
  5311.  
  5312. Jeff A's reworking of exception handling extended to all the other modules
  5313. that needed it, including ckudia.c, ckuscr.c, and ckcnet.c.  A new source
  5314. module was added that implements UNIX-style exception handling: ckusig.c,
  5315. and there is an accompanying ckusig.h header file.  All C-Kermit build
  5316. procedures will have to be changed to accommodate this new module, and the
  5317. dependencies on the header file (which presently occur in ckcmai.c, ckcnet.c,
  5318. ckudia.c, ckuscr.c, and ckusig.c).  The UNIX makefile was updated for this.
  5319. The resulting version builds OK on SunOS 4.1.3 (non-ANSI) and NeXTSTEP (gcc,
  5320. strict ANSI), and runs OK in both places, handling Ctrl-C's and timeouts OK.
  5321. OS's that can't handle UNIX-style exception handling, particularly longjmps
  5322. out of signal handlers, will need ck?sig.[ch] modules of their own.
  5323. Alpha.014, 15 Jul 95.
  5324.  
  5325. Added IBM Mwave modem support.  ckudia.c, 19 Jul 95.
  5326.  
  5327. Added Zoltrix modem support.  ckudia.c, 20 Jul 95.
  5328.  
  5329. Fixed DIAL timeout to never be less than 25 seconds, and S7 value to never
  5330. be less than 20.  ckudia.c, 20 Jul 95.
  5331.  
  5332. Added new makefile entry for NCR SVR4 MPRAS 2.03.00 from Peter Binderup.
  5333. 20 Jul 95.
  5334.  
  5335. Fixed ckusig.h and ckusig.c to not spew out compiler warnings about "&"
  5336. being ignored or passing of incompatible pointer types.  Also ckcmai.c,
  5337. ckudia.c, ckuscr.c.  20-21 Jul 95.  Alpha.015.
  5338.  
  5339. Added CLEAR DIAL-STATUS.  ckuusr.[ch]
  5340. Added dial status to SHOW DIAL display.  ckuus4.c.
  5341. Added dial status strings to SHOW DIAL display if BIGBUFOK defined.  ckuus4.c.
  5342.  
  5343. Changed DIAL command not to hang up if dial-status = "partial" (11),
  5344. and also to skip all initializations.  ckudia.c.  21 Jul 95.
  5345.  
  5346. Massive changes begin 23 Jul 95.  Dialing directory format changed to name and
  5347. number only, no more speed or parity.
  5348.  
  5349.  . Entries are now read by getnct(), so all the same rules about comments
  5350.    and continuation apply as for command files.
  5351.  . There is no more partial match -- i.e. you can no longer abbreviate an
  5352.    an entry name in your DIAL command.
  5353.  . You can have multiple entries with the same name, in which case C-K will
  5354.    dial each one until it gets an answer, or uses up the list.  There is no
  5355.    artificial limit on the number of such entries.
  5356.  . DIAL == REDIAL if not given a number to dial.
  5357.  . Wordy messages are suppressed after the first dialing attempt.
  5358.  
  5359. Changed getnct() to have two addt'l args: file descriptor, so it can be
  5360. told which file to read (dialing directory or TAKE file); and a flag that
  5361. says whether to leave on the line terminator (0, for TAKE files) or to strip
  5362. it off (1, for dialing directory entries).
  5363.  
  5364. Changed xwords() to have an addt'l arg, flag, that says whether final
  5365. "word" should be the rest of the string (1) or, as before, a single word
  5366. like all the others.  23 Jul 95.
  5367.  
  5368. Added LOOKUP command to look up entries dialing directory exactly like
  5369. DIAL would, but without dialing.  24 Jul 95.
  5370.  
  5371. Changed dialing-directory lookup strategy to allow abbreviated search string,
  5372. as before, but only as long as all the names that it matches are the same.  If
  5373. not, an informative message is printing, giving examples of two different
  5374. names that matched, and if this happens we don't proceed with dialing.
  5375. Ditto if there is any other kind of bad error with directory -- can't open,
  5376. etc.  ludial(), ckuus6.c, 25 Jul 95.
  5377.  
  5378. Allowed for multiple dialing directories, up to MAXDDIR (== 12) of them.
  5379. Search proceeds through all of them.  Since dialing directory is opened each
  5380. time a DIAL command is given, relative paths might give different results,
  5381. which can be a good thing if used properly, e.g. you could have the search
  5382. order be a system-wide directory, then a home one, then a file in the current
  5383. directory, no matter what the current directory is.
  5384. ckuusr.[ch], ckuus[346].c, ckudia.c,  26 Jul 95.
  5385.  
  5386. Note: when dialing multiple numbers or doing retries, we still go through
  5387. the whole hangup and modem configuration sequence, since we can't be sure
  5388. that a dial failure has not altered the modem's settings or left the
  5389. connection open.
  5390.  
  5391. Added detection for old-style directories.  This involved writing, at long
  5392. last, Kermit's own "index()" function (since many C libraries don't have one),
  5393. ckindex() in ckuus4.c, and having \findex() and \frindex() use it, and then
  5394. also using it to search for any of the five parity names in the recovered
  5395. phone number.  It would have been easier (and better) to call xwords() first
  5396. the old way and then check index[4] and index[5] against speeds and parities
  5397. (and "="), but unfortunately, xwords() pokes NULs into its argument string,
  5398. so it could not be called a second time on the same string.  So then I went
  5399. back and did right, so now we have a decent index function AND a good
  5400. directory-checker.
  5401.  
  5402. Protocol: When a REMOTE command resulted in a short-form reply, it did not
  5403. set the SUCCESS flag, so if the previous command had failed, it would also
  5404. look as if the successful REMOTE command did too.  ckcpro.w 5A(078)
  5405. 26 Jul 95.
  5406.  
  5407. Fixed -m command-line option to initialize modem from database exactly
  5408. the way SET MODEM TYPE does.  ckuusy.c, 27 Jul 95.
  5409.  
  5410. Moved yes/no parsing code to a separate routine, getyesno(msg), where msg
  5411. is the question to ask.  ckuus3.c, 27 Jul 95.
  5412.  
  5413. Added code to detect old-style dialing directories and use them, and also
  5414. to detect mixed old- and new-format entries, which is fatal.  An old-format
  5415. directory is identified if any entries have parity field; a new-format
  5416. directory is identified if any phone numbers start with "+" or if there are
  5417. any full-line comments.  ckuus6.c, 27 Jul 95.
  5418.  
  5419. If an old-style directory is discovered, we ask the user "Shall I convert
  5420. it?", and if they say yes, we do.  ckuus6.c, 27 Jul 95.
  5421.  
  5422. Fixed ckcsig.h, which had some typos in it for the CK_POSIX_SIG case.
  5423. 28 Jul 95.
  5424.  
  5425. Added -T (telephony) command-line option, which so far does nothing.
  5426. ckuusy.c, 28 Jul 95.
  5427.  
  5428. Added "Default file-transfer mode is { TEXT, BINARY }" message to startup.
  5429. Almost-Alpha.016, 28 Jul 95.
  5430.  
  5431. Fixed -DNOCCTRAP compilation, merged in Jeff's changes to date.  30 Jul 95.
  5432.  
  5433. Fixed -DNODIAL compilation.  Difference between full dialing capability
  5434. and none at all on Sun-4 is 64K (so far).  30 Jul 95.
  5435.  
  5436. Fixed various compilation errors on VMS.  Builds OK on VMS 5.5-2 with
  5437. UCX and VAX C.  30 Jul 95.
  5438.  
  5439. Added table entries, parsing, and SHOW for the following SET DIAL commands:
  5440.  
  5441.   SET DIAL CONFIRMATION
  5442.   SET DIAL CONVERT-DIRECTORY
  5443.   SET DIAL LD-PREFIX
  5444.   SET DIAL LD-SUFFIX
  5445.   SET DIAL INTL-PREFIX
  5446.   SET DIAL INTL-SUFFIX
  5447.   SET DIAL PBX-EXCHANGE
  5448.   SET DIAL PBX-INSIDE-PREFIX
  5449.   SET DIAL PBX-OUTSIDE-PREFIX
  5450.   SET DIAL SUFFIX
  5451.  
  5452. ckuusr.h, ckuus[34].c, ckudia.c
  5453.  
  5454. Added automatic initialization of the following items from the corresponding
  5455. environment variables, if they are defined:
  5456.  
  5457.   K_COUNTRYCODE   DIAL COUNTRY-CODE        ; Local country code
  5458.   K_AREACODE      DIAL AREA-CODE           ; Local area code
  5459.   K_INTL_PREFIX   DIAL INTL-PREFIX         ; International dialing prefix
  5460.   K_LD_PREFIX     DIAL LD-PREFIX           ; Long-distance prefix
  5461.   K_PBX_EXCHANGE  DIAL PBX-EXCHANGE        ; PBX exchange
  5462.   K_PBX_INSIDE    DIAL PBX-INSIDE-PREFIX   ; PBX internal-call prefix
  5463.   K_PBX_OUTSIDE   DIAL PBX-OUTSIDE-PREFIX  ; PBX outside-line prefix
  5464.  
  5465. ckcmai.c, ckcker.h, ckudia.c, 30 Jul 95.
  5466.  
  5467. Implemented SET DIAL CONVERT-DIRECTORY { ASK, ON, OFF } -- what to do when
  5468. an old-style directory is encountered:
  5469.   ASK = Ask.
  5470.   ON  = Convert without asking.
  5471.   OFF = Don't convert.
  5472. Default is ASK.  ckuus6.c, 30 Jul 95.
  5473.  
  5474. Fixes from Jeff for ddcnv() to two places that could cause additional
  5475. memory rot.
  5476.  
  5477. Added dncnv() routine to convert portable-format telephone number based on
  5478. locale info.  Presently visible only from LOOKUP.  First cut, very rough.
  5479. 30 Jul 95.
  5480.  
  5481. Added the code to call dncnv() when actually dialing.  ckuus6.c, 31 Jul 95.
  5482.  
  5483. Added code for DIAL CONFIRMATION.  When phone number is fetched from directory
  5484. then, the first time that Kermit is about to dial, if DIAL CONFIRM is ON,
  5485. Kermit asks the user "Is this number correct?".  If the user says "no", Kermit
  5486. asks them to type in a replacement, which is then remembered throughout the
  5487. current dialing cycle (i.e. the user is not reprompted for this number on
  5488. subsequent dial attempts).  ckuus6.c, 31 Jul 95.
  5489.  
  5490. If we pick up the country code or area code from the environment, set the
  5491. default long-distance and international prefixes just as we do when the
  5492. corresponding SET commands are given.  ckudia.c, 1 Aug 95.
  5493.  
  5494. Changed phone-number comparisons to ignore all non-digits in country code
  5495. and area code.  ckuus6.c, 1 Aug 95.
  5496.  
  5497. Fixed SET DIAL { AREA-CODE, COUNTRY-CODE } to accept only numerics.
  5498. ckuus6.c, 1 Aug 95.
  5499.  
  5500. Fixed dodial() to fail and print an error message if a portable ("+")
  5501. dialing directory entry was found but the local country or area code were
  5502. not defined.  ckuus6.c, 1 Aug 95.
  5503.  
  5504. Fixed BAD bug in mdmhup(), in which, under certain conditions, parity could be
  5505. restored from an uninitialized variable, resulting in corrupted files if the
  5506. file sender announced in the init string that it had parity (&) but then did
  5507. not encode for it.  Discovered by Jeff.  ckudia.c, 2 Aug 95.
  5508.  
  5509. Broke out "get numeric date" function into a separate routine, zzndate().
  5510. ckuus4.c, 2 Aug 95.
  5511.  
  5512. Added code to strip 9 from beginning of a Finnish area code, but only until
  5513. 12 Oct 96, at which time Finland changes to 0, with date comparison done
  5514. using zzndate().  ckuus6.c, 2 Aug 95.
  5515.  
  5516. Added code to handle PBX dialing: DIAL PBX-EXCHANGE, DIAL PBX-INSIDE-PREFIX,
  5517. and DIAL PBX-OUTSIDE-PREFIX.  3 Aug 95.
  5518.  
  5519. DIAL PREFIX was being prepended twice, once in dncvt() and again ckdial().
  5520. Removed from ckdial.  4 Aug 95.
  5521.  
  5522. Removed '-T' switch, changed '-P' switch to take an argument, which is
  5523. pointed to by the variable pipedata.
  5524.  
  5525. Moved SET DIAL DIR parsing to separate routine to allow parsing of other
  5526. types of directories.  ckuus3.c, 4 Aug 95.
  5527.  
  5528. Added SET NETWORK DIRECTORY command, just like SET DIAL DIRECTORY.  Added
  5529. display of network directories to SHOW NETWORK.  But it doesn't do anything
  5530. yet.  To be filled in later...  ckuus[34].c, 4 Aug 95.
  5531.  
  5532. Added area-code "0-stripping" for some more countries (Italy, Portugal, etc)
  5533. where it is known to be safe.  ckuus6.c, 5 Aug 95.
  5534.  
  5535. Added a new flag cktapi.  If it is nonzero, then dncvt() does not put any
  5536. kind of prefixes or suffixes on the phone number.  The flag would be set in
  5537. setlin() in ckuus7.c if the user SETs LINE to a TAPI device.  5 Aug 95.
  5538.  
  5539. Added SET TERM VIDEO-CHANGE command, as in MSK.  For Win95, this will be
  5540. disabled by default because WriteConsoleOutputAttributes() causes the
  5541. application to crash if the screen width is not 132 or the height is not
  5542. 25, 43, or 50.  Users can ENABLE this feature after Microsoft fixes the bug.
  5543. ckuus7.c, 5 Aug 95.
  5544.  
  5545. Finished network directory, but only for TCP/IP.  Can fix it up later for
  5546. other network types.  SET NETWORK DIRECTORY [ filename [ filename [ ... ] ] ]
  5547. sets it/them up, SHOW NETWORK lists them.  5 Aug 95:
  5548.  
  5549. If you have one or more network directories, then SET HOST or TELNET looks in
  5550. the given director{y,ies} for the name and then substitutes the appropriate
  5551. network type, address, and other info.  Format of the directory is:
  5552.  
  5553.   ; Full-line comment
  5554.   entry-name  network-type  host-name-or-address  other-stuff  ; comment
  5555.  
  5556. In which the network type must uniquely match one of the SET NETWORK keywords
  5557. (so, e.g. "tcp" is OK as an abbreviation of "tcp/ip"), and other-stuff depends
  5558. on which type of network it is.  For TCP/IP entries:
  5559.  
  5560.   entry-name  tcp/ip  ip-name-or-address  socket  ; comment
  5561.  
  5562. in which the "socket" is optional and defaults to 23.  Otherwise, rules are
  5563. just like for dialing directory.  E.g. you can have multiple entries with the
  5564. same name, you can abbreviate names by the same rules, etc.  ckuus7.c,
  5565. 4 Aug 95.
  5566.  
  5567. Still to do:
  5568.  . Design entries for other net types like DECnet & X.25
  5569.  . (X.25 can have LOTS of fields!)
  5570.  
  5571. Fixed bug in setlin() introduced Saturday, in which it failed to set SUCCESS
  5572. indicator when opening a serial device, and so SET LINE/PORT appeared to fail.
  5573. 7 Aug 95.
  5574.  
  5575. Added autoanswer-on and -off fields to MDMINF struct.  Added SET and SHOW
  5576. commands.  ckuus3.c, ckudia.c.  7 Aug 95.
  5577.  
  5578. Added ANSWER [ n ] command.  Optional n is timeout, seconds, default 0 == no
  5579. timeout.  Just like DIAL except (a) there is no phone number, so we skip the
  5580. modem's dialing command, and (b) we feed the modem its autoanswer command,
  5581. such as ATS0=1.  This made "?" at top level overflow the screen, so I made
  5582. COMMENT into an invisible command, sigh.  ANSWER not tested.  ckuusr.c,
  5583. ckuus6.c, ckudia.c.  7 Aug 95.
  5584.  
  5585. When DIAL / LOOKUP builds up a list of numbers, they should be dialed
  5586. "cheapest first".  So prior to dialing, now we sort the numbers in the
  5587. following order:
  5588.  
  5589.   1. Internal PBX
  5590.   2. Local
  5591.   3. Unknown, literal (no "+")
  5592.   4. Long distance
  5593.   5. International
  5594.  
  5595. This is, of course, a rough ordering, because we don't know which
  5596. long-distance calls are cheaper than which others, and we don't know which
  5597. countries are close and which ones are far.  ckuus6.c, 8 Aug 95.
  5598.  
  5599. Removed &S0, &C1, &D2 from all modem init strings, except #ifdef OS2,
  5600. in which case all three of these were added.  In UNIX, VMS, etc, people
  5601. often have to use different settings for these items, but in OS/2, Windows,
  5602. etc, we can safely set them.  ckudia.c, 8 Aug 95.
  5603.  
  5604. Created symbol NEWDEFAULTS in ckcker.h.  If this symbol is defined, then:
  5605.  
  5606.  . RECEIVE PACKET-LENGTH is 4096 rather than 90
  5607.  . WINDOW is 20 rather than 1
  5608.  . BLOCK-CHECK is 3 rather than 1
  5609.  . FILE TYPE is BINARY rather than TEXT
  5610.  
  5611. Defined NEWDEFAULTS if OS2 is defined.  Tested by running Kermit without
  5612. any init file.  On an Ethernet connection, it transferred files at well over
  5613. 100,000 cps.  ckcker.h, ckcmai.c, 8 Aug 95.
  5614.  
  5615. Made FILE DISPLAY FULLSCREEN the default for OS/2, etc.  ckuusx.c, 8 Aug 95.
  5616. Made FILE NAMES LITERAL the default for NT.  ckcmai.c, 8 Aug 95.
  5617.  
  5618. Fixed a bug in which SET MODEM TYPE NONE caused stray memory references in
  5619. initmdm().  ckuus3.c, 9 Aug 95.
  5620.  
  5621. Changed default DIAL RETRIES to 5, DIAL INTERVAL to 10.  9 Aug 95.
  5622.  
  5623. Filled in HELP text for DIAL, SET DIAL, SET MODEM.  ckuus2.c, 9 Aug 95.
  5624.  
  5625. Added +1 800 / 888 as a special "free" category to phone-number sort.
  5626. ckuus6.c, 9 Aug 95.
  5627.  
  5628. Added SET DIAL SORT { ON, OFF } to let user disable sorting.
  5629. ckuusr.h, ckuus3.c, ckuus6.c, 9 Aug 95.
  5630.  
  5631. Made new symbols OS2ORWIN32 (== OS2 for now since NT is defined only if OS2 is
  5632. also defined) and OS2ONLY (== OS2 but not NT) in ckcdeb.h, to simplify #ifdefs
  5633. in the C code.  9 Aug 95.
  5634.  
  5635. Made LOOKUP look in network directory(s) too.  ckuus6.c, 9 Aug 95.
  5636.  
  5637. Added [\v(dir)] to default prompt whenever NOSPL is not defined, except
  5638. on Macintosh.  Changed default prompt for NT.  Changed SET PROMPT to
  5639. restore the appropriate system-specific prompt when given with no argument.
  5640. ckuus3.c, ckuus5.c, 9 Aug 95.
  5641.  
  5642. Changed default command mask from 7 to 8 bits for OS/2 & friends.
  5643. ckucmd.c, 9 Aug 95.
  5644.  
  5645. Alpha.017, dated 8 Aug 95.  Tue Aug  8 21:10:25 1995.
  5646.  
  5647. Discovered \findex() and \frindex() were broken.  Fixed in ckindex(),
  5648. ckuus4.c, 11 Aug 95.
  5649.  
  5650. Fixed bug in Microcom modem dialing (missing "break;" in switch statement).
  5651. Also fixed arrangement of some #ifdefs.  ckudia.c, 12 Aug 95.
  5652.  
  5653. Added SET DIAL TOLL-FREE-AREA-CODE [ number [ number [ ... ] ] ].  This lets
  5654. users specify which calls are "free" and go to the top of the "cheapest-
  5655. first" sort order.  800 and 888 are set automatically if the user says SET
  5656. DIAL COUNTRY 1.  It is not set automatically for other country codes.
  5657. ckuus[346].c, 12 Aug 95.
  5658.  
  5659. Added SET DIAL TOLL-FREE-PREFIX <blah>.  If Kermit detects that a call is
  5660. toll-free then it uses this prefix instead of the normal long-distance prefix,
  5661. in case the user has specified an alternative ld-prefix, e.g. for charging
  5662. purposes, which probably won't work with toll-free calls.
  5663. ckuus[346].c, 12 Aug 95.
  5664.  
  5665. Changed DIAL command to treat numbers that are not found in the dialing
  5666. directory the same way as numbers that are found there, so user can type (e.g.)
  5667. "dial +1 (212) 555-1212" if she wants to, and have it converted in the normal
  5668. way.  ckuus6.c, 12 Aug 95.
  5669.  
  5670. Changed LOOKUP to set the redial string, so "LOOKUP blah, DIAL" will dial
  5671. blah.  Various other cleanups in dodial(), for example, so LOOKUP would work
  5672. on versions built without network support.  ckuus6.c, 12 Aug 95.
  5673.  
  5674. When DIAL RETRIES is > 0 but the number was not found in the directory,
  5675. then Ctrl-C did not break out of the retry loop.  Fixed in dodial(), ckuus6.c,
  5676. 12 Aug 95.
  5677.  
  5678. Fixed -DNODIAL build... various #ifdef's needed juggling.  ckuus[347].c,
  5679. 12 Aug 95.
  5680.  
  5681. Some fixes to various files from Jeff resulting from warnings from a new
  5682. compiler -- missing return statements in functions, etc.  12 Aug 95.
  5683.  
  5684. Added PDIAL command - "partial dial".  Just like DIAL, except it appends a
  5685. semicolon to the end of the phone number if the modem is Microcom or
  5686. Hayeslike; not supported otherwise.  This is useful with numbers fetched
  5687. from the dialing directory.  ckuusr.h, ckuus6.c, ckudia.c, 12 Aug 95.
  5688.  
  5689. Complications relating to PDIAL: Don't add ";" if there already is one,
  5690. otherwise modem errors out.  And then, if modem errors out, the phone is still
  5691. off hook, so Kermit has to hang it up.  And finally, break out of the DIAL
  5692. RETRIES loop if there is ANY kind of error when dialing and the previous dial
  5693. was partial.  Otherwise, we just keep retrying the second part of the number,
  5694. which does no good at all.  Also, don't record redial numbers for partial
  5695. dial, or the dial after a partial dial.  ckuus6.c, ckudia.c, 12 Aug 95.
  5696.  
  5697. Added initialization of dialing directory file name(s) from environment
  5698. variable K_DIAL_DIRECTORY, ckudia.c, 13 Aug 95.
  5699.  
  5700. Fixed phone-number processor to allow for dialing from countries, such as
  5701. Singapore, that do not have area codes.  ckuus6.c, 13 Aug 95.
  5702.  
  5703. Fixed phone-number processor to allow user to SET DIAL LD-PREFIX to
  5704. nothing to force (e.g.) 10-digit dialing in the USA & Canada.
  5705. ckuus6.c, 13 Aug 95.
  5706.  
  5707. Added SET DIAL TF-* as invisible synonyms for SET DIAL TOLL-FREE-*.
  5708. ckuus3.c, 13 Aug 95.
  5709.  
  5710. Added four new variables: 
  5711.   \v(d$ac) = DIAL AREA-CODE
  5712.   \v(d$cc) = DIAL COUNTRY-CODE
  5713.   \v(d$lp) = DIAL LD-PREFIX
  5714.   \v(d$ip) = DIAL INTL-PREFIX
  5715. ckuus4.c, ckuusr.h, 13 Aug 95.
  5716.  
  5717. Installed ld- and intl-prefix defaults for Finland.  ckudia.c, ckuus3.c,
  5718. 13 Aug 95.
  5719.  
  5720. Made old modem-types visible in "set modem type ?" after all.  There's really
  5721. no reason to hide them.  Made "tapi" modem-type invisible.  Not clear yet if
  5722. we'll even need it.  ckudia.c, 13 Aug 95.
  5723.  
  5724. Added SET MODEM CAPABILITIES synonyms to match the display in SHOW MODEMS.
  5725. Also, discovered that SET MODEM CAPABILITIES never worked right.  Fixed it.
  5726. ckuus3.c, 13 Aug 95.
  5727.  
  5728. Updated help text.  ckuus2.c, 13 Aug 95.
  5729.  
  5730. Fixed Mwave init string to not contain two &S0's, which pushed it over
  5731. the length limit (noticed by Jeff).  ckudia.c, 13 Aug 95.
  5732.  
  5733. Alpha.018.
  5734.  
  5735. Fixed dial module to not fail if the phone rings during an ANSWER command.
  5736. ckudia.c, 14 Aug 95.
  5737.  
  5738. Added a couple more special cases for Finland and France changeovers.
  5739. ckuus3.c, ckuus6.c, ckudia.c, 14 Aug 95.
  5740.  
  5741. Changed VN_D$xxx to VN_D_xxx in ckuusr.h, ckuus4.c, because $ can't be
  5742. used in preprocessor symbols.  14 Aug 95.  (and uploaded new sources etc)
  5743.  
  5744. Added SET PROTOCOL (and synonym SET TRANSFER PROTOCOL) to let user select an
  5745. external protocol, within #ifdefs.  This is designed, at present, only to work
  5746. with specific external protocol packages, not to be a general-purpose protocol
  5747. loader / shell.  ckcker.h, ckuusr.h, ckcmai.c, ckuus[r3].c, 14 Aug 95.  These
  5748. commands do nothing as yet.
  5749.  
  5750. Made SET EXIT WARNING ON the default for OS/2 & similar OS's.  ckuusr.c,
  5751. 15 Aug 95.
  5752.  
  5753. Fixed server end of REMOTE QUERY to handle \f...() functions.  Now you can
  5754. use any of the following forms (but the first is recommended) to get info
  5755. from the server that involves calling functions:
  5756.  
  5757.   remote query kermit files(oofa.*)
  5758. or:
  5759.   remote query user \\ffiles(oofa.*)
  5760. or:
  5761.   remote assign oofa \\ffiles(oofa.*)
  5762.   remote query user oofa
  5763.  
  5764. ckcpro.w 5A(079), 16 Aug 95.
  5765.  
  5766. Moved "Warning - Prior SET DIAL COUNTRY-CODE required" message to the
  5767. right place.  17 Aug 95.
  5768.  
  5769. Changed command-line-option interpreter to accept "-j host service" as
  5770. well as "-j host:service".  This lets "kermit -c -j" be a synonym for
  5771. "telnet".  ckuusy.c, 19 Aug 95.
  5772.  
  5773. Added '-T' command-line option for text mode file transfer.
  5774. ckuusy.c, 8 Sep 95.
  5775.  
  5776. Fixed TELNET and SET HOST commands as follows: if a SET NETWORK DIRECTORY
  5777. command was given, but (one of) the named file(s) could not be opened, then,
  5778. even if the user had given a literal hostname or address, Kermit would refuse
  5779. to use it.  Now it simply ignores network-directory-file-open errors that
  5780. occur in this situation.  ckuus7.c, 9 Sep 95.
  5781.  
  5782. Similarly, fixed ludial() not to terminate fatally if it can't find a
  5783. dialing directory.  ckuus6.c, 9 Sep 95.
  5784.  
  5785. NOTE: This was the reason why in previous versions we kept the dialing
  5786. directory file open all the time.  If they could open it at the time that the
  5787. SET DIAL DIR command was given, even if it was a relative filename, and then
  5788. CD'd all over the place, they would not lose it.  Now they HAVE to give a
  5789. fully qualified filename, or else they won't be able to open after CD'ing.
  5790.  
  5791. Fixed ludial to allow exact matches, even if they are substrings of other
  5792. entries.  Previously, if "foo" and "foo2" were both in the directory, and the
  5793. user said "dial foo", Kermit would complain that "foo" was ambiguous; now it
  5794. works.  Requires a second pass, but this happens only when there is an
  5795. ambiguity.  ckuus6.c, 9 Sep 95.
  5796.  
  5797. Same deal for lunet.   ckuus7.c, 9 Sep 95.
  5798.  
  5799. When DIAL CONFIRMATION is on, allow user to skip a dialing the number by
  5800. entering an empty one.  ckuus6.c, 9 Sep 95.
  5801.  
  5802. Added SET COMMAND COLOR <fg> <bg>.  Just parses and sets variable
  5803. commandcolor, but doesn't actually do anything.  #ifdef OS2 only.
  5804. ckuus3.c, 9 Sep 95.
  5805.  
  5806. Filled in PRINT command for NT to be COPY /B filename xxx, where xxx is
  5807. the SET PRINTER device-or-filename, or if that is NULL, then "PRN".
  5808. ckuusr.c, ckuus3.c, ckufio.c, 9 Sep 95.
  5809.  
  5810. Added invisible BINARY and TEXT (ASCII) commands, equivalent to the
  5811. corresponding SET FILE TYPE commands.  ckuusr.[ch], 9 Sep 95.
  5812.  
  5813. A user complained that a certain macro wasn't working right in SunOS.
  5814. Turns out it was longer than the command-buffer length, CMDBL.  Changed
  5815. CMDBL (and also the atom-buffer length, ATMBL) to be governed by BIGBUFOK.
  5816. Defining BIGBUFOK at compile time means, in general, "memory to burn".
  5817. Added display of these buffer lengths to SHOW SCRIPTS.
  5818. ckcker.h, ckucmd.h, 9 Sep 95.  
  5819.  
  5820. Changed DIAL command to look up its target in the dialing directory only if
  5821. it starts with a letter.  This makes entry of literal phone numbers (starting
  5822. with digit or +, etc) much faster and less confusing.  ckuus6.c, 9 Sep 95.
  5823.  
  5824. Don't complain about lack of country-code definition when dialing a literal
  5825. number, but do complain about lack of country-code definition when dialing a
  5826. portable-format number, no matter whether it is from a dialing directory or
  5827. was typed in directly.  ckuus6.c, 9 Sep 95.
  5828.  
  5829. Do complain about lack of area-code definition when dialing a number within
  5830. one's own country, and one's own country has area codes, and does not allow
  5831. local numbers to be dialed the same way as long-distance.  For now, this is
  5832. effective only for country code 1, and it's only a warning.
  5833. ckuus6.c, 9 Sep 95.
  5834.  
  5835. Updated messages, help text, etc etc.  ckcmai.c, ckuus2.c, 9 Sep 95.
  5836.  
  5837. DIAL, TELNET, SET HOST now allow their targets to start with "=" (equal sign)
  5838. to indicate that the following text is to be used literally and not looked up
  5839. in any dialing or network directories, no matter whether they start with
  5840. letters or digits or anything else.  The "=" sign, of course, is stripped
  5841. first.  ckuus6.c, ckuus7.c, 9 Sep 95.
  5842.  
  5843. Added (invisible) CLS command for OS/2 & friends.  Untested.
  5844. ckuusr.c, 9 Sep 95.
  5845.  
  5846. Added ROBUST, CAUTIOUS, FAST as built-in macro definitions, which take into
  5847. account various compile-time options and buffer-size limits.
  5848. ckuus5.c, 9 Sep 95.
  5849.  
  5850. Changed default block check to 3, always.  No reason not to.
  5851. ckcker.h, 5 Sep 95.
  5852.  
  5853. Added SET DIAL CONNECT { ON, OFF, AUTO }, which tells whether to CONNECT
  5854. automatically after successful dialing.  AUTO means do so only if DIAL command
  5855. was given from top level, i.e. not from a macro or command file.
  5856. ckuus3.c, ckuusr.c, ckuusr.h, 9 Sep 95.
  5857.  
  5858. Added SET DIAL RESTRICTION { NONE, LOCAL, LONG-DISTANCE, INTERNATIONAL }
  5859. ckuus3.c, ckuus6.c, 9 Sep 95.
  5860.  
  5861. Added a new function, chkspkt(s), to ckcfn2.c.  It checks whether s is a
  5862. valid S packet; returns 1 if so, 0 if not.  10 Sep 95. 
  5863.  
  5864. SET COMMAND COLOR now works on systems that support it.  ckuus3.c, 10 Sep 95.
  5865.  
  5866. New function added by Jeff to ckufio.c: zfnfp(), which, given a filename,
  5867. returns a fully qualified filename.  10 Sep 95.
  5868.  
  5869. Autoreceive while in CONNECT mode for terminal-emulating versions.  10 Sep 95.
  5870.  
  5871. Multiprotocol structures...
  5872.  
  5873. Added SET PREFIXING { ALL, CAUTIOUS, MINIMAL, NONE }, as shorthands for
  5874. SET CONTROL PREFIX <lotsa-numbers>, and also to be used with other protocols.
  5875. 10 Sep 95.
  5876.  
  5877. Added ^^ and ^\ and ^] (and 8-bit equivalents) to SET PREFIXING CAUTIOUS.
  5878. ckuus[35].c, 11 Sep 95.
  5879.  
  5880. Added initialization of prefixing to ckcmai.c at startup, before reading
  5881. init file.  11 Sep 95.
  5882.  
  5883. Added askmore() pagination to BUG command.  11 Sep 95.
  5884.  
  5885. Added SET AUTODOWNLOAD { ON, OFF }, within #ifdef CK_AUTODL..#endif.
  5886. CK_AUTODL should not be defined unless CK_APC is too.
  5887. ckuusr.h, ckuusr.c, ckuus3.c, 11 Sep 95.
  5888.  
  5889. Don't let user send multiple files with XMODEM.  Make user specify
  5890. a RECEIVE name with XMODEM.  ckuusr.c, 11 Sep 95.
  5891.  
  5892. Added SET FILE DOWNLOAD-DIRECTORY.  Works with RECEIVE, GET, kermit -r,
  5893. and autodownload.  Lots of files.  14 Sep 95.
  5894.  
  5895. Prevented any Kermit-specific commands (GET, FIN, REMOTE, etc) from parsing
  5896. or executing if PROTOCOL is not KERMIT.  14 Sep 95.
  5897.  
  5898. Added SET LOGIN for OS/2 & pals.  14 Sep 95.
  5899.  
  5900. Updated HELP text.  15 Sep 95.
  5901.  
  5902. In OS2 & friends, replace SET DIAL (etc) DIRECTORY filename with fully
  5903. qualified filename.  ckuus3.c, 15 Sep 95.
  5904.  
  5905. Add code all over ckucmd.c to guard against overflow of atom buffer, e.g.
  5906. by long macro definitions.  15 Sep 95.
  5907.  
  5908. Added new DIAL items (RESTRICTION, CONNECT) to SHOW DIAL display.
  5909. ckuus4.c, 15 Sep 95.
  5910.  
  5911. Filled in zfnq..blah..() for UNIX, added to SET FILE DOWN and SET DIAL/NET
  5912. DIR, so even if user gives a relative pathname and then CDs to different
  5913. places, all of these still work.  15 Sep 95.
  5914.  
  5915. Cleaned up SHOW FILE, added download-directory to it.  ckuus4.c, 15 Sep 95.
  5916. Similarly for SHOW PROTOCOL.
  5917.  
  5918. Added help text for recent commands, 16 Sep 95.
  5919.  
  5920. Fixed broken SET FILE DOWNLOAD-DIRECTORY behavior, 16 Sep 95.
  5921.  
  5922. Added \v(download) and \v(protocol) variables.  ckuusr.h, ckuus4.c, 16 Sep 95.
  5923.  
  5924. Added a new command-parsing function, cmifip(), "parse an input file name
  5925. with a path", which is like cmifi(), except a path can be included, which is
  5926. used if the filename, as given by the user, is not found and is not absolute.
  5927. ckucmd.c 5A(074), 23 Sep 95.
  5928.  
  5929. Changed SET { DIAL, NETWORK } DIRECTORY command to use new input-file parsing
  5930. function appropriately.  ckuus3.c, 23 Sep 95.
  5931.  
  5932. Same thing for TAKE.  ckuusr.c 5A(166), 23 Sep 95.
  5933.  
  5934. Increased maximum number of dialing directory lookup hits from 1024 to 4096,
  5935. since we actually do have more than 1024 entries for some services (Tymnet,
  5936. CompuServe, ...).  ckuusr.h, 23 Sep 95.
  5937.  
  5938. Found & fixed a memory leak in DIAL.  ckuus6.c, 23 Sep 95.
  5939.  
  5940. Fixed a subtle problem with HANGUP when it was using modem commands.
  5941. ckudia.c  23 Sep 95.
  5942.  
  5943. Added a macro isWin95() to make checking easier and more consistent.
  5944. 24 Sep 95.
  5945.  
  5946. Added commandline switch -W blah.
  5947.  
  5948. Added commandline switch -F telnetfd.
  5949.  
  5950. Fixes for Win32 DIAL and INPUT timeouts.  30 Sep 95.
  5951.  
  5952. Make C-K delete startup file by default if started from Dialer.  Added
  5953. invisible SET STARTUP-FILE { DISCARD, KEEP }.  30 Sep 95.
  5954.  
  5955. Added SET TERM ATTR-BUG { ON, OFF } for Win32, invisible, ON by default.
  5956. 30 Sep 95.
  5957.  
  5958. Made SET TERM BYTE 8 automatically SET PARITY NONE.  30 Sep 95.
  5959.  
  5960. Fixed SET WINDOW & HELP SET WINDOW for ZMODEM.  30 Sep 95.
  5961.  
  5962. Added search-path capability to cmifip() so TAKE, SET DIAL DIR, etc,
  5963. can be set up to search multiple (not just one or two) directories for
  5964. the given file if it is not found as given.  This has a lot of possibilities
  5965. for the future -- e.g. we could add "set TAKE path blah;blah;blah..." so
  5966. user or site could specify any path at all.  Or so SETUP program could put
  5967. the right stuff in the INI file it constructs.  etc etc.  ckucmd.[ch],
  5968. 4 Nov 95.
  5969.  
  5970. Added \v(instatus) variable to indicate result of most recent INPUT command.
  5971. Values:
  5972.  -1 = No INPUT command given yet
  5973.   0 = Succeeded
  5974.   1 = Timed out
  5975.   2 = Interrupted by user (keystroke or SIGINT)
  5976.   3 = Internal error
  5977.   4 = I/O error or connection lost
  5978. ckuusr.h, ckuus[r45].c, 13 Jan 96.
  5979.  
  5980. Added SET TEMP-DIRECTORY [ <text> ].  ckuusr.h, ckuus3.c.  13 Jan 96.
  5981.  
  5982. Added \v(tmpdir) variable.  Returns SET TEMP-DIRECTORY value or, if none set,
  5983. then the value of TEMP or TMP environment variable, if any, or (in UNIX only)
  5984. "/tmp/", with the appropriate directory separator always appended.  In OS/2,
  5985. etc, we change \ to /.  SHOW FILE displays this.  ckuus4.c.  13 Jan 96.
  5986.  
  5987. Script programs can use \v(tmpdir) to use or create a temporary directory.
  5988. They can also use the SET TEMP-DIR command to make \v(tmpdir) have the desired
  5989. value.  This way Kermit can be configured to create temporary files in any
  5990. desired location, which is handy (e.g.) when running Kermit off a file server.
  5991. 13 Jan 96.
  5992.  
  5993. Added \fhexify(string) and \funhexify(hexstring).  14 Jan 96.
  5994.  
  5995. Added \fbreak(s1,c) and \fspan(s1,s2), as in Snobol.  17 Jan 96.
  5996.  
  5997. Added \ftrim(s1[,s2]) and \fltrim(s1[,s2]).  26 Jan 96.
  5998.  
  5999. Added RMDIR and UNDEFINE commands.  27 Jan 96.
  6000.  
  6001. Changed READ, ASK, ASKQ, and GETC to allow a macro name as well as
  6002. backslash-variable name as the target for storage of the input'd material.
  6003. ckuus*.c, 28 Jan 96.
  6004.  
  6005. Better testing for EOF vs i/o error in zinfill().  ckufio.c, 29 Jan 96.
  6006.  
  6007. Jeff added \v(exedir) and \v(inidir), and changed the meaning of
  6008. \v(startup) in the Win32 version.  30 Jan 96.
  6009.  
  6010. Fixed a bad bug in which Kermit was using -1 as an index into the
  6011. packet-buffer-struct array.  It had been there for years but was never
  6012. noticed till now.  Symptoms could vary wildly from system to system, from
  6013. nothing at all to a memory access violation, and anything in between.
  6014. The fix was to not reference the packet-buffer struct in this one place
  6015. if k < 0 (the same test was already made in all the other places, but this
  6016. one had been overlooked).  ckcfn2.c, 31 Jan 96.
  6017.  
  6018. One common and nonlethal symptom of the previous bug was a long delay in
  6019. responding to a GET, FINISH, or similar client command of the sort that begins
  6020. by sending an I packet to the server.  In this case the I/Y exchange is
  6021. regarded as a complete transaction, and the sending of the command (R, F, etc)
  6022. to the server begins a new transaction.  Yet tinit() (to initialize all the
  6023. data structures for a new transaction) was not being called at this point,
  6024. which was the cause for the -1 index noted above in the first place.  Now
  6025. tinit() is called in these (two) places.  ckcpro.w, 31 Jan 96.
  6026.  
  6027. Fail if ttopen() or ttpkt() fails in ckcpro.w.
  6028.  
  6029. Don't print new directory name if CD command given from a macro or command
  6030. file.  ckuus5.c, 1 Feb 96.
  6031.  
  6032. Fixed cmdir() to supply default value if given a variable name as an argument,
  6033. but the variable contained nothing.  ckucmd.c, 1 Feb 96.
  6034. (Should probably do this for other functions too...)
  6035.  
  6036. Jeff removed setjmps & longjmps from ckotio.c ttinl(), which were resulting in
  6037. tons of overhead on Win95, and were (on very fast network connection) causing
  6038. occasional deadlocks or crashes because of thread/timing considerations.
  6039. Result: Kermit transfers are about three times faster, and no more deadlocks
  6040. and crashes.  ckotio.c, 1 Feb 96.
  6041.  
  6042. File date code in zstime() and zfcdat() fixed to handle bad dates and not
  6043. follow null pointers returned by localtime().  ckufio.c, 1 Feb 96.
  6044.  
  6045. Fixed netopen() to handle null host->h_addr_list pointer so "set host 0" no
  6046. longer crashes K95 under OnNet-32.  ckcnet.c, 1 Feb 96.
  6047.  
  6048. Added \v(errno) and \v(errstring).  6 Feb 96.
  6049.  
  6050. Added \v(_line) to reflect line number from current command file, if any.
  6051. 1-based: Line 1 is the first line, etc.  If the value of this variable is 0,
  6052. then there is no current command file.  Also added filename and line number
  6053. diagnostics to the command parser to aid in script debugging.  8 Feb 96.
  6054.  
  6055. Added \fcapitalize() - as in "Capitalize".  12 Feb 96.
  6056.  
  6057. Changed \function() parser to always evaluate arithmetic expressions
  6058. in numeric argument fields automatically, so that \feval() need not be
  6059. included by the caller -- e.g.:
  6060.   \fmod(3+4,5-2)
  6061. rather than:
  6062.   \fmod(\feval(3+4),\feval(5-2))
  6063. 12 Feb 96.
  6064.  
  6065. Changed cmnum() to parse expressions.  So now users can use an expression
  6066. in most any numeric field.  There can be no embedded spaces in the expression.
  6067. Examples: "SET RETRY 10+6", or "SET RETRY (10+6)", "SET RETRY \%a+\v(time)",
  6068. but not "SET RETRY 10 + 6".  12 Feb 96.
  6069.  
  6070. Changed doif() to parse expressions in IF =, IF >, and IF < (ditto for XIF,
  6071. of course).  Same rules as for cmnum() -- no embedded spaces.  12 Feb 96.
  6072.  
  6073. FOR <variable> <initial> <final> <increment> { <command-list> }, changed to
  6074. evaluate the <initial> value as an expression.  The previous changes already
  6075. took care of <final> and <increment>.  Now expressions can be used directly
  6076. without \feval() in all fields of a FOR command, but with same rules about
  6077. embedded spaces.  12 Feb 96.
  6078.  
  6079. Changed varval() to evaluate arithmetic expressions.  This allows INCREMENT
  6080. and DECREMENT to work on variables whose values are themselves arithmetic
  6081. expressions.  12 Feb 96.
  6082.  
  6083. Same treatment for IF NUMERIC.  This required setting a flag telling the
  6084. expression evaluator not to print error messages if given non-numeric
  6085. operands.  The flag is set only during evaluation of the IF NUMERIC quantity.
  6086. Hmm... on second thought, this isn't a good idea.  People usually want to know
  6087. if a string really does contain only numeric characters.  They can always use
  6088. \feval() if they want it to handle expressions.  Never mind.  12 Feb 96.
  6089.  
  6090. Added IF / WHILE { TRUE, FALSE }.  17 Feb 96.
  6091.  
  6092. Fixed references to \%0..9 variables in cmofi().  It handled all the other
  6093. kinds OK, but not those.
  6094.  
  6095. ---(1.1.3)---
  6096.  
  6097. Added hundreds of casts to many modules to keep thickheaded fascist compilers
  6098. happy about signed vs unsigned chars, courtesy of William Bader.  24 Feb 96.
  6099.  
  6100. In PC version, allowed SET PRINTER to take a pipe as well as a file or device
  6101. as an argument.  This allows sending text through a filter before it goes to
  6102. the printer.  For example, in Windows 95, writing to PRN does not invoke any
  6103. kind of print driver, so sending text to a PostScript printer is an exercise
  6104. in futility.  Now you can send the text through a text-to-PostScript converter
  6105. like so:
  6106.  
  6107.   set printer |textps.exe>\dev\lpt1
  6108.  
  6109. Note: backslashes need (should) not be doubled.  To include spaces, enclose
  6110. in braces:
  6111.  
  6112.   set printer {| textps.exe > \dev\lpt1}
  6113.  
  6114. Textps is the program I wrote in 1991 to take care of the same situation on
  6115. DOS / Novell networks, and which also has been in service on Columbia's UNIX
  6116. servers since then, adapted to Windows 95/NT by Jeff.  It handles code-page to
  6117. PostScript character-set translation, etc etc.  This new scheme should also
  6118. fit nicely with any LPR clients that might be available, if any.  The only
  6119. requirement is that the program accept the text to be printed on standard
  6120. input.  24 Feb 96.
  6121.  
  6122. Added code to allow higher VMS serial speeds.  24 Feb 96.
  6123.  
  6124. If MYCURSES is defined, make sure that CK_WREFRESH is not defined.  ckuusx.c,
  6125. 25 Feb 96.
  6126.  
  6127. Changed SET CARRIER to SET CARRIER-WATCH.  25 Feb 96.
  6128.  
  6129. Bug reported by John Nestoriak <telecon!barney!john@uu5.psi.com>, basically
  6130. that dialing again on a "set host..., set modem..., dial..." connection
  6131. (i.e. when using a terminal server to dial out from) did not work; therefore
  6132. neither did REDIAL on such connections.  Fixed in ckudia.c, ckuus4.c,
  6133. 25 Feb 96.
  6134.  
  6135. Fixed reporting of TAKE-file line numbers; it wasn't resetting properly.
  6136. ckuus6.c.
  6137.  
  6138. Massive fixing of compiler errors involving misplaced #ifdefs, etc, found
  6139. while compiling (for the first time in six months) on many different
  6140. platforms:
  6141.  
  6142.   SPARC-10 SunOS 4.1.3
  6143.   HP-9000/712 HP-UX 9.05
  6144.   NeXT 68040
  6145.   VAXstation 3100 VMS 5.5-2 with and without UCX
  6146.   Alpha AXP VMS 6.1 with and without MultiNet
  6147.  
  6148. And also with various compile-time options: NOFRILLS, NODEBUG, NOPUSH, NODIAL,
  6149. MINIDIAL, NOCSETS, no TCP/IP, NOSPL, NOICP, NOLOCAL, NOHELP, NOJC, ...
  6150. 25 Feb 96.
  6151.  
  6152. Discovered that the following script would write over C-Kermit's memory:
  6153.  
  6154.   assign \%a X
  6155.   assign \%n 0
  6156.   :loop
  6157.   assign \%a \%a\%a
  6158.   if fail stop 1 Stopped at n = \%n
  6159.   increment \%n    
  6160.   echo \%n
  6161.   goto loop
  6162.  
  6163. The problem was that ASSIGN (and DEFINE, etc) would never fail when they
  6164. detected that the definition was too long.  The symptom was that eventually
  6165. (e.g. when n reached about 60 -- i.e. \%a was supposedly 2^60 bytes long) that
  6166. the command parser would stop working -- "?No keywords match - "if""...
  6167. Fixed in dodef(), ckuus6.c, 26 Feb 96.
  6168.  
  6169. Allowed SET PROTOCOL and related features (SHOW PROTOCOL, \v(protocol),
  6170. HELP SET PROTOCOL, etc) to work even when XYZMODEM are not available, to
  6171. increase portability of scripts.  26 Feb 96.
  6172.  
  6173. Tentative SCO UNIX 3.2v5.0 changes within new CK_SCOV5 conditional, plus
  6174. accompanying makefile entries, courtesy of Robert Lipe.  26 Feb 96.
  6175.  
  6176. Changed Linux entry to use -lcurses (again) instead of -lncurses.
  6177. You can't win...  29 Feb 96.
  6178.  
  6179. Fixed entry for character 127 Finnish-to-Latin1 table.  ckuxla.c, 6 Mar 96.
  6180.  
  6181. --1.1.4--
  6182.  
  6183. Added { brace processing } to the DIAL command.  Otherwise, we'd have a
  6184. pretty tough time with DIAL strings that contain commas when used in macros.
  6185. ckuus6.c.  13 Mar 96.
  6186.  
  6187. Added dashless, commaless macro definitions.  Also FOR and WHILE loops, and
  6188. XIF.  Works for command files only (not at prompt).  New code is entirely in
  6189. the "get next command from TAKE file" routine, getnct(), in which:
  6190.  
  6191.  1. The brace counter is set to zero.
  6192.  2. A line is read from the command file.
  6193.  3. The trailing comment, if any, is stripped.
  6194.  4. If a line STARTS with a closing brace, the brace counter is decremented.
  6195.  5. If the line ENDS with an opening brace the brace counter is incremented.
  6196.  6. If the brace counter is 0 or the line ends with '-', it is continued.
  6197.  
  6198. Allowing for:
  6199.  
  6200.   DEFINE FOO {       ; Comment
  6201.     command 1        ; Comment
  6202.     command 2        ; Comment
  6203.     DEFINE BAR {     ; Comment
  6204.       command 1      ; Comment
  6205.       command 2      ; Comment
  6206.     }                ; Comment
  6207.   }                  ; Comment
  6208.  
  6209. and:
  6210.  
  6211.   FOR \%i 1 3 1 {    ; Comment
  6212.     FOR \%j 1 3 1 {  ; Comment
  6213.       ECHO \%i:\%j   ; Comment
  6214.     }                ; Comment
  6215.   }                  ; Comment
  6216.  
  6217. (similarly for WHILE) and:
  6218.  
  6219.   XIF <condition> {  ; Comment
  6220.     command 1        ; Comment
  6221.     command 2        ; Comment
  6222.   } ELSE {           ; Comment
  6223.     command 1        ; Comment
  6224.     command 2        ; Comment
  6225.   }                  ; Comment
  6226.  
  6227. These can be nested and combined to any level.
  6228.  
  6229. Details:
  6230.  
  6231.  1. The old way still works (explicit commas and hyphens).
  6232.  2. No comma is inserted after the opening brace.
  6233.  3. Commas are inserted after each line in a "begin block".
  6234.  
  6235. As a result of (3) the last line in a block has an extraneous comma after
  6236. it, but so what.  Same as C (but not Algol-60)...
  6237.  
  6238. This method of line continuation always results in comma insertion at the
  6239. line breaks, and so therefore should only be used with DEFINE, ASSIGN,
  6240. FOR, WHILE, and XIF, where the commas make sense.  Such things as:
  6241.  
  6242.   ECHO {
  6243.     Line 1
  6244.     Line 2
  6245.   }
  6246.  
  6247. will produce a result, but not necessarily the expected one.
  6248.  
  6249. When a LINE is very long (as opposed to a list of commands), of course it can
  6250. still be continued in the old way, even inside of a new-style {...} block.
  6251. Needs lots of testing.  ckuus5.c, 13 Mar 96.
  6252.  
  6253. Ditto for top-level.  cmini() and gtword(), ckucmd.c, 15 Mar 95.
  6254.  
  6255. Previous changes to getnct() broke dialing/network directory reading.
  6256. Fixed in ckuus5.c, 19 Mar 96.
  6257.  
  6258. Fixed both getnct() (TAKE file reader) and gtword() (for reading commands
  6259. from keyboard) to accept blank lines within { ... } blocks.  19 Mar 96.
  6260.  
  6261. Reinstated Ctrl-L for PC version.  And Jeff added various screen-formatting
  6262. commands.  19 Mar 96.
  6263.  
  6264. Added a way to build up a list of files, in which each list element carries
  6265. a transfer mode and (if not wild) an optional as-name, in such a way that all
  6266. the files are sent in the same transaction (i.e. between one set of S and B
  6267. packets).  ckuusr.h, ckuusr.c, ckuus[2457].c, ckcfns.c, 20 Mar 96.  The new
  6268. commands are:
  6269.  
  6270.   ADD SEND-LIST <filespec> [ <mode> [ <as-name> ] ]
  6271.   SHOW SEND-LIST
  6272.   CLEAR SEND-LIST
  6273.   SEND
  6274.  
  6275. In the ADD command, the filespec can be for a single file or it can be wild.
  6276. If the <mode> is omitted, the current global mode (text or binary, etc) is
  6277. used.  If the <filespec> is not wild, an <as-name> can be included; if it is,
  6278. the file is sent under that name; otherwise it is sent under its own name.
  6279.  
  6280. The SEND command, when given with no operands at all, sends from the current
  6281. SEND list, if any.  If there is none, it prints an error message and fails.
  6282.  
  6283. ADD/SEND is different from MSEND in that it allows a mixture of text and binary
  6284. files in the same transaction, and that each file can have its own as-name.
  6285. Example:
  6286.  
  6287.   SET FILE TYPE TEXT
  6288.   ADD SEND-LIST ck*.h                 ; Transfer mode defaults to TEXT
  6289.   ADD SEND ck*.c text                 ; No as-name
  6290.   ADD SEND wart binary                ; Transfer mode forced to binary
  6291.   ADD SEND wermit binary
  6292.   ADD SEND makefile text ckuker.mak   ; As-name given
  6293.   SEND
  6294.  
  6295. The SEND-LIST stays put after the SEND command, in case you want to send it
  6296. again.  To display it, use SHOW SEND-LIST.  To get rid of it, use CLEAR
  6297. SEND-LIST.  Even when a SEND list is defined, you can still SEND files in the
  6298. regular ways, by specifying their name(s) in a SEND or MSEND command, etc.
  6299.  
  6300. The SEND list is intended mainly for use by programs or scripts that generate
  6301. file lists, although of course it can be used interactively too.  For example,
  6302. a program might build up a list of files and determine whether each one was
  6303. text or binary depending on some criterion best known to itself, such as
  6304. whether its name ended in ".EXE".
  6305.  
  6306. Changed default delay (SET DELAY) to be 1 second rather than 5.  ckcker.h,
  6307. 21 Mar 96.
  6308.  
  6309. Changed FOR command to evaluate its loop variables only at loop entry, not
  6310. each time through the loop.  This was required in order to allow \v(argc) to
  6311. be used as a loop variable, or in a loop-variable expression.  Thus, we no
  6312. longer can have FOR loops that modify their own exit conditions by changing
  6313. the final value or the increment (as we can in C).  Hopefully nobody depends
  6314. on the old behavior, which is pretty atrocious anyway.  The problem with
  6315. \v(argc) is that it is on the macro stack; after entry into the _forx macro,
  6316. it is at the wrong level.  Now we can write a macro that echoes its arguments:
  6317.  
  6318.   def SHOWARGS {
  6319.     for \%i 0 \v(argc)-1 1 {
  6320.       asg \%x \\%\%i
  6321.       echo \%i. \%x
  6322.     }
  6323.   }
  6324.  
  6325. I also changed _GETARGS to copy the argc value along with the arguments
  6326. themselves.  This lets \v(argc) be referred to inside FOR, WHILE, and XIF
  6327. blocks, but this change did not affect the FOR loop variables themselves.
  6328. ckuus6.c, 21 Mar 96.
  6329.  
  6330. Changed cmnum() to accept quantities in braces, in which case it strips the
  6331. braces prior to evaluation.  ckucmd.c, 21 Mar 96.  This is beneficial for
  6332. FOR-loops especially:  FOR \%i {\v(argc) - 1} 1 { commands... }  -- previously
  6333. this would cause a parse error.  21 Mar 96.
  6334.  
  6335. Changed version number to 5B(192).  ckcmai.c, etc, 23 Mar 96.
  6336.  
  6337. Recoded cmres() to avoid triple assignment, which caused DEC C 5.2 to crash
  6338. if /DEBUG was on.  Thanks to Joellen Windsor.  ckucmd.c, 23 Mar 96.
  6339.  
  6340. While going through other modules, also recoded any double/triple/etc
  6341. assignments I came across.  (Let's all do this...)
  6342.  
  6343. Fixed NOPUSH to get confirmation, and fixed associated #ifdefs.
  6344. ckuusr.c, 23 Mar 96.
  6345.  
  6346. Set nopush = 1 if the environment variable CK_NOPUSH is defined.  ckhost(),
  6347. ckuusx.c, 23 Mar 96.
  6348.  
  6349. Changed network directory lookup to skip lookup if name starts with digit,
  6350. asterisk, or period.  ckuus6.c, 23 Mar 96.
  6351.  
  6352. Added \&_[0..10] as the argument vector for the current macro, if any.  It is
  6353. predeclared, and contains COPIES of the macro argument pointers, and it is
  6354. pushed and popped properly with the macro level.  ckuus[456].c, 23 Mar 96.
  6355. Previously, there was no good way to go through macro arguments
  6356. programmatically; now you can:
  6357.  
  6358.   for \%i 0 \v(argc)-1 1 { echo \%i. \&_[\%i] }
  6359.  
  6360. At some point since 5A(190) I broke cmifi() in a way that prevented it from
  6361. expanding variables -- this was part of the horrible stuff I had to do to
  6362. allow it to parse OS/2 (and now DOS / Windows) filenames without requiring the
  6363. user to type double backslashes.  Then later I fixed it.  But it turns out the
  6364. fix only worked for a variable name by itself (such as "type \%a"), but it
  6365. did not work for a string containing a mixture of literal characters and
  6366. variable names ("type foo\%a").  Fixed (not prettily) 23 Mar 96.
  6367.  
  6368. Fixed the OUTPUT command to treat backslashes just like ECHO does.  Previously
  6369. there was a bug in which any number of consecutive backslashes would be
  6370. treated as if there were only two, and would therefore be resolved into one.
  6371. Now two become one, four become two, etc.  ckuus5.c, 23 Mar 96.
  6372.  
  6373. Fixed AT&T DataPort modem entry to not send multiple A's in init-string and
  6374. to remove reference to S84 (AT commands "ignore error" switch), as these have
  6375. been removed in the newer models.  ckudia.c, 23 Mar 96.
  6376.  
  6377. Added Kermit protocol autodownload to UNIX CONNECT module.  ckucon.c,
  6378. 23 Mar 96.
  6379.  
  6380. Integrated Jeff's code with mine -- Jeff added internal routines to generate
  6381. directory listings, file deletion replies, TYPE and WHO listings, etc, so as
  6382. not to have to use pipes, which don't work in Windows 95, for use by the
  6383. server in replying to REMOTE DIR, REMOTE DELETE, REMOTE TYPE, etc, commands.
  6384.  
  6385. Added local variables for macros.  Syntax:
  6386.  
  6387.   LOCAL name [ name [ name [ name [ name ... ] ] ] ]
  6388.  
  6389. If given inside a macro definition, makes the named variables local, meaning
  6390. that they hide the values of any global variables of the same name until the
  6391. macro exits, at which time the higher-level variables are restored.  The types
  6392. of variables that can be used as local variables are \%a..\%z and macros
  6393. (either macros to be executed, or macro names used as long variable names).
  6394. Nesting works to any level.  Example:
  6395.  
  6396.   define \%a TOP-LEVEL value   ; Global (top-level) value for \%a
  6397.  
  6398.   define XX {
  6399.     local \%a                  ; Declare a local variable with the same name
  6400.     define \%a XX value        ; Give it a different value
  6401.     echo \%a                   ; Display the value
  6402.     yy                         ; Execute another macro that changes it
  6403.     echo \%a                   ; See if it's the same
  6404.   }
  6405.   define YY {                  ; Second-level macro
  6406.     local \%a                  ; It has a local copy of \%a too
  6407.     define \%a YY value        ; Give it a unique value
  6408.     echo \%a                   ; Display it
  6409.   }
  6410.   echo \%a                     ; Display top-level \%a
  6411.   xx                           ; Do the xx macro (which does the yy macro)
  6412.   echo \%a                     ; See if it changed
  6413.  
  6414. You can also use array *elements* as local variables, but not entire arrays.
  6415. (No automatic arrays.)
  6416.  
  6417. Scope: If macro A invokes macro B, macro B inherits macro A's local variables;
  6418. it can read them and change them, or (of course) it can declare its own local
  6419. variables with the same names, which hide those of macro A.  ckuusr.[ch],
  6420. ckuus5.c, 24 Mar 96.  More about this later...
  6421.  
  6422. Hints: Don't put LOCAL commands in loops -- you should only execute the LOCAL
  6423. command once in each macro.  Don't declare \%0..\%9 as LOCAL unless you really
  6424. mean to wipe out the parameters that were passed to the macro.
  6425.  
  6426. Added designer banner for SCO OpenServer R5.  ckuver.h, 24 Mar 96.
  6427.  
  6428. Fixed snddir() to work for VMS (*.*) and AOS/VS (+).  ckcfns.c, 24 Mar 96.
  6429.  
  6430. Changed name of linger() routine to ck_linger, since it used a struct which
  6431. is also called linger, and some compilers (e.g. HP-UX 7.05) couldn't take it.
  6432. ckcnet.c, 24 Mar 96.
  6433.  
  6434. Fixed INCREMENT / DECREMENT to allow macro names too:
  6435.   define foo 1, increment foo, echo \m(foo)
  6436. produces the desired result.  ckuus[56].c, 24 Mar 96.
  6437.  
  6438. Note, however, the second INCREMENT field can't be a macro name unless it
  6439. is dereferenced via \m(...), because it is parsed by cmnum():
  6440.  
  6441.   INCREMENT foo \m(bar)
  6442.  
  6443. not:
  6444.  
  6445.   INCREMENT foo bar
  6446.  
  6447. Added nopush runtime test to VMS CONNECT module.  ckvcon.c, 24 Mar 96.
  6448.  
  6449. Added binary-mode negotiation support to VMS CONNECT module.
  6450. ckvcon.c, 24 Mar 96.
  6451.  
  6452. Added autodownload to VMS CONNECT module.  Works whether TERM APC ON or OFF;
  6453. works even if TERM CHAR == 7-bit NRC (unlike K95).  ckvcon.c, 24 Mar 96.
  6454.  
  6455. The hard part about the autodownload code is finding the right place to put
  6456. it.  The right place is: after it reads a character from the port and applies
  6457. the "set terminal bytesize" mask to it, but BEFORE any translation is done.
  6458. The other hard part is that each of the ck*con.c modules works differently --
  6459. some with forks, some with threads, some ... etc, so "doing" the autodownload
  6460. is different in each case.
  6461.  
  6462. Changed Jeff's dotype() command to be buffered and to make allowances for
  6463. Macintosh and VMS.  25 Mar 96.
  6464.  
  6465. Added support for Gateway Telepath II 28.8 modem.  ckudia.c, 25 Mar 96.
  6466.  
  6467. Added changes from Phil Keegstra to make NLCHAR a variable rather than a
  6468. hardwired compile-time symbol.  This is governs the line terminator for local
  6469. files: LF, CR, or CRLF.  The variable is now feol.  If 0, it's CRLF, if
  6470. nonzero, it's the nonzero value (e.g. 10 or 13).  These changes do not affect
  6471. how the program works at all, but they do include a bit of code in some
  6472. versions that was previously #ifdef'd out.  ckcker.h, ckcfns.c, ckcmai.c,
  6473. ckufio.c, 25 Mar 96.
  6474.  
  6475. Added SET FILE EOL command to let the user change the line terminator.  The
  6476. choices are presently CR, CRLF, and LF.  The default is appropriate for
  6477. each system (UNIX, Mac, OS-9, OS/2, VMS etc).  SHOW FILE displays the value.
  6478. This allows a file to be sent in text mode even if it has the wrong line
  6479. terminator for the local system -- e.g. a UNIX-format text file on an OS/2
  6480. system, or a Mac-format file on VMS, etc.  ckuus4.c, ckuus5.c, 25 Mar 96.
  6481.  
  6482. Added external protocol support for XMODEM, YMODEM, YMODEM-g, and ZMODEM:
  6483.  
  6484. If C-K is built with -DCK_XYZ it has protocol selections of Kermit, Zmodem,
  6485. Ymodem, Ymodem-g, and Xmodem.  In the OS/2 and Windows versions, the XYZ
  6486. protocols are internal.  In other versions they are external and the user
  6487. must define the associated commands; in any case, this feature is available
  6488. only in implementations that support CK_REDIR (the REDIRECT command).
  6489.  
  6490.   set protocol <name> [ <autouploadcmd> [ <sendcmd> [ <rcvcmd> ] ] ]
  6491.  
  6492. If command stops after <name>, the protocol is selected but nothing else
  6493. is changed.
  6494.  
  6495. The remaining fields are commands that apply to the given protocol.  They work
  6496. like this:
  6497.  
  6498. The <autouploadcmd> is the command to send to the host when commencing an
  6499. upload, for example "rz" when sending with Zmodem.
  6500.  
  6501. The last two commands, <sendcmd> and <rcvcmd>, are only for use with external
  6502. protocols.
  6503.  
  6504. If a <...cmd> is given, it replaces the previous one, if any.  To include a
  6505. command that has embedded spaces, enclose it in { braces }.  To erase a
  6506. command, use {} (empty braces).
  6507.  
  6508. If you specify one command, you must specify all three, otherwise the trailing
  6509. ones will be erased.
  6510.  
  6511. Each of these commands may include "%s" (percent sign followed by lowercase s)
  6512. which will be substituted by the filename(s) in your SEND or RECEIVE command.
  6513. Example:
  6514.  
  6515.   set protocol zmodem rz {sz %s} rz
  6516.   set protocol xmodem {rx %s} {sx %x} {rx %s}
  6517.   set protocol zmodem {} {sz %s} rz
  6518.  
  6519. The defaults are:
  6520.  
  6521.   set protocol zmodem {} {sz %s} rz
  6522.   set protocol ymodem {} {sb %s} rb
  6523.   set protocol ymodem-g {} {sb %s} rb
  6524.   set protocol xmodem {} {sx %x} {rx %s}
  6525.   set protocol kermit {}
  6526.  
  6527. Since Kermit does not understand the syntax of external protocol programs
  6528. there is no way for it to modify the external commands automatically to make
  6529. their options agree with Kermit's own (e.g. text vs binary mode, send vs
  6530. resend).  However, since you, the user, understand the syntax of your external
  6531. protocol, it should not be difficult for you to write macros to do this;
  6532. e.g. for Zmodem:
  6533.  
  6534.   def sz {
  6535.     local \%p \%t
  6536.     asg \%p \v(protocol)               ; Save current protocol
  6537.     if = \v(ftype) text asg \%t -a     ; sz text-mode option
  6538.     set proto zmodem rz {sz \%t %s} rz ; Choose zmodem in text or binary mode
  6539.     send \%1                           ; Send the file
  6540.     asg \%t \v(status)                 ; Save file-transfer status
  6541.     set proto \%p                      ; Restore protocol
  6542.     end \%t                            ; Return file-transfer status
  6543.   }
  6544.  
  6545. Warning: when used in conjunction with Add, there is no way to accommodate
  6546. mixed text/binary mode transfers when using external protocols.
  6547.  
  6548. Another note: If you want to use a protocol other than the ones listed, just
  6549. lie about its name and define the appropriate commands.
  6550.  
  6551. Many modules, 25 Mar 96.
  6552.  
  6553. Tested external protocol feature under SunOS in both local and remote mode
  6554. with sz/rz -- Works fine in remote mode (no surprise).  In local mode (of
  6555. course) transfers fail over Telnet connections because sz has no idea that it
  6556. is a Telnet connection and so it must do special things with 0xff and 0x0d
  6557. characters.  Escaping control characters ("sz -e") doesn't help because that
  6558. only affects data, not control fields.  If it had a command-line switch that
  6559. told it to double IACs and turn CRs into CRLFs, it would work fine on Telnet
  6560. connections.  (Exercise for the reader who has rz/sz source code: add this
  6561. feature :-)  It does work fine, however, on regular serial (dialout or dialin)
  6562. connections, given proper transparency and flow control.  26 Mar 96.
  6563.  
  6564. Added default definition for CK_XYZ (external protocol support) to UNIX
  6565. builds.  ckcdeb.h, 26 Mar 96.
  6566.  
  6567. Changed PPI modem definition because S82 (BREAK handling) disappeared in
  6568. newer models and causes modem to report ERROR.  ckudia.c, 26 Mar 96.
  6569.  
  6570. Changed Multitech modem definition in numerous ways suggested by Glenn
  6571. Thobe <thobe@lafn.org>.  Also installed Glenn's fixes relating to modem
  6572. software flow control.  ckudia.c, 26 Mar 96.
  6573.  
  6574. Discovered that filenames given on the command line that contained wildcard
  6575. characters were not expanded in UNIX.  That was because I was afraid that
  6576. if a file called "*" actually existed and somebody tried to send it, it would
  6577. start off a neverending frenzy of recursion and the universe would explode.
  6578. I found a simple way around this and have removed the restriction.  ckcfns.c,
  6579. 26 Mar 96.
  6580.  
  6581. Added a KERMIT command, which takes as arguments any command-line options that
  6582. C-Kermit can take on the command line.  So if somebody is at the C-Kermit
  6583. prompt and accidentally types "kermit -s oofa.*", it will work.  More to the
  6584. point, if they have a communication program that sends "kermit -r" as an
  6585. "autoupload command" prior to uploading files, it will work whether C-Kermit
  6586. has been started or not.  The only gotcha (that I noticed) regards grouping --
  6587. different shells use different notation for grouping -- e.g. doublequotes in
  6588. UNIX -- but Kermit uses matching sets of { braces }.  ckuusy.c, 26 Mar 96.
  6589.  
  6590. Added a last-minute check in the command parser for OS/2 and Windows -- if a
  6591. top-level keyword parse fails and the command buffer contains <letter>:,
  6592. perhaps followed by a directory name, then treat that as a CD command.
  6593. ckucmd.c, ckuus5.c, 26 Mar 96.
  6594.  
  6595. Merged in Jeff's change to ckcnet.c -- if a Windows user tries to open a
  6596. TCP/IP connection to a numeric IP address (usually because of some problem
  6597. with DNS), it takes forever to resolve the address.  This doesn't happen on
  6598. other OS's, but the Windows version of gethostbyname() evidently still tries
  6599. to contact DNS -- the very problem the poor user was trying to avoid by using
  6600. an address rather than a name.  Now the Windows version first checks to see if
  6601. it is an address (by calling inet_addr(), which is not necessarily available
  6602. elsewhere), and if so skips the call to gethostbyname().  26 Mar 96.
  6603.  
  6604. Changed CKERMIT.INI to new syntax and generally updated for version 5B.
  6605. Renamed LOOKUP macro (for services directory) to FIND.  27 Mar 96.
  6606.  
  6607. Changed the packet input timer from fixed to dynamic, using standard
  6608. statistical techniques and adapting code from Tim Kientzle's Dr Dobbs article.
  6609. The SET SEND TIMEOUT value is now the *initial* value; subsequent values are
  6610. calculated dynamically based on a weighted average & standard deviation.
  6611. The user can enable or disable this feature with a trailing field to
  6612. SET SEND TIMEOUT <n> [ { DYNAMIC, FIXED } ] (default is DYNAMIC).
  6613. ckcmai.c, ckcfn[s23].c, ckuus[47].c, 27 Mar 96.
  6614.  
  6615. Fixed SHOW VAR for \v(m_xxx) modem strings to show control characters
  6616. graphically.  ckuus5.c, 27 Mar 96.
  6617.  
  6618. Added text/binary mode distinctions for external protocols:
  6619.  
  6620.  SET PROTO <name> [ ab at sb st rb rt ]
  6621.  
  6622. b = binary, t = text; a = autoupload, s = send, r = receive.
  6623. ckcmai.c, ckcpro.w, ckuus[r234].c, 28 Mar 96.
  6624.  
  6625. Changed all #ifdef OS2 concerning XYZMODEM protocol to #ifdef XYZ_INTERNAL,
  6626. so now XYZMODEM can be supported in all C-Kermit versions as either internal
  6627. or external protocols.  ckcmai.c, ckcpro.w, ckuus[r234].c, 28 Mar 96.
  6628.  
  6629. Added CHECK XYZMODEM command.  ckuus3.c, 28 Mar 96.
  6630.  
  6631. Changed UNIX connect module to also support ZMODEM autodownload.
  6632. ckucon.c, 28 Mar 96.
  6633.  
  6634. Added appropriate definitions for XYZ_INTERNAL and CK_TIMERS to ckcdeb.h.
  6635. In particular, the programmer can safely assume that if XYZ_INTERNAL is
  6636. defined, then so is CK_XYZ.  Both of these are defined by default for OS2.
  6637. 28 Mar 96.
  6638.  
  6639. Filled in some help text, SHOW FEATURES display, etc.  ckuus[25].c, 28 Mar 96.
  6640.  
  6641. Changed designation from Beta back to Alpha.  Too shaky to be called Beta
  6642. when we put it up for the C-Kermit testers...  ckcmai.c, 28 Mar 96.
  6643.  
  6644. New CKVKER.MMS from Mike Freeman.  28 Mar 96.
  6645.  
  6646. Added Communication Toolbox support to Mac Kermit ckm*.* modules, from
  6647. Rick Watson at U of Texas.  28 Mar 96.
  6648.  
  6649. Added -J command-line option, similar to -j, but causes C-Kermit to exit when
  6650. the connection is closed, but still allows escaping back & forth while it is
  6651. open.  New flag variable is tn_exit.  #ifdefs might need fixing up.  ckuusy.c,
  6652. ckcmai.c, ckuus4.c, 29 Mar 96.
  6653.  
  6654. Consolidation of repetitive code in setproto().  29 Mar 96.
  6655.  
  6656. Massive fixes to ckudia.c and ckuscr.c, and minor fixes elsewhere, for the
  6657. Macintosh, to allow for the fact that Macintosh signal handlers are long,
  6658. not void and not int, plus accounting for many other changes that have been
  6659. made since 1984.  Remember to always declare signal handlers as SIGTYP, not
  6660. VOID or anything else, and to use SIGRETURN to exit from them, rather than
  6661. "return" or nothing at all (on the assumption they are void).  29 Mar 96.
  6662.  
  6663. Fixed remaining problems in Macintosh build -- added ckusig.c to makefile,
  6664. added bait-and-switch defs for alarm and signal to it, added dummy zfcdat() to
  6665. ckmfio.c (maybe somebody will fill it in).  But it crashes at runtime...  Sent
  6666. mail to Rick Watson asking for help.  1 Apr 96.
  6667.  
  6668. From Jeff:
  6669.  
  6670.  . Support for XYZMODEM as an internal protocol in UNIX version.
  6671.  . Default autoupload strings defined for each protocol.
  6672.  . zxpand() and znext() for NT redone to use system services rather
  6673.    than traversing directory -- faster, and allows many more matches.
  6674.  . Internalized local DELETE and TYPE commands for OS/2 & Win95.
  6675.  . Integrate XYZMODEM with ADD SEND-LIST, MSEND, etc.
  6676.  
  6677. Fixed the OUTPUT command *again*.  This was much harder than it looked.  It
  6678. was a REALLY BAD idea to let \N, \B, \L be special for this command, because
  6679. there is practically no way to reconcile these with the regular prefixing
  6680. rules.  To work around, I stooped to some pretty disgusting byte-stuffing
  6681. tricks that seem to make it possible to keep the advertised syntax, yet still
  6682. allow strings such as "\N0" to be OUTPUT (e.g. to modems for which this is a
  6683. command), and still permit expansion of variables such as \%a.  It was the
  6684. OUTPUT'ing of backslashes, and in particular multiple backslashes and strings
  6685. like "\N0", that had been broken up till now.  There are still some minor
  6686. glitches, such as "output \\%a = \%a" interprets \%a in both places instead
  6687. of only the second one.  ckuus[r5].c, 2 Apr 96.
  6688.  
  6689. Also fixed OUTPUT \N, \B, and \L to work in remote mode.  Previously
  6690. they called tt..() routines rather than con..() routines.  2 Apr 96.
  6691.  
  6692. Jeff added SHOW KEY { ONE, ALL }, 3 Apr 96.
  6693.  
  6694. Jeff fixed bug with K95 Dialer that prevented PBX's from working, 3 Apr 96.
  6695.  
  6696. Fixed OUTPUT to not do anything fancy if COMMAND QUOTING OFF -- i.e. to send
  6697. its argument literally -- backslash is just another character.  3 Apr 96.
  6698.  
  6699. Added SET [ FILE ] DESTINATION { DISK, PRINTER, SCREEN } for compatibility
  6700. with MS-DOS Kermit.  Destination is displayed in SHOW FILE.  ckcker.h,
  6701. ckuusr.h, ckuus[r347].c, 3 Apr 96.
  6702.  
  6703. Added SET PRINTER to UNIX and other versions, as in OS/2, etc.  However, it
  6704. will have no effect in VMS, VOS, etc, until zprint() functions in ck*fio.c
  6705. are updated to use it.  NOTE: In Windows and VMS, a filename is used as the
  6706. printer (PRN, LPT:).  In UNIX, there is a distinction between a filename and
  6707. a pipe -- in UNIX a pipe must be used to run a program; if a pipe is not
  6708. given, the value is regarded as a filename.  So:
  6709.  
  6710.   set printer |lpr            ; Uses the lpr program for printing.
  6711.   set printer {| lpr -Pblah}  ; Ditto, with options (braces needed for spaces)
  6712.   set printer foo.x           ; A file
  6713.   set printer                 ; Restore default value
  6714.  
  6715. Fixed PRINT to actually work in non-OS/2 versions -- the arguments to
  6716. zprint() were reversed.  ckuusr.c, 3 Apr 96.
  6717.  
  6718. Changed PRINT and all other print operations to use the SET PRINTER value, if
  6719. any, otherwise to use the default printer.  In UNIX, if it is a file,
  6720. successive PRINT commands append to it.  Ditto for incoming files with the
  6721. PRINT attribute or if DESTINATION is SET to PRINTER.  zprint(), ckufio.c,
  6722. 3 Apr 96.
  6723.  
  6724. All of this printer stuff needs looking at in OS/2, Windows, etc.
  6725.  
  6726. Started work on redirection of text received in response to a REMOTE
  6727. command.  Syntax is simply "> file" at the end of any REMOTE command:
  6728.  
  6729.   remote blah blah [ > file ]      (write to file)
  6730.  
  6731. or:
  6732.  
  6733.   remote blah blah [ | command ]   (pipe to command)
  6734.  
  6735. or:
  6736.  
  6737.   remote blah blah [ | command > file ]
  6738.  
  6739. (The parsing of this part is done, but not the action -- ckuus7.c.)
  6740.  
  6741. This is complicated, however, by the fact that the REMOTE HOST command
  6742. itself may contain or end with redirection or pipe indications, so new
  6743. syntax is needed to indicate "which end" it applies to:
  6744.  
  6745.   remote host blah blah [ > file ]             This end
  6746.   remote host { blah blah } [ > file ]         This end
  6747.   remote host { blah blah > file }             That end
  6748.   remote host { blah blah > file } > file      Both ends
  6749.  
  6750. Jeff changed exit warning on network connections to make some additional
  6751. checks whether the connection was still open before issuing the warning.
  6752. ckuus3.c, 4 Apr 96.
  6753.  
  6754. A no-longer-used #pragma was removed from ckcnet.c, and cautionary words added
  6755. to ckcplm.doc.  Sometimes you can't even protect these things with #ifdefs.
  6756. (It was for the 16-bit OS/2 version, which is no longer being developed.)
  6757. 4 Apr 96.
  6758.  
  6759. More work on REMOTE command redirection.  File redirection (">") works,
  6760. but I didn't do the pipe yet.  "> filename" at the end of any remote command
  6761. puts its output into the named file.  The REMOTE HOST command also accepts
  6762. special notation to "bind" a redirection directive to the desired end:
  6763.  
  6764.   remote host blah blah > file      <-- Output goes in local file
  6765.   remote host { blah blah > file }  <-- Output goes in remote file
  6766.  
  6767. ckuus7.c, ckcpro.w, 4 Apr 96.
  6768.  
  6769. Added append capability to REMOTE output redirection:
  6770.  
  6771.   remote blah >> file               <-- Output is appended to local file
  6772.  
  6773. ckcpro.w, ckcfn3.c, ckuus7.c, 5 Apr 96.
  6774.  
  6775. Added pipe capability to REMOTE output redirection:
  6776.  
  6777.   remote blah | sort                <-- Output is fed to sort program
  6778.   remote blah | sort > file         <-- and from there to a file
  6779.  
  6780. This depends on the underlying zxcmd() function working.  ckcpro.w, 5 Apr 96.
  6781.  
  6782. (Now that all this work is done, how hard could it be to implement receiving
  6783. to a pipe or sending from a pipe??? -- it's mainly just a matter of designing
  6784. and parsing the commands for it...)
  6785.  
  6786. Fixed GETOK not to put answer (yes, no) in command recall buffer.  ckuus6.c,
  6787. 6 Apr 96.
  6788.  
  6789. Placed an upper bound of (timint * 3) on the dynamically calculated packet
  6790. timeout, to prevent ridiculously long values.  ckcfn2.c, 6 Apr 96.
  6791.  
  6792. Broke up some long switch() statements in ckuus3.c, because they caused the
  6793. AT&T 6300 compiler to generate assembly code that caused a hash table overflow
  6794. in the assembler.  ckuus3.c, 6 Apr 96.
  6795.  
  6796. Fixed a series of typos in settrm() that prevented SET TERM CHAR PORTUGUESE
  6797. from working.  FC_DECMCS was included in the various lists of 7-bit character
  6798. sets, when it shouldn't have been, and FC_POASCII was omitted from the same
  6799. lists.  ckuus7.c, 6 Apr 96.
  6800.  
  6801. Fixed a problem with full-line comments in the command-file reader.  I also
  6802. decided that it was stupid to allow comments to be continued.  So now comments
  6803. take precedence over continuation marks.  This makes it easy to comment out
  6804. macro definitions that contained continued lines.  But this uncovered another
  6805. problem, namely that if the first line in a block was a full-line comment,
  6806. then the opening brace would be counted again, and so the block would never be
  6807. terminated.  Fixed by keeping a record of the last non-comment, non-whitespace
  6808. character in the line we just read, rather than the last such character in
  6809. the target buffer.  getnct() in ckuus5.c, 6 Apr 96.
  6810.  
  6811. Made "e" be an abbreviation for EXIT.  Previously, for some reason I don't
  6812. understand, "e" by itself was taken to mean "e-packet".  ckuusr.c, 6 Apr 96.
  6813.  
  6814. Added a match-string argument to kwdhelp() and had cmkey() call it instead of
  6815. building its own list.  So now we fit keyword lists more compactly on the
  6816. screen AND we get more-prompting if they don't all fit on one screen.  This is
  6817. timely because the top-level keyword help had become too big for a regular 24
  6818. by 80 screen.  ckucmd.c, ckuus3.c, 6 Apr 96.
  6819.  
  6820. Now that we have more space on the top-level "?" screen, I un-invisible'd some
  6821. commands that were previously invisible because they wouldn't fit: COMMENT,
  6822. KERMIT, MKDIR, RMDIR.  ckuusr.c, 7 Apr 96.
  6823.  
  6824. Made a new filhelp() function and had cmifi() call it.  Now long filenames are
  6825. no longer truncated because of column width (but they still are truncated at
  6826. the screen width), column widths are optimal, and we get "more?" prompting if
  6827. the list doesn't fit on the screen, and we also get a file list even when "?"
  6828. is typed as the first character in the field.  AND... the names are now
  6829. alphabetized (rather than shown in "inode" order) via shell sort -- bubble
  6830. sort too slow for large directories, qsort overkill.  Put code for old way of
  6831. making keyword and file menus into #ifdef OLDHELP..#endif, so the new size
  6832. should not be much different.  ckucmd.c, 7 Apr 96.
  6833.  
  6834. Changed mtchs[] array in ckufio.c to be dynamically allocated rather than
  6835. static, as in OS-9 version.  This should probably also be done everywhere
  6836. else.  Increased the size, SSPACE, of the static string space buffer for
  6837. filenames to 32K for systems when BIGBUFOK defined.  A small definition for
  6838. SSPACE is what was causing those "?Too many files match" errors.  It's not
  6839. enough to increase MAXWLD; SSPACE needs to be increased too.
  6840. ckufio.c, 7 Apr 96.
  6841.  
  6842. The trick that let us give shell commands like !command (without a space
  6843. between the ! and the command) was broken when the secret NOPUSH command was
  6844. added.  Fixed, ckuus5.c, 7 Apr 96.
  6845.  
  6846. Added "speed-buffering on" and "off" fields to the MDMINF structure and began
  6847. filling these in for the various modem types.  However, it's not clear what we
  6848. could ever do with them.  Most modems don't have an explicit command for this
  6849. -- it's usually tied to whether an error-corrected link was negotiated, and so
  6850. happens (or not) automatically.  Some do have a command, and when it is
  6851. distinct from other commands (e.g. error correction enable/disable), I stuck
  6852. it in.  But I didn't finish, and I don't use this field for anything, nor is
  6853. it tied into the user interface at all.  So for now it's just a place-holder.
  6854. ckcker.h, ckudia.c, 7 Apr 96.
  6855.  
  6856. Fixed bug in lookup() that prevented it from realizing when a keyword was
  6857. ambiguous.  This bug was introduced when lookup() was made case-independent
  6858. recently, to accommodate keyword tables formed at runtime that might contain
  6859. mixed-case items.  Also fixed xlookup() (like lookup, but requiring full
  6860. match) to be case-independent.  ckucmd.c, 8 Apr 96.
  6861.  
  6862. Added \v(xversion), the numeric product-specific version number, e.g. 115
  6863. for K-95, since these tend to change more quickly than the C-Kermit edit
  6864. number (e.g. 192).  It's just 0 for regular (UNIX, VMS, etc) C-Kermit.
  6865. Also added \v(packetlen) and \v(window).  ckuusr.h, ckuus4.c, 8 Apr 96.
  6866.  
  6867. Fixed a bug with TAKE-file line numbers being mixed up with dialing
  6868. directory line numbers.  ckuus[56].c, 8 Apr 96.
  6869.  
  6870. "command | kermit -s -" was broken; used to work in 190.  For some reason, at
  6871. some point, I started checking standard output (1) for ttyness, rather than
  6872. standard input (0), and of course that's wrong.  But I seem to remember there
  6873. was some important reason for doing this, but it's not in my notes, so I put
  6874. it back to 0, now it works.  ckuusy.c.  8 Apr 96.
  6875.  
  6876. Noticed that dialing-directory conversion doesn't handle multi-word entries
  6877. right -- it drops the braces; e.g. "{Long Island}" becomes "Long Island".
  6878. Fixing this would be too hard.  Add to "beware" file.
  6879.  
  6880. Jeff fixed a session-log bug in Win/OS2 version, introduced when the INPUT
  6881. command was routed thru the terminal emulator.  Items processed by INPUT would
  6882. be recorded twice.  Also it seems some writes to the session log were
  6883. unbuffered, others were buffered.  Now all are unbuffered.  9 Apr 96.
  6884.  
  6885. A printf() argument was missing in ddcvt() (dialing directory converter),
  6886. noticed by Paul Kimoto.  ckuus3.c, 10 Apr 96.
  6887.  
  6888. Added SET INPUT BUFFER-LENGTH <bytes> and made the INPUT buffer be dynamically
  6889. allocated rather than static.  This is needed for REINPUT, in case the items
  6890. that we are looking for are so widely separated that they do not fit into the
  6891. regular 256-byte buffer.  ckuusr.[ch], ckuus[2457].c, 11 Apr 96.
  6892.  
  6893. Apr 10-13: Built on:
  6894.  SunOS 4.1.3, full, and with many KFLAGS=-DNOblah.
  6895.  NeXTSTEP 3.0.
  6896.  Macintosh with Mac OS.
  6897.  PC with Unixware 2.03.
  6898.  VAXstation 3100 VAX/VMS 5.5-1 with and without UCX.
  6899.  MicroVAX-II VMS 5.4-2 + TGV MultiNet.
  6900.  Alpha AXP VMS 6.1 with and without TGV MultiNet.
  6901.  HP 9000/712 with HP-UX 9.05.
  6902.  DEC 5800 with Ultrix 4.3.
  6903.  IBM Power Power Series 400 AIX 4.1.
  6904.  Data General MV 2500/DC AOS/VS II 2.20.00.39.
  6905.  PC with QNX-32 4.22.
  6906.  PC with QNX-16 4.22.
  6907.  SCO OpenServer 5.0.
  6908.  
  6909. And in the process, corrected many, many, many #ifdef problems.
  6910.  
  6911. Discovered that everybody has a different idea about the data type of option
  6912. argument to getsockopt() and setsockopt(), and so made a C-Kermit data type
  6913. for it, SOCKOPT_T, defined in ckcnet.c in a sea of #ifdefs.  13 Apr 96.
  6914.  
  6915. Defined RDCHK for SCO OpenServer 5.0, since it has it, and without it we were
  6916. getting the old System-V-style "type the CONNECT-mode escape character
  6917. followed by X, Z, ...  to interrupt a file transfer".  First I tried SELECT,
  6918. since the man pages say it's there, but then I got all kinds of horrible
  6919. errors about tv and tz, etc, in ckutio.c.  So maybe it's some "other" kind of
  6920. select().  Anyway, it builds OK with -DRDCHK, but rdchk() does not seem to
  6921. work -- i.e. it doesn't read key presses while the file transfer display is
  6922. going.  Tried CK_POLL and it behaved just like RDCHK.  Then I remembered --
  6923. SCO header files have always defined FIONREAD, and it has never worked.  So I
  6924. replicated the #ifdef XENIX workaround for #ifdef CK_SCOV5.  But then with
  6925. FIONREAD out of the way, it turns out there is no rdchk() after all.  So then
  6926. I put back CK_POLL, since poll() is supposed to be part of SVR4.  And it
  6927. works, phew.  makefile, ckutio.c, 13 Apr 96.
  6928.  
  6929. Changed references to zattr struct member "access" to "_access" in all
  6930. remaining ck*fio.c modules (after having changed in ckcdeb.h + ck[uvmd]fio.c.
  6931. This was necessary to avoid some kind of compiler error, I forget where.
  6932. 13 Apr 96.
  6933.  
  6934. Discovered that the auto-upload string didn't work at all -- the #ifdefs
  6935. around it were wrong.  Fixed, 13 Apr 96, ckcpro.w.  Now I have to build all
  6936. the versions over again, except SCO...
  6937.  
  6938. In tracking down reports of DIAL-related core dumps in Linux, it looks as if
  6939. there was one spot in ludial() where makestr() was being called with the wrong
  6940. level of indirection.  Also added additional malloc/free bulletproofing in
  6941. places where it had been missing.  ckuus6.c, 14 Apr 95.
  6942.  
  6943. At Linus Torvalds' recommendation, replaced curses with ncurses in the Linux
  6944. link step.  makefile, 14 Apr 96.  There are some other Linux issues still
  6945. outstanding, mainly how to set high serial speeds.  Some people are supposed
  6946. to get back to me with new code for this.
  6947.  
  6948. protofield(), the SET PROTOCOL field parser, was forgetting to return a value
  6949. at the end.  Fixed in ckuus3.c, 14 Apr 96.
  6950.  
  6951. Built all the aforementioned versions again and announced to the C-Kermit
  6952. testers group.  14 Apr 96.
  6953.  
  6954. Changed #ifdefs defining SOCKOPT_T to allow overriding from cc command line.
  6955. Most reports coming in say that the type is int everywhere except SCO OS5.
  6956. ckcnet.c.  Also, updated ckcker.upd and ckcker.nr, and reannounced to group.
  6957. 15 Apr 96.
  6958.  
  6959. Removed an unnecessary variable (and call to makestr()) from the dialing
  6960. code in ckuus6.c, and changed makestr() itself to be VERY CAREFUL about
  6961. anomalous cases, like when the two pointers point to the same place, or to
  6962. overlapping places.  This might have been causing some memory rot & core
  6963. dumps.  ckcmai.c.  16 Apr 96.
  6964.  
  6965. In building on IRIX 5.3, found that some network-directory-related variables
  6966. were multiply declared (nh_p and nh_p2 in ckuus7 and ckuusy); changed the
  6967. ckuusy ones.  17 Apr 96.
  6968.  
  6969. Simplified the #ifdefs around SOCKOPT_T since it seems that only one system
  6970. (Unixware) was using anything other than int.  ckcnet.c, 17 Apr 96.
  6971.  
  6972. Fixed a typo in the built-in definition for the FAST macro.  ckuus5.c,
  6973. 17 Apr 96.
  6974.  
  6975. SET SEND TIMEOUT <n> { FIXED, DYNAMIC } parsing had default & help string
  6976. reversed.  ckuus7.c, 17 Apr 96.
  6977.  
  6978. Discovered that I had never actually activated the dynamic round-trip timers.
  6979. All the ttinl() calls in rpack() were still using the old variable, not the
  6980. new one.  Fixed in ckcfns.c, 17 Apr 96.
  6981.  
  6982. Added RTT/Timeout (Round Trip Timer / Timeout) field to fullscreen file
  6983. transfer display.  ckuusx.c, 17 Apr 96.
  6984.  
  6985. Added code to time how long it takes to send a packet (works only on SunOS for
  6986. now).  The result is shown in the debug log.  It seems that sending a 4K
  6987. packet on a congested Internet connection can take up to 60 seconds, or
  6988. longer.  ckutio.c, ckcfn2.c, 19 Apr 96.
  6989.  
  6990. SET EXIT WARNING ALWAYS...
  6991.  
  6992. Found and fixed a memory leak in new ?-help routines for keyword and file
  6993. lists, ckucmd.c, 22 Apr 96.
  6994.  
  6995. Found and fixed a memory leak in new local-variable code.  ckuus5.c, 23 Apr 96.
  6996.  
  6997. Some code that should have been #ifdef'd OLDHELP was still being executed.
  6998. Added #ifdef OLDHELP to all code that referenced the old "hlptxt" buffer, etc.
  6999. ckucmd.c, 23 Apr 96.
  7000.  
  7001. Discovered that expression evaluator can accept numbers in different radices,
  7002. indicated by a trailing letter: "h" or "x" for hex, "o" or "q" for octal, "t"
  7003. for binary...
  7004.  
  7005. Found and fixed another problem with malloc() and free(), this one in the
  7006. command-recall code in ckucmd.c, 23 Apr 96.  Pretty embarrassing -- when
  7007. moving the command window up, the wrong loop counter was being used.
  7008.  
  7009. Wrote a new function tod2sec(string), which takes a string of the form
  7010. hh:mm:ss and converts it to a long, representing the number of seconds from
  7011. now.  If hh:mm:ss is less than now, then it is assumed to be tomorrow.
  7012. This function is now called by PAUSE, SLEEP, WAIT, etc, to allow time-of-day
  7013. format arguments, like MS-DOS Kermit.  ckuus6.c, 23 Apr 96.
  7014.  
  7015. Added \ftod2secs(hh:mm:ss) so users can call this function too.
  7016. ckuusr.h, ckuus4.c, 23 Apr 96.
  7017.  
  7018. Added parsing for SET SERVER GET-PATH.  User can list up to 32 directories
  7019. for the GET path.  Same parsing mechanism and syntax as SET DIAL DIRECTORY,
  7020. except using directory names rather than filenames.  The appropriate
  7021. directory separator is appended to any names that do not end in a directory
  7022. separator.  ckuusr.h, ckuus3.c, 23 Apr 96.  Example:
  7023.  
  7024.   SET SERVER GET-PATH /usr/olga/ ~olaf /tmp
  7025.  
  7026. results in:
  7027.  
  7028.   /usr/olga/
  7029.   /usr/olaf/  (assuming olaf's login directory is /usr/olaf)
  7030.   /tmp/
  7031.  
  7032. Added display of GET-PATH to SHOW SERVER.  ckuus5.c, 23 Apr 96.
  7033.  
  7034. Added implementation of GET-PATH to gnfile() ("get next file").  If a SERVER
  7035. GET-PATH is set, then it, and only it, is used.  Thus, if you also want Kermit
  7036. to look in its current directory when a GET-PATH is in effect, the current
  7037. directory must be included in the GET-PATH.  If the client sends an absolute
  7038. (fully qualified) pathname, that takes precedence over the GET-PATH.  If it
  7039. sends a relative pathname (or simply a filename), then the directories in
  7040. the GET-PATH are searched, in the order given, and the file is sent from the
  7041. first directory in which it is found; if it is not found in any of them, a
  7042. "File not found" error message is sent.  Takes precedence over DISABLE CD.
  7043. ckcfns.c, 23 Apr 96.
  7044.  
  7045. Jeff discovered that the shell-expansion routines had a couple off-by-one
  7046. errors that might have resulted in bad memory references, and fixed them.
  7047. ckufio.c, 23 Apr 96.
  7048.  
  7049. Added the following Compose-key sequences:
  7050.  
  7051.  '.  or  .'   Apostrophe
  7052.  ^^           Circumflex
  7053.  ``           Grave
  7054.  ~~           Tilde
  7055.  ,. or .,     Comma
  7056.  ""           Doublequote
  7057.  ::           Diaeresis
  7058.  
  7059. This is because Windows 95 does not deliver dead-key sequences to console
  7060. applications, and so there is no way for people to type characters that are
  7061. used to form dead-key combinations unless there is a compose sequence for
  7062. them.  ckoco3.c, 24 Apr 96.
  7063.  
  7064. Added in lots more malloc/free bulletproofing from Jeff, many modules,
  7065. 24 Apr 96.
  7066.  
  7067. Changed -J command-line option to also CONNECT automatically.  ckuusy.c,
  7068. 24 Apr 96.
  7069.  
  7070. Added hh:mm:ss parsing capability to INPUT command.  ckuusr.c, 24 Apr 96.
  7071.  
  7072. Added DATE command -- just prints the current date and time.
  7073. ckuusr.[ch], 24 Apr 96.
  7074.  
  7075. Changed kwdhelp() not to print a gratuitous blank line at the end of the
  7076. list, and adjusted calls to it to print their own blank line if they needed
  7077. to.  ckucmd.c, ckuus5.c, 24 Apr 96.
  7078.  
  7079. Added protocol name to fullscreen file transfer display #ifdef XYZ_INTERNAL.
  7080. ckuusx.c, 24 Apr 96.
  7081.  
  7082. Discovered a subtle problem in the macro processor, namely if an XIF, FOR, or
  7083. WHILE statement had too many commands (i.e. too many commas), it would get
  7084. truncated early (i.e. after the 6th comma).  The symptom would be that parsing
  7085. would break down at some point after that because of an extraneous closing
  7086. parenthesis...  This problem was introduced when I added the code to allow
  7087. { grouping } within function arguments, and is easily demonstrated with a loop
  7088. like this:
  7089.  
  7090.   for \%i 1 3 1 {
  7091.       echo \%i 1
  7092.       echo \%i 2
  7093.       echo \%i 3
  7094.       echo \%i 4
  7095.       echo \%i 5
  7096.       echo \%i 6
  7097.       echo \%i 7
  7098.       echo \%i 8
  7099.       echo \%i 9
  7100.   }
  7101.  
  7102. This will break in any C-Kermit version from 25 June 1995 until now, including
  7103. all versions of K-95.  Now it works -- fixed in zzstring() in ckuus4.c,
  7104. 25 Apr 96.
  7105.  
  7106. Replaced all references to FSPECL with FILENAMLEN (which happens to be
  7107. longer).  Otherwise we're likely to lose lots of stuff when copying filenames
  7108. or file lists to \v(fspec).  25 Apr 96.
  7109.  
  7110. Changed UNIX and OS/2 versions to send back fully qualified filename in
  7111. ACK to F packet, instead of just the bare or relative filename.  ckcpro.w,
  7112. 25 Apr 96.
  7113.  
  7114. Added hh:mm:ss notation to SET ALARM too.  ckuus3.c, 25 Apr 96.
  7115.  
  7116. Increased maximum number of elements in GET path to 128 if BIGBUFOK defined.
  7117. Also cleaned up some misplaced #ifdefs in ckuusr.h.  26 Apr 96.
  7118.  
  7119. Changed SHOW FEATURES to show the values of a lot of items that were not shown
  7120. before -- command buffer size, maximum number of macros, etc etc.  But the
  7121. display got too big for a normal screen, so I had to add line-counting and
  7122. askmore() prompting.  ckuus5.c, 26 Apr 96.
  7123.  
  7124. Added new command SET COMMAND MORE-PROMPTING { ON, OFF }. (default)
  7125. or disables askmore()'s more-prompting.  People who run C-Kermit in a window
  7126. that has scroll bars might prefer to use the scroll bars to hitting the space
  7127. bar at the end of each screenful of output.  ckuusr.h, ckuus[rx3].c,
  7128. 26 Apr 96.
  7129.  
  7130. Also enabled SET COMMAND { HEIGHT, WIDTH } for all versions.  Outside of
  7131. #ifdef OS2, it simply sets the cmd_rows and cmd_cols variables to whatever the
  7132. user says.  These are used by askmore(), kwdhelp(), filhelp(), prtopt(), and
  7133. maybe other display routines.  ckuus[35].c, 26 Apr 96.
  7134.  
  7135. Added the above items to SHOW COMMAND and to HELP SET COMMAND.  ckuus[25].c,
  7136. 26 Apr 96.
  7137.  
  7138. Updated and reorganized ckccfg.doc, added info about firewalls, etc.
  7139. 27 Apr 96.
  7140.  
  7141. Copied tcpsrv_open() from ckonet.c to ckcnet.c and adapted it to UNIX, within
  7142. #ifndef NOLISTEN..#endif.  Now you can "set host * <socket>" on UNIX and wait
  7143. for incoming connections.  No login, no security, just runs in the user and
  7144. file space of whoever is running it.  This is all fairly system-independent,
  7145. since it depends only on the sockets library.  Adding authentication, login,
  7146. access control, etc, is different for every system -- UNIX, VMS, AOS/VS, VOS,
  7147. etc, and is likely to open up all sorts of security issues.  This version so
  7148. far compiled OK on SunOS and VMS/UCX.  27 Apr 96.
  7149.  
  7150. Initial observations -- a file transfer speedup of about 91%, by elimination
  7151. of the Telnet server and PTY driver.  This is on UNIX, using the same host,
  7152. software, connection, and settings in both cases (30 x 9000 packets, minimal
  7153. prefixing, flow none), transferring a 2MB text file.  Through a Telnet server,
  7154. the rate was 107000 cps, direct to socket it was 204000 cps.  But ftp is
  7155. still about twice as fast.
  7156.  
  7157. Problems: Server times out every 10 seconds or so, even though SERVER TIMEOUT
  7158. is 0.  And if you hang up on the server, it gets a "broken pipe" error, and
  7159. then starts getting timeouts -- and sending NAKs -- like mad.
  7160.  
  7161. Added SET SERVER LOGIN command, and accompanying code in protocol module to
  7162. enforce it.  There is no password file -- only one (or zero) userid/password
  7163. can be enabled at a time.  Also, there is no protection against the password
  7164. echoing (although I could add it easily), no encryption, etc.  It's just like
  7165. MS-DOS Kermit.  Logins and logouts are logged in the transaction log.
  7166. No doubt there are still a few loose ends here...  27 Apr 96.
  7167.  
  7168. Changed main C-Kermit version number to 6.0.192.  Enough has changed...
  7169. Also this marks the end of the old DEC-20 style version numbers.
  7170.  
  7171. Fixed i/o routines in ckutio.c -- myfillbuf(), myread(), ttinl(), etc, to pass
  7172. up proper return codes when network connection is broken.  Now "set host *"
  7173. server pops back to prompt if client hangs up.  This way, user can run a
  7174. script like "while true { set host * 2000, server }".
  7175.  
  7176. However, ttyfd is still > -1 and Kermit thinks the connection is still open.
  7177. Extensive tests on SunOS show that under these conditions, no system calls
  7178. return any kind of error: ioctl(ttyfd,FIONREAD,&foo) succeeds (but says zero
  7179. chars are available); read(ttyfd,1,buf) returns 0; in both cases, errno is set
  7180. to zero.  So the system does not tell us "connection reset by peer".  So in
  7181. the UNIX version of ttinl(), I added a check: if the read() returns 0 and it's
  7182. a network connection AND the timeout was 0 (as it is in server command wait),
  7183. it must be a closed connection, so it is safe to close our end too, thus
  7184. setting ttyfd to -1 and making everything else work as expected.  However,
  7185. this does not catch a hangup during a file transfer.  So I tried removing the
  7186. "timeout == 0" condition, reasoning that a network read that did not time out
  7187. would never return(0).  This did the trick on SunOS, but it might cause
  7188. problems on System V platforms where we have nonblocking reads.  Let's
  7189. try... (hours later...)  On UnixWare 2.03, after a lot of finagling, it's OK.
  7190. The crucial point is that incoming connections won't work without select(), so
  7191. if SELECT is not defined, then NOLISTEN is automatically defined too.  So now
  7192. we've compiled and executing this code on SunOS (BSD), UnixWare (System V),
  7193. and VMS (UCX).  ckcnet.c, 28 Aug 96.  Later, twiddled #ifdefs further to get
  7194. it compiled under AIX 4.1.  Changed AIX 4.1 makefile entry to define SELECT;
  7195. made a new entry for UnixWare 2.xx to include SELECT.  Compiled ok on AOS/VS
  7196. too (but no incoming TCP).
  7197.  
  7198. Increased size of communications i/o buffer from 256 to 4096 in UNIX version
  7199. if BIGBUFOK defined.  But it doesn't seem to affect performance.  204Kcps is
  7200. still top speed here (unloaded SPARC-20, internal socket connection).
  7201. 28 Apr 96.
  7202.  
  7203. Added code to getrtt() and tinit() to take server command wait into account.
  7204. Now, no more timeouts during server command wait unless user asks for them.
  7205. ckcfn[s2].c, 28 Apr 96.
  7206.  
  7207. Fixed a bad bug introduced by SET SERVER GET-PATH, namely that I broke the
  7208. dialing and network directories by always tacking a directory separator on the
  7209. end of the filename, whereas that should only be done when parsing actual
  7210. directory names, not filenames.  ckuus3.c, 28 Apr 96.
  7211.  
  7212. I was going to try testing whether carrier drop in the middle of file transfer
  7213. popped C-Kermit back to the prompt automatically (if CARRIER-WATCH not OFF),
  7214. and if not to add code to ttinl() to take care of this, similar to the network
  7215. case, but I can't get dialtone on my phone line...
  7216.  
  7217. Added the "x_ifnum" hack around cmnum() for SET KEY CLEAR to prevent all those
  7218. scary messages from coming out of the expression parser.  Noticed by Max.
  7219. ckuus3.c, 28 Apr 96.
  7220.  
  7221. Eliminated some spurious entries from the transaction log that occurred when
  7222. an error packet was sent by the server in response to a command that wasn't
  7223. accepted.  ckcfn[23].c, 29 Apr 96.
  7224.  
  7225. Fixed a nasty bug in which, if a user Ctrl-C'd out of an ASK, DIAL, or similar
  7226. command that temporarily turns command quoting off, command quoting (including
  7227. recognition of question marks and backslashes) was not turned back on.  This
  7228. was not a simple matter of just turning it back on in the Ctrl-C handler, but
  7229. remembering the value of the user's most recent SET COMMAND QUOTING command,
  7230. and restoring it to that value.  ckuus[3x].c.
  7231.  
  7232. Added a SWITCH statement, almost just like in C.  Can be nested, etc.
  7233. ckuusr.[ch], ckuus[256].c, described in ckcker.upd, 29 Apr 96.
  7234.  
  7235. Discovered a stupid oversight that has been there for years.  If you
  7236. say "kermit filename", where filename is a relative filename (of a command
  7237. file you want Kermit to execute), but your initialization file contains a
  7238. CD command, Kermit can't find the file, because it will have changed its
  7239. default directory by the time it looks for it.  Fixed my moving some code
  7240. from main() to prescan() in ckuus4.c, and changing strcpy() to zfnqfp()
  7241. (convert filename to fully-qualified (absolute) filename).  1 May 96.
  7242.  
  7243. Changed version herald for K95, K2, and Mac to only show platform-specific
  7244. version number, and changed VERSION and SHOW VERSION commands to show both
  7245. version numbers.  1 May 96.
  7246.  
  7247. Fixed a problem with yesterday's command-file edit, which caused K95 to delete
  7248. its startup file before it executed it.  2 May 96.
  7249.  
  7250. Fixed another problem with answer mode in ckudia.c, which prevented certain
  7251. kinds of modems from answering the phone by erroneously setting S7 to the
  7252. ANSWER timeout (which by default is 0).  2 May 96.
  7253.  
  7254. Added -M command-line option for "My Username" (U and N already taken).
  7255. 6 May 96.
  7256.  
  7257. Changed Solaris 2.x to use -DSELECT instead of -DCK_POLL.  10 May 96.
  7258.  
  7259. Added support for Bell Labs Research UNIX v10 (Tenth Edition), circa 1989, an
  7260. example of which lingers on at Auburn University, on a MicroVAX II, 10 May 96:
  7261.  
  7262.  . I imported my working source files, which are some weeks ahead of anything
  7263.    that is publicly visible.
  7264.  . I added a "bellv10" makefile entry, uses BSD4, defines BELLV10.
  7265.  . It uses <ndir.h> for directory structure so I added -DNDIR.
  7266.  . <sys/ioctl.h> doesn't exist so I added -DNOSYSIOCTLH.
  7267.  . get/setre(ug)id() are not available, so I added -DNOSETREU.
  7268.  . Includes <utsname.h> rather than <sys/utsname.h> - edited ckuusx.c.
  7269.  . No gethostname() - edited ckuusx.c.
  7270.  . Needs <timeb.h> instead of <time.h> - edited ckutio.c.
  7271.  . select() has its own unique calling conventions - edited ckutio.c.
  7272.  . BSD/V7-style <sgtty.h> is present and is used because of -DBSD4.
  7273.  . But instead of using gtty() and stty() it must use ioctl() with
  7274.    TIOCGETP and TIOCSETP, because there is no gtty() or stty().  This was
  7275.    discovered from reading "man ttyld".
  7276.  . At this point it compiles and links without complaint; size = 623909 bytes.
  7277.  . It runs too, but output is slow and jerky.    
  7278.  . Added -DNOSETBUF -DDYNAMIC and rebuilt.  Now it runs nicely.
  7279.  . Trying to add -DCK_CURSES and "LIBS=-lcurses" turns up a lot of unresolved
  7280.    references at link time, so no curses.
  7281.  . There's no sockets library or header files so I could not build in any
  7282.    TCP/IP support or Telnet client.  Somebody would have to implement the
  7283.    long-abandoned AT&T TCP/IP streams interface for this to work.
  7284.  . Couldn't make job control work but that was because the only shell
  7285.    available was /bin/sh, which doesn't handle it.  Add -DNOJC if needed.
  7286.  . I didn't do anything about setuid / setgid installation, UUCP lockfiles...
  7287.  
  7288. Added protection against trying to include the TCP linger() code in HP-UX
  7289. 7.x, where SO_LINGER is defined in the header files, but the underlying
  7290. socket calls are not there.  ckcnet.c, 10 May 96.
  7291.  
  7292. Added SET TERM ESCAPE-CHARACTER { ENABLED, DISABLED }.  This allows a totally
  7293. transparent connection, at the expense of not being able to escape back by
  7294. typing ordinary ASCII characters like ^\C.  Of course users of Windows and
  7295. OS/2 can still get back using Alt-key combinations.  Users of UNIX, VMS, etc,
  7296. won't be able to get back at all except by having the other side drop the
  7297. connection.  Intended primarily for use when C-Kermit is "in the middle" and
  7298. must provide a totally transparent link, e.g. for XMODEM transfers.
  7299. ckuusr.h, ckuus[257].c, ck[uvd]con.c, 11 May 96.
  7300.  
  7301. Changed fullscreen file transfer display to show the number of window slots
  7302. NEGOTIATED rather than the number the user had set as the second number in the
  7303. "Window slots: x of y" display.  ckuusx.c, 11 May 96.
  7304.  
  7305. Changed struct zattr member _access to xaccess to avoid conflicts with 
  7306. access() function.  ckcdeb.h, ckcfn3.c, ck*fio.c, 11 May 96.
  7307.  
  7308. Broke up setprm() in ckuus3.c AGAIN in an attempt to overcome hash table
  7309. overflows when building on the AT&T 6300.  11 May 96.
  7310.  
  7311. Changed VMS znewn() to explicitly add 1 to the file version number, or else
  7312. to append ";0" to the filename if it has no version number.
  7313. ckvfio.c, 11 May 96.
  7314.  
  7315. Added zfnqfp() (get fully qualified filename) to VMS version.  Changed
  7316. #ifdefs around all references to it to #ifdef ZFNQFP.  ckcdeb.h, ckvfio.c,
  7317. ckcpro.w, ckuus[347].c, ckcplm.doc, 11 May 96.
  7318.  
  7319. Fixed dialing directory conversion in VMS to make a new version of the file
  7320. and then to actually use the new version.  ckuus6.c, 11 May 96.
  7321.  
  7322. Countless adjustments to #ifdefs and declarations to allow building with
  7323. various features deselected.  All modules.  11 May 96.
  7324.  
  7325. Figured out how to use select() in AOS/VS, added SELECT/DEFINE to AOS/VS build
  7326. procedure, and modified the appropriate modules to include the needed header
  7327. files and to use select() for input buffer peeking and for incoming TCP/IP
  7328. connections.  This should, for the first time, enable sliding windows.
  7329. ckdcc.cli, ckcnet.c, ckdtio.c.  Unfortunately, although the whole thing
  7330. compiles and links OK with SELECT defined, but it doesn't work right; select()
  7331. always returns -1; SLEEP and MSLEEP return immediately, in_chk always fails,
  7332. etc.  Put everything back as it was before, still works.  11 May 96.
  7333.  
  7334. Renamed setlogin() routine to cklogin() due to clash with a prototype in 
  7335. <unistd.h> on BSDI 2.0.  ckuus3.c, 11 May 96.
  7336.  
  7337. Converted IRIX 5.x and 6.x from using poll() to select().  Now TCP/IP
  7338. transfers are WAY faster.  makefile, 11 May 96.
  7339.  
  7340. ------ announced 6.0.192 Alpha 0.20 --------
  7341.  
  7342. Unified UnixWare 1.x and 2.x makefile entries -- both versions now use
  7343. select().  makefile, 12 May 96.
  7344.  
  7345. Added -DSELECT for SCO V5.  There are evidently two classes of systems
  7346. in this area -- the ones in which one must pick up select()-related items
  7347. from <sys/types.h>, and the other ones where we must also include
  7348. <sys/select.h> -- but <sys/select.h> usually does not exist on the first
  7349. type of system, so once again: #ifdef city.  12 May 96.
  7350.  
  7351. Rearranged the SELECT-related #ifdefs to make sure they come after
  7352. the <sys/type.h> and <sys/time.h> (or equivalent) #ifdefs.  Before doing
  7353. this it would not build on Linux.  12 May 96.
  7354.  
  7355. Made a last-minute fix to the Bell V10 version -- select() was not working
  7356. right when used for millisecond sleeps, and FIONREAD was not defined -- fixed
  7357. by pulling in a nonstandard header file, <sys/filio.h>.  12 May 96.
  7358.  
  7359. ------ uploaded 6.0.192 Alpha 0.20 again but dated May 12 --------
  7360.  
  7361. Got it working on SunLINK X.25 (version unknown), Solaris 2.4.  Had to fix a
  7362. lot of stuff -- this code hadn't been compiled or tested in 18 months...
  7363. Note: In order run this version, you need a Solaris system with the same
  7364. SunLink X.25 version (8.00?), AND you must have an environment variable
  7365. LD_LIBRARY_PATH that includes the library where libsockx25 is, which is
  7366. usually /opt/SUNWconn/lib.  ckcnet.c, ckucon.c, ckuus7.c.  12 May 96.
  7367.  
  7368. ------ uploaded 6.0.192 Alpha 0.20 again still dated May 12 --------
  7369.  
  7370. Changed AIX 3.2 makefile entries to omit -DCK_POLL.  This way they pull in
  7371. select() automatically, since they have -DSVR4.  (Thanks to Jamie Watson.)
  7372. makefile, 13 May 96.
  7373.  
  7374. Changed -DCK_POLL to -DSELECT in all sco32v4 entries upon advice of SCO
  7375. experts panel.  makefile, ckutio.c, 13 May 96.
  7376.  
  7377. Fixed Solaris 2.4/X.25 version to contain a link to the X.25 dynamic library
  7378. so the user does not need to have any environment variables defined in order
  7379. to run it.  Thanks to Xander Jansen.  makefile, 13 May 96.
  7380.  
  7381. Using C-Kermit to transfer itself over a very congested and bursty Internet
  7382. connection between NYC and Holland revealed some weaknesses in the file
  7383. transfer display -- now it reports all sorts of errors specifically ("Bad
  7384. header, timeout, bad sequence number, checksum error", etc), and the error
  7385. count is more accurate.  Also I realized while trying to use this connection
  7386. that the start-of-packet character should never be unprefixed unless the user
  7387. specifically requests it, so now "set prefixing minimal" does not unprefix it.
  7388. Now the same transfers work very nicely.  ckcmai.c, ckuusx.c, ckcfn2.c,
  7389. 13 May 96.
  7390.  
  7391. Fixed a really bad bug in zfnqfp(), discovered by Bo Johansson
  7392. <bo.johansson@mbox2.swipnet.se>, where a ++ in loop should have been a -- (!).
  7393. ckufio.c, 13 May 96.
  7394.  
  7395. And another really bad bug, also discovered by Bo J, which broke the INPUT
  7396. command (the timeout interval was ignored).  ckuusr.c, 13 May 96.
  7397.  
  7398. ---- (uploaded Alpha.021, 8:30pm, 13 May) -----
  7399.  
  7400. Oops, there was a typo in setalarm() ckuus3.c, left brace moved to the wrong
  7401. place.  Nobody could compile...  14 May 96.
  7402.  
  7403. ---- (uploaded Alpha.021 again, 10:55am, 14 May) -----
  7404.  
  7405. And another really bad bug, also discovered by Bo J, in which the freelocal()
  7406. function was freeing the wrong node.  ckuus5.c, 14 May 96.
  7407.  
  7408. ---- (uploaded Alpha.022, 10:55am, 14 May) -----
  7409.  
  7410. Finally got the select() business right for AIX 3.x, thanks to Nelson Beebe
  7411. and Jamie Watson -- needed to include <sys/select.h> after all.  Discovered
  7412. locally that this was also needed for AIX 4.1.  ckutio.c, 14 May 96.  
  7413.  
  7414. So then I decided it was stupid to try to hardwire all of this into the source
  7415. code, so now the decision to include <sys/select.h> is made in the makefile,
  7416. by including -DSELECT_H among the CFLAGS.  This is presently done for AIX 3.x
  7417. and above, SCO OS5, QNX, and COHERENT.  ckutio.c, ckcnet.c, makefile,
  7418. 14 May 96.
  7419.  
  7420. Added prototypes for a bunch of recent functions that didn't have them.
  7421. ckcker.h, ckuusr.h, 14 May 96.
  7422.  
  7423. Added -i to Solaris makes.  Otherwise if I have LD_LIBRARY_PATH defined when
  7424. I build it, every user has to have LD_LIBRARY_PATH defined to the same thing
  7425. to run it.  makefile, 14 May 96.
  7426.  
  7427. Checked on Digital UNIX 3.2, Solaris 2.5, Solaris 2.4, HP-UX 9.05, AIX 4.1,
  7428. NeXTSTEP 3.1, ...
  7429.  
  7430. ---- (uploaded Alpha.023, 8:30pm, 14 May) -----
  7431.  
  7432. Fixes for Digital UNIX 3.2 UUCP lockfiles from Jamie Watson.  ckutio.c,
  7433. makefile, 15 May 96.
  7434.  
  7435. Archaeology: Bell V10 again...  Discovered MYREAD wasn't defined for
  7436. nonblocking buffered reads -- defined it (because FIONREAD is available).
  7437. Added debugging material to ttsspd(), since it is failing for some reason.
  7438. Later, determined that it has a unique set of ioctls and structs for
  7439. getting/setting speed, not documented in any man page, but buried in
  7440. <sys/ttyio.h>.  Recoded all BELLV10 material in ckutio.c to use struct ttydevb
  7441. and TIOC[SG]DEV ioctls for getting/setting speed.  All of this evidently also
  7442. applies to UNIX V8 and V9, but who really knows.  15 May 96.
  7443.  
  7444. Moved BIGBUFOK definition to ckcdeb.h, where it can also be seen by
  7445. ck*[tf]io.c, etc.  15 May 96.
  7446.  
  7447. Chuck Fuller noticed that the sequence ?, help <anything>, ? would result
  7448. in the command-screen width changing.  Turns out to be a typo in the HELP
  7449. command, fixed in ckuus2.c, 16 May 96.
  7450.  
  7451. Made SET TERM AUTODOWNLOAD OFF the default for UNIX, VMS, etc -- i.e. the
  7452. versions of Kermit that don't have a real terminal emulator.  It's not good
  7453. to change defaults like this in a product that people have been using for
  7454. years.  Plus the UNIX/VMS/etc versions are very likely to be used "in the
  7455. middle", where we this feature would only be a nasty surprise.  It remains
  7456. enabled by default in Windows and OS/2.  ckcmai.c, 16 May 96.
  7457.  
  7458. At Vince Fatica's suggestion, added \v(dialresult), which contains the
  7459. literal result code from the modem in response to a DIAL, REDIAL, or ANSWER
  7460. command, like "CONNECT 2400", "NO CARRIER", "CONNECT 57600/LAPM", etc.
  7461. ckuusr.h, ckuus4.c, ckudia.c, 16 May 96.
  7462.  
  7463. Also added some more dial status codes:
  7464.  
  7465.   30 = Blacklisted
  7466.   31 = Delayed
  7467.   32 = Fax connection
  7468.  
  7469. Also added a lot more "knowledge" to the numeric-dial-result-code interpreter,
  7470. since anything above about 10 or 11 is totally nonstandard; added specific
  7471. cases for high-speed Hayes models, PPI, AT&T Dataport, Microcom Deskporte,
  7472. Rockwell, Boca, Gateway Telepath, Zoltrix, Multitech, ...  ckudia.c, 16 May 96.
  7473.  
  7474. Changed Linux makefile entry to include TCP/IP and -DLINUXFSSTND, suggested by
  7475. Kurt Klingbeil, blessed by Linus.  Made a separate entry if they want to build
  7476. without TCP/IP.  Updated comments.  makefile, 17 May 96.
  7477.  
  7478. Added numeric result codes for Intel modems.  ckudia.c, 17 May 96.
  7479.  
  7480. Based on experience transferring big files between NYC and the Czech Republic
  7481. and the Netherlands via very unpredictable Internet connections, added small
  7482. refinements to packet reading code: in input(), if we are about to give up
  7483. because of too many retries, first call ttchk() to see if anything is waiting
  7484. to be read -- in that case, go read it instead of giving up.  And...  since
  7485. the round-trip timer calculation was only done when a packet was successfully
  7486. received, we would tend to error out on timeouts once we got the first
  7487. timeout.  Now, if we get a timeout or other error, we bump up the timeout
  7488. interval.  It's still not perfect, though, because we also want to avoid the
  7489. situation in which we time out while in the middle of reading a perfectly good
  7490. packet.  But the alarm()/signal()/setjmp()/longjmp() structure of ttinl()
  7491. makes it almost impossible to handle that one.  18 May 96.
  7492.  
  7493. ---- (uploaded Beta.025, 19 May 96) -----
  7494.  
  7495. Fixed setting of \v(inidir) to (a) not use strrchr(), which is not portable,
  7496. and (b) account for non-UNIX directory separators.  ckuus5.c, 21 May 96.
  7497.  
  7498. Added missing network-directory material to ckermit.ini.  22 May 96.
  7499.  
  7500. Fixed resetting of line numbers when reading network directory and SET TAKE
  7501. ECHO is ON.  ckuus7.c, 22 May 96.
  7502.  
  7503. Fixed network directory to work for X.25.  It was tacking ":23" (TCP Telnet
  7504. port number) onto the X.25 address, and it wasn't setting "nettype" from
  7505. the directory entry.  ckuus7.c, 22 May 96.
  7506.  
  7507. Added "Trying <address>..." message for X.25 connections, just like IP
  7508. connections.  ckcnet.c, 23 May 96.
  7509.  
  7510. Changed SET NETWORK to have only two keywords: DIRECTORY and TYPE, and then
  7511. listed network types after TYPE.  But let the old form still be accepted,
  7512. invisibly.  ckuusr.h, ckuus3.c, etc, 23 May 96.
  7513.  
  7514. Jeff fixed a bug introduced by me in May 22 changes, that broke rlogin.
  7515. setlin(), ckuus7.c, 24 May 96.
  7516.  
  7517. I fixed a related bug: if you gave a SET HOST command with a name that was
  7518. successfully looked up in the network directory, followed by a TELNET command
  7519. with a name or address that was not in the network directory, the wrong
  7520. address (and perhaps also net type) would be used.  lunet(), setlin(),
  7521. ckuus7.c, 24 May 96.
  7522.  
  7523. Discovered, not sure what to do about it: "telnet 0 13" on Solaris (but not,
  7524. for example, on SunOS) makes Kermit dump core -- only happens if a port number
  7525. is given; "telnet 0" by itself works fine.  Also, it seems to happen only when
  7526. the remote closes the connection -- the connection seems to be made and used
  7527. fine...  The same thing happens with "telnet localhost 13" and "telnet
  7528. 127.0.0.1 13", so it's not the 0.  It's not the port, either, because if I
  7529. specify a different host, same, port, no problem.  See solaris-telnet-0.log.
  7530.  
  7531. Later...  Discovered the same thing happens on SunOS -- it has nothing to do
  7532. with host "0" -- it happens if I start Kermit with the regular init file,
  7533. etc, and then "set host blah 13".  Must be something to do with reading
  7534. networks directory...
  7535.  
  7536. In setlin() and lunet(), ckuus7.c, 27-28 May 95:
  7537.  
  7538.  . Almost completely rewrote setlin(), an 800-line function...
  7539.  . Fixed lunet() not to assume TCP -- i.e. don't assume anything about
  7540.     what fields 4 thru end are.
  7541.  . Added network directory fields for X.25.
  7542.  . Let additional data (port, etc) in command override what's in directory
  7543.  . Add username field for TCP (to be used by rlogin)
  7544.  . Add support for K_NET_DIRECTORY environment variable, as for dial directory
  7545.  . Fixed LOOKUP to work if there is a net directory but not a dialing directory
  7546.  . Fixed SET HOST * to not always use port 1649
  7547.  . Added password field for SuperLAT
  7548.  . Fixed core dumps (???)
  7549.  
  7550. Core dumps aren't really fixed.  Maybe 1 time in 1000 the scenario noted above
  7551. will still produce a core dump, so there is still some memory rot somewhere.
  7552.  
  7553. Made SET LOGIN available to all versions, not just #ifdef OS2.  29 May 96.
  7554.  
  7555. Found and fixed another memory leak.  The problem was in popclvl(), where it
  7556. was restoring the macro argument vector.  When popping back to top level, the
  7557. code (which dates from Mar 25) was accessing m_arg[-1][i].  This would happen
  7558. every time a macro was executed, and would happen during execution of the
  7559. standard init file.  Cure: don't do it.  Thanks to the AIX compiler runtime
  7560. checking features (see new rs6aix41d makefile entry) for making it stop in the
  7561. right place, rather than thousands of instructions later.  ckuus5.c,
  7562. 29 May 96.
  7563.  
  7564. But we still got core dumps on SunOS when TELNETing to TCP port 13, which
  7565. prints a short date-time string and then closes the connection.  Diagnosis:
  7566. The connection was closed before the CONNECT code had time to set its longjmp
  7567. buffer, but the interrupt handler was trying to take the longjmp anyway.
  7568. Solution: Set Yet Another Global Flag saying whether the setjmp() had been
  7569. executed yet, check it before taking the longjmp.  ckucon.c, 29 May 96.
  7570.  
  7571. Fixed RLOGIN to work in UNIX.  But you still need to be root to use it.
  7572. Ditto for VMS.  ckcnet.c, ckvtio.c, 30 May 96.
  7573.  
  7574. Fix "kermit -J host 513 -M user" so it makes an Rlogin connection.
  7575. ckuusy.c, 30 May 96.
  7576.  
  7577. Added "microlink" modem type for German MicroLink 14.4/28.8/2440 modem models,
  7578. from manuals sent by Peter Eichhorn.  Also added support for DIAL LOCKED
  7579. message required by law in Germany, Austria, and Switzerland.  Untested.
  7580. ckudia.c, 30 May 96.
  7581.  
  7582. Many fixes to DIAL display suggested by Peter Eichhorn:
  7583.  . Display results of lookup, e.g. "oo" expands to "oofa", "not found", etc.
  7584.  . If lookup was ambiguous, print message and don't dial.
  7585.  . If number starts with =, print message and don't look up.
  7586.  . Don't display "Opening..." message twice.
  7587.  . Line up the messages better.
  7588. ckudia.c, ckuus6.c, 30 May 96.
  7589.  
  7590. Added \v(dialnumber), ckuusr.h, ckuus4.c, 31 May 96.
  7591.  
  7592. Fixed spurious "REDIRECT capability required" message that came out after
  7593. a Kermit autodownload in C-Kermits that did not have redirect capability.
  7594. ckuus3.c, 31 May 96.
  7595.  
  7596. Added makefile entry for Sequent DYNIX/ptx 4.1, from Tom Kloos.  31 May 95.
  7597.  
  7598. Added #define for SO_OOBINLINE (0x0100) if not defined in header files.
  7599. Needed for HP-UX 7.00, hopefully nowhere else.  ckcnet.c, 31 May 96.
  7600.  
  7601. Changed -DSELECT back to -DCK_POLL in sco32v4 and sco32v4gcc entries, because
  7602. SELECT also requires gettimeofday(), which is in libsocket.a, which is
  7603. available only on SCO 3.2v4 systems that also have the TCP/IP developers kit.
  7604. Kept -DESELECT in all the sco32v4*net* entries, as well as the ODT and
  7605. SCO V5 entries.  makefile, 31 May 96.
  7606.  
  7607. Fixed TYPE command, which now uses internal file i/o routines rather than
  7608. calling the system, to save the file type, set the file type to text, type
  7609. the file, then restore the file type.  dotype(), ckuus6.c, 31 May 96.
  7610.  
  7611. Clarence Dold noticed that when built with MINIDIAL, dialing didn't work when
  7612. he used "set modem type hayes" for his Intel modem.  Diagnosis: the basic
  7613. Hayes modem types did not have a "wake_prompt" defined (as "OK<CR>"), whereas
  7614. the more advanced versions did.  Supplied the missing wake_prompt strings.
  7615. ckudia.c, 31 May 96.
  7616.  
  7617. SET FILE DOWNLOAD DIRECTORY wasn't working in VMS because zfnqfp() was
  7618. erroneously appending .; to the end of the directory name.  Not knowing how
  7619. to tell RMS not to do this, I simply removed them at the end of the routine if
  7620. they were there.  ckvfio.c, 31 May 96.
  7621.  
  7622. Returning the fully qualified filename in the ACK packet wasn't working in
  7623. VMS because isabsolute() had never been filled in for VMS.  Filled it in,
  7624. somewhat crudely, works now.  ckvfio.c, 31 May 96.
  7625.  
  7626. Converted all log names (packet, debug, etc) to fully qualified ones.
  7627. dolog(), ckuus4.c, 31 May 96.
  7628.  
  7629. Jeff added sleep()'s before all command-line exits that printed messages, to
  7630. give them time to make it to the window.  ckuusy.c, 31 May 96.
  7631.  
  7632. Added HELP REGET.  ckuus2.c, 31 May 96.
  7633.  
  7634. Added select() support for HP-UX 5.21 from John Dunlap.
  7635. ckcnet.[ch], 31 May 96.
  7636.  
  7637. Added still more disgusting heuristics to chkvar(), because in the act of
  7638. fixing the problem of nonparsing of variables in input filename fields, I
  7639. reintroduced the recurring bug whereby you can't refer to a directory whose
  7640. name starts with F or V or M or $, because Kermit variables also start with
  7641. those letters.  ckuus6.c, 31 May 96.
  7642.  
  7643. Changed default file transfer display to FULL (curses) for all builds in
  7644. which CK_CURSES is defined; otherwise to CRT.  No more dots unless user asks
  7645. for them.  ckuusx.c, 31 May 96.
  7646.  
  7647. ckuusx.c would not compile under Red Hat Linux because ncurses.h was using
  7648. a symbol SP that conflicted with ckcasc.h's symbol SP.  Fixed by undef'ing
  7649. SP before including curses.h, and using CHR_SP instead of SP to represent
  7650. the ASCII Space character.  ckuusx.c, 1 Jun 96.
  7651.  
  7652. Rlogin protocol requires screen-dimension knowledge.  But if you add
  7653. -DRLOGCODE to a build that does not have CK_NAWS defined, it fails.  It was
  7654. silly in the first place to lump knowledge of screen size and TELNET NAWS
  7655. under the same conditional, so I separated them: Now CK_NAWS means NAWS and
  7656. CK_TTGWSIZE means we can call ttgwsize() to get screen dimensions, e.g. on
  7657. nonnetworking builds.  CK_NAWS and RLOGCODE both require CK_TTGWSIZE, which is
  7658. currently defined for UNIX, VMS, and OS2.  Many modules, 1 Jun 96.
  7659.  
  7660. Added SET TRANSFER MODE { AUTOMATIC, MANUAL }.  When AUTOMATIC, we switch to
  7661. the appropriate binary mode (labeled or binary) and to literal filenames when
  7662. system IDs match or are compatible (e.g. DOS and OS/2).
  7663.  
  7664. Added display of these to SHOW FILE & SHOW PROTOCOL.
  7665. Added a constant string cksysid to contain our own system ID.
  7666. Added sending and receiving of system ID in S/I packet and its ACK.
  7667. Added struct sysdata sysidlist[] with data about different system types.
  7668. Added getsysid(s) to return system type name given system ID s.
  7669. Added display of remote system ID to fullscreen file transfer display.
  7670. Added remote system ID info to transaction log.
  7671. Added remote system ID info to STATISTICS display.
  7672. Added whoarewe() to switch transfer mode based on system IDs.
  7673. Called whoarewe() upon reception of init string, in spar().
  7674.  
  7675. Changed UNIX & OS/2 zrtol() to lowercase the incoming filename only if
  7676. it was ALL UPPERCASE.  So now if we get "foo.tar.Z", even if FILE NAMES
  7677. are CONVERTED, we don't lowercase the Z.
  7678.  
  7679. Changed UNIX and OS/2 zltor() treatment of multiple periods.  Previously,
  7680. the first one would be kept, and all subsequent ones would become X's.
  7681. Now the *last* one is kept and all previous ones become underscores.  This
  7682. makes people happy who download foo.tar.gz files, etc.
  7683.  
  7684. Changed buffer used by UNIX and OS/2 zltor, zstrip, and zrtol to be MAXPATH
  7685. long rather than a hardwired number.
  7686.  
  7687. All the above, many modules, 1-2 Jun 96.
  7688.  
  7689. Fixed ckcnet.h not to define NOLISTEN for OS2, which prevented "set host *"
  7690. from working.  2 Jun 96.
  7691.  
  7692. Fixes from Jeff to all the above fixes to fix broken compilation on OS/2.
  7693. 3 Jun 96.
  7694.  
  7695. Bug watch: connecting back to a telnet host after logging out and with
  7696. SET PARITY SPACE (or whatever) results in Telnet negotiations having their
  7697. 8th bit chopped off...
  7698.  
  7699. Introduced a new symbol, CKMAXPATH, in ckcdeb.h, to be used when allocating
  7700. space for file (path) names, and fixed buffer declarations in many modules to
  7701. use it, particularly for the names of the debug and other logs, which still
  7702. had hardwired lengths of 50 (!).  EMACS command-of-the-day: ESC-x
  7703. tags-query-replace.  3 Jun 96.
  7704.  
  7705. Fixed chkvar() AGAIN.  ckuus6.c, 3 Jun 96.
  7706.  
  7707. Simplified all of the ridiculous file transfer mode saving and restoring,
  7708. and ensured that if the transfer mode (variable "binary") is set because of
  7709. system-ID negotiation, that it is restored to the user's value upon exit
  7710. from the protocol module.  This was accomplished by removing dozens of 
  7711. ad-hoc saving-and-restoring sequences from all over the place and just:
  7712.  
  7713.  1. Setting both the nominal and saved values in the SET command;
  7714.  2. Enclosing the protocol module in a wrapper that saves, then restores;
  7715.  3. Restoring the values in the Ctrl-C trap.
  7716.  
  7717. Only send the true system ID string if SET TRANSFER MODE is AUTO.  Otherwise
  7718. send a system ID of "0".  Don't do any automatic system-ID mode switching if
  7719. the other Kermit's system ID is "0".  rpar()/spar(), ckcfns.c, 4 Jun 96.
  7720.  
  7721. Somehow the sense of SET { SEND, RECEIVE } PATHNAMES got reversed, I don't
  7722. know when.  1 = strip, 0 = keep them on.  I changed the defaults to be 0
  7723. in ckcmai.c, rather than 1.  4 Jun 96.
  7724.  
  7725. Changed the BYE command to hang up the connection, if it was a network
  7726. connection because TCP/IP connections, when closed from the other side, still
  7727. appear to be open and so result in the annoying "A network connection might
  7728. still be active, OK to exit?" message when you know perfectly well it is
  7729. closed.  Done by setting Yet Another Global flag, bye_active, when the client
  7730. end of the BYE command is active, so when (if) the ACK is received in the
  7731. protocol module, the connection is hung up.  Many modules, 4 Jun 96.
  7732.  
  7733. Fixed a bug introduced in zltor() yesterday which might potentially put the
  7734. period in the wrong place.  ckufio.c, 4 Jun 96.
  7735.  
  7736. Fixed SET SERVER GET-PATH to append directory separator to end of directory
  7737. name if missing, in OS2 version (it already took care of this in other
  7738. versions).  ckuus3.c, 5 Jun 96.
  7739.  
  7740. Changed CONNECT-mode escape H to be Help rather than Hangup, and made U
  7741. be Hangup, in the UNIX, VMS, AOS, VOS, OS-9, Amiga, and ST versions, to
  7742. conform with the Windows and OS/2 versions, and with the principle of least
  7743. astonishment.  ck*con.c, 5 Jun 96.
  7744.  
  7745. Fixes from Jeff to directory-listing and delete-response generators for
  7746. server.  ckcfns.c, 5 Jun 96.
  7747.  
  7748. Added SET TERM { HEIGHT, WIDTH } for non-OS/2 versions.  Just sets the tt_blah
  7749. variables in case ttgwsize() can't get them from the system.  Also fixed a
  7750. glitch in the non-OS/2 SHOW TERM display.  ckuus7.c, 5 Jun 96.
  7751.  
  7752. Added #ifdef BEBOX code, including an alarm() routine for the BeBox from
  7753. Neal Murphy at Motorola.  Untested.  Many modules.  6 Jun 96.
  7754.  
  7755. Removed the code from UNIX tthang() that lowered RTS, suspecting that it might
  7756. be the cause for all the trouble with the Solaris Port Monitor.  Bo Kullmar
  7757. tested it in Sweden, verified that it cured the problem.  ckutio.c, 6 Jun 96.
  7758.  
  7759. Added autoupload to the UNIX version.  It's simple.  Instead of only looking
  7760. for an S packet, we also look for an I packet.  If we get one, we go into
  7761. server mode instead of receive mode, and we set a flag that says that when
  7762. the transfer is complete, i.e. after the B packet has been sent and ACK'd,
  7763. that instead of going back to server command wait, we (reset the flag and)
  7764. return from the protocol module.  So really, it's more than autoupload,
  7765. it's auto-any-client/server-command, although some of them don't make any
  7766. sense, like REMOTE DIRECTORY (unless it includes a redirector) -- but they
  7767. still work.  ckcfns.c, ckcpro.w, ckucon.c, 6 Jun 96.
  7768.  
  7769. Added autoupload to VMS version.  This was a lot easier because we don't
  7770. have the stupid forks, pipes, and signals to deal with when changing a
  7771. variable.  ckvcon.c, 6 Jun 96.
  7772.  
  7773. Fixed OUTPUT to allow outputting of lines > 80 characters long.  Yet Another
  7774. Stupid String Termination bug, discovered by Volkmar Grote. ckuus5.c, 7 Jun 96.
  7775.  
  7776. Patches to yesterday's BeBox updates from Neal Murphy.  ckuus5.c, 7 Jun 96.
  7777.  
  7778. Moved kstart() and zstart() to ckcfn2.c, so they did not need to be replicated
  7779. in each CONNECT module.  ck[cu]con.c, ckcfn2.c, ckcker.h, 7 Jun 96.
  7780.  
  7781. Made SERVER DISPLAY ON the default for all versions.  ckcmai.c, 7 Jun 96.
  7782.  
  7783. Moved code that checks for console interrupts (X, Z, E, etc) from input()
  7784. to rpack(), to make sure it will be executed every time through the loop.
  7785. ckcfn2.c, 7 Jun 96.
  7786.  
  7787. When C-K was the "autoupload server" and it got a request for a file that
  7788. it didn't have, it failed to leave server mode.  Fixed in ckcpro.w, 10 Jun 96.
  7789.  
  7790. More of the same -- changed just about every "SERVE" to "RESUME" in ckcpro.w,
  7791. 11 Jun 96.
  7792.  
  7793. 2.11 BSD...  A lot of work on the makefile, added a fifth overlay in hopes of
  7794. getting this version compiled.  Added a sixth overlay, rearranged the overlays
  7795. for better fit (making each as close to 16K as possible), fixed up some
  7796. #ifdefs.  Got rid of explicit references to sys_errlist[] (should do this for
  7797. all other versions where strerr() or strerror() is available, but who knows
  7798. where that is...)  Eventually got it to build and run OK (but very slowly),
  7799. without a DIAL command.  Added MINIDIAL, plus another overlay, but result was
  7800. WAY too big.  Put NODIAL back, reshuffled overlays and root segment again so
  7801. the hardest-hit modules were in the root segment, and got it back down to 5
  7802. overlays (from 7).  Later, changed the entire overlay structure: 40K in root
  7803. segment, four 24K overlays.  Compiles and runs, but still very jerky because
  7804. I still need to free up at least 3-5K of data (e.g. static buffers).  Also
  7805. should put all the new dial-directory-related stuff in MINIDIAL ifdefs so
  7806. DIAL can be restored.  ckubs2.mak, 11-12 Jun 96.
  7807.  
  7808. Fixed a problem in VMS do_label_receive, in which it referenced a pointer
  7809. that might be null, without checking first.  Now VMS-to-VMS transfers (which
  7810. pop automatically into labeled mode) work fine.  ckvfio.c, 12 Jun 96.
  7811.  
  7812. Many adjustments to the makefile, #ifdefs in many modules, etc, as a result of
  7813. compiling on many platforms.  Discovered that Rlogin code could not be
  7814. built on all UNIXes because they don't all have SIGURG, so another convention
  7815. of #ifdefs for ckcnet.h...  12-13 Jun 96.
  7816.  
  7817. More 2.11 BSD.  Change CKMAXPATH from 1023 to 255, affecting about 7 static
  7818. buffers, so 7 x 768 = about 5K, theoretically enough for the needed stdio
  7819. buffers in data space.  And (another hour of compiling and linking later) this
  7820. finally did the trick -- it runs quite snappily now.  See comments in
  7821. ckubs2.mak.  13 Jun 96.
  7822.  
  7823. Changed certain HP-UX 7.x, 8.x, and 9.x entries in makefile to skip
  7824. optimization of ckcpro.c, which tends to blow up the HP optimizer.
  7825. 13 Jun 96.
  7826.  
  7827. Fixed typos in HP-UX 5.21 select()-support code.  ckcnet.h, 13 Jun 96.
  7828.  
  7829. ---- (uploaded Beta.025, 13 Jun 96) -----
  7830.  
  7831. Made H an acceptable abbreviation for HELP.  ckuusr.c, 14 Jun 96.
  7832.  
  7833. Made "set block-check <ESC>" supply 3 instead of 1.  ckuus3.c, 14 Jun 96.
  7834.  
  7835. Added a Latin-2 Compose key to K95/K2.  ckocon.[ch], ckoco3.c, 16 Jun 96.
  7836.  
  7837. Updated ck9ker.mak for ck[cu]sig.[ch] and also added a couple missing
  7838. dependencies to the UNIX makefile.  19 Jun 96.
  7839.  
  7840. Adjustments to Tandy 1600 and HP-UX 7.x makefile entries; new entries added
  7841. for HP-UX 6.5.  20 Jun 96.
  7842.  
  7843. Added -Q (Quick) command-line switch for starting Kermit with fast
  7844. file-transfer options (20 window slots, 4096-byte packets, cautious
  7845. unprefixing).  22 Jun 96.
  7846.  
  7847. Fixed a show-stopper in the VMS version that prevented Labeled receives
  7848. from working at all (in do_label_recv, I was checking the size of the 
  7849. vms_ofile buffer against the wrong constant).  ckvfio.c, 23 Jun 96.
  7850.  
  7851. Changed SET FILE DISPLAY to SET TRANSFER DISPLAY -- more appropriate.
  7852. SET FILE DISPLAY still works, but is invisible.  ckuus[37].c, ckuusr.h,
  7853. 23 Jun 96.
  7854.  
  7855. Malloc'd INPUT buffer wasn't being initialized.  Now it is.
  7856. ckuus5.c, 16 Jun 96.
  7857.  
  7858. ---1.1.5---
  7859.  
  7860. Added REGET to server's help message.  ckcmai.c, 4 Jul 96.
  7861.  
  7862. Added WHATAMI to SHOW FEATURES display.  ckuus5.c, 4 Jul 96.
  7863.  
  7864. Added SERVER LOGIN display to SHOW SERVER.  ckuus5.c, 4 Jul 96.
  7865.  
  7866. Made "e" an abbreviation for "exit" (again).  ckuusr.c, 4 Jul 96.
  7867.  
  7868. Corrected some bad references to ofn1 (it's an array, not a pointer).
  7869. ckcfns.c, ckcfn3.c, 8 Jul 96.
  7870.  
  7871. Fixed another bug in chkvar() that prevented it from recognizing array
  7872. references, which in turn prevented cmifi() from expanding an array reference
  7873. to get the filename.  ckuus6.c, 8 Jul 96.
  7874.  
  7875. Fixed DIRECTORY command error message for OS/2.  ckuus6.c, 10 Jul 96.
  7876.  
  7877. Added variable \v(apcactive).  ckuusr.h, ckuus4.c, 10 Jul 96.
  7878.  
  7879. Fixed OS2/WIN DIR command to handle "dir blah", when "blah" is not a directory
  7880. name, to append ".*" to it.  ckuus6.c, 12 Jul 96.
  7881.  
  7882. Added ttol() time debugging for OS2/WIN, and made it selectable with #ifdef
  7883. GETMSEC (but don't define this unless there is a corresponding getmsec()
  7884. routine in ck?tio.c).  ckcfn2.c, 12 Jul 96.
  7885.  
  7886. OS2/WIN zopeni() now opens in shared non-write mode, so can type, send, etc,
  7887. can open files that other processes had opened, even for writing.  ckufio.c,
  7888. 12 Jul 96.
  7889.  
  7890. Fixed cmnum() to recognize \\\%i -- first evaluate \%i to get (e.g. \128),
  7891. then call xxesc() to get 128, then succeed.  ckucmd.c, 13 Jul 96.
  7892.  
  7893. While testing Kermit file transfer performance on a very bad connection, in
  7894. which 80-90% of all packets get damaged, it was observed that the timeouts
  7895. quickly rise to ridiculous levels.  This is, in general, to be expected since
  7896. the timeout is based on the time between when a packet is sent and its ACK is
  7897. received.  To alleviate the situation, the following adjustments were made to
  7898. the timeout calculation:
  7899.  
  7900.  . The packet's time stamp is updated if we retransmit it.  Previously, it
  7901.    was set only when it was first transmitted.
  7902.  
  7903.  . When sending a NAK for packet n, update timestamp of packet n-1 (mod 64),
  7904.    which is the ACK or NAK we sent for the previous packet, since this is
  7905.    how the file receiver determines round-trip delay.
  7906.  
  7907. The problem is that there is no good way for the file sender to distinguish
  7908. between a very noisy connection that has no delays and a clean connection with
  7909. long delays, or for that matter a noisy connection with long delays.  The file
  7910. receiver responds to a bad packet the same way it responds to a timeout: it
  7911. sends a NAK.  The file sender does not know *why* the NAK was sent.  The
  7912. situation is exacerbated when packets are corrupted so badly that they are not
  7913. recognized as packets -- e.g. when the packet-start character is mangled or
  7914. lost.  In that case, we get a timeout anyway, instead of immediately sensing a
  7915. checksum/CRC error.
  7916.  
  7917. It might be possible for low-level packet-reading code (ttinl) to keep track
  7918. of the total number of characters read vs the number of packet characters
  7919. read, and if the ratio crosses a certain threshhold, the upper-level code
  7920. could infer the line was noisy.  But that still says nothing its delay
  7921. characteristics.  So the real question remains: how can you tell what the
  7922. delay is?  You can't, without uncorrupted packets.  So hopefully the two
  7923. changes above will result in a delay calculation that is more resistant to
  7924. noise effects.  ckcfn2.c, 13 Jul 96.  (BUT SEE ENTRY BELOW FOR A SOLUTION.)
  7925.  
  7926. A similar problem occurs when we reduce packet lengths because of errors.  We
  7927. don't know WHY the error occurred.  If it was because of noise, it is probably
  7928. safe to grow packets back to their original size as the noise abates.  But if
  7929. it was because of a buffer overflow, it is not safe.  Note that if a buffer is
  7930. too small for a packet to begin with, the packet will never get through at
  7931. all.  However, there seems to be a fairly common condition in which a packet
  7932. of a certain size, say 8K, will often, but not always fail, and yet a packet
  7933. of a certain smaller size, say 4K, will hardly ever fail.  In a situation like
  7934. this, our current algorithm keeps the packet length oscillating -- we always
  7935. go back up to 8K, where it probably fails again, then we go back to 4K, and
  7936. on and on.
  7937.  
  7938. This effect is exacerbated when using sliding windows.  Suppose we send
  7939. sixteen 8K packets before any responses come back.  Then we get 4 ACKs
  7940. followed by 12 NAKs.  Each NAK causes us to halve the packet length so we
  7941. instantly drop down to 2-byte packets (except there is a minimum of 20 or so).
  7942. This is clearly an overreaction.  Probably we only needed to halve it once.
  7943. But wait, it gets worse.  Since we can never retransmit a packet in any form
  7944. different from its original form, we must retransmit the 12 NAK'd packets in
  7945. their original 8K form, which will only make the error count rise, keeping the
  7946. length for new packets at a minimum.  So new packets are going out with a
  7947. length of 20, while the original 8K ones are being retransmitted over and over
  7948. until they all finally get through or the retry limit is exhausted.  Now the
  7949. 20-byte length creeps back up because there are no more buffer overflows.  But
  7950. eventually the threshhold is crossed and a burst of packets goes out that is
  7951. too long, and the process repeats: continuous oscillation between 20 bytes and
  7952. 8192 bytes.
  7953.  
  7954. So we need a way to prevent overzealous length reduction at the beginning,
  7955. AND we need a way of finding the optimal length to stop at when increasing the
  7956. size after errors have subsided.
  7957.  
  7958. When we get a NAK or a timeout, how do we know whether to halve the packet
  7959. length?  Instead of ALWAYS halving it when there is any kind of error, we'll
  7960. make the new length half the length of THE PACKET THAT CAUSED THE ERROR --
  7961. the one that was NAK'd, or the one whose ACK we were waiting for.
  7962.  
  7963. Thus, in the scenario above, after sending 16 8K packets, and getting lots of
  7964. NAKs, we reduce the length of the 17th packet 4K bytes rather than to 8K/2^12,
  7965. which is just silly.  If we get an error on the 17th packet, then the 18th
  7966. packet will be 2K bytes, and so on.
  7967.  
  7968. After reducing the packet length, how far should we increase it after we stop
  7969. getting errors?  To answer this, we'll have the sender record the length of
  7970. the longest packet that was ACK'd without ever being NAK'd or retransmitted.
  7971. The danger here is not being able to recover from a transient condition that
  7972. subsequently cleared up.  Or worse: never being able to get past 20 bytes,
  7973. because (in the scenario just described), that will be the longest packet that
  7974. was ACK'd without ever being NAK'd or retransmitted.
  7975.  
  7976. So here is our new strategy for managing packet lengths:
  7977.  
  7978. 1. Slow start.  If the negotiated packet length is 500 or greater, we start
  7979.    our first data packet at 244 bytes (thus ensuring that it fits in a typical
  7980.    256-byte buffer).  If it is ACK'd the first time, we double it for the next
  7981.    packet, and if that one is ACK'd the first time, we double again, and so on
  7982.    up to the maximum negotiated length.  We stop doing this, however, the
  7983.    first time we get a NAK or a timeout.  Note that when using sliding
  7984.    windows, the first ACK for a data packet might not arrive until after quite
  7985.    a few have been sent out at the initial short slow-start length.
  7986.  
  7987. 2. Each time we get an ACK for a packet that was never NAK'd or retransmitted,
  7988.    if it was longer than any previous such packet, we record its length as the
  7989.    "best length".  Thus the best length grows during the slow-start period.
  7990.    (Obviously we set best length to 0 at the beginning of transaction.)
  7991.  
  7992. 3. Each time we get an ACK, if the current length for sending packets is less
  7993.    than the best length, we increase it by 1/3 the difference between it and
  7994.    the best length.
  7995.  
  7996. But suppose the best length is small because of a transient condition.  How
  7997. can we increase it?  For every nth packet, where n = window slots + 1, we
  7998. increase the packet size beyond the best length as a one-shot deal (1/3 of the
  7999. way between the best length and the maximum negotiated length).  If we get an
  8000. ACK back for it next time around, this automatically bumps up the best length.
  8001.  
  8002. All of this: ckcnf[s2].c, 13 Jul 96.
  8003.  
  8004. Restored the short sleep before ttres() in ckcpro.w.  It is definitely
  8005. needed in SunOS 4.x on serial connections.  Otherwise the ACK to the B
  8006. packet gets cut off by ttres().  14 Jul 96.
  8007.  
  8008. Moved the GETMSEC definition to ckcdeb.h.  Fixed UNIX getmsec() to initialize
  8009. its base time to the current time the first time it is called.  Otherwise we
  8010. get overflows.  14 Jul 96.  (Note, if we can generalize this routine to all
  8011. platforms, we could use millisecond precision in our RTT calculations.)
  8012.  
  8013. Experiments show that under noisy conditions, the timeouts still get way too
  8014. long, e.g. hundreds of seconds when it is perfectly obvious that packets
  8015. arrive every 4 or 5 seconds.  A small amount of long overdue thought reveals
  8016. that the round-trip time is not what we should be looking at in the general
  8017. (more than 1 window slot) case.  Kermit is not X.25, with a separate timer
  8018. for each packet (maybe it should be, but that's another story -- but in C you
  8019. can't have multiple alarms pending).
  8020.  
  8021. Instead of measuring the round-trip time, we should be measuring the interval
  8022. at which packets arrive.  When the window size is 1, this is the same as the
  8023. round trip time.  But when the window size is > 1, the round trip time is the
  8024. amount of time it takes for a whole WINDOW full of packets to arrive, not the
  8025. amount of time it should take the next packet to arrive.
  8026.  
  8027. So getrtt() was modified to base the packet timeout on the packet arrival
  8028. interval rather than the round trip time.  The RTT is still displayed, but
  8029. it's not used in the timeout calculation all.  This was a trivial modification
  8030. for the file sender, but with the new possibility of a slow start, the
  8031. receiver needed a little extra margin of safety during the first round of
  8032. packets -- and the cruder it was, the better it worked (if we've received less
  8033. than 32 packets, we double the calculated timeout value; otherwise, if less
  8034. 64, we increase it by 50% -- anything smoother tended to fail).  ckcfn2.c,
  8035. 14 Jul 96.
  8036.  
  8037. Added SET TRANSFER SLOW-START { ON, OFF }, default ON, to let the user turn
  8038. off the slow start mechanism if desired.  ckuusr.h, ckuus[23].c, ckcfn[23].c,
  8039. ckcmai.c, 14 Jul 96.
  8040.  
  8041. Changed the fullscreen file transfer display to give feedback immediately when
  8042. X or Z is pressed, since interruption can take quite a while on a slow
  8043. connection with a big window size.  Also uppercased SENDING and RECEIVING to
  8044. make them easier to spot.  ckuusx.c, 14 Jul 96.
  8045.  
  8046. Jeff fixed a problem in cmdini() where the INPUT buffer was being initialized
  8047. using the wrong buffer size, resulting in crashes when the program started
  8048. when the inpbufsiz variable had a different value than the INPBUFSIZ constant.
  8049. ckuus5.c, 14 Jul 96.
  8050.  
  8051. Made RTS/CTS the default flow control for K95/K2.  14 Jul 96.
  8052.  
  8053. Added SLOW-START display to SHOW PROTOCOL.  ckuus4.c, 15 Jul 96.
  8054.  
  8055. Show myipaddr[] on fullscreen file-transfer display screen if known.
  8056. ckuusx.c, 15 Jul 96.
  8057.  
  8058. Added SET FLOW-CONTROL AUTOMATIC and made it the default.  ckcmai.c,
  8059. ckuus[237].c, ckcdeb.h, 16 Jul 96.
  8060.  
  8061. Added additional fields to SET SEND TIMEOUT <secs> { FIXED, DYNAMIC }.
  8062. If they say "dynamic", then they can also specify a minimum and maximum value.
  8063. This should let them overcome any bugs or misbehavior by the dynamic code.
  8064. ckcmai.c, ckuus7.c, ckcfn2.c, 16 Jul 96.
  8065.  
  8066. Removed percent efficiency display from file-transfer screen, and also, except
  8067. for local-mode direct serial connections, from STAT output.  ckuus[4x].c,
  8068. 17 Jul 96.
  8069.  
  8070. --- 1.1.7 ---
  8071.  
  8072. Changed default EXIT WARNING to ON.  ckuusr.c, 28 Jul 96.
  8073.  
  8074. Added -E command line switch, ckuusy.c, 28 Jul 96.
  8075.  
  8076. Added \v(crc16) variable.  Contains 16-bit CRC of the most recent file
  8077. or file group sent or received.  28 Jul 96.
  8078.  
  8079. Added IF <n> <command>.  Executes <command> if <n> is a nonzero number, does
  8080. not execute command if <n> is 0.  Can be negated with NOT.  ckuus6.c, 4 Aug 96.
  8081.  
  8082. Changed \fbreak(s1,s2) to allow s2 to be a string, rather than just one char,
  8083. so now it's symmetrical with \fspan(), like in Snobol.  ckuus4.c, 4 Aug 96.
  8084.  
  8085. Changed \fexec() to allow its arguments to be separated by commas as well
  8086. as by spaces, since requiring spaces made it impossible to use fexec() in
  8087. any field that called for a single word.  ckuus4.c, 4 Aug 96.
  8088.  
  8089. Added XECHO, which is just like WRITE SCREEN.  ckuusr.[ch], 4 Aug 96.
  8090.  
  8091. Fixed UNIX version of zfnqfp() to expand tildes properly.  ckufio.c, 5 Aug 96.
  8092.  
  8093. Added \fpathname(file) to return full pathname of file.  ckuusr.h, ckuus4.c,
  8094. 5 Aug 96.
  8095.  
  8096. Added CLEAR APC.  This lets the host send an APC that makes Kermit not
  8097. return to CONNECT mode after executing the APC.  ckuusr.[ch], ckuus4.c,
  8098. 5 Aug 96. 
  8099.  
  8100. Made local variables work for command files as well as macros.  ckuus5.c,
  8101. 6 Aug 96.
  8102.  
  8103. Added \fchecksum(text) and \fcrc16(text).  ckuusr.h, ckcfn2.c, ckuus4.c,
  8104. 10 Aug 96.
  8105.  
  8106. Changed OPEN READ to allow specification of an optional buffer size after
  8107. the filename, and the READ buffer is now malloc'd.  ckuus6.c.  Also, started
  8108. to add a method for reading specific-sized blocks from files, rather than
  8109. lines, but gave up on it because there is no way to use such a block once it
  8110. has been read if it contains a null.  See #ifdef BINREAD.  11 Aug 96.
  8111.  
  8112. Began merging Neal Murphy's BeBox changes.  Most drastic was the CONNECT
  8113. module, which was completely reorganized because BeOS doesn't have fork().
  8114. Seems to be OK on various UNIXes.  ckucon.c, 17 Aug 96.
  8115.  
  8116. Updated ckutio.c, ckucmd.c, ckcdeb.h, and the makefile for BeBox.  17 Aug 96.
  8117.  
  8118. New BSD211-specific modules from Steven Schultz.  cku2tm.c ckubs2.mak ckustr.c
  8119. ckustr.sed, 17 Aug 96.
  8120.  
  8121. Added code to fix "dir a:" in PC version, untested.  ckuus6.c, 17 Aug 96.
  8122.  
  8123. Fixed command parser asking for "more?" to be exactly when needed, rather than
  8124. one line before it was needed (e.g. when you type "?" at the prompt).
  8125. ckucmd.c, 17 Aug 96.
  8126.  
  8127. GET with DELETE -- Client tells server to MOVE files.  Client command is
  8128. RETRIEVE.  Just like GET, but sends H packet rather than R.  Server gets H
  8129. packet and acts just like GET, except sets flag saying to delete each file
  8130. after -- and if and only if -- it is sent successfully.  Also ENABLE/DISABLE
  8131. RETRIEVE, SHOW SERVER, REMOTE HELP message, etc.  RETRIEVE is initially
  8132. disabled for safety.  ckcpro.w ckuusr.h ckcker.h ckuusr.c, 17 Aug 96.
  8133.  
  8134. IF EXIST \%a <command> was changed to simply fail if \%a was not defined,
  8135. rather than giving an error message.  This allows for IF EXIST \$(NAME), etc,
  8136. whether or not NAME is defined, e.g. IF EXIST \$(K95CUSTOM).  ckuus6.c,
  8137. 18 Aug 96.
  8138.  
  8139. Made DISABLE BYE the default for OS/2 & Windows.  The consequences of typing
  8140. BYE at a remote Kermit prompt (with autodownload enabled in the local Kermit)
  8141. are pretty drastic otherwise.  ckcmai.c, 18 Aug 96.
  8142.  
  8143. Allow increment in FOR command to be zero.  Why not?  ckuus6.c, 18 Aug 96.
  8144.  
  8145. Made SET FILE CHARACTER-SET choose the appropriate TRANSFER CHARACTER-SET,
  8146. but only if the current TRANSFER CHARACTER-SET was TRANSPARENT.  ckuus7.c,
  8147. 18 Aug 96.
  8148.  
  8149. Fixed transaction log to show fully qualified filename of files being sent.
  8150. ckcfns.c, 18 Aug 96.
  8151.  
  8152. Fixed CHECK PUSH to fail if the NOPUSH command had been given.  ckuus3.c,
  8153. 18 Aug 96.
  8154.  
  8155. Fixed MSLEEP hh:mm:ss.  ckuus6.c, 18 Aug 96.
  8156.  
  8157. Fixed ASK, ASKQ, and GETOK to not RE-evaluate their arguments after having
  8158. evaluated them already.  Prior to this fix, the sequence:
  8159.  
  8160.   def \%a c:\foo\dog\moo\x.x
  8161.   ask \%b { OK to delete \fcontents(\%a)? }
  8162.  
  8163. would not work because ASK does an implicit SET PROMPT, and SET PROMPT
  8164. evaluates the prompt again.  ckuus6.c, 18 Aug 96.
  8165.  
  8166. Fixed function argument parsing to be consistent.  Braces are used around
  8167. arguments to keep leading and/or trailing spaces AND to treat commas as
  8168. literal characters rather than argument separators.  Previously, leading or
  8169. trailing spaces could not be passed to functions as arguments, and there were
  8170. lots of function-specific hacks, now all gone; the same rules apply to all.
  8171. ckuus4.c, 18 Aug 96.
  8172.  
  8173. Fixed \v(dialresult) not to include trailing control characters.
  8174. ckudial.c, 18 Aug 96.
  8175.  
  8176. Added ENABLE/DISABLE { MAIL, PRINT } to allow these actions to be separately
  8177. enabled and disabled.  Doesn't work like other ENABLE/DISABLE items -- instead
  8178. it works by attribute refusal, but that's the best we can do.  Lots of files.  
  8179. 18 Aug 96.
  8180.  
  8181. Added SET TRANSFER BELL { ON, OFF } for people who hate the beep.
  8182. ckuusr.h, ckuus3.c, ckuusx.c, 18 aug 96.
  8183.  
  8184. Added a bunch of makefile changes for various SunSoft Interactive UNIX
  8185. variations, from Larry Jones <larry.jones@sdrc.com>, 18 Aug 96.
  8186.  
  8187. Fixed cmtxt() to do the right thing when ESC typed at the beginning of
  8188. a field for which there is no default -- namely beep instead of putting a
  8189. space into the command buffer.  Also allowed completion to work if the
  8190. text typed into the field so far matches the left substring of the default
  8191. (if any) of the same length.  ckucmd.c, 19 Aug 96.
  8192.  
  8193. In the UNIX, Windows, and OS/2 versions, the CD command (actually, zhdir()),
  8194. if it failed, would try lowercasing the name and trying again.  This was both
  8195. confusing and wrong, and gave misleading error messages (e.g. in UNIX,
  8196. "cd FOO" said "foo: No such directory"), so I removed the lowercasing-and-
  8197. trying-again code.  ckufio.c, 19 Aug 96.
  8198.  
  8199. Fixed a nasty bug in the UNIX bug with SET DESTINATION PRINTER -- the
  8200. arguments to zprint() were reversed...  (again???)  ckufio.c, 19 Aug 96.
  8201.  
  8202. There was evidently a problem in the logic for treating a NAK for packet n+1
  8203. as an ACK for packet n, in which most of the code to handle an ACK was being
  8204. bypassed in this case (buffer/window shuffling, etc).  So I added a hack to
  8205. the input() routine to change the N into a Y and to decrement the sequence
  8206. number (mod 64 of course) and then go back and execute the entire block of
  8207. code for the ACK.  This is fairly hard to test...  ckcfn2.c, 19 Aug 96.
  8208.  
  8209. Fixed gmdmtyp() to not assume that modem type was only to be found in mdmsav
  8210. if a network connection was active.  In fact, network modem dialing is done
  8211. with SET HOST first, SET MODEM TYPE second, so the modem type is never saved.
  8212. ckuus4.c, 19 Aug 96.
  8213.  
  8214. Changed the control-character parsing routines to allow not only a numeric
  8215. representation like "27" for Escape, but also to accept the control character
  8216. typed literally (but in that case it must be preceded by a backslash, and even
  8217. then, not all control chars can be entered this way, e.g. Ctrl-C), and also ^X
  8218. notation (caret followed by any ASCII character 63-95 or 97-122; lowercase
  8219. letters are converted to uppercase).  This affects SET ESCAPE, SET S/R
  8220. PAD-CHAR, packet-start/end, etc.  There is now a new setcc() routine that can
  8221. be called from anywhere to parse a control character (as long as it is the
  8222. final item in the command).  ckuus[37].c, ckcker.h, 20 Aug 96.
  8223.  
  8224. Added a new symbol, DOOMSDAY, which is defined for versions that have
  8225. implemented "Doomsday Kermit" protocol (currently UNIX, VMS, OS/2).  ckcdeb.h,
  8226. ckuus7.c, 20 Aug 96.
  8227.  
  8228. Changed UNIX i/o modules to make SET CARRIER ON and AUTO apply to file
  8229. transfer as well as to CONNECT mode, in hopes of getting file transfers to
  8230. fail and pop back to the prompt immediately if carrier drops and SET CARRIER
  8231. is AUTO or ON.  No way to test here -- neither my NeXT nor watsun cares one
  8232. bit about carrier.  ttinl(), mygetbuf(), ttpkt(): ckutio.c, 20 Aug 96.  
  8233.  
  8234. Updated man page, ckcker.upd, with recent stuff.  20 Aug 96.
  8235.  
  8236. Fixed bug introduced in Monday's changes that made a spurious "Refused"
  8237. message pop up every time C-K received a file in local mode.  ckcpro.w,
  8238. 21 Aug 96.
  8239.  
  8240. Log full pathname of received file in transaction log.  ckcfn3.c, 21 Aug 96.
  8241.  
  8242. If user says "send *.*" and one or more of the matching files is not readable,
  8243. there was previously no indication of error.  Now we (a) count the file as
  8244. not sent (for the STATISTICS display), (b) make a transaction-log entry, and
  8245. (c) put a message on the file transfer display if in local mode.  gnfile(),
  8246. ckcfns.c, 21 Aug 96.
  8247.  
  8248. There has always been the horrible bug in VMS C-Kermit that the SEND and OPEN
  8249. READ file shared the same RMS channel.  Thus you could not send a file and
  8250. have an OPEN READ file at the same time.  If you closed one, it would close
  8251. the other, etc.  So I tried to fix this by cloning ALL of the fab/rab/xab/blab
  8252. structures and and buffers and pointers and routines and code (I'm sure there
  8253. must be a better way but I'm not a VMS programmer).  In so doing, I noticed
  8254. that the filesize for a SEND file was being set in zchki() rather than
  8255. zopeni(), and so if this ever worked, it was purely by accident, since how do
  8256. we know that the file we are sending is the one we most recently zchki'd?  So
  8257. I moved and separated all of the size getting to the appropriate places.
  8258. Anyway finally I got it all done and working.  Really gross.  But it's better
  8259. now, at least because (for example) zchin() no longer ASSUMES it is reading
  8260. from ZIFILE.  Test: make a file containing a list of filenames.  Then write a
  8261. command file that opens the other file, reads a line at a time into a
  8262. variable, and then sends the file whose name is in the variable, then TAKE
  8263. the command file.  Works OK.  CKVFIO.C, 21 Aug 96.
  8264.  
  8265. Changed the TYPE command in VMS to just call the system's TYPE command, since
  8266. the built-in one was EXCRUTIATINGLY slow.  (But if it is, then so is reading
  8267. from files -- hmmm, what exactly was the bottleneck?  If we knew, maybe we
  8268. could speed up VMS file transfer by a whole lot.)  Also, the previous TYPE
  8269. command was not interruptible, though I don't know why.  Made the new one
  8270. interruptible again.  ckuus6.c, 21 Aug 96.
  8271.  
  8272. Numerous fixes to ifdefs, casts, etc etc, many modules.  21 Aug 96.
  8273.  
  8274. Data General AOS/VS networking was broken by recent additions (getting my
  8275. own IP address, maybe also the linger/nodelay/recvbuf/etc stuff too), so I
  8276. #ifdef'd all of them away.  Now it works again.  ckcnet.c, 22 Aug 96.
  8277.  
  8278. Reshuffled overlays for BSD2.11, builds OK now.  ckubs2.mak, 22 Aug 96.
  8279.  
  8280. ---(Beta.029)---
  8281.  
  8282. Added #ifndef NOIADDRX..#endif around the section that defines INADDRX in
  8283. ckcnet.h, because evidently the new release of DG/UX changed the definition
  8284. of inet_addr().  27 Aug 96.
  8285.  
  8286. Added \fbasename(filespec).  ckuusr.h, ckuus4.c, 1 Sep 96.
  8287.  
  8288. Fixed zstrip() to take care not write past the end of its buffer.  ckufio.c,
  8289. 1 Sep 96.
  8290.  
  8291. Fixed IF NUMERIC <var> <cmd> to fail gracefully if the variable is not
  8292. defined.  ckuus6.c, 1 Sep 96.
  8293.  
  8294. Added _ASG as a synonym for _ASSIGN.  ckuusr.c, 1 Sep 96.
  8295.  
  8296. Fixed PRINT command to actually allow trailing print options (arguments to
  8297. zprint were reversed here too...).  ckuusr.c, 3 Sep 96.
  8298.  
  8299. Changed stray reference to memset() to bzero() in ckcnet.c.  memset() is not
  8300. portable.  5 Sep 96.
  8301.  
  8302. Added S as a file-transfer interrupt command, for "Status" -- same as A, but
  8303. why should we use S for Status in terminal mode, and A for Status in protocol
  8304. mode?  ckuusx.c, 5 Sep 96.
  8305.  
  8306. ---(USING C-KERMIT SECOND EDITION)---
  8307.  
  8308. Merged Martin Zinser's VMS changes (DEC C vs VAX C / VAX vs Alpha / etc etc).
  8309. Many modules, plus a whole new build procedure.  17 Sep 96.
  8310.  
  8311. Merged Jeff's changes.  Many modules.  17 Sep 96.
  8312.  
  8313. Built VMS C-K on VAX/VMS 5.5-2 OK with new CKVKER.COM.  But CKVKER.COM does not
  8314. work on VMS 6.2 on either VAX or Alpha -- some kind of syntax error in the COM
  8315. file.  But updated sources build OK using old makefile.
  8316.  
  8317. As for sources...  They compile fine on an Alpha with DECC 5.3, but on a VAX
  8318. with DECC 5.3, there are lots of warnings about alarm() not being declared,
  8319. plus bzero, bcopy, inet_ntoa, inet_addr (this on a TGV system).  Then it dies
  8320. in ckvfio.c because of an undefined struct member.  17 Sep 96.
  8321.  
  8322. VMS (19 Sep 96)...
  8323.  
  8324. alarm() complaints.  Removed #define alarm decc$alarm from ckcnet.h.
  8325.  . ckudia.c now compiles OK on VAX / VMS 6.2 / DEC C 5.3-006 / TGV 4.0D.
  8326.  . it compiles OK on VAX / VMS 5.5-2 / VAX C 3.1 / UCX
  8327.  
  8328. Got rid of all #module directives from ckv*.c modules.  No problem, who
  8329. needs it.
  8330.  
  8331. And at Mark Berryman's suggestion:
  8332.  
  8333. Got rid of all references to xaballdef$$_fill_7, used xab$b_bkz instead.
  8334. Added #include <strings.h> to MultiNet compiles to pick up bzero & friends.
  8335. Removed attempt to make &x be size_t in set/getsockopt() calls for MultiNet.
  8336. Added #include "multinet_root:[multinet.include.netinet]inet.h" to pick up
  8337. defs for inet_addr() and inet_ntoa().  #included <strings.h> for bcopy() and
  8338. bzero().  Finally, it compiled and linked, and it worked, on both the VAX and
  8339. the Alpha.
  8340.  
  8341. But it won't build on SPCVXA (TGV 4.0 field test / VAX C 3.2) because it can't
  8342. find <strings.h>.  Removed #include <strings.h>, inserted hardwired prototypes
  8343. for bcopy and bzero.  Builds OK on SPCVXA.  Builds OK Alpha (TGV 4.0A / DECC
  8344. 5.3).  Builds OK on VAX (also TGV 4.0A / DECC 5.3).  Builds OK on another VAX
  8345. with VMS 5.4-2, TGV 3.5D, and VAXC 3.1.
  8346.  
  8347. Does NOT build OK on an Alpha with VMS 6.2, TGV 3.5B, and an unknown DEC C
  8348. version; gets syntax errors right away in the system header files
  8349. (SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB: STDLIB, STAT, UNIXIO modules).  Maybe if
  8350. the new CKVKER.COM file worked, it would help?
  8351.  
  8352. Peter Eichhorn noticed that dialing stopped suddenly on HP-UX right after
  8353. Kermit told the modem to use RTS/CTS.  That's because, even though Kermit had
  8354. been told to "set flow rts/cts" (or auto), it does not actually take affect
  8355. until after dialing is complete.  So if RTS was not being asserted (as it was
  8356. not in this case), the modem would never send any more characters back to the
  8357. computer, and dialing would fail.  Tentative solution: add a new low-level
  8358. communications routine, ttsetflow(), to ckutio.c; document it in ckcplm.doc.
  8359. Call it from ckudia.c just after the aforementioned modem command returns OK.
  8360. Put the call within #ifdef CK_TTSETFLOW..#endif.  In ckcdeb.h, define
  8361. CK_TTSETFLOW for UNIX.  If this works out, maybe we can use this routine in
  8362. a lot of other places for simplification and sanity.  21 Sep 96.
  8363.  
  8364. READing from a pipe was busted in the last edit, when the READ buffer was
  8365. made dynamic.  I forgot to add the buffer allocation code to the OPEN !READ
  8366. command.  Fixed in ckuus6.c, 21 Sep 96.
  8367.  
  8368. Changed the fullscreen file transfer display to show the bytes received so
  8369. far, rather than a blank "Percent done", when receiving a file whose size
  8370. is not known.  Suggested by Peter Eichhorn.  ckuusx.c, 21 Sep 96.
  8371.  
  8372. Changed ENABLE/DISABLE commands to allow an optional trailing argument:
  8373. REMOTE, LOCAL, or BOTH (default = BOTH).  Server services are now enabled or
  8374. disabled separately for remote and local mode.  The en_xxx flags are now 2-bit
  8375. fields, with values 0..3.  The protocol module has a new macro, ENABLED, to
  8376. check them.  Changed the defaults for RETRIEVE, DELETE, HOST, and BYE to
  8377. "remote-only", meaning they are enabled in remote mode, disabled in local
  8378. mode, to prevent nasty surprises caused by autodownload sequences.  Other
  8379. services are enabled in both remote and local mode by default, as before.
  8380. ckcmai.c, ckuusr.c, ckuus[56].c, ckcpro.w, 22 Sep 96.
  8381.  
  8382. REMOTE TYPE, when given from VMS client to VMS server -- or OS/2 client to
  8383. OS/2 server -- resulted in labeled file format.  Changed the server to switch
  8384. to text mode when handling REMOTE TYPE requests.  ckcpro.w, 22 Sep 96.
  8385.  
  8386. Speaking of LABELed mode... In VMS, if a labeled-mode file transfer failed
  8387. between the time it started (but the opening of the file was deferred because
  8388. the label info had not been processed yet) and the time it was opened for
  8389. real, subsequent close operations would fail (because the file had not been
  8390. opened yet), and therefore so would subsequent attempts to open ANY output
  8391. file, since zopeni() would think that one was already open.  Fixed for VMS
  8392. in ckvfio.c, 22 Sep 96.  Might need to be looked at for OS/2 also, but
  8393. probably this does not happen there, since in OS/2 we actually do use file
  8394. descriptors and C Library for file i/o, rather than the whole separate
  8395. parallel world of RMS used by VMS.
  8396.  
  8397. How do we decide whether to prefix a control character these days?  We
  8398. reference the prefixing table, ctlp[], using the character as an index.  Guess
  8399. what: on some platforms, cltp[c] (where "c" is an _unsigned_ character)
  8400. results in conversion of c to a signed integer, and therefore sometimes to an
  8401. incorrect array reference, and no doubt an out-of-bounds one too.  The packet
  8402. encoder was doing this, and in at least one version -- VAX/VMS C-Kermit built
  8403. with VAX C 3.2 -- it resulted in failure to encode file bytes with value 0xff,
  8404. which corresponds to Telnet IAC, and therefore failure to transfer any file
  8405. that contained this character over a Telnet connection.  On VMS-to-VMS
  8406. connections, it resulted in failure to transfer ANY file on a Telnet
  8407. connection, because 0xff happens to appear in the labeled-file material for
  8408. every file.  Fixed in ckcfns.c, 22 Sep 96.
  8409.  
  8410. There was another mysterious problem with VMS C-Kermit's parity changing from
  8411. SPACE (or other none-NONE value) to NONE whenever a file was transferred.  Not
  8412. so mysterious upon close inspection of the code.  When ttpkt() and ttvt() were
  8413. combined into ttbin() (not so very recently), the small bit that handled
  8414. parity was skipped for network connections.  Fixed now.  ckvtio.c, 22 Sep 96.
  8415.  
  8416. Removed some per-character debug log entries from netinc().  ckcnet.c,
  8417. 22 Sep 96.
  8418.  
  8419. At Mike Freeman's request, added a way to let the user specify, when DIAL
  8420. CONNECT is ON or AUTO, whether the verbose "Connecting..." message is
  8421. displayed if DIAL succeeds and Kermit enters CONNECT mode.  This was done by
  8422. allowing the keywords QUIET or VERBOSE after SET DIAL CONNECT ON or AUTO.
  8423. ckuusr.c, ckuus3.c, ckuus4.c, 22 Sep 96.
  8424.  
  8425. Various updates to help messages.  ckuus2.c, 22 Sep 96.
  8426.  
  8427. Changed ckuver.h so \v(cpu) for DG/UX would give precedence to Intel over
  8428. Motorola, since evidently their Intel compiler still has the Motorola 88K
  8429. manifest constants defined.  ckuver.h, 22 Sep 96.
  8430.  
  8431. The SWITCH statement did not work if it was used in a macro and its switching
  8432. variable was a macro argument.  Fixed by evaluating the variable prior to
  8433. using it, since we are only going to look at it once (unlike, say, a WHILE
  8434. or FOR loop variable).  Seems to work fine now, but needs more testing
  8435. (add some nested SWITCH tests to CKEDEMO.KSC).  ckuus6.c, 22 Sep 96.
  8436.  
  8437. From Bernie Volz at Process Software: Fix problems with compiling on Alpha
  8438. for UCX / TCPware; fix byte-swapping of TCP port.  ckcnet.c, 23 Sep 96.
  8439.  
  8440. Wasted the entire day on the stupid new CKVKER.COM build procedure.  No good,
  8441. forget it, it's a waste.  It doesn't run on 3/4 of the systems it needs to:
  8442. the ccopt string is just too long and can't be shortened by even one more byte
  8443. (on *some* systems but not others -- both with MultiNet!).  On the few systems
  8444. where it *does* run, we get sharable library image mismatches, etc, so I give
  8445. up.  Will stick with the makefile.  23 Sep 96.
  8446.  
  8447. Added Unicode support for Windows & OS/2 terminal emulators.  Many modules.
  8448. 1-5 Oct 96.  The new list of terminal character sets supported by the Windows
  8449. and OS/2 versions is (* = new):
  8450.  
  8451.   ascii
  8452. * arabic-iso
  8453.   british
  8454.   canadian-french
  8455.   cp437
  8456.   cp850 (Western Europe / Roman)
  8457.   cp852 (Central Europe / Roman)
  8458. * cp857 (Turkish)
  8459.   cp862 (Hebrew)
  8460. * cp864 (Arabic)
  8461.   cp866 (Cyrillic)
  8462. * cp869 (Greek)
  8463.   cyrillic-iso
  8464.   danish
  8465.   dec-mcs
  8466. * dec-special
  8467. * dec-technical
  8468.   dg-international
  8469.   dutch
  8470.   finnish
  8471.   french
  8472.   german
  8473. * greek
  8474.   hebrew-7
  8475.   hebrew-iso
  8476.   hp-roman8
  8477. * hungarian
  8478.   italian
  8479. * japanese-roman
  8480. * katakana
  8481.   koi8
  8482.   latin1
  8483.   latin2
  8484. * latin3
  8485. * latin4
  8486. * latin5
  8487.   macintosh-latin
  8488.   nextstep
  8489.   norwegian
  8490.   portuguese
  8491.   short-koi
  8492.   spanish
  8493.   swedish
  8494.   swiss
  8495.  
  8496. Added three new character-set routines, to hide differences between Unicode
  8497. and regular emulators: cs_is_std(), cs_is_nrc(), and cs_size().  These are
  8498. available for all but Mac (easy to add for Mac too), but used only by
  8499. Windows & OS/2 for GL/GR/G0..G3 stuff.  ckuxla.c, 5 Oct 96.
  8500.  
  8501. Added support for pipename to named-pipe entries in net directory.  Found a
  8502. bug in the SuperLAT password processing from the net directory, and fixed it.
  8503. ckuus7.c, 5 Oct 96.
  8504.  
  8505. Finally got rid of the old and stupid feature that '\' was a line continuation
  8506. character.  It was interfering badly with Windows and OS/2 commands such as
  8507. "cd d:\".  Now only '-' can be used for this.  ckucmd.c, ckuus5.c, 5 Oct 96.
  8508.  
  8509. Bug fix from Jeff in parsing of "set command more-prompting".  Various HELP
  8510. text touches.  ckuus*.c, 5 Oct 96.
  8511.  
  8512. Added -B switch == "force background", e.g. for running in batch; it's the
  8513. opposite of -z "force foreground".  Added support for it to DG con*() modules,
  8514. in response to a complaint from a user that the DG version errored out when
  8515. run in batch ("illegal file type").  To test: "qb kermit -y test.ksc" (should
  8516. fail); "qb kermit -By test.ksc" (should work).  Can't test it here: "queue
  8517. does not exist".  ckuusy.c, ckdtio.c, 6 Oct 96.
  8518.  
  8519. Changed INPUT to treat a timeout of 0 as 0 (sort of), and a negative number as
  8520. "infinite", i.e. wait forever.  ckuus4.c, 6 Oct 96.
  8521.  
  8522. In response to a complaint, verified that C-Kermit (at least the UNIX version)
  8523. did not do anything to the flow control setting of the local terminal when in
  8524. command mode, but it *does* disable Xon/Xoff in CONNECT mode (for EMACS,
  8525. XMODEM, etc).  Nothing much we can do about this without changing the APIs
  8526. to the ck?tio.c modules for all versions, adding new commands to control it
  8527. (that nobody will understand), etc.
  8528.  
  8529. VMS saga, cont'd:
  8530.  
  8531. Installed and slightly updated new CKVKER.COM from Joellen Windsor at the U of
  8532. Arizona.  Works OK on local VAX.  Tried building on SNEEZY@USU (Alpha, DECC
  8533. 5.0, TGV 3.5B) got compile errors in DEC C header-file prototypes: "Ill-formed
  8534. parameter type list" for chmod, creat, etc.  Also, "missing type specifier"
  8535. for dev_t, off_t, etc.  I'm not going to worry about it; it builds fine at
  8536. other sites with similar configurations.  It does seem to build OK on
  8537. SLEEPY@USU (with DECC 4.0) except for some complaints regarding args to
  8538. get/setsockopt(), and implicit declaration of sleep().
  8539.  
  8540. On NETLAB, the oldest configuration I have access to, it complains during
  8541. the link step that it can't find SYS$COMMON:[SYSLIB]VAXCTRLG.OLB or
  8542. VAXCRTL.OLB as input, but still produces seemingly OK-working executables.
  8543.  
  8544. On SPCVXA, compilation of CKVFIO.C failed because "xab$b_bkz" is not a member
  8545. of "xaball_ofile".  Tough, I'm not going to worry about it.
  8546.  
  8547. After all this, noticed that Martin Zinser had sent in a few more VMS changes.
  8548. Applied the ones that didn't look too dangerous, added the others strictly as
  8549. comments.  They all had to do with data types -- casts, size_t vs int, etc.
  8550. Rebuilt in a few places, and all seems OK.
  8551.  
  8552. On BATON (VAX, VMS 6.2, DECC 5.3), I get this:
  8553.  
  8554.   $ @ckvker
  8555.   Building WERMIT with  MultiNet network support at  6-OCT-1996 15:57:29.69
  8556.   %DCL-W-ACTIMAGE, error activating image DECSET$ENVMGRSHR
  8557.   -CLI-E-IMGNAME, image file DSA100:[SYS0.SYSCOMMON.]-
  8558.   [SYSLIB]DECSET$ENVMGRSHR.EXE;3
  8559.   -SYSTEM-F-PRIVINSTALL, shareable images must be installed to run privileged-
  8560.    image
  8561.  
  8562. unless I tell CKVKER.COM to bypass MMS, then it's OK.  All told, the new
  8563. CKVKER.COM works everywhere I was able to try it, both with and without MMS.
  8564.  
  8565. ---Beta.030---
  8566.  
  8567. Learned that HP-UX 10.10 and later needs the newterm() call in curses, whereas
  8568. the 10.00 version did not need it and did not make it.  Without this, after
  8569. the first fullscreen file transfer display, the terminal modes are messed up
  8570. (no echo, etc) -- to be continued...
  8571.  
  8572. ckutio.c in IRIX 6.0 needed to include <sys/time.h> for the struct timezone
  8573. definition.  Also discovered that later versions of IRIX did not have BIGBUFOK
  8574. defined; changed this to depend on the manifest constant "sgi".  10 Oct 96.
  8575.  
  8576. Added -mips2 switches to IRIX 5.x and 6.x makefile entries, to prevent code
  8577. from being generated for higher-level CPUs that some people don't have.
  8578. 10 Oct 96.
  8579.  
  8580. Fixes for Amiga from Steve Walton.  ckuus5.c, ckusig.c, 14 Oct 96.
  8581.  
  8582. Added SET NET TES32 for Emulex TES-32, which uses the SuperLAT interface
  8583. (K95).  ckuusr.c, 14 Oct 96.
  8584.  
  8585. Fix for SET TERM VIDEO-CHANGE (K95) from Jeff.  ckuus7.c, 14 Oct 96.
  8586. Integrated Jeff's other changes too.
  8587.  
  8588. OS-9 setsockopt() fix from JE Jones.  ckcnet.c, 14 Oct 96.
  8589.  
  8590. Integrated Plan 9 support from Nigel Roles.  So far, serial only.  Many
  8591. modules, plus a new makefile, ckpker.mk (and product code "p").  14 Oct 96.
  8592.  
  8593. Fixed rlog_ini() to send terminal type and speed also for UNIX, VMS, etc.
  8594. ckcnet.c, 15 Oct 96.  Sending the speed required addition of a new ck*tio.c
  8595. routine, congspd().  It should only be called within #ifdef CONGSPD..#endif,
  8596. which is defined in ckcdeb.h.  This was done for UNIX and VMS.  Win32 and
  8597. OS/2 don't need it (the concept of console speed is irrelevant); the others
  8598. don't need it because they don't support Rlogin.
  8599.  
  8600. Fixed help text for SET EXIT WARNING to say the default is ON (not OFF).
  8601. ckuus2.c, 15 Oct 96.
  8602.  
  8603. From Carl Friedberg: added missing speeds to the VMS ttspeeds[] struct,
  8604. so "set speed <big-number>" would actually work.  ckvtio.c, 15 Oct 96.
  8605.  
  8606. Added HP-UX makefile refinements from Peter Eichhorn, and then added
  8607. specific HP-UX 10.xx differentiation for all xx's, since it now seems we
  8608. need separate builds for each due to curses incompatibilities.  makefile,
  8609. 19 Oct 96.
  8610.  
  8611. HP-UX 10.00, no optimization:   Builds OK, curses OK.
  8612. HP-UX 10.00, with optimization: Builds OK, curses OK.
  8613. HP-UX 10.10, with optimization: Builds OK, curses OK.
  8614.  
  8615.            Runs on.......
  8616. Built on   10.00    10.10    10.20    10.30
  8617. 10.00       yes      No (*)    ?        ?
  8618. 10.10       No (**)  Yes       ?        ?
  8619. 10.20        ?        ?        ?        ?
  8620. 20.30        ?        ?        ?        ?
  8621.  
  8622. (*)  Invalid version for shared lib /usr/lib/libc.1, IOT trap (core dumped)
  8623. (**) Can't open shared library: /usr/lib/libxcurses.1, Abort (core dumped)
  8624.  
  8625. So it would seem we need a separate binary for each HP-UX 10.xx release.
  8626.  
  8627. On the other hand...  When tracking down another one of Peter Eichhorn's
  8628. reports -- namely that when the terminal type is not defined, that Kermit
  8629. doesn't run because initscr() exits, as documented, when the tgetent() buffer
  8630. doesn't have good stuff in it.  Now I think this was because I changed the
  8631. default file transfer display to fullscreen, but never executed the code that
  8632. calls tgetent() because that is called only when a SET TRANSFER DISPLAY
  8633. FULLSCREEN command is given.  So now I copied that code to a new routine,
  8634. fxdinit() in ckuusx.c, where all the other curses material is, plugged some
  8635. stupid holes, made the tgetent() buffer bigger to ward off memory leaks, etc,
  8636. and in main() call the new routine just after sysinit().  19 Oct 96.
  8637.  
  8638. John Santos discovered that "kermit -j blah" failed if there was no network
  8639. directory.  Reason: a variable was not initialized.  Fixed in ckuusy.c,
  8640. 19 Oct 96.
  8641.  
  8642. Paul Kimoto discovered that when C-Kermit was receiving a file sent by another
  8643. C-Kermit which was sending from stdin, the modtime of the new file would be
  8644. set to -1 (Dec 31, 1969), and he found this was caused by not testing the
  8645. return code from zstrdt(), an "internal consolidation" routine.  ckufio.c,
  8646. 19 Oct 96.
  8647.  
  8648. Lucas Hart suggested that SET TERMINAL TYPE be allowed in UNIX, VMS, etc,
  8649. but it should just print a message.  Added, ckuus7.c, 19 Oct 96.
  8650.  
  8651. Fixed a bug that has been bugging me for years.  On some Telnet connections,
  8652. it is necessary to SET PARITY SPACE for file transfer to succeed (because the
  8653. Telnet connection itself is not 8-bit clean).  However, once you transfer a
  8654. file, Telnet negotiations don't work any more -- even though they did before.
  8655. This is most often noticed after logging out and then trying to log back in
  8656. again (since Telnet negotiations *usually* happen only at the beginning of a
  8657. session).  The fix was rather complicated, involving most tt*() routines in
  8658. ckutio.c, plus ckcgetc() in ckucon.c, plus calls to tn_doop() in ckucon.c.
  8659. Basically, parity-stripping was moved up to a higher level.  We always do it
  8660. during packet operations, but, on TELNET connections only, in CONNECT mode
  8661. (and INPUT, etc) we do it only after first checking for IAC and passing
  8662. negotiations along to tn_doop().  20 Oct 96.
  8663.  
  8664. Made the analogous changes in the VMS version: ckvtio.c, ckvcon.c, 20 Oct 96.
  8665. This is supposed to cure the problems with transferring files over Telnet
  8666. (and other) connections that some people say started in Beta.030.  Time will
  8667. tell.
  8668.  
  8669. Fixed a couple misplaced #ifdefs, noticed by Mike Long.  ckudia.c, ckuus5.c,
  8670. 20 Oct 96.
  8671.  
  8672. Added additional #ifdefs needed for supporting DECC in UNIX (e.g. Digital
  8673. UNIX 4.0) as well as VMS.  ckcdeb.h, ...  20 Oct, 96.
  8674.  
  8675. Added a new makefile entry and symbol for Digital UNIX 4.0, which has a couple
  8676. crucial differences from 3.2, pointed out by Lucas Hart.  Used the symbol to
  8677. eliminate problems in the select() and getpgrp() calls in ckutio.c, etc.
  8678. Tested on 3.2 OK, needs testing on 4.0.  20 Oct 96.
  8679.  
  8680. Added a few more #ifdefs for HP-UX 10.xx differentiation, built a new version
  8681. on 10.10 with no complaints (except for a couple "optdrivers", which are to
  8682. be expected).  20 Oct 96.
  8683.  
  8684. Tons of risky changes for VMS:
  8685.  
  8686.  . Rearranged CKVKER.COM because Hunter Goatley said that
  8687.    TCPWARE:UCX$IPC.OLB/LIBRARY had to come before SYS$LIBRARY:VAXCRTL.OLB/LIB
  8688.    otherwise the linker can't resolve the VAXC$ socket routines referenced in
  8689.    UCX$IPC.OLB.
  8690.  
  8691.  . Fixed various typos in CKVKER.COM, including one that killed execution
  8692.    for CMU/Tek (an extraneous left paren in a linker statement).
  8693.  
  8694.  . All sorts of casts-within-ifdefs, too numerous to mention, mostly in
  8695.    ckcnet.c, and involving select() and its friends.
  8696.  
  8697.  . Fixes from John Santos for VMS7.0/UCX4.1/DECC5.3 -- shut up the compiler
  8698.    about redefining bzero & bcopy.  socket_ioctl() pointer/mismatch/casts in
  8699.    ckcnet.c, linker complaints about several CC$$blah_blah_blah() routines,
  8700.    etc, resulting in nonfunctional TELNET.
  8701.  
  8702.  . Still doesn't build (for anybody) with CMU/Tek.  And Mike O'Malley is gone.
  8703.  
  8704.  . Reportedly there is still a problem inhibiting break-through writes
  8705.    (broadcast messages).  This is evidently because the ttbin() routine
  8706.    does not call the system at all if it is a network connection.  But it's
  8707.    been this way for a long time -- I hesitate to change it.  But on the
  8708.    other hand, maybe some of these items (flow control?) besides breakthru
  8709.    are needed.  Who's to say which are needed, and which will cause trouble
  8710.    if we try to use them?
  8711.  
  8712.  . On VAX UCX, Telnet connections would not go thru.  The TCP port was
  8713.    byte-swapped.  Didn't we just fix this???  Yes -- Bernie V took out the
  8714.    htons() call.  But he was using an Alpha, I'm using a VAX.  So I put
  8715.    htons() back for the VAX, kept it out for the Alpha.  Search for
  8716.    DO_HTONS in ckcnet.c.
  8717.     
  8718.  . Added a VMS-specific test to hupok() to skip asking for OK if running in 
  8719.    batch.  Should be harmless enough.  ckuus3.c, 20 Oct 96.
  8720.  
  8721. Result (after a lot of corrections) compiles and makes a Telnet connection
  8722. on my UCX MicroVAX.  Probably breaks everything else on earth.  20 Oct 96.
  8723.  
  8724. In VMS, typing Ctrl-Z to exit-warning prompt caused an unbreakable infinite
  8725. loop.  getyesno() was not allowing for EOF.  Fixed in ckuus3.c, 21 Oct 96.
  8726.  
  8727. The curses changes from Oct 19 lived up to their name, no surprise.  The
  8728. problem was, I moved code from a module that did not #include <curses.h> to
  8729. one that did, and so the prototype for tgetent() was causing all sorts of
  8730. problems, so I removed it for all but VMS with DECC -- and it might not even
  8731. be needed there    (yes, it is needed there).  ckuusx.c, 21 Oct 96.
  8732.  
  8733. I got sick of all the pointer mismatches, etc, coming out of the new SET TCP
  8734. (linger, keepalive, etc) support code.  For example, a certain Alpha with TGV
  8735. and DECC complains that getsockopt(...,&x) is being called with &x instead of
  8736. just x, EVEN THOUGH it's supposed to return its result in x (grrrrrrrr).  So I
  8737. made a compile time option, NOTCPOPTS, to make it all go away.  Defined
  8738. NOTCPOPTS for CMU/Tek (where they compile but don't work) and Alpha/TGV (where
  8739. they don't compile, even though they do on VAX/TGV).  We didn't have this
  8740. stuff before, we can live without it now.  SHOW FEATURES shows NOTCPOPTS if
  8741. defined.  Many modules, 21 Oct 96.  Tested the above on the aforementioned
  8742. recalcitrant system, and now it compiles and links just fine, and even makes
  8743. Telnet connections and transfers files.  Hallelujah.
  8744.  
  8745. Finally got the latest sources to build on VAX/VMS5.4/TGV3.3/VAXC3.1 (after
  8746. some help from Joellen with the CKVKER.COM file), and glory be, it can
  8747. transfer files without having to SET PARITY SPACE.  So maybe I fixed it.
  8748.  
  8749. Then again, maybe not -- two reports came in to the contrary only minutes
  8750. after the above entry; one applies to a VMS/UNIX serial connection, the other
  8751. to a VMS/VMS Telnet connection.  Many hours later... extensive testing and
  8752. analysis showed that the real problem was that VMS C-Kermit simply could not
  8753. receive files.  It could send just fine, but not receive.  Debug logs showed
  8754. incoming data packets badly mangled.  Comparison of a pre-weekend version of
  8755. ckvtio.c (when I made the parity fixes) and today's version turned up
  8756. virtually no differences outside of the parity-related code.  Close
  8757. examination of that code showed that in ttinc() I was using an unsigned char
  8758. variable where an int was called for.  And if ttinc() doesn't work right, you
  8759. might as well close up shop and go home.  But no, that was would have been too
  8760. easy...  Gradually, bit by bit, I backed off on the parity changes.  Now we
  8761. can receive files again, but need to SET PARITY SPACE, so we're back where we
  8762. were last week.  More hours later...  It seems that when a character comes in
  8763. that has its high bit set, and it is returned by ttinc(), netinc(), or
  8764. txbufr(), to ttinl(), it gets its sign extended, and so makes it look like
  8765. there was a timeout, causing ttinl() to fail.  And yet, there is NO PLACE
  8766. where any of these routines returns a character without ANDing it with 0xff or
  8767. 0x7f.  Real full-width negative numbers are returned only as failure codes.
  8768. I'm beginning to smell a DECC rat.  Finally, I went through all those routines
  8769. and found all the places where they "return(c & 0xff);" (or whatever) and
  8770. changed them all to "return((unsigned)(c & 0xff));".  Now it works again --
  8771. even VMS-to-VMS.  21 Oct 96.
  8772.  
  8773. Applied some of yesterday's lessons to ckutio.c -- routines such as coninc()
  8774. and ttinc() that can return either a character value or a negative number
  8775. all need this treatment.  22 Oct 96.
  8776.  
  8777. Ditto for ckvtio.c -- put casts into contti(), coninc(), etc.  22 Oct 96.
  8778.  
  8779. Fixes to CKVKER.COM from Joellen.  22 Oct 96.
  8780.  
  8781. Updates to CKVKER.HLP, CKVKER.BWR, CKVINS.DOC.  22 Oct 96.
  8782.  
  8783. Made PAUSE/SLEEP, if it is interrupted by an ordinary character from the
  8784. keyboard, read one character (it knows at least one is there), so a succession
  8785. of PAUSEs won't all be interrupted by the same character -- this was causing
  8786. some scripts to fail.  Also, MSK does it this way.  22 Oct 96.
  8787.  
  8788. Fixed #if (__DECC_VER>=5000000) constructions on advice from John Santos on
  8789. (a) the format of the version number (= vvuuteeee) and (b) the fact that the
  8790. __DECC_VER symbol is not available prior to DECC 5.0, so a fat lot of good it
  8791. does.  22 Oct 96.
  8792.  
  8793. Hunter Goatley discovered that VMS-VMS labeled transfers resulted in the
  8794. transferred file being lost, oops.  My fault.  The edit of 22 Sep 96 was
  8795. slightly off-base.  ckvfio.c, 22 Oct 96.
  8796.  
  8797. Added a new command, EIGHTBIT, which is simply shorthand for SET TERM BYTE 8,
  8798. SET COMMAND BYTE 8, SET PARITY NONE -- I got tired of explaining to people
  8799. why they needed three commands for this.  ckuusr.[ch], ckuus2.c, 23 Oct 96.
  8800.  
  8801. BeBox DR8 needs alarm() definition removed.  New BE_DR_7 symbol created for
  8802. alarm() related material, and a separate makefile entry added.  ckutio.c,
  8803. makefile, 24 Oct 96.
  8804.  
  8805. Many statements of the form: "return((tn_sopt(WONT,x) < 0) ? -1 : 0);"
  8806. were turned into "if (tn_sopt(WONT,x) < 0) return(-1); else return(0);"
  8807. to allow the use of breakpoints.  ckcnet.c, 24 Oct 96.
  8808.  
  8809. Changes from Jeff to let the C-Kermit Telnet client talk to the BeOS DR8
  8810. telnetd, which is badly broken -- recovery from malformed subnegotiations,
  8811. etc.  ckcnet.c, 24 Oct 96.
  8812.  
  8813. A couple minor #ifdef and makefile tweaks for Digital UNIX 4.0.
  8814. ckcdeb.h, makefile, 25 Oct 96.
  8815.  
  8816. New CKVKER.COM and CKVKER.MMS from Joellen; allows multiple simultaneous
  8817. builds from the same source files into different target directories.
  8818. 25 Oct 96.
  8819.  
  8820. With help from Lucas Hart, John Santos, Joellen, and info from Patty Chien,
  8821. was able to juggle #ifdefs to get successful compilation -- for the very first
  8822. time -- on just about every combination of DECC version and Multinet version.
  8823. The horrible problems that happened before all revolved around <sys/types.h>:
  8824. it was not being included, or there were conflicts between the Multinet
  8825. version and the DECC version, or it was being included twice, etc etc.
  8826.  
  8827. Added prototype for sleep() in ckcfns.c, needed for DECC versions prior to
  8828. 5.2.  Tested with DECC 4.0, 5.0, 5.2, 5.3.  ckcfns.c, 25 Oct 96.
  8829.  
  8830. Added static char sccsid[] to ckcmai.c, which works with some versions of
  8831. SCSS "what" (e.g. on HP-UX) but not others (e.g. SunOS, because we don't
  8832. really use SCCS).  26 Oct 96.
  8833.  
  8834. Used my brain plus evidence from Peter Eichhorn and Chuck Fuller to figure out
  8835. what is going on with HP-UX 10.10 and curses -- the curses library has a
  8836. select() routine in it!  Whenever we call select(), we get the wrong select
  8837. routine, and C-Kermit hangs or dumps core.  Sent a report off to HP.  Added
  8838. additional debugging statements to curses-calling code in ckuusx.c; made sure
  8839. we were checking in advance for null pointers, etc -- we were.  The place
  8840. where it hangs is when printw() is first called.  ckuusx.c, 26 Oct 96.
  8841.  
  8842. Fixed a bad bug in \freplace() that had been there forever; namely, when the
  8843. match string and the replacement strings were different lengths, the result
  8844. string could be truncated (if there were no matches) or could have junk
  8845. appended to it (if there were matches).  ckuus4.c, 26 Oct 96.
  8846.  
  8847. Another #ifdef adjustment to ckcnet.h for DECC and VMS 7.0, because in
  8848. <strings.h> (which exists only for DEC C >= 5.2), bzero and bcopy are declared
  8849. only for OpenVMS >= 7.0, from Lucas Hart.  26 Oct 96.
  8850.  
  8851. Working on VMS C-Kermit problem with re-CONNECT-ing to a Telnet host that
  8852. had previously closed the connection.  This should open a new one, but it
  8853. never has.  Added debugging statements, tried lots of experiments.  Found
  8854. that various VMS routines, including ttchk(), nettchk(), ck_cancio(), 
  8855. contti(), etc, did not check for "connection not open" before calling the
  8856. system.  Each time I added one of these checks, I got a little farther, but
  8857. only to reveal another gotcha.  To be continued...  26 Oct 96.
  8858.  
  8859. Changes for BEBOX to ckcnet.h, to let it use the TCPIPLIB code.  27 Oct 96.
  8860.  
  8861. Hellmuth Michaelis at Hanseatischer Computerservice GmbH in Hamburg pointed
  8862. out that HP-UX 10.10 and above still have the old curses library ("HP curses",
  8863. the one that works) in /usr/lib/libHcurses.*.  libxcurses turns out to the new
  8864. UNIX95 (i.e. "Buzzword-1.0 Compliant") version, full of bugs.  Linking with HP
  8865. curses in HP-UX 10.10 and above should fix all the horrible problems on
  8866. unpatched HP-UX systems.  Makefile entries amended to do that; testing needed.
  8867. 27 Oct 96.
  8868.  
  8869. David-Michael Lincke at the U of St Gallen in Switzerland said to remove
  8870. "LIBS=-lBSD" from the HP-UX 10.xx entries because "it is not required for
  8871. using sockets" [it used to be...] "The only thing it really does is give you
  8872. BSD signal semantics but at the price of messing up lots of other things -- a
  8873. library clearly to be avoided."  So I removed -lBSD from the 10.xx entries,
  8874. built and tested on 10.00 and 10.10.  It linked and executed just fine -- made
  8875. telnet connections, transferred files with fullscreen display, handles SIGINT
  8876. interrupts OK, etc, and is about 4K smaller.  Makefile, 27 Oct 96.
  8877.  
  8878. Tried the same on HP-UX 9.05, and it seemed fine, so removed "-lBSD" from LIBS
  8879. in the HP-UX 9.xx makefile entries also, with a comment to put it back in case
  8880. of trouble.  27 Oct 96.
  8881.  
  8882. Tried making an HP-UX 10.00 statically linked version, but I must not have
  8883. used the right magic -- it still comes up with "shl_findsym" and "shl_load"
  8884. undefined.  If it had worked, maybe we would have had one binary for all
  8885. versions.  27 Oct 96.
  8886.  
  8887. Changed the VMS version of rlog_ini() to lowercase the username, like UCX
  8888. does (since VMS usernames are uppercase, but case-independent), suggested by
  8889. Lucas Hart.  ckcnet.c, 27 Oct 96.
  8890.  
  8891. Amended some comments in CKVKER.COM at Lucas's suggestion.  27 Oct 96.
  8892.  
  8893. Lucas Hart reported that the VMS Kermit server was returning REMOTE DIRECTORY
  8894. (etc) listings with linefeeds between each line, but no carriage returns,
  8895. resulting in the infamous stairstep effect when (e.g.) MS-DOS Kermit was the
  8896. client.  Fixed {snd,nxt}{dir,del,etc} routines to put carriage return and
  8897. linefeed at the end of each line, and also reformatted the listings to be less
  8898. USA/DOS like; dates are now shown in Julian numeric format rather than with
  8899. English month names, <DIR> is now shown as (directory), etc, and I removed
  8900. extraneous blank lines and gratuitous spacing wherever I could.  ckcfns.c,
  8901. 27 Oct 96.
  8902.  
  8903. Noticed that the VMS C-Kermit server, when executing REMOTE DIRECTORY, did not
  8904. (a) report that a directory file was a directory, and (b) did not strip off
  8905. the pathname from each file like the other versions do.  I fixed (b) in
  8906. nxtdir(), ckcfns.c, 27 Oct 96.
  8907.  
  8908. (a) required adding code to zchki() to report that SYS$BLAH:[USER]BLAH.DIR;1
  8909. is a directory (if it is, according to stat() -- I don't know the right
  8910. incantations to ask RMS, and evidently nobody else does either, according to
  8911. the comments in zchki()).  To check the results of stat() I use S_ISDIR(),
  8912. which is not only the proper way to do it, but also apparently the only
  8913. portable way -- and note that although VMS lists stat() as a POSIX.1 function,
  8914. and POSIX.1 says that S_ISDIR() is a macro, you can't check whether it is
  8915. defined with #ifdef because, at least in DECC 5.3, it is not a macro even
  8916. though it is there.  Note: I did NOT do anything about .DIR files in isdir(),
  8917. because isdir() is mainly used to tell whether its argument string is the name
  8918. of a directory that can be used in (say) a CD command.  But [USER]BLAH.DIR;1
  8919. does not fit that requirement.  ckvfio.c, 27 Oct 96.
  8920.  
  8921. Oops, S_ISDIR() is not defined in DECC 4.0.  I knew it was too easy...  It
  8922. is defined in DECC 5.0 and 5.3, so presumably also for 5.2.  It is not defined
  8923. in VAXC 3.1.  No way to test for VAX C 3.2. etc etc, #ifdef city, revisited.
  8924. See them in zchki(), ckvfio.c, 27 Oct 96.
  8925.  
  8926. Noticed that IF DIRECTORY DISK1:[FOO]BLAH.DIR;1 didn't work in VMS.  Made
  8927. IF DIR call zchki() for VMS rather than isdir().  ckuus6.c, 27 Oct 96.
  8928.  
  8929. Also noticed that you could tell VMS C-Kermit to SEND $DISK1:[FOO]BLAH.DIR;1,
  8930. and by golly it would send it -- the directory file itself.  The addition to
  8931. zchki() takes care of this.
  8932.  
  8933. Back to last night's project.  Discovered that part of the problem with VMS
  8934. C-Kermit issuing those "a blah connection appears to be open..." messages is
  8935. that it was never built to allow the mainline code access to the ttyfd
  8936. variable.  But there's no reason not to, except maybe that you can't really
  8937. use it for anything, so I added it.  ckcdeb.h, 27 Oct 96.  (But it didn't help
  8938. -- ttyfd is not getting set back to -1 -- but that's a good lead!)
  8939.  
  8940. So when I left off, I had VMS C-Kermit detecting when the remote Telnet host
  8941. broke the connection, but (a) it would not finish popping back to the prompt
  8942. until the user typed a character (a dead giveaway), and (b) you could not
  8943. CONNECT back to the host make a new connection.  I can't really list all the
  8944. changes I made, but they boil down pretty much to: (1) have all tt*() routines
  8945. in ckvtio.c check that ttyfd is > -1 before proceeding AND if it's not a
  8946. network connection, also that ttychn is not 0; (2) make sure that contti()
  8947. always returns appropriately, in its own insane way; and (3) in the CONNECT
  8948. module, if contti() has returned in a way that indicates the connection is
  8949. broken, call ttclos() to close our end of the connection and set ttyfd back to
  8950. -1, and so on, and have ttclos() and netclos() call ck_cancio() to make sure
  8951. all pending reads are canceled, so that a subsequent CONNECT command will find
  8952. the connection not open and therefore will open a new one.  It works in UCX
  8953. 2.0 and various Multinets where I tried it.  The usual suspects, 27 Oct 96.
  8954.  
  8955. Replaced memmove() in ckvcvt.c with a stupid homegrown routine, to get rid
  8956. of DECC 5.3 warnings on VAX/VMS 7.0.  28 Oct 96.
  8957.  
  8958. Fixed \freplace() again -- it was not always null-terminating its result.
  8959. ckuus4.c, 28 Oct 96.
  8960.  
  8961. Peter Eichhorn discovered an obscure bug that had always been in the command
  8962. parser.  If you type "get" (to start a multiline-GET command), then if you
  8963. type a trailing space on the remote filename, then delete it, then type
  8964. return, the command parser ignored the whole thing.  cmtxt() is used to parse
  8965. the remote filename (since we can't parse it locally as a filename, and since
  8966. it might contain spaces.  This was never observed before, because this is one
  8967. of the few places where cmtxt() parses a whole line.  Usually cmtxt() is
  8968. called only after a keyword has already been entered into the command buffer
  8969. (e.g. "echo text").  It turns out the same bug affected ASK and ASKQ.  The fix
  8970. was easy -- in cmtxt(), just reset the pointers in the reparse case.
  8971. ckucmd.c, 28 Oct 96.
  8972.  
  8973. This made me look at GETOK for some reason.  It had similar problems, but
  8974. for a different reason.  Fixed in ckuus6.c, 28 Oct 96.
  8975.  
  8976. Mike Freeman reported that VMS serial connections don't work after last
  8977. night's changes; Carl Friedberg reported the same for LAT.  Evidently I had
  8978. failed to apprehend the significance of the schism between ttyfd and ttychn.
  8979. One must check ttyfd for positiveness on network connections, and one must
  8980. test ttychn for greater-than-zeroness on serial and LAT connections.
  8981. ckvtio.c, 28 Oct 96.
  8982.  
  8983. The "perror" to print the system error message was #ifdef'd away.  Terry
  8984. and several others suggested I put it back.  It seems to work fine -- I wonder
  8985. why it was I took the trouble to disable it -- there must have been a reason.
  8986. ckuus7.c, 29 Oct 96.
  8987.  
  8988. Changed rlogin_ini() to use the local user ID for the server user ID if no
  8989. server user ID was given.  In VMS, as before, it lowercases the the user ID if
  8990. it was obtained from the environment, but leaves it alone if user gave it.
  8991. Same treatment for terminal type, plus in VMS, if it ends with "-80" or
  8992. "-132", the width info is chopped off.  I added the -width chopping to Telnet
  8993. negotiations too.  ckcnet.c, 29 Oct 96.
  8994.  
  8995. Added Lucas's change to ckcnet.h, in which the third arg in the ioctl
  8996. prototype is "void *" for DECC, and left as "char *" for VAXC.  29 Oct 96.
  8997.  
  8998. I still don't know what to do about the conflict between our built-in ioctl()
  8999. and the one that DEC supplies in the RTL in VMS 7.0.
  9000.  
  9001. Fixed a typo in last night's rlogin changes (p = tolower(*p) should have
  9002. been (*p = ..., oops).  ckcnet.c, 30 Oct 96.
  9003.  
  9004. Another minor #ifdef correction to ckcnet.h for DECC vs VAXC in the prototype
  9005. for ioctl() (from Lucas H), 30 Oct 96.
  9006.  
  9007. Made HP-UX 10.00 ANSI compiler stop complaining about select() call in 
  9008. msleep() (args are "int *" in 10.00, but "fd_set *" in 10.10++).  ckutio.c,
  9009. 30 Oct 96.
  9010.  
  9011. Figured out why HP-UX transfers over a local Ethernet are so much slower than
  9012. they should be (it's telnetd or the pty driver) -- see HP-UX section in
  9013. ckuker.bwr.  30 Oct 96.
  9014.  
  9015. The default initial dynamic packet timeouts were way too conservative so
  9016. I lowered them from 15 and 40 seconds to 8 and 15.  This was all too evident
  9017. if you had some parameters set so wrong the transfer could not start -- it
  9018. would take *for*ever* to give up.  ckcker.h, 30 Oct 96.
  9019.  
  9020. Fixed a typo in ckuusx.c that wrecked non-TCP/IP builds (#ifndef should have
  9021. been #ifdef...).  31 Oct 96.
  9022.  
  9023. Fixed a typo in ckuus6.c that prevented successful builds when CK_RECALL was
  9024. not defined.  31 Oct 96.
  9025.  
  9026. A new revised, expanded, and fully tested section on DECservers and LAT for
  9027. ckvins.doc, thanks to many people for their help.  31 Oct 96.
  9028.  
  9029. Discovered that all those "#if __DECC_VER > blah" statements, etc, that were
  9030. added various header files are (as I feared) fatal to at least one C
  9031. preprocessor: the one on AOS/VS -- even though they are within VMS #ifdefs.
  9032. Because, of course, the preprocessor must look at all material that's inside
  9033. these #ifdefs to find the matching #endif.  Removed all #if statements; there
  9034. was one in ckcnet.h and one in ckcdeb.h, but now the VMS build procedure needs
  9035. to be changed to define a special symbol if the VMS version is 7.0 or higher.
  9036. 1 Nov 96.
  9037.  
  9038. Compiled and linked successfully on PDP-11 BSD 2.11, but the data+bss had
  9039. grown by a few K and so now stdio didn't have any buffers and so i/o was
  9040. painfully slow.  #ifdef'd away a few more messages, buffers, etc.  While
  9041. trying to #ifdef away the XYZMODEM support, discovered a couple references to
  9042. XYZMODEM variables and symbols that were unguarded by CK_XYZ and fixed them.
  9043. ckcdeb.h, ckcker.h, ckcmai.c, ckuus3.c, ckuus7.c, ckucon.c, 1 Nov 96.
  9044.  
  9045. Defined NOCKXYZ for pdp11 in ckcdeb.h and rebuilt, but it's still 2K too
  9046. big.  Cut back on various sizes of things defined in ckcker.h...  Eventually
  9047. got it to build OK.  1 Nov 96.
  9048.  
  9049. Learned that the format of the PID string in the UUCP lock file in the "Linux
  9050. File System "Standard"" version 1.0 is different from the one in version 1.2.
  9051. Added Yet Another Ifdef to account for this, plus instructions in the makefile.
  9052. ckutio.c, 5 Nov 96.
  9053.  
  9054. In adding the QUIET and VERBOSE options to SET DIAL CONNECT ON or AUTO, I made
  9055. two mistakes: (1) I passed the wrong variable (dialcon rather than dialcq) to
  9056. doconect(), and (2) in doconect(), I did not restore the "quiet" flag
  9057. immediately after *each* return from conect(), so if an APC or autodownload
  9058. occurred, the quiet flag might have remained altered by SET DIAL CONNECT
  9059. command when it should not have been, resulting (e.g.) in failure to put up
  9060. the file transfer display.  Also, at Jeff's suggestion, removed "quiet" from
  9061. the list of reasons why screen() should return.  ckuus4.c, 5 Nov 96.
  9062.  
  9063. Received a new edition of CKVKER.COM from Lucas Hart.  Cleaned up the help
  9064. text a bit and added a section to define VMSV70 if the VMS version was 7.0 or
  9065. greater, so that ckcnet.h would know whether to #include <strings.h>.  Tested
  9066. successfully on 10 different VMS platforms.  5 Nov 96.
  9067.  
  9068. Fixed some more "pointers not assignment-compatible/argument-mismatch"
  9069. warnings from HP-UX 10.20 ANSI C regarding ctime().  ckutio.c, 6 Nov 96.
  9070.  
  9071. Fixed some typos in CKVKER.COM, 6 Nov 96.
  9072.  
  9073. Added additional conditionalizing for DO_HTONS in ckcnet.c, based on TCPware
  9074. trials, from Hunter Goatley.  6 Nov 96.
  9075.  
  9076. Added -DBIGBUFOK for Linux.  Most Linux systems nowadays can afford it.
  9077. makefile, 6 Nov 96.
  9078.  
  9079. Added some #ifdefs for localtime() prototype to please HP-UX 10.20 ANSI
  9080. compiler.  ckufio.c, 7 Nov 96.
  9081.  
  9082. Backed off on yesterday's change because it broke HP-UX 10.10, 9.0, and many
  9083. others.  ckufio.c, 8 Nov 96.
  9084.  
  9085. Changes from John Santos to CKVKER.COM to accommodate CMU/Tek on VMS.
  9086. 9 Nov 96.
  9087.  
  9088. Changes from Jeff for Telnet negotiations to cover some cases that never come
  9089. up when we are a TCP client, but that need to be covered when we are a server.
  9090. ckcnet.c, 9 Nov 96.
  9091.  
  9092. Also from Jeff: A new command SET TELNET BUG BINARY-ME-MEANS-U-TOO { ON, OFF }
  9093. to let us adjust to Telnet partners that make the wrong assumption that
  9094. negotiating binary mode in one direction also enables for the other direction.
  9095. ckuus3.c, ckcnet.c, 9 Nov 96.
  9096.  
  9097. Hooked up HP-UX 10.00 to a V.34+ modem with RTS/CTS flow control at an
  9098. interface speed of 57600bps and transferred a bunch of files (Cisco 2511
  9099. terminal servers with bidirectional hardware flow control on the other end).
  9100. The connection itself was at 31200bps.  C-Kermit sent itself (the kermit
  9101. binary) at 4100 cps.  Later, on a 28800bps connection, it received a 1.2MB
  9102. compressed file at 2960 cps.  RTS/CTS was totally effective; modem lights
  9103. would blink in lockstep, and there were no retransmissions in either
  9104. direction.  SET CARRIER-WATCH ON works fine, too.  9 Nov 96.
  9105.  
  9106. Added "LNKFLAGS=-s" to sco32v5 entries -- the executable is huge without it.
  9107. Also added BIGBUFOK to CFLAGS, since most PCs running this OS are not going
  9108. to be low on memory or swap space.  makefile, 9 Nov 96.
  9109.  
  9110. Discovered that getyesno(), if given an invalid keyword as an answer (like,
  9111. say, "quit") would return rather than reprompt, and worse, it would not
  9112. restore the original prompt.  Fixed in ckuus3.c, 10 Nov 96.
  9113.  
  9114. Added "telnet bug binary-me-means-u-too" to SHOW NET.  ckuus4.c, 10 Nov 96.
  9115.  
  9116. Added an ULOGIN macro to CKERMIT.INI -- it's an all-purpose login macro for
  9117. use with services that want a user ID but not a password.  Made a sample
  9118. services directory that makes ample use of it.  Also made new sample dialing
  9119. and network directories.  10 Nov 96.
  9120.  
  9121. Updated many text files -- man page, various docs, etc.  10 Nov 96.
  9122.  
  9123. ---6.0.129 Release Candidate 1---
  9124.  
  9125. Fixed a minor glitch I introduced into the SCO ELF build by adding -s to the
  9126. base SCO OSR5 build.  JP Radley.  makefile, 11 Nov 96.
  9127.  
  9128. Changed "Kermit name" of Plan 9 makefile from ckpker.mak to ckpker.mk to
  9129. emphasize its use with "mk" rather than "make".  Nigel Roles.  11 Nov 96.
  9130.  
  9131. Nelson Beebe reported that "make next" does not work for NeXTSTEP 3.3.
  9132. I added a new makefile entry and some #ifdefs to ckcdeb.h.  11 Nov 96.
  9133.  
  9134. Makefile changes for RT PC AIX 2.2.1 and for Ultrix 4.4-4.5 from Jamie Watson.
  9135. 11 Nov 96.
  9136.  
  9137. Added explicit VOID to declaration of fxdinit() in ckuusx.c.  11 Nov 96.
  9138.  
  9139. Updated Ultrix entries from Jamie Watson, to account for Ultrix 4.4-4.5,
  9140. and give bigger optimization memory to MIPS versions.  makefile, 12 Nov 96.
  9141.  
  9142. Corrected assorted errors in cke192.doc noticed by Clarence Dold.  12 Nov 96.
  9143.  
  9144. Peter Eichhorn noticed that a lot of the compilation problems we were having
  9145. in ckufio.c were due to the fact that a variable was named tm, which is also
  9146. the name of a struct used in the same function, zstrdt().  Changed the name
  9147. of the variable to tmx.  ckufio.c, 12 Nov 96.
  9148.  
  9149. Nelson Beebe noticed that in IRIX 6.2, the argument to time() had to be cast
  9150. to time_t *, rather than long *.  ckutio.c, 12 Nov 96.
  9151.  
  9152. Some #ifdef adjustments from Jeff, various modules, 12 Nov 96.
  9153.  
  9154. Some fixes to SCO makefile entries to propagate MAKE value through nested
  9155. makes, and to add CK_WREFRESH to SCO 3.2v4.x and 3.2v5.0, from Robert Weiner.
  9156. makefile, 12 Nov 96.
  9157.  
  9158. Added comments about the default prompt containing the current directory
  9159. versus NFS-mounted disks when NFS is not responding to ckuker.bwr, suggested
  9160. by Peter Eichhorn.  13 Nov 96.
  9161.  
  9162. One of the switch statements wound up empty if TNCODE was not defined, noticed
  9163. by Ray Benoit when trying to build C-K for AOS/VS Calassic.  Fixed by moving
  9164. the #ifefs from inside to outside the switch() statement.  ckuus3.c, 13 Nov 96.
  9165.  
  9166. Ray Benoit noticed that AOS/VS C-Kermit server did not expand wildcards.
  9167. After adding a bunch of debugging statements to ckcfns.c and ckdfio.c, and
  9168. comparing with ckufio.c, I found that whoever coded iswild() for AOS/VS just
  9169. copied the UNIX version, and was not testing for AOS/VS wildcard characters.
  9170. Fixed now to test for '+' and all the other AOS/VS template characters
  9171. (+*-\^#).  Wildcard GETs work now with + and *, but not - because evidently
  9172. ckdfio.c's zxpand() does not handle it.  But "-" is equivalent to "+." so no
  9173. big deal.  ckdfio.c, 13 Nov 96.
  9174.  
  9175. New QNX makefile entries from Igor Kovalenko <infoh@wplus.net> in St Petersburg
  9176. (Petrograd/Leningrad), that work with latest Watcom C compiler, QNX 4.23, etc,
  9177. and also presumably with 9.x compilers.  Igor says the binaries should run
  9178. under QNX 4.21 and 4.22, but it hasn't been tested.  makefile, 13 Nov 96.
  9179.  
  9180. Merged in Lucas Hart's changes to support VMS 4.x and Wollongong 3.2.
  9181. Many modules, 13 Nov 96.  Also got a new version of CKVKER.COM from him.
  9182.  
  9183. Changed SET PREFIXING MINIMAL (and thus also "FAST") to prefix XON and XOFF.
  9184. So now these are unprefixed only if you explicitly unprefix them, or if you
  9185. SET PREFIXING NONE or SET CONTROL UNPREFIX ALL.  ckcmai.c, 13 Nov 96.
  9186.  
  9187. Fixes for Telnet terminal type negotiation from Jeff.  ckcnet.c, 14 Nov 96.
  9188.  
  9189. Fixed CLEAR command to return success code when it succeeds, rather than
  9190. always returning a failure code; reported by John Santos.  ckuusr.c, 18 Nov 96.
  9191.  
  9192. Changed prescan() to search the "take path" for the application file (filename
  9193. as first command line argument), if the filename is not absolute, just like
  9194. the TAKE command does.  Meaningful mainly only for Windows and OS/2, but in
  9195. UNIX and VMS (etc) this forces Kermit to look in the home directory if the
  9196. file isn't found in the current directory.  The search is done by cmifip(), a
  9197. command-parser function.  To use it, we stuff the filename into the command
  9198. buffer, followed by a couple CRs to make the function return, But first we
  9199. have to call cmdini() because the command-parsing data structures aren't set
  9200. up yet.  But that introduced all sorts of problems because cmdini also
  9201. executed the init file.  So I split cmdini() into two parts, cmdini() and
  9202. doinit(), calling each from the appropriate places, and it all seems to work
  9203. fine, at least in UNIX.  ckcmai.c, ckuus4.c, ckuus5.c, 19 Nov 96.
  9204.  
  9205. Added Cardinal modem type.  ckudia.c, 20 Nov 96.
  9206.  
  9207. Added ttres() to TRANSMIT, after it finishes and before it returns.
  9208. ckuus4.c, 20 Nov 96.
  9209.  
  9210. --- 1.1.8 ---
  9211.  
  9212. Merged in Jeff's changes: validation on TELNET NEW-ENVIRONMENT items, making
  9213. Latin-1 the default (i.e. "transparent") character set for Unicode-based
  9214. terminal emulators, etc.  ckcnet.c, ckuxla.c, ckuus7.c, 23 Nov 96.
  9215.  
  9216. Removed some unnecessary verbiage from some of the UNIX-specific version
  9217. heralds.  23 Nov 96.
  9218.  
  9219. Added a prototype for doini().  ckcker.h, 23 Nov 96.
  9220.  
  9221. Fixes to zchdir() for VMS -- preverify argument to chdir(), since calling it
  9222. with something that isn't really a directory causes a trap.  Also, whoever
  9223. wrote this routine (not me!) was writing into the buffer pointed to by the
  9224. argument string, tsk tsk.  Also... zstrip() was unconditionally throwing away
  9225. everything before the ":".  Instead of just returning an empty string in this
  9226. case, I changed it to return its original argument, on the assumption it is
  9227. either a device name or a logical name -- if it isn't, it'll be caught later.
  9228. Seems to work fine, e.g. with "receive LTA1:".  23 Nov 96.
  9229.  
  9230. New CKVKER.COM 1.14 from Lucas Hart.  24 Nov 96.
  9231.  
  9232. Added help text for SET XFER CRC, adjusted #ifdef for NOCSETS.  24 Nov 95.
  9233.  
  9234. Fixed a typo in the SCO 3.2v5 makefile entry.  24 Nov 96.
  9235.  
  9236. Defined BIGBUFOK automatically if "mips" was defined.  ckcdeb.h, 24 Nov 96.
  9237.  
  9238. Changed Ultrix entries to be called "ultrixblah" rather than "dublah"
  9239. ("du" stood for DEC Ultrix).  Changed Digital UNIX entries from dec-osf32
  9240. and dec-osf40 to du32 and du40 (so now "du" stands for Digital UNIX).  Makes
  9241. more sense in the modern world.  makefile, 24 Nov 96.
  9242.  
  9243. Added SINIX-N MIPS V5.42 entry to makefile, built & tested it successfully.
  9244. 25 Nov 96.
  9245.  
  9246. James Spath was reporting persistent core dumps from the NetBSD and FreeBSD
  9247. versions.  Turned out to be caused by the optimizer.  Removing -O from the
  9248. makefile entries fixed it.  Makefile, 26 Nov 96.
  9249.  
  9250. Added a couple #indef EXCELAN..#endif in ckcnet.c to allow compilation in
  9251. SCO Xenix 2.2.3, from William Bader, 26 Nov 96.
  9252.  
  9253. Fix to "set host blah:port", setlin(), which could dump core due to a
  9254. confluence of bugs in the C-Kermit code and the gcc implementation of strncpy.
  9255. This was the problem noted on Nov 26, not the gcc optimizer.  ckuus7.c,
  9256. 27 Nov 96.
  9257.  
  9258. FreeBSD and NetBSD makefile entries put back as they were before.  Also, the
  9259. sco32v4netgcc entry was fixed to use gcc for both CC and CC2, to add
  9260. -DDYNAMIC, and to remove -traditional, -fpcc-struct-return, and
  9261. -fstrength-reduce (from William Bader).  Also, CK_ANSIC added to SINIX entry.
  9262. 27 Nov 96.
  9263.  
  9264. Fixed some space-vs-tab errors in the makefile.  27 Nov 96.
  9265.  
  9266. Due to an #ifdef fumble in the last BSD 2.11 edit on Nov 1, the VERSION
  9267. command no longer displayed the copyright notice.  Fixed in ckcmai.c,
  9268. 28 Nov 96.
  9269.  
  9270. --- 6.0.192 Announced, 29 Nov 96 ---
  9271.  
  9272. ******************************
  9273. ------------------------------
  9274. C-KERMIT 5A TEST RESULTS
  9275.  
  9276. Systems where C-Kermit 5A and later successfully compiled, linked, and
  9277. executed.  Dates apply as follows:
  9278.  
  9279.  5A(188) - 23 November 1992
  9280.  5A(189) - 30 June 1993
  9281.  5A(190) - 4 October 1994
  9282.  5A(191) - OS/2 only, 24 April 1995
  9283.  6.0.192 - 6 September 1996 (packaging date), 24 Nov 96 (true date)
  9284.  
  9285. Notes:
  9286.  ISC = Interactive Systems Corporation (a division of SunSoft)
  9287.  JLE = Japanese Language Environment (for SunOS, by Nihon Sun)
  9288.  ODT = SCO Open Desk Top
  9289.  ODT 1.1 = SCO UNIX/386 3.2v2 plus SCO TCP/IP
  9290.  ODT 2.0 = SCO UNIX/386 3.2v4 plus SCO TCP/IP
  9291.  ODT 3.0 = SCO UNIX/386 3.2v4.2 plus SCO TCP/IP + X11R5 + new DOSmerge
  9292.  Solaris 1.01 = SunOS 4.1.2
  9293.  Solaris 1.1  = SunOS 4.1.3
  9294.  Solaris 2.x  = SunOS 5.x (x = 0..5)
  9295.  gcc  = GNU C compiler
  9296.  apcc = Apogee C compiler for Solaris 2.x
  9297.  UCX  = DEC TCP/IP Services for (Open)VMS
  9298.  VMS  = VMS or OpenVMS
  9299.  
  9300. Non-UNIX versions:
  9301.  
  9302. MACHINE                   OS NAME     OS VERSION  BUILD FILE      DATE     SIZE
  9303. Apollo DN-570             Aegis              9.7  aegis           930405 552742
  9304. Apple Macintosh LC        Mac OS             7.0  ckmker.mak      940819 423117
  9305. Apple Macintosh II        Mac OS            6.03  ckmker.mak      960822 526441
  9306. Apple Centris 660 AV      Mac OS             7.1  ckmker.mak      940819 423117
  9307. Apple Power Mac 7100/66   Mac OS           7.1.2  ckmker.mak      940819 423117
  9308. Atari ST                  GEMDOS             1.0  cksker.mak      930701 292454
  9309. Atari ST                  GEMDOS             1.0  cksker.mak/min  930701  85281
  9310. Commodore Amiga           Amiga OS           2.1  ckiker.mak      961124 547708
  9311. -----
  9312. Data General MV2500       AOS/VS II      2.20.73  ckdker.mak      961125 874496
  9313. Data General MV ???       AOS/VS II         3.00  ckdker.mak      940712      ?
  9314. Data General MV7800XP     AOS/VS            7.67  ckdker.mak      930630 612352
  9315. Data General MV20000      AOS/VS     07.69.00.13  ckdker.mak      961203 793532
  9316. -----
  9317. VMS C-Kermit 6.0:
  9318. MACHINE                   VMSVER   TCP/IP          COMPILER       DATE     SIZE
  9319. VAX 11/750                4.4      none     -      VAXC V2.4      961125 623616
  9320. VAX 11/750                4.4      TWG     V3.2    VAXC V2.4      961125 685056
  9321. MicroVAX-II               4.5      none     -      VAXC V2.4      961125      ?
  9322. MicroVAX-II               5.4-2    TGV     V3.1    VAXC V3.1      961105 719872
  9323. MicroVAX-II               5.4-2    none     -      VAXC V3.1      961105 673792
  9324. VAXstation 3100/38        5.5-2    none     -      VAXC V3.2-044  961125 675840
  9325. VAX model unk             5.5-2    CMU-IP  V1.2    VAXC V?.?      970208 733696
  9326. VAX model unk             5.5      PST     V5.0    ?              970122 731136
  9327. VAX model unk             5.5      UCX     V3.3    ?              970122 731648
  9328. VAXstation 3100/38        5.5-2    UCX     V2.0    VAXC V3.2-044  961125 730112
  9329. VAX 4000-700A             5.5-2H4  TGV     V4.0A   VAXC V3.2      961125 718336
  9330. VAX 4000-700A             5.5-2H4  none     -      VAXC V3.2      961125 672256
  9331. MicroVAX-III              6.1      none     -      VAXC V3.1      961125 675328
  9332. MicroVAX-III              6.1      TGV     V4.0A   VAXC V3.1      961125 720384
  9333. VAX, model unknown        6.1      UCX     V4.0    VAXC V3.1      961203 732160
  9334. VAXstation 3100           6.2      TGV     V4.0A   DECC V5.3-006  961125 707072
  9335. VAXstation 3100           6.2      none     -      DECC V5.3-006  961125 660992
  9336. VAX, model unknown        6.2      UCX     V3.3    DECC V5.3      961204 707072
  9337. VAX, model unknown        6.2      UCX     V4.1    DECC V5.3      961204 709120
  9338. VAXstation 4000           6.2      TWG     V2.5    VAXC V3.2      970303 804864
  9339. VAXstation 3100/38        7.0      TCPware V5.1-5  VAXC V3.2-044  961106      ?
  9340. VAX 4000-200              7.0      TCPware V5.1    DECC V5.3      961108      ?
  9341. VAX 3600                  7.0      CMU/IP  V6.6    VAXC V3.2      961108      ?
  9342. Alpha 2100 4/200          6.1      none     -      DECC V5.3-006  9611251018880
  9343. Alpha 2100 4/275          6.1      none     -      DECC V5.2-002  961128      ?
  9344. Alpha 3000 400            6.1      none     -      DECC V4.0-000  9611251037312
  9345. Alpha 2100 4/200          6.1      TGV     V3.5B   DECC V5.3-006  9611251086464
  9346. Alpha 3000 400            6.1      TGV     V3.5B   DECC V4.0-000  9611251100800
  9347. Alphaserver 2100          6.2      TWG     V2.5    DECC V5.5      9703031189376
  9348. Alpha 3000 600            6.1      UCX     V3.2    DECC V4.0      9701221112576
  9349. Alpha 3000 500            6.1      UCX     V3.3    DECC V4.1      9701231130496
  9350. Alpha 3000 400            6.2      none     -      DECC V5.0-003  9611251011712
  9351. Alpha  200 4/166          6.2      none     -      DECC V5.3-006  9611251019392
  9352. Alpha 3000 300L           6.2      none     -      DECC V5.2-003  9611251030144
  9353. Alpha 2000 5/300          6.2      none     -      DECC V4.0-000  9611251034240
  9354. Alpha 4000 5/400          6.2      none     -      DECC V5.3      961126      ?
  9355. Alpha  200 4/166          6.2      TGV     V4.0A   DECC V5.3-006  9611251087488
  9356. Alpha 3000 400            6.2      TGV     V3.5B   DECC V5.0-003  9611251079808
  9357. Alpha 3000 300L           6.2      TGV     V4.0    DECC V5.2-003  9611251097728
  9358. Alpha 2000 5/300          6.2      TGV     V3.5B   DECC V4.0-000  9611251097216
  9359. Alpha 4000 5/400          6.2      TGV     V4.0A   DECC V5.3      961126      ?
  9360. Alpha model unk           6.2      UCX     V3.3    ?              9701221100800
  9361. Alpha 3000 300L           6.2      UCX     V4.0A   DECC V5.3      9611251098752
  9362. AlphaStation 200 4/233    6.2      UCX     V4.1    DECC V5.5      9701161100800
  9363. Alpha  200 4/166          7.0      TCPware V5.1-5  DECC V?.?      961108      ?
  9364. Alpha model unk           7.0      UCX     V4.0    ?              9701211114112
  9365. Alpha 3000 300            7.0      UCX     V4.1    ?              9701211099264
  9366. -----
  9367. VMS C-Kermit 5A(190):
  9368. MACHINE                   OS NAME     OS VERSION  BUILD FILE      DATE     SIZE
  9369. DEC Alpha AXP             VMS / no TCP       1.5  ckvker.mak      941026 833536
  9370. DEC Alpha AXP 3000-800    VMS / no TCP       6.1  ckvker.mak      941026 813056
  9371. DEC Alpha AXP             VMS / TGV          1.5  ckvker.mak      940026 868352
  9372. DEC Alpha AXP 3000-800    VMS / TGV 3.3      6.1  ckvker.mak      941026 847360
  9373. DEC Alpha AXP             VMS / UCX 3.1      1.5  ckvker.mak      941101 871936
  9374. DEC Alpha AXP 3000-300    VMS / TCPware      1.5  ckvker.mak      941027 637952
  9375. DECpc AXP 150 (2000)      VMS / TCPware      6.1  ckvker.mak      940627 820224
  9376. DEC Alpha AXP 3000-800S   VMS / Pathway1.1.2 6.1  ckvker.mak      941101 950784
  9377. DEC VAX model unknown     VMS / no_net       4.5  ckvold.com      941101 467456
  9378. DEC MicroVAX 3100/10      VMS / UCX 3.1      6.1  ckvold.com      940919 637952
  9379. DEC MicroVAX-II           VMS / TGV 3.1      5.3  ckvker.mak      941026 669696
  9380. DEC VAX 8650              VMS / TGV 3.3A   5.5-2  ckvker.mak      940626 645632
  9381. DEC VAX, model unknown    VMS / CMU/Tek    5.5-2  ckvker.mak      940623 586752
  9382. DEC VAXstation 4000/90    VMS / TCPware    5.5-2  ckvker.mak      941027 870400
  9383. DEC VAX 4000/300          VMS / Pathway1.1 5.5-2  ckvker.mak      941101 645632
  9384. -----
  9385. IBM OS/2 - 5A(191) only:
  9386. IBM PS/2                  OS/2 (16-bit)      1.3  ckoker.mak/msc         377237
  9387. IBM PS/2-70               OS/2 (16-bit)     2.00  ckoker.mak/msc         377237
  9388. IBM PS/2-70               OS/2 (32-bit)     2.00  ckoker.mak/ibm         458485
  9389. IBM PS/VP+IBM TCP/IP      OS/2 (16-bit)     2.10  ckoker.mak/msc  941006 499061
  9390. IBM PS/VP+IBM TCP/IP      OS/2 (32-bit)     2.10  ckoker.mak/ibm  941006 680014
  9391. PC 486 + Essex TCP/IP     OS/2 (16-bit)     2.10  ckoker.mak/msc  940824      ?
  9392. PC 486 + Essex TCP/IP     OS/2 (32-bit)     2.10  ckoker.mak/msc  940824 499987
  9393. PC 486 + FTP PC/TCP       OS/2 (32-bit)     2.10  ckoker.mak/msc  940902 499987
  9394. PC 486 + FTP PC/TCP       OS/2 (16-bit)     2.10  ckoker.mak/msc  940910      ?
  9395. PC 486 + IP-Switch TC/TCP OS/2 (32-bit)     2.10  ckoker.mak/msc  940916 499987
  9396. PC 486 + IBM TCP/IP 2.0   OS/2 (32-bit)     3.00  ckoker.mak/ibm  941004 682898
  9397. -----
  9398. Motorola 680x0            OS-9/68000       2.2.2  ck9ker.mak      930630 294542
  9399. Motorola 680x0            OS-9/68000         2.4  ck9ker.mak      970201 522902
  9400. Motorola MM/1 68340       OS-9/68000         3.0  ck9ker.mak      961209 490410
  9401. -----
  9402. IBM PowerPC               Plan 9               -  ckpker.mk       961014      ?
  9403. MIPS                      Plan 9               -  ckpker.mk       961202 772720
  9404. PC 386 and above          Plan 9               -  ckpker.mk       961202 664113
  9405. Sun SPARC                 Plan 9               -  ckpker.mk       961202 845160
  9406. Motorola 68040            Plan 9               -  ckpker.mk       961202 558830
  9407. -----
  9408. Stratus XA/2000 160 680x0 VOS               10.5  cklmak.cm       941016      ?
  9409. Stratus XA/2000 240 680x0 VOS               11.5  cklmak.cm       941016      ?
  9410. Stratus XA/2000 240 680x0 VOS             11.7.2  cklmak.cm       941016      ?
  9411. Stratus XA/R 310 i860     VOS               11.5  cklmak.cm       941016      ?
  9412. Stratus XA/R 310 i860     VOS               11.7  cklmak.cm       941016      ?
  9413. -----
  9414. UNIX versions:
  9415. -----
  9416.  
  9417. MACHINE                   OS NAME     OS VERSION  MAKE ENTRY      DATE     SIZE
  9418. Acorn                     RISCiX             1.2  riscixgcc       941201      ?
  9419. AGI (Everex) 386/20       ESIX        3.2 Rev. D  sys5r3          921203 423018
  9420. Altos ACS68000            UNIX System III     R2  altos3          921212 252102
  9421. Amdahl 5880               UTS 2.1      SVR5.2.6b  sys3            921204 489400
  9422. Amdahl mainframe          UTS         5.2.6b 580  sys3            940921 544999
  9423. Amdahl mainframe          UTS         5.2.6b 580  utsv            940921      ?
  9424. Amdahl mainframe          UTS             5.2.6b  utsv            921204 456044
  9425. Amdahl 5995A-700          UTS              2.1.5  utsvtcp              ? 526368
  9426. Apollo 425e               DomainOS 4.3BSD   10.4  sr10-bsd        940922 638780
  9427. Apple Macintosh IIfx      A/UX               3.0  aux3gcc         921204 382272
  9428. Apple Macintosh Powerbook Tenon MachTen  2.1.1.D  machten         940825 626396
  9429. Apple PowerMac 7600/132   Mklinux/Mach3.0 2.0.28  linux           9702121182563
  9430. Ardent Titan              ?                    ?  sys5r3               ?      ?
  9431. Aspen Durango Alpha 21164 Linux              2.0  linux           970111 933656
  9432. ARIX System 90 Model 85   UNIX              SVR3  sys5r3na             ? 452912
  9433. AT&T 3B2/300              UNIX          SVR2.1.0  att3bxc         960403 598808
  9434. AT&T 3B2                  UNIX          SVR3.1.0  att3bx          960919      ?
  9435. AT&T 3B2                  UNIX          SVR3.1.0  att3bxc         960919 620958
  9436. AT&T 3B2/600G             UNIX          SVR3.2.2  att3bx          970116 677671
  9437. AT&T 3B2/622              UNIX          SVR3.2.3  att3bxc         921204 458220
  9438. AT&T 3B2/MIPS             UNIX              SVR4  sys5r4sxtcpf    940713 694629
  9439. AT&T 6300 PLUS            UNIX            SVR2.0  att6300c        921204 353978
  9440. AT&T 6386E WGS            UNIX         V/386 3.2  sys5r3c         921204 441762
  9441. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upcshcc     961110 594652
  9442. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upccg       961113 584680
  9443. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upcc        961010 615552
  9444. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upc         940809      ?
  9445. Atari Falcon              MiNT                 ?  ?                    ?      ?
  9446. Atari ST                  MINIX           1.6.23  minix68k             ? 168310
  9447. BeBox                     BeOS               DR7  bebox           961011 587626
  9448. BEST Compact 386/25       SCO UNIX       3.2v2.0  sco3r22              ? 336716
  9449. Bull DPX/2                BOS/X                ?  bulldpx2             ?      ?
  9450. Bull Escala M104          AIX              4.1.4  rs6aix41c       970102      ?
  9451. CDC 4600 MIPS             ?                    ?  ?                    ?      ?
  9452. Commodore Amiga 2500/030  Amiga SVR4.0    2.1p2a  svr4amiganet    940827 483352
  9453. Commodore Amiga 2500/030  Amiga SVR4.0    2.1p2a  sys5r4sx        940827      ?
  9454. Concurrent 3280           Xelos System V     R02  ccop1           921294 566553
  9455. Concurrent/Masscomp 6000  RTU                4.1  rtubsd               ? 478348
  9456. Concurrent/Masscomp 6400  RTU                  5  rtusvr3              ? 488864
  9457. Concurrent/Masscomp 6400  RTU                6.0  rtusvr3              ? 488864
  9458. Convergent MiniFrame      CTIX System V R3  3.20  sys5                 ? 396438
  9459. Convergent, model unknown CTIX             6.4.1  ctix            921209 434456
  9460. Convex 3240               ConvexOS          10.1  convex9         921208      ?
  9461. Convex C1                 ConvexOS          V9.0  convex9              ?      ?
  9462. Convex C2                 ConvexOS          10.1  convex10gcc          ?      ?
  9463. Convex C220               ConvexOS       V10.0.3  convex9         921208 651264
  9464. Convex C240               ConvexOS       V10.0.2  convex9         921208 651264
  9465. Cray XMP                  UNICOS             6.1  cray            921208      ?
  9466. Cray XMP-EL               UNICOS             6.1  cray            921208      ?
  9467. Cray YMP 2E, 4E, 8I       UNICOS             6.1  cray            921208      ?
  9468. Cray YMP 2E, 4E, 8I       UNICOS             7.C  cray            921208      ?
  9469. Cray YMP16 (C90)          UNICOS             7.C  cray            921208      ?
  9470. Cray-2                    UNICOS       8.0-Alpha  cray8           921208      ?
  9471. Cray-2                    CSOS               1.0  craycsos             ?1295272
  9472. Cray-3                    CSOS               1.0  craycsos             ?1295272
  9473. DEC 3000 Model 500 AXP    DEC OSF/1       T1.2-1  dec-osf         921221      ?
  9474. DEC 3000 Model 500 AXP    DEC OSF/1     V1.3 112  dec-osf         940919 802816
  9475. DEC 3000 AXP              DEC OSF/1          1.3  dec-osf         940801 794624
  9476. DEC 4000 Model 610 AXP    DEC OSF/1      1.3.111  dec-osf         940415 753664
  9477. DEC 4000 Model 610 AXP    DEC OSF/1          2.0  dec-osf20       941006 770048
  9478. DEC 4000 Model 610 AXP    DEC OSF/1          3.0  dec-osf30       941027 737280
  9479. DEC Alpha 2100 4/275      DEC OSF/1          3.0  dec-osf30       960227 860160
  9480. DEC Alpha 3000/300LX      DEC OSF/1 cc 3.11  3.0  dec-osf32       960228 860160
  9481. DEC Alpha 2100 4/275      Digital UNIX       3.2  du32            960227 860160
  9482. DEC Alpha 400  4/166      Digital UNIX       3.2  du32            961125 974848
  9483. DEC Alphastation 200      Digital UNIX    3.2D-1  du32            960516      ?
  9484. DEC AlphaServer 1000      Digital UNIX      3.2G  du32            961111      ?
  9485. DEC Alpha 255 4/232       Digital UNIX       4.0  du40            961125 933888
  9486. DEC Alpha 21164 clone     Linux              2.0  linux           970111 933656
  9487. DEC PDP-11/44             BSD               2.11  bsd211          961125 205000
  9488. DEC PDP-11/73             BSD               2.11  bsd211          940418 133154
  9489. DEC MicroVAX-II           BSD                4.3  bsd43                ?      ?
  9490. DEC MicroVAX-II           BSD           4.3-Reno  bsd43           921127 253952
  9491. DEC MicroVAX-II           Bell Research UNIX V10  bellv10         961125 615030
  9492. DECstation 5000/20        MACH               2.6  bsd43 (?)       940623      ?
  9493. DECstation 5000/120       NetBSD/pmax        1.2  netbsd          9701291817868
  9494. DECstation 5000/200       ULTRIX (cc 2.10)   4.3  ultrix42c       960229 733184
  9495. DECstation 3000/500       OSF/1         T1.2-R12  dec-osf              ?      ?
  9496. DEC MicroVAX-II           ULTRIX             4.2  ultrix42        921207 403456
  9497. DEC MicroVAX-II           ULTRIX             4.2  ultrix42c       921207 418816
  9498. DEC MicroVAX 2000         ULTRIX             4.2  ultrix42c       941008 485376
  9499. DEC MicroVAX 2000         ULTRIX             4.2  ultrix42        941008 467968
  9500. DECstation 2100           ULTRIX             4.2  ultrix42             ? 532480
  9501. DECstation 2500           ULTRIX             4.2  ultrix42c            ?      ?
  9502. DECstation 3100           ULTRIX             4.2  ultrix42             ? 532480
  9503. DECstation 5000/200       ULTRIX             4.2  ultrix42             ? 532480
  9504. DECstation 5100           ULTRIX             4.2  ultrix42c            ?      ?
  9505. DECstation MIPS           ULTRIX             4.2  ultrix42        940801 602112
  9506. DECstation 5800           ULTRIX         4.2-R96  ultrix42c       941006 634880
  9507. DECstation 5800           ULTRIX         4.2-R96  du42s5r4             ? 540672
  9508. DECstation 5800           ULTRIX         4.2-R96  posix                ? 499712
  9509. DECstation 2100           ULTRIX             4.3  ultrix42        921207 532480
  9510. DECstation 2100           ULTRIX             4.3  ultrix42c       921207 557056
  9511. DECstation 5000/200       ULTRIX             4.3  ultrix42        940625 589824
  9512. DECstation 5000/25        ULTRIX             4.3  ultrix42             ? 532480
  9513. DECstation 5000/200       ULTRIX/UWS         4.3  ultrix42        921221 532480
  9514. DECstation 500/240        ULTRIX             4.3  ultrix42c       961007 823296
  9515. DECstation 5000/25        ULTRIX/UWS     4.3-R10  ultrix42c       921221 532480
  9516. DECstation 5000/50 R4000  ULTRIX            4.3A  du43c-mips3          ? 561152
  9517. DECstation 2100           ULTRIX             4.4  ultrix42c       940803 618496
  9518. DECstation 5000/50 R4000  ULTRIX             4.4  du43c-mips3     961125 790528
  9519. DECstation 5000/50        ULTRIX             4.4  du44-mips3      941008 581632
  9520. DECstation 5000/200       ULTRIX            4.2C  ultrix42c       940803 626688
  9521. DECstation 5000/240       ULTRIX             4.3  ultrix42c       941008 634880
  9522. DECstation 5000/240       ULTRIX             4.3  ultrix42        941008 610304
  9523. DECsystem 5100            ULTRIX             4.2  ultrix42c       941008 634880
  9524. DECsystem 5100            ULTRIX             4.2  ultrix42        941008 610304
  9525. DEC VAXstation 2000       ULTRIX             4.2  ultrix42c       940803 480256
  9526. DECsystem 5100            ULTRIX             4.3  ultrix42c       961125 827392
  9527. DECsystem 5100            ULTRIX             4.3  ultrix42        941008 610304
  9528. DECsystem 5100            ULTRIX            4.3A  ultrix42c       941003 634880
  9529. DECsystem 5100            ULTRIX            4.3A  ultrix42        941003 610304
  9530. DECsystem 5000/150        ULTRIX             4.4  ultrix42c       961111      ?
  9531. DECsystem 5000/150        ULTRIX             4.5  ultrix42c       961125 815104
  9532. DEC VAX-11/750            BSD                4.3  bsd43           921127 253952
  9533. DEC VAX-11/785            BSD          4.3-Net/2  bsd44c               ? 379904
  9534. DEC VAX 8350              DEC UNIX SVR3      3.1  sys3                 ?      ?
  9535. DEC VAX 8650              DEC UNIX SVR3      3.1  sys3                 ?      ?
  9536. DEC VAX 8800              ULTRIX             4.2  ultrix42             ?      ?
  9537. DEC VAX Model Unknown     ULTRIX             4.2  ultrix42c       940919 486400
  9538. DEC VAXstation 3100       ULTRIX/UWS         4.2  ultrix42        921127      ?
  9539. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22              ? 336716
  9540. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22gcc           ? 344692
  9541. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22net           ? 363872
  9542. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22netc          ? 419396
  9543. DG AViiON                 DG/UX              5.4  dgux540c             ?      ?
  9544. DG AViiON                 DG/UX            5.4.1  dgux540c             ?      ?
  9545. DG AViiON                 DG/UX            5.4.2  dgux540c             ?      ?
  9546. DG AViiON                 DG/UX         5.4R2.01  dgux540c        941006 629908
  9547. DG AViiON                 DG/UX         5.4.2.10  dgux540         940714      ?
  9548. DG AViiON                 DG/UX         5.4.2.10  dgux540c        940822 627980
  9549. DG AViiON                 DG/UX         5.4R3.00  dgux543c        941130      ?
  9550. DG AViiON mc88110         DG/UX         5.4R3.10  dgux543c        970131 811088
  9551. DG AViiON 3600/PentiumPro DG/UX     5.4R4.11MU02  dgux540i        970102 611396
  9552. DG AViiON 3600/PentiumPro DG/UX     5.4R4.11MU02  dgux540ic       970102 676620
  9553. DIAB DS90-00              DNIX 5.2          2.2c  dnix                 ? 368496
  9554. DIAB DS90-00              DNIX 5.2          2.2c  dnixnetc             ? 424704
  9555. DIAB DS90-10              DNIX 5.3         1.4.3  dnix5r3              ?      ?
  9556. DIAB DS90-20              DNIX 5.3           2.2  dnix5r3ansi          ?      ?
  9557. DIAB DS90-30              DNIX 5.3         2.2.1  dnix5r3ansinet  941001      ?
  9558. Dolphin Triton 88/17      UNIX SV/88 R3.2    3.6  sv88r32         921210 604336
  9559. DTK Keen 2000             Microport SVR3  0U3.0e  sys5r3          921208 405668
  9560. Encore Multimax           UMAX               4.3  encorec              ? 465424
  9561. Encore 88K                UMAX               5.3  encore88k       961010 773232
  9562. Encore 88K                UMAX               5.3  encore88kgcc    961010 702720
  9563. Everex 386DX/25           BSDI (BSD/386)   0.9.1  bsdi                 ? 360448
  9564. Fortune 32:16             For:Pro           2.1c  ft21                 ? 336368
  9565. Harris HCX-2900           CX/UX              5.1  sys5r3               ? 390184
  9566. Harris Night Hawk         CX/UX              6.1  cx_ux                ? 626560
  9567. Hewitt/Rand 483/33EISA    SCO ODT         2.1.0b  sco32v4netc          ? 424688
  9568. Honeywell/Bull RS/6000    AIX              3.2.5  rs6aix32        940801      ?
  9569. HP 9000/300               BSD           4.4-Lite  bsd44c          961125 726767
  9570. HP Integral (9000/207)    HP-UX/PAM          5.0  hpuxpre65            ? 396096
  9571. HP 9000/550 = stack micro HP-UX             5.21  hpuxpre65       941006 528548
  9572. HP 9000/550               HP-UX             5.21  hpux500wintcp   960613 803368
  9573. HP 9836CU                 HP-UX            5.5-P  hpuxpre65            ?      ?
  9574. HP 9000/350               HP-UX              6.5  hpux65          970116 606208
  9575. HP 9000/350               HP-UX              6.5  hpux65c         970116 655360
  9576. HP 9000/350               HP-UX              6.5  hpux70sf        970116 589824
  9577. HP 9000/350               HP-UX             7.05  hpux65          970117 614400
  9578. HP 9000/350               HP-UX             7.05  hpux65c         970117 667648
  9579. HP 9000/350               HP-UX             7.05  hpux70lfn       970117 671744
  9580. HP 9000/350               HP-UX             7.05  hpux70lfnc      970117 724992
  9581. HP 9000/350               HP-UX             7.05  hpux70sf        970117 598016
  9582. HP 9000/350               HP-UX             7.05  hpux70sftcpc    970117 724992
  9583. HP 9000/350               HP-UX             7.05  hpux7sf         961203 633674
  9584. HP 9000/425S              HP-UX          B.08.00  hpux80          961202 610304
  9585. HP 9000/425S              HP-UX          B.08.00  hpux80c         961202 618496
  9586. HP 9000/425S              HP-UX          B.08.00  hpux80notcp     961202 565248
  9587. HP 9000/425e              HP-UX          B.08.00  hpux80          961203 610304
  9588. HP 9000/425e              HP-UX          B.08.00  hpux80c         961203 618496
  9589. HP 9000/425e              HP-UX          B.08.00  hpux80notcp     961203 565248
  9590. HP 9000/433S              HP-UX          B.08.00  hpux80          961203 610304
  9591. HP 9000/433S              HP-UX          B.08.00  hpux80c         961203 618496
  9592. HP 9000/433S              HP-UX          B.08.00  hpux80notcp     961203 565248
  9593. HP 9000/300               HP-UX          B.09.00  hpux90          961202 741376
  9594. HP 9000/300               HP-UX          B.09.00  hpux90mot       961202 638976
  9595. HP 9000/300               HP-UX          B.09.00  hpux90o         961202 630784
  9596. HP 9000/332               HP-UX          B.09.00  hpux90          961203 741376
  9597. HP 9000/332               HP-UX          B.09.00  hpux90mot       961203 638976
  9598. HP 9000/340               HP-UX          B.09.00  hpux90          961202 741376
  9599. HP 9000/340               HP-UX          B.09.00  hpux90mot       961202 638976
  9600. HP 9000/385               HP-UX          B.09.00  hpux90          961127 741376
  9601. HP 9000/385               HP-UX          B.09.00  hpux90mot       961127 638976
  9602. HP 9000/385               HP-UX          B.09.00  hpux90mot       961202 638976
  9603. HP 9000/400T              HP-UX          B.09.00  hpux90          961126 741376
  9604. HP 9000/400T              HP-UX          B.09.00  hpux90mot       961126 638976
  9605. HP 9000/425T              HP-UX          B.09.00  hpux90          961127 741376
  9606. HP 9000/425T              HP-UX          B.09.00  hpux90mot       961127 638976
  9607. HP 9000/425e              HP-UX          B.09.00  hpux90          961202 741376
  9608. HP 9000/425e              HP-UX          B.09.00  hpux90mot       961202 638976
  9609. HP 9000/425e              HP-UX          B.09.00  hpux90o         961202 630784
  9610. HP 9000/433T              HP-UX          B.09.00  hpux90          961127 741376
  9611. HP 9000/433T              HP-UX          B.09.00  hpux90          961203 741376
  9612. HP 9000/433T              HP-UX          B.09.00  hpux90mot       961127 638976
  9613. HP 9000/715/33            HP-UX          A.09.01  hpux90          961203 884736
  9614. HP 9000/715/33            HP-UX          A.09.01  hpux90mot       961203 708608
  9615. HP 9000/715/33            HP-UX          A.09.01  hpux90mot+Obb1..961203 696320
  9616. HP 9000/715/33            HP-UX          A.09.01  hpux90o         961203 708608
  9617. HP 9000/715/33            HP-UX          A.09.01  hpux90o+Obb1084 961203 696320
  9618. HP 9000/715/33            HP-UX          A.09.01  hpux90o700      961203 679936
  9619. HP 9000/715/33            HP-UX          A.09.01  hpux90o700+Obb..961203 667648
  9620. HP 9000/715s/50           HP-UX          A.09.01  hpux90          961203 884736
  9621. HP 9000/715s/50           HP-UX          A.09.01  hpux90mot       961203 708608
  9622. HP 9000/715s/50           HP-UX          A.09.01  hpux90mot+Obb1..961203 696320
  9623. HP 9000/715s/50           HP-UX          A.09.01  hpux90o         961203 708608
  9624. HP 9000/715s/50           HP-UX          A.09.01  hpux90o+Obb1084 961203 696320
  9625. HP 9000/715s/50           HP-UX          A.09.01  hpux90o700      961203 679936
  9626. HP 9000/715s/50           HP-UX          A.09.01  hpux90o700+Obb..961203 667648
  9627. HP 9000/735               HP-UX          A.09.01  hpux90          961202 884736
  9628. HP 9000/735               HP-UX          A.09.01  hpux90mot       961202 708608
  9629. HP 9000/735               HP-UX          A.09.01  hpux90mot+Obb1..961202 696320
  9630. HP 9000/735               HP-UX          A.09.01  hpux90o         961202 708608
  9631. HP 9000/735               HP-UX          A.09.01  hpux90o+Obb1084 961202 696320
  9632. HP 9000/735               HP-UX          A.09.01  hpux90o700      961202 679936
  9633. HP 9000/735               HP-UX          A.09.01  hpux90o700+Obb..961202 667648
  9634. HP 9000/755               HP-UX          A.09.01  hpux90          961202 884736
  9635. HP 9000/755               HP-UX          A.09.01  hpux90gcc       961202 892928
  9636. HP 9000/755               HP-UX          A.09.01  hpux90mot       961202 712704
  9637. HP 9000/755               HP-UX          A.09.01  hpux90mot+Obb1..961202 696320
  9638. HP 9000/755               HP-UX          A.09.01  hpux90mot+Obb92.961202 700416
  9639. HP 9000/755               HP-UX          A.09.01  hpux90o         961202 708608
  9640. HP 9000/755               HP-UX          A.09.01  hpux90o+Obb1084 961202 696320
  9641. HP 9000/755               HP-UX          A.09.01  hpux90o700      961202 679936
  9642. HP 9000/755               HP-UX          A.09.01  hpux90o700+Obb..961202 667648
  9643. HP 9000/320               HP-UX          B.09.03  hpux90          961203 741376
  9644. HP 9000/332               HP-UX          B.09.03  hpux90          961202 741376
  9645. HP 9000/332               HP-UX          B.09.03  hpux90mot       961203 638976
  9646. HP 9000/360               HP-UX          B.09.03  hpux90          961204 741376
  9647. HP 9000/360               HP-UX          B.09.03  hpux90mot       961204 638976
  9648. HP 9000/380               HP-UX          B.09.03  hpux90          961202 741376
  9649. HP 9000/380               HP-UX          B.09.03  hpux90mot       961202 638976
  9650. HP 9000/385               HP-UX          B.09.03  hpux90          961202 741376
  9651. HP 9000/385               HP-UX          B.09.03  hpux90o         961202 630784
  9652. HP 9000/400S              HP-UX          B.09.03  hpux90          961202 741376
  9653. HP 9000/400S              HP-UX          B.09.03  hpux90mot       961202 638976
  9654. HP 9000/400T              HP-UX          B.09.03  hpux90          961203 741376
  9655. HP 9000/400T              HP-UX          B.09.03  hpux90mot       961203 638976
  9656. HP 9000/425T              HP-UX          B.09.03  hpux90          961202 741376
  9657. HP 9000/425T              HP-UX          B.09.03  hpux90mot       961202 638976
  9658. HP 9000/425e              HP-UX          B.09.03  hpux90          961202 741376
  9659. HP 9000/425e              HP-UX          B.09.03  hpux90mot       961202 638976
  9660. HP 9000/433S              HP-UX          B.09.03  hpux90          961203 741376
  9661. HP 9000/433S              HP-UX          B.09.03  hpux90mot       961203 638976
  9662. HP 9000/433T              HP-UX          B.09.03  hpux90          961202 741376
  9663. HP 9000/433T              HP-UX          B.09.03  hpux90mot       961202 638976
  9664. HP 9000/891 T-500         HP-UX          B.09.04  hpux90o700      961202      ?
  9665. HP 9000/712/60            HP-UX          A.09.05  hpux90          961203 880640
  9666. HP 9000/712/60            HP-UX          A.09.05  hpux90mot       961203 712704
  9667. HP 9000/712/60            HP-UX          A.09.05  hpux90mot+Onol..961203 700416
  9668. HP 9000/712/60            HP-UX          A.09.05  hpux90o         961203 712704
  9669. HP 9000/712/60            HP-UX          A.09.05  hpux90o+Onolimit961203 700416
  9670. HP 9000/712/60            HP-UX          A.09.05  hpux90o700      961203 684032
  9671. HP 9000/712/60            HP-UX          A.09.05  hpux90o700+Ono..961203 671744
  9672. HP 9000/715/100           HP-UX          A.09.05  hpux90          961205 880640
  9673. HP 9000/715/100           HP-UX          A.09.05  hpux90mot       961205 708608
  9674. HP 9000/715/100           HP-UX          A.09.05  hpux90mot+Onol..961205 696320
  9675. HP 9000/715/100           HP-UX          A.09.05  hpux90o         961205 708608
  9676. HP 9000/715/100           HP-UX          A.09.05  hpux90o+Onolimit961205 696320
  9677. HP 9000/715/100           HP-UX          A.09.05  hpux90o700      961205 684032
  9678. HP 9000/715/100           HP-UX          A.09.05  hpux90o700+Ono..961205 667648
  9679. HP 9000/715/33            HP-UX          A.09.05  hpux90          961126 880640
  9680. HP 9000/715/33            HP-UX          A.09.05  hpux90mot       961126 708608
  9681. HP 9000/715/33            HP-UX          A.09.05  hpux90mot       961205 712704
  9682. HP 9000/715/33            HP-UX          A.09.05  hpux90mot+Onol..961126 704512
  9683. HP 9000/715/33            HP-UX          A.09.05  hpux90mot+Onol..961203 696320
  9684. HP 9000/715/33            HP-UX          A.09.05  hpux90o         961126 708608
  9685. HP 9000/715/33            HP-UX          A.09.05  hpux90o+Onolimit961126 696320
  9686. HP 9000/715/33            HP-UX          A.09.05  hpux90o700      961126 679936
  9687. HP 9000/715/33            HP-UX          A.09.05  hpux90o700      961202 684032
  9688. HP 9000/715/33            HP-UX          A.09.05  hpux90o700+Ono..961126 667648
  9689. HP 9000/715/64            HP-UX          A.09.05  hpux90          961203 880640
  9690. HP 9000/715/64            HP-UX          A.09.05  hpux90mot       961202 712704
  9691. HP 9000/715/64            HP-UX          A.09.05  hpux90mot       961203 708608
  9692. HP 9000/715/64            HP-UX          A.09.05  hpux90mot+Onol..961203 696320
  9693. HP 9000/715/64            HP-UX          A.09.05  hpux90o         961202 708608
  9694. HP 9000/715/64            HP-UX          A.09.05  hpux90o+Onolimit961202 696320
  9695. HP 9000/715/64            HP-UX          A.09.05  hpux90o700      961202 684032
  9696. HP 9000/715/64            HP-UX          A.09.05  hpux90o700+Ono..961202 667648
  9697. HP 9000/715/75            HP-UX          A.09.05  hpux90          961202 880640
  9698. HP 9000/715/75            HP-UX          A.09.05  hpux90mot       961202 708608
  9699. HP 9000/715/75            HP-UX          A.09.05  hpux90mot+Onol..961202 696320
  9700. HP 9000/715/75            HP-UX          A.09.05  hpux90o         961202 708608
  9701. HP 9000/715/75            HP-UX          A.09.05  hpux90o+Onolimit961202 696320
  9702. HP 9000/715/75            HP-UX          A.09.05  hpux90o700      961202 684032
  9703. HP 9000/715/75            HP-UX          A.09.05  hpux90o700+Ono..961202 667648
  9704. HP 9000/715/80            HP-UX          A.09.05  hpux90          961205 880640
  9705. HP 9000/715/80            HP-UX          A.09.05  hpux90mot       961205 708608
  9706. HP 9000/715/80            HP-UX          A.09.05  hpux90mot+Onol..961205 696320
  9707. HP 9000/715/80            HP-UX          A.09.05  hpux90o         961205 708608
  9708. HP 9000/715/80            HP-UX          A.09.05  hpux90o+Onolimit961205 696320
  9709. HP 9000/715/80            HP-UX          A.09.05  hpux90o700      961205 684032
  9710. HP 9000/715/80            HP-UX          A.09.05  hpux90o700+Ono..961205 667648
  9711. HP 9000/715s/50           HP-UX          A.09.05  hpux90          961127 880640
  9712. HP 9000/715s/50           HP-UX          A.09.05  hpux90mot       961127 708608
  9713. HP 9000/715s/50           HP-UX          A.09.05  hpux90mot+Onol..961127 696320
  9714. HP 9000/715s/50           HP-UX          A.09.05  hpux90o         961127 708608
  9715. HP 9000/715s/50           HP-UX          A.09.05  hpux90o+Onolimit961127 696320
  9716. HP 9000/715s/50           HP-UX          A.09.05  hpux90o700      961127 679936
  9717. HP 9000/715s/50           HP-UX          A.09.05  hpux90o700+Ono..961127 667648
  9718. HP 9000/735/125           HP-UX          A.09.05  hpux90          961202 880640
  9719. HP 9000/735/125           HP-UX          A.09.05  hpux90          961205 880640
  9720. HP 9000/735/125           HP-UX          A.09.05  hpux90          961206 880640
  9721. HP 9000/735/125           HP-UX          A.09.05  hpux90mot       961206 708608
  9722. HP 9000/735/125           HP-UX          A.09.05  hpux90mot+Onol..961202 696320
  9723. HP 9000/735/125           HP-UX          A.09.05  hpux90o         961202 708608
  9724. HP 9000/735/125           HP-UX          A.09.05  hpux90o+Onolimit961202 696320
  9725. HP 9000/735/125           HP-UX          A.09.05  hpux90o700      961202 684032
  9726. HP 9000/735/125           HP-UX          A.09.05  hpux90o700+Ono..961202 667648
  9727. HP 9000/735/99            HP-UX          A.09.05  hpux90          961203 880640
  9728. HP 9000/735/99            HP-UX          A.09.05  hpux90mot       961203 708608
  9729. HP 9000/735/99            HP-UX          A.09.05  hpux90mot+Onol..961203 696320
  9730. HP 9000/735/99            HP-UX          A.09.05  hpux90o         961203 708608
  9731. HP 9000/735/99            HP-UX          A.09.05  hpux90o+Onolimit961203 696320
  9732. HP 9000/735/99            HP-UX          A.09.05  hpux90o700      961203 684032
  9733. HP 9000/735/99            HP-UX          A.09.05  hpux90o700+Ono..961203 667648
  9734. HP 9000/755/99            HP-UX          A.09.05  hpux90          961126 880640
  9735. HP 9000/755/99            HP-UX          A.09.05  hpux90mot       961126 708608
  9736. HP 9000/755/99            HP-UX          A.09.05  hpux90mot+Onol..961126 696320
  9737. HP 9000/755/99            HP-UX          A.09.05  hpux90o         961126 708608
  9738. HP 9000/755/99            HP-UX          A.09.05  hpux90o+Onolimit961126 696320
  9739. HP 9000/755/99            HP-UX          A.09.05  hpux90o700      961126 679936
  9740. HP 9000/755/99            HP-UX          A.09.05  hpux90o700+Ono..961126 667648
  9741. HP 9000/777/C110          HP-UX          A.09.05  hpux90          961213 880640
  9742. HP 9000/777/C110          HP-UX          A.09.05  hpux90mot       961213 708608
  9743. HP 9000/777/C110          HP-UX          A.09.05  hpux90mot+Onol..961213 696320
  9744. HP 9000/777/C110          HP-UX          A.09.05  hpux90o         961213 708608
  9745. HP 9000/777/C110          HP-UX          A.09.05  hpux90o+Onolimit961213 696320
  9746. HP 9000/777/C110          HP-UX          A.09.05  hpux90o700      961213 684032
  9747. HP 9000/777/C110          HP-UX          A.09.05  hpux90o700+Ono..961213 667648
  9748. HP 9000/755/99            HP-UX          A.09.07  hpux90          961205 876544
  9749. HP 9000/755/99            HP-UX          A.09.07  hpux90mot       961205 708608
  9750. HP 9000/755/99            HP-UX          A.09.07  hpux90mot+Onol..961205 696320
  9751. HP 9000/755/99            HP-UX          A.09.07  hpux90o         961205 708608
  9752. HP 9000/755/99            HP-UX          A.09.07  hpux90o+Onolimit961205 696320
  9753. HP 9000/755/99            HP-UX          A.09.07  hpux90o700      961205 679936
  9754. HP 9000/755/99            HP-UX          A.09.07  hpux90o700+Ono..961205 667648
  9755. HP 9000/770/J210          HP-UX          A.09.07  hpux90          961203 876544
  9756. HP 9000/770/J210          HP-UX          A.09.07  hpux90gcc       961205 684032
  9757. HP 9000/770/J210          HP-UX          A.09.07  hpux90mot       961203 708608
  9758. HP 9000/770/J210          HP-UX          A.09.07  hpux90mot+Onol..961203 696320
  9759. HP 9000/770/J210          HP-UX          A.09.07  hpux90o         961203 708608
  9760. HP 9000/770/J210          HP-UX          A.09.07  hpux90o+Onolimit961203 696320
  9761. HP 9000/770/J210          HP-UX          A.09.07  hpux90o700      961203 679936
  9762. HP 9000/770/J210          HP-UX          A.09.07  hpux90o700+Ono..961203 667648
  9763. HP 9000/777/C110          HP-UX          A.09.07  hpux90          961205 876544
  9764. HP 9000/777/C110          HP-UX          A.09.07  hpux90mot       961205 708608
  9765. HP 9000/777/C110          HP-UX          A.09.07  hpux90mot+Onol..961205 696320
  9766. HP 9000/777/C110          HP-UX          A.09.07  hpux90o         961205 708608
  9767. HP 9000/777/C110          HP-UX          A.09.07  hpux90o+Onolimit961205 696320
  9768. HP 9000/777/C110          HP-UX          A.09.07  hpux90o700      961205 679936
  9769. HP 9000/777/C110          HP-UX          A.09.07  hpux90o700+Ono..961205 667648
  9770. HP 9000/332               HP-UX          B.09.10  hpux90          961204 741376
  9771. HP 9000/332               HP-UX          B.09.10  hpux90mot       961204 638976
  9772. HP 9000/340               HP-UX          B.09.10  hpux90          961204 741376
  9773. HP 9000/340               HP-UX          B.09.10  hpux90mot       961204 638976
  9774. HP 9000/425T              HP-UX          B.09.10  hpux90          961203 741376
  9775. HP 9000/425T              HP-UX          B.09.10  hpux90mot       961203 638976
  9776. HP 9000/433S              HP-UX          B.09.10  hpux90          961203 741376
  9777. HP 9000/433S              HP-UX          B.09.10  hpux90mot       961204 638976
  9778. HP 9000/433T              HP-UX          B.09.10  hpux90          961203 741376
  9779. HP 9000/433T              HP-UX          B.09.10  hpux90mot       961203 638976
  9780. HP 9000/715/33            HP-UX          B.10.00  hpux100         961124 874030
  9781. HP 9000/715/33            HP-UX          B.10.00  hpux100o        961124 685704
  9782. HP 9000/735               HP-UX          B.10.01  hpux100o        961130 685773
  9783. HP 9000/816/E35           HP-UX          B.10.10  hpux100         961206 878126
  9784. HP 9000/816/E35           HP-UX          B.10.10  hpux100o        961206 689871
  9785. HP 9000/816/E35           HP-UX          B.10.10  hpux100o+       961206 673472
  9786. HP 9000/816/E35           HP-UX          B.10.10  hpux100o+Onoli..961206 673472
  9787. HP 9000/712/60            HP-UX          B.10.20  hpux100         970217 891290
  9788. HP 9000/712/60            HP-UX          B.10.20  hpux100o        970217 698970
  9789. HP 9000/770/J210          HP-UX          B.10.20  hpux100         970127 891290
  9790. HP 9000/780/C160          HP-UX          B.10.20  hpux100         961203 891290
  9791. HP 9000/780/C160          HP-UX          B.10.20  hpux100o        961203 698970
  9792. HP 9000/780/C160          HP-UX          B.10.20  hpux100o+       961203 690761
  9793. HP 9000/780/C160          HP-UX          B.10.20  hpux100o+Onoli..961203 690761
  9794. HP 9000 model unk         HP-UX            10.30  hpux100o        961124      ?
  9795. HP 9000 PA-RISC (any)     NeXTSTEP           3.3  nextquadfat     970515      ?
  9796. IBM 370-Series mainframe  AIX              1.2.1  aix370          921217 527784
  9797. IBM 370-Series mainframe  AIX/ESA            2.1  aixesa          921229 959166
  9798. IBM PS/2                  AIX                1.2  ps2aix               ? 417772
  9799. IBM PS/2-70               AIX   Level 1009 1.2.1  ps2aix          930223 448936
  9800. IBM PS/2-95               AIX                1.3  ps2aix3         930223 417772
  9801. IBM RT PC 6150-125        AIX              2.2.1  rtaix           941008 556612
  9802. IBM RT PC 6150-125        AIX              2.2.1  rtaixc          961125 778344
  9803. IBM RT PC                 BSD           4.3/Reno  bsd44c          921206 438272
  9804. IBM RS/6000               AIX                3.1  rs6000c              ? 487297
  9805. IBM RS/6000 320H          AIX              3.1.3  rs6000c         940803 569445
  9806. IBM RS/6000 320           AIX              3.1.5  rs6000c         961210 
  9807. IBM RS/6000 320           AIX              3.1.5  rs6000          941008 567450
  9808. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000c         930223 490909
  9809. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000          930223 483326
  9810. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000c              ? 490909
  9811. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000               ? 483326
  9812. IBM RS/6000               AIX                3.2  rs6aix32        940627 549762
  9813. IBM RS/6000               AIX                3.2  rs6aix32c       940627 557929
  9814. IBM RS/6000 320H          AIX                3.2  rs6aix32             ? 483665
  9815. IBM RS/6000 550           AIX                3.2  rs6aix32             ? 492333
  9816. IBM RS/6000 950           AIX                3.2  rs6aix32             ? 483665
  9817. IBM RS/6000 320           AIX              3.2.2  rs6aix32c       970116 804840
  9818. IBM RS/6000 320           AIX             3.2.3E  rs6000c         930223 491565
  9819. IBM RS/6000 320           AIX             3.2.3E  rs6000          930223 483982
  9820. IBM RS/6000 320           AIX             3.2.3E  rs6aix32c       930223 491445
  9821. IBM RS/6000 320           AIX             3.2.3E  rs6aix32        930223 484494
  9822. IBM RS/6000 520           AIX              3.2.4  rs6aix32c       941007 579489
  9823. IBM RS/6000 520           AIX              3.2.5  rs6aix32        941003 576106
  9824. IBM RS/6000 580           AIX              3.2.5  rs6aix32c       940712 569169
  9825. IBM RS/6000 520           AIX              3.2.5  rs6aix32        970220 772777
  9826. IBM RS/6000 250 PowerPC   AIX              3.2.5  rs6aix32c       941010 584145
  9827. IBM RS/6000 52H           AIX              3.2.5  rs6aix32c       961125 784028
  9828. IBM model unk             AIX            3.2.5.1  rs6aix32c       960515      ?
  9829. IBM Power Series 850      AIX                4.1  rs6aix41c       961125 783588
  9830. IBM RS/6000 PowerPC       AIX              4.1.1  rs6aix41c       941018 643163
  9831. IBM PowerPC 604           AIX              4.1.3  rs6aix41c       961202      ?
  9832. IBM PowerPC 601 SMP       AIX              4.1.4  rs6aix41c       961202      ?
  9833. IBM RS/6000 Model 39H     AIX              4.1.4  rs6aix41c       970116 784572
  9834. IBM Thinkpad 820 / 603e   AIX                4.2  rs6aix41c / gcc 961112 924954
  9835. IBM RS/6000 model unk     AIX                4.2  rs6aix41c       961231      ?
  9836. IBM Thinkpad 701C         Linux (SW 3.0)  1.2.13  linux/gcc2.7.0  960228      ?
  9837. ICL DRS400                DRS/NS             2.1  iclsys5r3       921111      ?
  9838. ICL DRS400E               DRS/NS             5.1  sys5r4               ?      ?
  9839. ICL DRS3000 486           DRS/NX SVR4          ?  iclsys5r4_486   921209      ?
  9840. ICL DRS6000 SPARC         DRS/NX SVR4      5.1.4  iclsys5r4       921209 452840
  9841. Integrated Solutions V8S  ISI 4.2BSD       3.07D  isi                  ?      ?
  9842. Intel 303 383-33          SCO Xenix       2.3.1b  sco3r2               ? 364720
  9843. Intel 486/25              ESIX             4.0.4  esixr4               ? 393192
  9844. Intergraph Clipper x000   CLIX        3.1 R7.0.9  clix            930108      ?
  9845. Intergraph Clipper x000   CLIX               6.x  clix            930108      ?
  9846. Intergraph Clipper x000   CLIX                 ?  clixnetc        930108      ?
  9847. Luxor ABC-9000            DNIX 5.2          2.2c  ?                    ?      ?
  9848. MIPS 3230, 3240, M120     RISC/OS UMIPS     4.52  mips            940901      ?
  9849. MIPS 3230, 3240, M120     RISC/OS UMIPS     4.52  mipstcpc        940901 712704
  9850. Modcomp Realstar 1000     REAL/IX            D.1  sv88r32         921208 639312
  9851. Motorola MVME 147/68030   UNIX SV/68R3     3v5.1  sv68r3v51       921204 308772
  9852. Motorola MVME 147/68030   UNIX SV/68R3     3v6.0  sv68r3v6        961110 698632
  9853. Motorola MVME 187/88K     SVR4.0            V4.4  sv88r40         980407 822228
  9854. Motorola VME Delta 147/8M UNIX SV/68R3     3v6.2  sv68r3          941126 543132
  9855. Motorola VME Delta 147/8M UNIX SV/68R3     3v7.1  sv68r3          941031 416905
  9856. Motorola VME Delta 3000   UNIX SV/68R3     3v6.2  sv68r3          921204 441256
  9857. Motorola VME Delta 4000   UNIX SV/68R3     3v6.2  sv68r3          921204 441256
  9858. Motorola VME Delta 4000   UNIX SV/68R3     3v7.1  sv68r3          921204 441256
  9859. Motorola MVME147 + NSE    UNIX SV/68        R3V6  sv68r3v6        950413      ?
  9860. Motorola VME Delta 8000   UNIX SV/88R3.2  32v3.0  sv88r32         921204 567296
  9861. Motorola VME Delta 8000   UNIX SV/88R3.2  32v3.1  sv88r32         921204 567296
  9862. Motorola VME Delta 8000   UNIX SV/88R4.0  40v3.0  sv88r40         921204 478752
  9863. Motorola VME Delta 8000   UNIX SV/88R4.1  40v4.1  sv88r40         940623      ?
  9864. Motorola 900 MVME197LE    UNIX SV/88R4.3       ?  sv88r40         950710 567704
  9865. NCR Tower 32/450          Tower 32 OS   02.01.00  tower32-2            ? 345864
  9866. NCR Tower 32/650          NCR UNIX           3.0  tower32              ? 376876
  9867. NCR Tower XP              NCR UNIX             ?  sys3nv               ?      ?
  9868. NCR Tower 32              NCR UNIX 5.0       1.1  tower32-1            ?      ?
  9869. NCR System 3000           System V R4        2.0  sys5r4sxna           ?      ?
  9870. NCR System 3000           System V R4        2.0  sys5r4net2           ?      ?
  9871. NCR System 3000           System V R4       2.03  sys5r4net2c     960227      ?
  9872. NCR System 3430/Pentium   System V R4        4.0  sys5r4sx             ?      ?
  9873. NCR System 3350           NCR UNIX +TWG 02.02.01  sys5r4net2      941006 483996
  9874. NCR System 3445           NCR UNIX +TWG 02.02.01  sys5r4net2      940819 478728
  9875. NCR System 3450           NCR UNIX +TWG 02.02.01  sys5r4net2      940819 478728
  9876. NCR System 3430           MP-RAS SVR4 +TWG  2.03  sys5r4net2c     960830 687048
  9877. NCR System 3330           MP-RAS SVR4 +TWG  2.03  sys5r4net2c     961119 694296
  9878. NeXTcube                  NeXTSTEP           2.1  next                 ? 344064
  9879. NeXTcube                  NeXTSTEP           3.0  next                 ? 352256
  9880. NeXTstation               NeXTSTEP           2.1  next                 ? 344064
  9881. NeXTstation               NeXTSTEP           3.0  next                 ? 352256
  9882. NeXT Turbostation         NeXTSTEP           3.1  next            960229 651296
  9883. NeXTstation               NeXTSTEP           3.1  next            961125 734444
  9884. NeXTstation               NeXTSTEP           3.3  next33          961125 733724
  9885. NeXT (any)                NeXTSTEP           3.3  nextquadfat     970515      ?
  9886. Nixdorf Targon/31         TOS             4.0.11  t31tos40x            ?      ?
  9887. Nixdorf Targon/31 M15     TOS             4.0.13  t31tos40x            ? 384044
  9888. Norsk Data Uniline 88/17  UNIX SV/88 3.2     3.6  sv88r32              ? 604336
  9889. Olivetti CP 486           UNIX SVR4        2.1.1  sys5r4nx        921206 356724
  9890. Olivetti CP 486           UNIX SVR4        2.1.1  sys5r4sx        921206 356988
  9891. Olivetti LSX 3005..3045   X/OS UNIX     2.3..3.0  xos23           921211 438944
  9892. Olivetti LSX 3005..3045   X/OS UNIX     2.3..3.0  xos23c          921211 475416
  9893. Olivetti LSX 5020         SCO UNIX         3.2.2  sco3r22         921206 354848
  9894. PC 386 and above          386BSD          0.1.24  386bsd               ? 401408
  9895. PC 386 and above          386BSD             0.1  bsd44           921205 401408
  9896. PC 386 and above          386BSD             0.1  bsd44c          921205      ?
  9897. PC 386 and above          AT&T SYSV/386  3.2.2.3  sys5r3          921210 380806
  9898. PC 386 and above          BSDI (BSD/386)     1.0  bsdi            960516 666110
  9899. PC 386 and above          BSDI (BSD/386)     2.1  bsdi            961125 731295
  9900. PC 486                    Coherent      4.0.1r65  coherentmi           ? 111664
  9901. PC 486                    Coherent      4.0.1r65  coherentmax          ? 324976
  9902. PC 386 and above          Coherent/386     4.0.1  coherentmax          ? 324996
  9903. PC 386 and above          Coherent/386    4.2.05  coherent42      950524      ?
  9904. PC 386 and above          Coherent/386    4.2.10  coherent42      970125 563832
  9905. PC 486                    Consensys Sys V R4.2-1  sys5r4sxtcpc         ? 526720
  9906. PC 486                    DEC OSF/1          1.2  dec-osf              ?      ?
  9907. PC 386 and above          Dell SVR4.04       2.2  dellsys5r4c          ? 418216
  9908. PC 386 and above          Dell SVR4          2.2  dellsys5r4mi         ? 126276
  9909. PC 386 and above          Dell SVR4          2.2  dellsys5r4m          ?  90372
  9910. PC 386 and above          ESIX         3.2 Rev.D  sys5r3               ? 423018
  9911. PC 386 and above          FreeBSD            0.1  386bsd               ?      ?
  9912. PC 386 and above          FreeBSD          2.2.2  freebsd2        970627      ?
  9913. PC 386                    ISC UNIX      SVR3 2.2  is5r3n3t             ? 399836
  9914. PC 386 and above          ISC SV/386    3.2-3.01  isr3                 ?      ?
  9915. PC 386 and above          ISC SV/386 R3      3.0  is3gcc          930210 308528
  9916. PC 386 and above          ISC SV/386 R3      4.0  is5r3jc         940625 440060
  9917. PC 386 and above          ISC SV/386         2.2  is5r3netjc      921205 439816
  9918. PC 386 and above          ISC SV/386         3.0  is5r3netjc      921205 439816
  9919. PC 386 and above          ISC SV/386 3.1    1.06  is5r3net             ? 351104
  9920. PC 386 and above          ISC SV/386 3.1   2.2.1  is5r3gcc        930115 366286
  9921. PC 486 (Dell 466V)        Linux          0.99.14  linux           941006 443396
  9922. PC 486 (Dell 466V)        Linux          0.99.14  linuxs          940704 508932
  9923. PC 486 (Dell 466V)        Linux          0.99.14  linuxtcp        941006 459780
  9924. PC 486 (Dell 466V)        Linux          0.99.14  linuxtcps       940704 541700
  9925. PC 486                    Linux            1.0.9  linuxtcp        940801 459913
  9926. PC 486                    Linux           1.1.20  linux           940712 410628
  9927. PC 586 Micron 75MHz       Linux           1.2.13  linux FSSTND    960319 512000
  9928. PC 486 AMD DX4 100 MHz    Linux           1.2.13  linux FSSTND    960319 505100
  9929. PC 486                    Linux 1.3.100   1.2.13  linux           960512 545796
  9930. PC 586                    Linux RH 3.0.3  1.2.13  linux           961125 631657
  9931. PC 486 (Dell 466V)        Linux           2.1.13  linux           961203 788304
  9932. PC 386 and above          Lynx OS            2.1  lynx21          940919 405536
  9933. PC 386 and above          Lynx OS            2.2  lynx22               ?      ?
  9934. PC 386 and above          Microport SVR4.0  V4.1  sys5r4sx             ? 310636
  9935. PC 386 and above          NetBSD             0.9  bsd44c               ? 471040
  9936. PC 486                    NetBSD        1.0 Beta  netbsd          940918 446464
  9937. PC 486                    NetBSD             1.2  netbsd          961118      ?
  9938. PC 486                    NetBSD             1.2  netbsdn         961019 733184
  9939. PC 486                    NeXTSTEP/486       3.2  next486         940713      ?
  9940. PC 486 & above            NeXTSTEP           3.3  nextquadfat     970515      ?
  9941. PC 486                    OSF/1                ?  ?                    ?      ?
  9942. PC 286 16-bit             QNX                4.1  qnx16_41        930114 252759
  9943. PC 286 & above 16-bit     QNX               4.21  qnx16           941006 535667
  9944. PC 386/486/586 32-bit     QNX               4.21  qnx32           941006 465675
  9945. PC 386/486/586 16-bit     QNX               4.22  qnx16           960822 736605
  9946. PC 386/486/586 32-bit     QNX               4.22  qnx32           960822 620947
  9947. PC 386/486/586 16-bit     QNX               4.23  qnx16           961112 742525
  9948. PC 386/486/586 32-bit     QNX               4.23  qnx32           961112 667342
  9949. PC 386 and above          SCO UNIX         3.2.0  sco3r2netnd          ? 364908
  9950. PC 386 and above          SCO UNIX=ODT20 3.2v4.0  sco32v4         940624 434196
  9951. PC 386 and above          SCO UNIX=ODT20 3.2v4.0  sco32v4net      961112      ?
  9952. PC 386 and above          SCO UNIX       3.2v4.0  sco32v4netnd    961008      ?
  9953. PC 386 and above          SCO UNIX       3.2v4.0  sco32v4netc          ? 402960
  9954. PC 386 and above          SCO UNIX       3.2v4.0  sco32v4netgcc   961104 646336
  9955. PC 386 and above          SCO UNIX       3.2v4.2  sco32v4              ? 408800
  9956. PC 386 and above          SCO UNIX=ODT30 3.2v4.2  sco_odt30       961111 634100
  9957. PC 386 and above          SCO UNIX=OSR5  3.2v5.0  sco32v5         961007 851857
  9958. PC 386 and above          SCO UNIX=OSR6  3.2v5.0  sco32v5net      961125 839068
  9959. PC 386 and above          SCO UNIX=OSR6  3.2v5.0  sco32v5netgccelf961114 673396
  9960. PC 286 and above          SCO Xenix/286    2.3.3  sco286               ? 312076
  9961. PC 386 and above          SCO Xenix/286    2.3.2  sco286               ? 363463
  9962. PC 386 and above          SCO Xenix/286    2.2.3  sco386               ? 342504
  9963. PC 386 and above          SCO Xenix/286    2.3.3  ?                    ?      ?
  9964. PC 286 and above          SCO Xenix/286    2.3.4  sco286          970114 529848
  9965. PC 386 and above          SCO Xenix/386    2.3.4  sco3r2x         970114 575936
  9966. PC 386 and above          SCO Xenix/386    2.3.4  sco3r2xd        970114 569792
  9967. PC 386 and above          SCO Xenix/386    2.3.4  sco3r2xc        970114 618768
  9968. PC 386 and above          SCO Xenix/386    2.3.4  sco3r2xcd       970114 611584
  9969. PC 386 and above          Solaris 1.0    ISC 2.2  is5r3net             ? 399836
  9970. PC 586 Pentium P90        Solaris            2.4  solaris2xg      950224 546996
  9971. PC 386 and above          Solaris          2.5.1  solaris2x       961231 729500
  9972. PC 386 and above          Solaris          2.5.1  solaris2xg      9612311945868
  9973. PC 286 and 386            Trusted XENIX        ?  ?                    ?      ?
  9974. PC 386 and above          UnixWare          V1.0  unixware             ? 422296
  9975. PC 386 and above          UnixWare          V1.1  unixware             ?      ?
  9976. PC 386 and above          UnixWare          V1.1  unixwarenetc         ?      ?
  9977. PC 386 and above          UnixWare        V1.1.1  unixwarenetc    940822 518872
  9978. PC 386 and above          UnixWare        V1.1.2  unixware        941006 437160
  9979. PC 386 and above          UnixWare        V1.1.2  unixwarenetc    961124 762424
  9980. PC 386 and above          UnixWare        V1.1.4  unixwarenetc    961125 696892
  9981. PC 586                    UnixWare         V2.03  unixwarenetc    960515 670520
  9982. PC 586                    UnixWare         V2.10  unixwarenetc    961124 703504
  9983. PC 586                    UnixWare        V2.1.1  unixwarenetc    961128 701808
  9984. PC 386                    Versyss SVR3     320.0  sys5r3c+NONAWS  950810      ?
  9985. Perkin-Elmer 3200         Xelos System V     R02  ccop1                ? 566553
  9986. Prime EXL7000 MIPS        RISC/os      4.52.p3.2  mips            9612021056460
  9987. Prime EXL7000 MIPS        RISC/os      4.52.p3.2  mipstcpc        9612021206004
  9988. Pyramid MIS-S Series      DC/OSx SVR4        1.0  pyrdcosx             ? 655649
  9989. Pyramid MIS-S Series      DC/OSx SVR4        1.1  pyrdcosx             ? 645765
  9990. Pyramid MIS-T Series      OSx Dual Port     4.4b  pyramid         961115      ?
  9991. Pyramid MIS-T Series      OSx Dual Port     4.4b  pyramid-hdb     961111 808960
  9992. Pyramid MIS-T Series      OSx Dual Port     5.1a  pyramid         960620 757760
  9993. Pyramid MIS-T Series      OSx Dual Port     5.1a  pyramid-hdb     960905 800768
  9994. Pyramid 7080              4.3 BSD UNIX OSX  5.1a  pyramid-hdb     961126 811008
  9995. Pyramid                   OSx64MN      1a-93a080  pyramid         961102      ?
  9996. Sequent S27               DYNIX/ptx        1.3.1  dynixptx13      921205 544080
  9997. Sequent S2000/700         DYNIX/ptx       V1.4.0  dynixptx13      921205 544080
  9998. Sequent S81               DYNIX/ptx          1.4  dynixptx13      921205 409600
  9999. Sequent S400 (6 x 486/50) DYNIX/ptx        1.4.1  dynixptx13      940623 597204
  10000. Sequent S400 (6 x 486/50) DYNIX/ptx        1.4.2  dynixptx13      941003 613644
  10001. Sequent S2000/250         DYNIX/ptx          2.0  dynixptx20           ? 513972
  10002. Sequent S27               DYNIX           V3.1.4  dynix31c        940623 460929
  10003. Sequent S81               DYNIX        V3.2.0NFS  dynix31         921205 409600
  10004. Sequent S81               DYNIX             V3.2  dynix31c             ? 364548
  10005. Sequent S2000/250         DYNIX/ptx        2.0.3  dynix20              ? 513972
  10006. Sequent S2000/250         DYNIX/ptx        2.0.3  dynix20c             ? 610128
  10007. Sequent S81               DYNIX/ptx        2.0.4  dynixptx20c     961010 995327
  10008. Sequent S2000/700         DYNIX/ptx        2.1.0  dynixptx20      940919 674542
  10009. Sequent S2000/700         DYNIX/ptx        2.1.0  dynixptx20c     941002 776518
  10010. Sequent S2000/700         DYNIX/ptx        4.0.0  dynixptx20c     941002 650012
  10011. Sequent S2000/700         DYNIX/ptx        4.2.0  dynixptx41c     961125 838168
  10012. SGI Iris                  IRIX               3.3  sys5r3               ?      ?
  10013. SGI Indigo                IRIX               4.0  irix40          970116 757760
  10014. SGI 4D/35                 IRIX             4.0.1  irix40               ? 331776
  10015. SGI 4D                    IRIX SVR3        4.0.5  irix40          921216 499712
  10016. SGI Indigo                IRIX            4.0.5F  irix40          930414 495616
  10017. SGI Indigo                IRIX            4.0.5F  irix40ypc       930414 606208
  10018. SGI Elan                  IRIX            4.0.5H  irix40               ? 507904
  10019. SGI Elan                  IRIX            4.0.5H  irix40ypc            ? 618946
  10020. SGI Elan                  IRIX            4.0.5H  irix40u              ? 507904
  10021. SGI Elan                  IRIX            4.0.5H  irix40uc             ? 569344
  10022. SGI Indigo Elan           IRIX               5.2  irix51ypc       940822 676608
  10023. SGI Indigo                IRIX               5.0  irix40ypc            ?      ?
  10024. SGI Challenge             IRIX           5.1.1.1  irix51ypc            ?      ?
  10025. SGI Indigo R3000          IRIX               5.2  irix51ypc       940623 652032
  10026. SGI Indigo R4000          IRIX               5.2  irix40ypc       940809 660224
  10027. SGI Indigo R4000          IRIX               5.2  irix51ypc       941015 680704
  10028. SGI Challenge L R4400     IRIX (cc 3.19)     5.3  irix51ypc       961129 938792
  10029. SGI Indigo R4000          IRIX               5.3  irix51          961125 938792
  10030. SGI Indigo 2 IP26         IRIX              6.01  irix60          950404 805512
  10031. SGI Challenge S R5000     IRIX               6.2  irix60          9610101099120
  10032. Siemens/Nixdorf RM200     SINIX-N MIPS      5.42  sinix542        9611251012577
  10033. Siemens/Nixdorf RM600     SINIX-N MIPS      5.43  sinix542        9701311044425
  10034. Siemens/Nixdorf Intel PC  SINIX-Z Intel     5.42  sinix542        970131 772812
  10035. Solbourne 5E/905          OS/MP           4.1A.1  sunos41         921222 475136
  10036. Solbourne 5E/900          OS/MP           4.1A.3  sunos41              ?      ?
  10037. Sony NEWS                 NEWS-OS         4.0.1C  sonynews             ?      ?
  10038. Sony NEWS                 NEWS-OS         4.1.2C  sonynews             ?      ?
  10039. Stardent 1520             Stardent UNIX      2.2  sys5r3          921127      ?
  10040. Stratus, various models   FTX                2.1  sys5r4               ?      ?
  10041. Stratus XA/R Model 310    FTX              2.2.1  sys5r4sxtcpc    940829 725212
  10042. Stratus XA/R Model 20     FTX            2.2.2.2  sys5r4sxtcpc    940829 732716
  10043. Stratus Continuum         FTX               3.01  sys5r4sxtcpc    970610      ?
  10044. Sun SPARC IPX             Linux           2.0.27  linux           970111 708116
  10045. Sun SPARC model unknown   NeXTSTEP           3.3  next            9612011587564
  10046. Sun-3/160                 Sun UNIX 4.2       3.2  bsd                  ? 434176
  10047. Sun-3/60                  Sun UNIX 4.2       3.5  sunos3gcc       930115      ?
  10048. Sun 3/60                  SunOS              4.1  sunos41c        940827 335872
  10049. Sun 3/60                  SunOS            4.1.1  sunos41c        961009 655360
  10050. Sun-4/470                 SunOS            4.1.2  sunos41         960403 688128
  10051. Sun-4/470                 SunOS            4.1.2  sunos41c        961126 786432
  10052. Sun SPARCserver           SunOS            4.1.2  sunos41s5r3          ? 450560
  10053. Sun SPARCserver           SunOS            4.1.2  sunposix             ? 442368
  10054. Sun SPARCstation 1        SunOS            4.1.2  sunos41c             ? 499712
  10055. Sun SPARCstation 2        SunOS           4.1.1b  sunos41c             ? 507904
  10056. Sun SPARCserver 10        SunOS            4.1.3  sunos41gcc      961030 759052
  10057. Sun SPARCstation 2        SunOS            4.1.3  sunos41c             ? 499712
  10058. Sun SPARCserver           SunOS X.25 7.00  4.1.3  sunos41x25c     941024 606208
  10059. Sun SPARCstation 2        SunOS JLE 1.1.3  4.1.3  sunos41c        921205 524288
  10060. Sun 4M SS10               SunOS            4.1.3  sunos41gcc      940623 524288
  10061. Sun 4 ELC                 SunOS         4.1.3_U1  sunos41gcc      940623 524288
  10062. Sun 4 SS1+                SunOS            4.1.3  sunos41gcc      940624 524288
  10063. Sun 4/380 SPARC           SunOS            4.1.3  sunos41c        960229 720896
  10064. Sun SPARCserver 10        SunOS            4.1.3  sunos41mi       960226 213000
  10065. Sun SPARCserver 10        SunOS            4.1.3  sunos41m        960821 172000
  10066. Sun SPARCserver 10        SunOS            4.1.3  sunos41s5c      940813 573440
  10067. Sun SPARCserver 20        SunOS         4.1.3_U1  sunos41c        961110 843776
  10068. Sun SPARCserver 20        SunOS         4.1.3_U1  sunos41gcc      961106 794624
  10069. Sun SPARCstation IPX      SunOS         4.1.3_U1  sunos41         940919 557056
  10070. Sun SPARCstation IPX      SunOS         4.1.3_U1  sunos41gcc      940919 548864
  10071. Sun (model unknown)       Solaris            2.0  sunsol20gcc          ?      ?
  10072. Sun SPARCstation 2        Solaris            2.0  sunsol20        921204 547144
  10073. Sun SPARCstation 2        Solaris            2.1  sunos51              ?      ?
  10074. Sun SPARCstation 2        Solaris            2.1  sunos51c             ?      ?
  10075. Sun SPARCstation 2        Solaris            2.1  sunos51tcp           ?      ?
  10076. Sun SPARCstation 10       Solaris            2.1  sunos51tcpc/cc       ? 448220
  10077. Sun SPARCstation 10       Solaris            2.1  sunos51/apcc         ? 411100
  10078. Sun SPARCstation 10       Solaris            2.1  sunos51tcp/apcc      ? 433984
  10079. Sun SPARCstation 10       Solaris            2.1  sunos51tcpc/apc      ? 492476
  10080. Sun SPARCstation LX       Solaris            2.1  sunos51cgcc     930119 438908
  10081. Sun SPARCserver 10        Solaris            2.2  sunos51tcp           ? 450204
  10082. Sun SPARCstation 2 4/75   Solaris            2.3  solaris2x       960227 750284
  10083. Sun SPARCstation 20/512   Solaris (cc 3.0.1) 2.3  solaris2x       960229 754112
  10084. Sun SPARCserver 10        Solaris            2.3  solaris2xg      940919 578768
  10085. Sun SPARCstation 2        Solaris X.25 8.01  2.3  solaris2x25     941014 607324
  10086. Sun SPARCbook 2           Solaris            2.3  solaris2xg      961203      ?
  10087. Sun SPARC model unknown   Solaris            2.4  solaris2x       961125 851884
  10088. Sun SPARC model unknown   Solaris            2.4  solaris2xg      961125 736812
  10089. Sun SPARC model unknown   Solaris X.25 9.00  2.4  solaris2x25     961125 874676
  10090. Sun SPARC model unknown   Solaris            2.5  solaris2x       961125 850868
  10091. Sun SPARC model unknown   Solaris            2.5  solaris2xg      961125 759052
  10092. Sun SPARC 20              Solaris X.25 9.00  2.5  solaris2xg25    960621      ?
  10093. Sun UltraSPARC 2170       Solaris          2.5.1  solaris2x       961125 834968
  10094. Sun UltraSPARC 2170       Solaris          2.5.1  solaris2xg      961125 760676
  10095. Sun SPARC (any)           NeXTSTEP           3.3  nextquadfat     870515      ?
  10096. Tandy Model 6000          Xenix              3.2  trs16           960619      ?
  10097. Tektronix 6130            Utek             2.3.1  utek            921205 363520
  10098. Tektronix 6130            Utek               3.0  utek            921205 363520
  10099. Tektronix XD88            UtekV SVR3      3.2e.3  utekvr3         921229 648368
  10100. Torch XXX 68010           Unisoft UniPlus+   5.2  sys3            930107 426701
  10101. UNISYS S/4040 68040/25    CTIX SVR3.2      6.4.1  sys5r3          921201 373600
  10102. UNISYS U5000/95           UNIX SVR3        6.0.2  sys5r3c         940727 481704
  10103. UNISYS 640 68020/25       CTIX SVR3         S5.3  sys5r3          961202 632325
  10104. UNISYS 640 68020/25       CTIX SVR3         S5.3  sys5r3c         961202 695714
  10105. UNISYS 6000 486/50        UNIX SV/386 R3    3.00  sys5r3          961202 707533
  10106. UNISYS 6000 486/50        UNIX SV/386 R3    3.00  sys5r3c         961202 817172
  10107. UNISYS U6000/65 MP 486/50 UNIX SV/386 R4   1.0.2  sys5r4nx        921201 366828
  10108. UNISYS U6000/65           UNIX SV/386 R4   1.1.1  sys5r4nxnetc    940727 514096
  10109.  
  10110. (End of CKC192.UPD)
  10111.