home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / ckc190.zip / ckc190.upd < prev    next >
Text File  |  1996-03-21  |  302KB  |  5,411 lines

  1. File CKC190.UPD, Update history for C-Kermit.                      -*- text -*-
  2.  
  3. As of version:      5A(190)
  4. Most recent update: Fri Oct 28 10:32:11 1994
  5.  
  6. Author:  Frank da Cruz
  7. Address: Watson Laboratory, Columbia University Academic Information Systems
  8.          612 West 115th Street, New York, NY 10025, USA
  9. Phone:   +1 212 854-5126
  10. Fax:     +1 212 662-6442  -- or --  +1 212 663-8202
  11. E-Mail:  fdc@columbia.edu (Internet), FDCCU@CUVMA (BITNET/EARN/CREN)
  12.  
  13.   Copyright (C) 1985, 1994, Trustees of Columbia University in the City of New
  14.   York.  The C-Kermit software may not be, in whole or in part, licensed or
  15.   sold for profit as a software product itself, nor may it be included in or
  16.   distributed with commercial products or otherwise distributed by commercial
  17.   concerns to their clients or customers without written permission of the
  18.   Office of Kermit Development and Distribution, Columbia University.  This
  19.   copyright notice must not be removed, altered, or obscured.
  20.  
  21. This file is for programmers.  It contains the detailed edit history for
  22. C-Kermit 5A edit 190; that is, all the changes since 5A(189) was
  23. released on 30 June 1993.  C-Kermit users should read the file CKCKER.UPD
  24. for a description of the new features of C-Kermit since 5A(188).  The
  25. CKCKER.UPD file should be used as a supplement to the book "Using C-Kermit".
  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.   CKC190.UPD -- Version 5A edit 190, July 1993 - ??? (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-108-0.
  45.  
  46.   US single-copy price: $34.95; quantity discounts available.  Available in
  47.   computer bookstores or directly from Columbia University:
  48.  
  49.     Kermit Development and Distribution
  50.     Columbia University Academic Information Systems
  51.     612 West 115th Street
  52.     New York, NY  10025  USA
  53.     Telephone: (USA) 212 854-3703
  54.  
  55.   Domestic and overseas orders accepted.  Price: $34.95 (US, Canada, and
  56.   Mexico), $45 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.  
  69.   A German-language edition is also available:
  70.  
  71.     Frank da Cruz and Christine M. Gianone, "C-Kermit - Einfuehrung und
  72.     Referenz", Verlag Heinz Heise, Hannover, Germany (1994).
  73.     ISBN 3-88229-023-4.  Deutsch von Gisbert W. Selke.  Price: DM 90,00.  
  74.     Verlag Heinz Heise GmbH & Co. KG, Helstorfer Strasse 7, D-30625 Hannover.
  75.     Tel. +49 (05 11) 53 52-0, Fax. +49 (05 11) 53 53-1 29.
  76.  
  77. ------------------------------
  78. C-KERMIT 5A(190) EDIT HISTORY, 5 AUG 93 - 4 OCT 94.
  79.  
  80. In ckutio.c, corrected a typo that might have prevented setting a serial
  81. port's speed to 57600 bps.  Also, consistently added support for 57600 and
  82. 115200 bps if symbols for those speeds are defined.  (But this is still an
  83. issue for the command processor, which does not have access to
  84. system-dependent symbols like this).  ckutio.c 5A(111), 5 Aug 93.
  85.  
  86. From Bill Glass - fixed a statistics counter (file bytes) that was still
  87. counting some non-file material (contents of server command packets) in
  88. the decode() function.  ckcfns.c 5A(090), 6 Aug 93.
  89.  
  90. Added types to all functions in VMS-specific modules, CKVFIO.C and CKVTIO.C
  91. (CKVCON was already OK) to pacify the new, stricter Alpha AXP (DEC C)
  92. compilers.  CKVFIO.C 5A(056), CKUTIO.C 5A(101), 8 Aug 93.
  93.  
  94. Added patches to enable SET FLOW RTS/CTS in Linux, originally from Rick
  95. Sladkey, jrs@world.std.com.  Depends on symbol "linux".  ckcdeb.h, ckutio.c.
  96.  
  97. Terry Kennedy pointed out that VMS C-Kermit follows FILE TYPE when
  98. TRANSMITting, even if it is IMAGE or LABELED.  Changed the TRANSMIT command
  99. to treat any of the system-specific binary modes (IMAGE, LABELED, MACBINARY,
  100. etc) as ordinary binary mode, i.e. saved and restored the "binary" variable
  101. in the TRANSMIT command.  ckuus4.c, 10 Aug 93.
  102.  
  103. Shinichi Sakata <ssakata@weber.ucsd.edu> discovered that if an "application
  104. file" (a file whose name is given as the first command-line argument) contains
  105. a CD command, that C-Kermit would, after finishing the application file,
  106. act as if it had been given an invalid command-line argument.  Fixed by adding
  107. yet another flag, cfilef - set in ckcmai.c, tested in ckuusy.c.  10 Aug 93.
  108.  
  109. From Rob Weiner <rweiner@watsun.cc.columbia.edu>, a new makefile entry,
  110. sys5r4sxtcpc, for CONSENSYS System V R4.2-1 with TCP/IP and curses.  makefile.
  111. 12 Aug 93.
  112.  
  113. From Rich Sladkey <jrs@world.std.com>: (1) fix prototype of ttrpid() in
  114. ckutio.c; (2) fix fixes to Linux hardware flow control.  It's still ugly
  115. internally, but cleaning up the hardware flow control code would be a major
  116. undertaking due to the geometrically expanding combinations of flow control
  117. settings and different APIs for setting them.  ckutio.c 5A(112) 22 Aug 93.
  118.  
  119. Added conditional compilation support for system-wide init file.  If the
  120. compile-time symbol CK_SYSINI is defined (to be a character string in
  121. doublequotes), it is taken as the file specification of the initialization
  122. file, to be used instead of the built-in default.  This can be absolute or
  123. relative, so it can point to a single system-wide file, or to something like
  124. ~/.kermrc (UNIX) or SYS$LOGIN:CKERMIT.INI (VMS) to indicate the user's own.
  125. If it is system wide, it can (and probably should) still "chain" to the user's
  126. own initialization file, by ending (or starting, depending on the desired
  127. precedence) with a command like:
  128.  
  129.   if exist \v(home)ckermit.ini take \v(home)ckermit.ini
  130.  
  131. ckuus5.c, 10 Sep 93.
  132.  
  133. Fixes for VMS C-Kermit, all in CKVTIO.C:
  134.  * 058 27-Sep-93 HG   Fix for real the SHARE issue when allocating terminal
  135.  *              by dropping SHARE before trying to assign the channel.
  136.  * 059  7-Oct-93 mlo  Added support for CMU-OpenVMS/IP ("CMU/Tek").  Requires
  137.  *                    CMU-OpenVMS/IP sockets library, also by mlo.
  138.  * 060  9-Oct-93 HG   Fix improper call to vms_assign_channel in edit 058,
  139.  *                    noticed by Fritz@GEMS.VCU.EDU.
  140.  * 061  9-Oct-93 fdc  For some reason, conbin() was turning off flow control.
  141.  *                    This caused massive data loss during CONNECT mode when
  142.  *                    running C-Kermit from a low-speed connection through
  143.  *                    a DECserver.  Now conbin() leaves the console flow
  144.  *                    control setting alone.
  145.  * 062 10-Oct-93 ttj  Correcting parameters to time() and ctime(). Was long,
  146.  *                    is now time_t (pointers).  Made prototype for
  147.  *                    vms_assign_channel and caught an erroneous function call.
  148.  
  149. Plus CMU/Tek TCP/IP support for VMS C-Kermit from Mike O'Malley at DEC
  150. <mlomall@sav324.sandia.gov>; minor source changes to CKCNET.C, CKCNET.H,
  151. CKUUS4.C, and (noted above) CKVTIO.C.
  152.  
  153. Plus compiler-related and/or typo fixes to CKVFIO.C from Tarjei Jensen:
  154.  * 102 18-Aug-93 ttj Minor updates in zsattr() and do_label_recv() mainly to
  155.  *                   quieten the compiler (which had every reason to complain).
  156. (Installed 10 Oct 93).
  157.  
  158. Added keypad period (".") to the list of numeric keypad keys that return
  159. different scan codes from their main keypad equivalents -- final step in
  160. making the PC numeric keypad able to work like the DEC one.  From Kai Uwe
  161. Rommel.  ckotio.c 5A(105) 11 Oct 93.
  162.  
  163. Corrections to X.25 functions from <David_Lane_@vos.stratus.com>: A PAD
  164. command (either a SET, READ, or SETANDREAD) without any parameters specified
  165. in the command means "all supported parameters."  For the SET commands, it is
  166. a "reset to initial values."  As passed to qbitpkt(), n is the number of data
  167. bytes in the packet, which starts at s.  The control byte has already been
  168. stripped off.  When passed to either setpad() or readpad(), n is the number of
  169. parameters in the command/query.  ckcnet.c 5A(020) 13 Oct 93.
  170.  
  171. A change from Alex Dupuy <dupuy@smarts.com>: if C-Kermit is compiled with
  172. -DNOCMDL (no command-line arguments) and -DNOICP (no interactive command
  173. parser), then instead of building a program that just exits, build one that
  174. goes into server mode with all default settings.  Alex suggests that we can
  175. also rip out all local-mode supporting code in this case (since there is no
  176. way to SET LINE any more) to make a truly minimal remote-only version.
  177. Settings can still be accomplished via REMOTE SET commands.  C-Kermit built
  178. on a PC with 'make dellsys5r4m "KFLAGS=-DNOCMDL -DNOICP"' weighs in at 90K.
  179. ckcmai.c 5A(190) 14 Oct 93.
  180.  
  181. Changed the protocol module to issue "KERMIT READY TO blah..." messages
  182. consistently, and to make them appear (in remote mode) no matter whether
  183. the file transfer command was given interactively or from a command file
  184. or macro.  ckcpro.w 5A(056) 14 Oct 93.
  185.  
  186. Changes for BSDI from John T. Kohl <jtk@kolvir.blrc.ma.us>.  ckcdeb.h,
  187. ckutio.c.  Aside from adjusting BSDI-isms, John (partially) fixed a big
  188. problem with tthflow() that had previously been hacked around in the Linux
  189. case, by passing the appropriate terminal info structure to tthflow() as an
  190. argument.  I removed the special case for Linux.  Unfortunately, the hardware
  191. flow control status is not kept in the terminal info on some systems,
  192. e.g. SVR4, SunOS.  And since John started things off in this direction, I made
  193. further attempts to clean up the hardware flow control situtation in the UNIX
  194. version, adding a new parameter to tthflow() to specify whether hardware f/c
  195. is to be turned on (1) or off (0), and then replacing various chunks of
  196. misplaced system-specific code by calls to tthflow().  Compiles OK on SunOS
  197. 4.1.3, 4.4BSD, SVR4, needs testing.  ckutio.c 5A(113) 20 Oct 93.
  198.  
  199. John also added a new command, which he called PUSHREM and which I decided to
  200. call REDIRECT, which is like RUN, but with stdin and stdout redirected to the
  201. communication device (serial or network connection).  For UNIX only, needs
  202. forks, dup(), wait(), and needs <sys/wait.h> to define WIFEXITED() and
  203. WEXITSTATUS().  This commmand is compiled in only if the symbol CK_REDIR is
  204. defined at compile time, and then only when NOPUSH is not defined.  Fixed up,
  205. adapted to, and tested on SunOS 4.1.3, SVR4, Linux.  Could not get it working
  206. on the NeXT or AIX, which have no definition for WEXITSTATUS().  If you try to
  207. build the program with CK_REDIR defined and the required macros are not
  208. available, C-Kermit will print a message "?Sorry, can't execute this command -
  209. missing pieces" if you try to use the REDIRECT command.  Also, I added a new
  210. token, "<" (leftbracket), as a synonym for REDIRECT (like "!" is a synonym for
  211. RUN), and, when CK_REDIR is defined, made "red" and "redi" valid non-unique
  212. abbreviations for REDIAL.  ckuusr.h, ckuusr.c 5A(104), ckutio.c, ckuus[25].c.
  213. 25 Oct 93.
  214.  
  215. Added "designer banners" for Linux and BSDI BSD/386.  ckuver.h.  20 Oct 93.
  216.  
  217. After testing of new RTS/CTS code by Rick Sladkey, made some more changes,
  218. unified Linux and BSDI RTS/CTS code, reorganized, consolidated, cleaned up,
  219. documented.  ckutio.c 5A(114) 21 Oct 93.
  220.  
  221. Fixes from Chuck Goodhart <ceg@hyper-bret.jpl.nasa.gov>:
  222.  . The SCRIPT command can sometimes cause TELNET negotiations to be ignored.
  223.  . The SCRIPT command is slowed by unbuffered output to the console
  224.    and the session log.
  225.  . The SCRIPT command does not filter out carriage returns when
  226.    SET SESSION-LOG TEXT is set.
  227.  . While SET SESSION-LOG TEXT, TELNET negotiations should not be logged.
  228.  . The INPUT command is also slowed by unbuffered output to the console and
  229.    the session log.
  230.  . ttinc(timo) should ignore the timeout when, if MYREAD buffered
  231.    input is being used, a character is known to be available.  This
  232.    saves two calls to signal() and two calls to alarm(), dramatically
  233.    improving the performance of the INPUT command.
  234. ckuscr.c 5A(017), ckutio.c 5A(115), ckuus4.c 5A(105), ckcnet.c 5A(021),
  235. 21 Oct 93.  And again, ckuscr.c 5A(018) 25 Oct 93.
  236.  
  237. Fixed a bug that caused TELNET negotiations to be ignored if C-Kermit was
  238. used to make a TELNET connection, then a serial connection, and then a
  239. another TELNET connection, in that order.  ckuus7.c, 25 Oct 93.
  240.  
  241. Merged in support for a whole new and different proprietary operating system,
  242. Stratus VOS, from David Lane at Bellsouth <David_Lane_@vos.stratus.com>.  This
  243. is a full new C-Kermit implementation, including TCP/IP and X.25.  Changes to
  244. all modules are within #ifdef STRATUS..#endif.  For X.25, the symbol is
  245. STRATUSX25.  Elements common to SunLink and Stratus X.25 are now combined
  246. under the new ANYX25 symbol.  All ckc* and cku* modules affected (except
  247. cku[ft]io.c).  All modules must now #include "ckcsym.h" first thing to pick up
  248. other symbol definitions -- the VOS C compiler doesn't allow -D/-d for this.
  249. David also VOS-ified the ckbmkb and ckbunb programs, wart, and the malloc
  250. debugger.  25 Oct 93.  Supporting system-dependent modules -- ckl*.[ch] --
  251. still to come, along with VOS-specific documentation, build procedure, etc.
  252.  
  253. Last month, Olaf Seibert <rhialto@mbfys.kun.nl> pointed out that C-Kermit,
  254. particularly on the Mac, would seem to operate in stop-and-wait mode,
  255. even though a nonzero window size was successfully negotiated.  The behavior
  256. would sometimes change during the transfer a particular file -- windowing
  257. one minute, stop-and-wait the next.  Olaf figured out that, in the "PARSENSE"
  258. case (in which C-Kermit's packet reader is length-driven rather than waiting
  259. for the packet terminator), the packet terminator is left over in the buffer.
  260. Meanwhile, back in sdata() -- the Data-Packet sender in ckcfns.c -- the
  261. following code:
  262.  
  263.     spack('D',pktnum,len,data);    /* Send the data packet. */
  264.     x = ttchk();            /* Peek at input buffer. */
  265.     debug(F101,"sdata ttchk","",x);    /* ACKs waiting, maybe?  */
  266.     if (x) return(1);        /* Yes, stop sending data packets */
  267.  
  268. checks whether *any* data has arrived, in which case it breaks out of sending
  269. the current windowful and goes to read a packet.  And that's just what happens
  270. when the packet terminator is still waiting to be read.  The fix turned out to
  271. be simple:
  272.  
  273.     if (x) return(1);
  274. becomes:
  275.     if (x > 4) return(1);
  276.  
  277. The minimum number of characters in a Kermit packet is 5, so we don't break
  278. out of the send loop unless there are at least that many characters waiting.
  279. This tiny change should speed things up quite a bit in situations where
  280. windowing is needed.  ckcfns.c 5A(092) 25 Oct 93.
  281.  
  282. Fixed an incorrect test (nettype == NP_TELNET) in ckvtio.c.  5A(030) 27 Oct 93.
  283. Noticed by David Lane.
  284.  
  285. Fixed incorrect setting of network type via command-line arguments.
  286. Noticed by David Lane.  ckuusy.c.
  287.  
  288. Changed the UNIX CONNECT command to buffer keystrokes, rather than reading
  289. them one at a time.  This turns out to be important when C-Kermit is "in the
  290. middle", in CONNECT mode, between two other computers that are transferring
  291. data.  Fulvio Marino of Olivetti in Italy recoded C-Kermit's communications
  292. and console i/o for this very reason, but his changes are massive and would
  293. require months or years of testing, debugging, adaptation to every UNIX
  294. variant in the world, etc, which might well be worth it, since his generalized
  295. i/o buffering scheme makes most kinds of i/o in Kermit MUCH faster and easier
  296. on the system in terms of cycles, system calls, etc...  In other words, the
  297. present change is just a quick fix to get a modest improvement in this
  298. particular case.  Benchmarks using a 58K file on a network connection:
  299.  
  300.                        No Buffering   With Buffering
  301.   SEND through C-Kermit in CONNECT mode:      102 sec         47 sec
  302.   TRANSMIT thru C-Kermit in CONNECT mode:     237 sec         94 sec
  303.  
  304. So, about a 100%+ speedup.
  305.  
  306. The buffer size is only 256 bytes, since that's the biggest amount that UNIX
  307. itself seems to buffer from the console (i.e. tests on SunOS showed that
  308. conchk() never returned a value greater than 256).  No ill or side effects
  309. were noted -- CONNECT works in the normal way during interactive use.
  310. ckucon.c 5A(055) 27 Oct 93.
  311.  
  312. This code could not be adapted to VMS C-Kermit because of the insane way that
  313. it reads characters from the keyboard.  It was not adapted to OS/2 because
  314. OS/2 C-Kermit is never "in the middle".
  315.  
  316. Changed the SET NETWORK keyword table to allow any combination of networks
  317. without getting compile-time syntax errors caused by too many or too few
  318. commas.  Problem noticed by David Lane when he built VOS C-Kermit with X.25
  319. and no TCP/IP.  ckuusr.c 5A(107), 28 Oct 93.
  320.  
  321. Added vanity herald for NetBSD based on preprocessor symbol __NetBSD__.
  322. ckuver.h, 28 Oct 93.
  323.  
  324. Disabled -j command-line option if TCPSOCKET not defined.
  325. Disabled -X and -Y command-line options if ANYX25 not defined.
  326. Suggested by David Lane.  ckuusy.c, 29 Oct 93.
  327.  
  328. Added a new variable, \v(parity), to allow script programs to get the current
  329. parity, in case they need to save, change, and restore it, e.g. around a
  330. dialog with a modem that doesn't work right if it sees a parity bit.
  331. ckuusr.h, ckuus4.c, 29 Oct 93.
  332.  
  333. Added a new variable, \v(dialstatus), a return code from the last DIAL
  334. command, either success or else any of twenty-some specific error codes (busy,
  335. no answer, no dialtone, etc).  This allows users to write script programs that
  336. can decide whether to redial based on the failure reason.  For now, the value
  337. of \v(dialstatus) is a number.  ckcker.h, ckudia.c, ckuus4.c.  The failure
  338. reason codes are:
  339.  
  340. #define DIA_UNK  -1            /* No DIAL command given yet */
  341. #define DIA_OK    0            /* DIAL succeeded */
  342. #define DIA_NOMO  1            /* Modem type not specified */
  343. #define DIA_NOLI  2            /* Communication line not spec'd */
  344. #define DIA_OPEN  3            /* Line can't be opened */
  345. #define DIA_NOSP  4            /* Speed not specified */
  346. #define DIA_HANG  5            /* Hangup failure */
  347. #define DIA_IE    6            /* Internal error (malloc, etc) */
  348. #define DIA_IO    7            /* I/O error */
  349. #define DIA_TIMO  8            /* Dial timeout expired */
  350. #define DIA_INTR  9            /* Dialing interrupted by user */
  351. #define DIA_NRDY  10            /* Modem not ready */
  352. #define DIA_ERR   20            /* Modem command error */
  353. #define DIA_NOIN  21            /* Failure to initialize modem */
  354. #define DIA_BUSY  22            /* Phone busy */
  355. #define DIA_NOCA  23            /* No carrier */
  356. #define DIA_NODT  24            /* No dialtone */
  357. #define DIA_RING  25            /* Ring, incoming call */
  358. #define DIA_NOAN  26            /* No answer */
  359. #define DIA_DISC  27            /* Disconnected */
  360. #define DIA_VOIC  28            /* Answered by voice */
  361. #define DIA_NOAC  29            /* Access denied, forbidden call */
  362. #define DIA_UERR  98            /* Unknown error */
  363. #define DIA_UNSP  99        /* Unspecified failure detected by modem */
  364.  
  365. From Jamie Watson <jw@adasoft.ch>:
  366.  
  367. - On AIX 3.x, the xon/xoff and rts/cts values in the tty line discipline
  368.   stack are saved on startup and restored on exit.  This fixes a very
  369.   irritating problem in which C-Kermit could leave a tty in a state that
  370.   was unusable by uucp or cu.
  371.  
  372. - The REDIRECT command is enabled and working on AIX 3.x and on DEC Ultrix.
  373.   The AIX version has been tested on AIX 3.1.5 and AIX 3.2.x (heaven only
  374.   knows what the "x" might be; I defy anyone to assign a specific value
  375.   to any currently running AIX 3.2 system).
  376.   The Ultrix version has been tested on a DECsystem 5000/25, Ultrix 4.3,
  377.   and on a MicroVAX 2000, Ultrix 4.2.
  378.  
  379. ckutio.c 5A(116) 1 Nov 93.
  380.  
  381. Jamie also noticed that the new keyboard-input buffering invariably caused
  382. CONNECT/TELNET to fail under AIX, as it would have under most any System V
  383. implementation.  The culprit turns out to be that the read() in kbget() was
  384. getting interrupted by the lower CONNECT fork as a result of TELNET echo
  385. negotiations, thus read() would fail with EINTR.  Solution: ignore EINTR
  386. errors when read()ing from keyboard during CONNECT.  ckucon.c 5A(056) 1 Nov 93.
  387.  
  388. Fixed prototype-mismatch complaints in new buffering code in SCRIPT and INPUT
  389. commands.  ckuscr.c 5A(019), ckuus4.c, 1 Nov 93.
  390.  
  391. Added a compile-time symbol for ckufio.c: ISREGBUG.  If this symbol is
  392. defined, it tells ckufio.c to define S_ISREG and S_ISDIR itself, rather than
  393. using definitions from header files, when the latter don't work.  There is
  394. already code in ckufio.c to do this for certain systems, but the new symbol
  395. allows it to be done from the CC command line (or with KFLAGS on the "make"
  396. command line) without modifying the source code.  This is necessary for at
  397. least one of the NCR UNIX versions.
  398.  
  399. Added numeric C-Kermit program version number to OS/2 C-Kermit ENQ/Answerback
  400. string so now it says "OS/2 C-Kermit 501190".  ckocon.c 5A(104), 2 Nov 93.
  401.  
  402. From CKUKER.BWR:
  403. "If a file arrives that has the same name as a directory, and C-Kermit's FILE
  404. COLLISION setting is BACKUP, C-Kermit will either: (a) rename the directory,
  405. or (b) not be able to rename the directory and so will refuse the incoming
  406. file with the message "Can't transform filename".  Similarly, if C-Kermit's
  407. FILE COLLISION setting is OVERWRITE, C-Kermit will, hopefully (!), not be able
  408. to delete the directory, and so will refuse the incoming file."
  409.  
  410. And from CKOKER.BWR:
  411. "You can't give a command like "RECEIVE A:".  C-Kermit will fail to open
  412. the output file.  You must also include a filename, e.g. "RECEIVE A:X.X"."
  413.  
  414. These are now fixed.  C-Kermit -- at least the UNIX and OS/2 versions -- now
  415. has the ability to recognize disk and directory names when they are given as
  416. output filespecs.  When this happens, primarily when "as-names" are given in
  417. RECEIVE or GET commands, or in a '-a' command-line argument, C-Kermit now
  418. changes its directory (or disk) to the one given for the duration of that
  419. command, and then restores the previous current disk/directory when the
  420. command is done.  So now in UNIX, you can say "receive foo", where foo is a
  421. directory name (relative or absolute, need not end in slash), and C-Kermit
  422. will CD to that directory and store all the incoming files there under their
  423. own names until protocol mode exits, at which time C-Kermit goes back to the
  424. directory that was current when the RECEIVE command was given.  If "foo" is
  425. not a directory, then C-Kermit stores the (first) incoming file in the current
  426. directory, under the name of "foo", as before.  This feature depends on the
  427. symbol CK_TMPDIR, which is automatically defined in ckcker.h for UNIX and
  428. OS/2, and a new supporting CK?FIO.C function, isdir(), which has been filled
  429. in for UNIX and OS/2.  Also, files that arrive under names which correspond to
  430. directory names are no longer able to cause renaming or other modification to
  431. directory files, and useful error messages are now returned in this case.
  432. Also, 'kermit -r' is bit more careful about checking whether the output file
  433. can be created before going into protocol mode.  ckcker.h, ckcfns.c 5A(093),
  434. ckuus[r56y].c 5A(108), ckufio.c 5A(075), 2 Nov 93.
  435.  
  436. (Ideally, the receiving system should be able to send back a fully qualified
  437. file specification in the ACK to F packet, but most systems where C-Kermit
  438. runs are not able to do this.  The temporary directory name might be absolute
  439. or relative, might have or lack a terminating separator, etc, so we'd need a
  440. ton of system-dependent code to do this right.)
  441.  
  442. Added the ability to repaint the fullscreen file transfer display screen, for
  443. example if the screen gets messed up by talk or broadcast messages during file
  444. transfer.  User types Ctrl-L (or L) to repaint.  Internally, two methods are
  445. used.  If the symbol CK_WREFRESH is defined, which can be added to ckcdeb.h
  446. for a particular version (as I have done for SunOS, NeXTSTEP, and AIX), or
  447. added to a makefile entry, or given as "KFLAGS=-DCK_WREFRESH", or otherwise
  448. defined at compile time, then the real-curses-library functions clearok() and
  449. wrefresh() are called, which totally repaint the screen -- just what we want.
  450. Otherwise, Kermit uses a do-it-yourself method which clears the screen and
  451. repaints most of the fields, but not all of them, because certain information
  452. might be lost by the time repainting occurs, such as the filename and the
  453. direction of transfer.  The latter method works for all implementations of
  454. fullscreen file transfer display, but making this method work for all fields
  455. would be a major recoding task, and would add a lot of complexity and storage
  456. space, basically duplicating the functionality of curses itself (keeping each
  457. field, or an entire screen image, for repainting purposes).  ckcdeb.h,
  458. ckuusx.c, ckuus5.c, 3 Nov 93.
  459.  
  460. Added CK_WREFRESH for AT&T System V R3 and later, since it's in the SVID.
  461. Also for BSD 4.4 and derivatives.  However, this type of change is always
  462. risky, so I also added a new symbol, NOWREFRESH, to allow this decision to be
  463. overriden from the CC or 'make' command line.  In other words, if your linker
  464. complains that _clearok or _wrefresh are undefined, then "touch ckuusx.c"
  465. and rebuild with -DNOWREFRESH.  ckcdeb.h, 3 Nov 93.
  466.  
  467. Added VMS support for CK_WREFRESH, contributed by William Bader
  468. <wbader@pluto.CSEE.Lehigh.Edu>.  ckcdeb.h, ckuusx.c, 4 Nov 93.
  469.  
  470. Added a makefile entry for DECstation 5000 models based on R4000 "MIPS-3"
  471. chip, Ultrix 4.3A, from Jamie Watson <jw@adasoft.ch>.  4 Nov 93.
  472.  
  473. A few more minor Stratus VOS changes, having to do with X.25, from David Lane.
  474. ckcmai.c, ckuus7.c.  4 Nov 93.
  475.  
  476. Added KANJI, RTS/CTS, Curses, CK_WREFRESH to DEC OSF/1 version, built, tested
  477. OK on OSF/1-AlphaAXP 1.3.111.  RTS/CTS compiled OK, but I don't know if it
  478. actually works.  REDIRECT compiles but doesn't work ("missing pieces").
  479. 4 Nov 93.
  480.  
  481. Added CK_TMPDIR feature to VMS version.  isdir() function for VMS received
  482. from William Bader <wbader@pluto.csee.lehigh.edu>.  Moved CK_TMPDIR definition
  483. from ckcker.h to ckcdeb.h, because we might want to use it in the ck?fio.c
  484. modules.  ckuusr.c, ckcker.h, ckcker.h, ckcfns.c, ckuus[r6].c;
  485. ckvfio.c 5A(102), 5 Nov 93. 
  486.  
  487. Rearranged #ifdefs for CK_SYSINI (compile-time option for system-wide init
  488. file) and moved them from ckuusr.c to ckuusr.h.  Now you can (at least in
  489. UNIX) give CK_DSYSINI as a command-line option to accept a built-in default
  490. fully qualified file specification for a system-wide C-Kermit init file,
  491. /usr/local/bin/kermit.sysini.  5 Nov 93.
  492.  
  493. Added Stratus-VOS-specific modules from David R. Lane, SoftCom Systems Inc:
  494. cklcon.c, cklfio.c, ckltio.c, cklnet.c (includes TCP/IP and X.25), ckldef.c,
  495. plus build procedure cklmak.cm.  5 Nov 93.
  496.  
  497. Added automatic enabling of REDIRECT command for various UNIX systems where
  498. we know it works in ckcdeb.h.  Can be overridden by defining NOREDIRECT at
  499. compile time.  6 Nov 93.
  500.  
  501. Fixed stupid mistake in system-wide init-file #ifdefs, noticed by Jamie
  502. Watson.  ckuusr.h, 6 Nov 93.  Also, fixed SHOW commands to display system-wide
  503. init file name if it has been configured and used, and to allow more space for
  504. displaying it.  Also, changed init file name buffer to be dynamically
  505. allocated if DCMDBUF defined, and increased its size from 100 to 256 since it
  506. can now be a full path name.
  507.  
  508. Added a new command-line argument: -D n (uppercase D followed by a number),
  509. equivalent of SET DELAY command.  Jamie Watson noticed there was no way to
  510. get Kermit to use a shorter (or different) delay when sending files via
  511. command-line arguments.  ckuusy.c.  6 Nov 93.
  512.  
  513. Added correct identification of Alpha (AXP) CPU for \v(cpu), designer banners
  514. for DEC OSF/1 on Alpha.  Also added O2 optimization, ANSI C prototyping, plus
  515. REDIRECT command is now working on Alpha-OSF/1.  \v(cpu) also works on OpenVMS
  516. AXP.  Combined dec-osf and dec-osf-pc UNIX makefile entries.  6 Nov 93.
  517.  
  518. After EXITing from the wrong Kermit one time too many, unintentionally
  519. dropping a connection, I added a new command SET EXIT WARNING { ON, OFF }.
  520. If ON, and Kermit is in local mode, and it thinks it has an open serial or
  521. network connection, it will warn you and give you a chance to back out of
  522. the EXIT command.  EXIT WARNING OFF is the default, for compatibility.
  523. ckuusr.h ckuusr.c ckuus3.c, 6 Nov 93.  NOTE: the ability of C-Kermit to know
  524. whether a connection is open or not depends on a lot of system-dependent
  525. things.  In UNIX and OS/2, Kermit's guess is pretty reliable, based on the
  526. "tty" file descriptor (ttyfd), modem signals, etc.  In other versions, we
  527. can't tell so well, so we always warn and ask if EXIT WARNING is ON.
  528.  
  529. In the course of adding SET EXIT WARNING, fixed a bug in the command package,
  530. in which, if a temporary prompt was in effect and prompt() was called with a
  531. NULL conversion function, then ?-help would put back the regular prompt
  532. instead of the temporary one.  ckucmd.c 5A(055) 6 Nov 93.
  533.  
  534. Added SHOW EXIT to display EXIT WARNING setting, exit status.  ckuus5.c.
  535.  
  536. Added ttruncmd() code for OS/2 from Kai Uwe Rommel, and enabled
  537. REDIRECT command for OS/2.  ckotio.c 5A(106), 6 Nov 93.
  538.  
  539. Added IF DIRECTORY command.  Succeeds if operand is a directory, fails
  540. otherwise.  Uses new isdir() function, currently filled in for UNIX, VMS,
  541. OS/2.  Is included if CK_TMPDIR symbol is defined.  ckuusr.h, ckuus6.c,
  542. 6 Nov 93.
  543.  
  544. Added IF NEWER command.  Compares modification (or creation) date/times
  545. of two files, succeeds if first file is newer than second file.  Depends
  546. on zfcdat() function, which is defined for most versions, but not for VMS
  547. or OS-9.  Added a section to ckcdeb.h that defines the symbol ZFCDAT for
  548. each implementation that provides this function.  ckcdeb.h, ckuusr.h,
  549. ckuus6.c, 6 Nov 93.
  550.  
  551. Added new function \Fdate(filename).  Available if ZFCDAT is defined.
  552. Returns creation date of file in "yyyymmdd hh:mm:ss" format, or else the
  553. null string upon failure.  Also changed SHOW FUNCTIONS to do "more?"-style
  554. paging, like SHOW VARIABLES.  ckuusr.h, ckuus4.c, ckuus5.c.  6 Nov 93.
  555.  
  556. Changed SET BUFFERS command to default the second (receive) buffer to be
  557. the same size as the first (send) buffer, so user doesn't have to type two
  558. numbers.  ckuus3.c, 6 Nov 93.
  559.  
  560. Added CK_WREFRESH support for DEC ULTRIX (all versions) and IBM RT PC AIX.
  561. Verified by Jamie Watson.  ckcdeb.h, 7 Nov 93.
  562.  
  563. Increased -Olimit for ULTRIX 4.2, since new \v(dialstatus) code pushed the
  564. optimizer over the edge.  From Jamie Watson.  makefile, 7 Nov 93.
  565.  
  566. Changed SET EXIT WARNING to not warn on a serial connection if SET CARRIER
  567. is OFF.  ckuusr.c, 7 Nov 93.
  568.  
  569. Added SET EXIT STATUS to let user set program return code without actually
  570. having to exit.  For example, user can OR in various bits at different times.
  571. ckuus3.c, 7 Nov 93.
  572.  
  573. Updated UNIX man page.  ckuker.nr, 8 Nov 93.
  574.  
  575. Added zfcdat() to VMS version, for \fdate(filename), IF NEWER, etc.
  576. Contributed by William Bader.  CKVFIO.C 5A(104), 9 Nov 93.
  577.  
  578. Changed VMS C-Kermit version to always be in foreground mode, i.e. to never
  579. set the backgrd flag.  There is no notion of background (in the UNIX sense) in
  580. VMS.  If C-Kermit is not running on a real terminal, then either it has its
  581. SYS$INPUT and/or SYS$OUTPUT redirected, or it's running in batch.  In either
  582. case, it can always do console output.  Also, I installed a patch from
  583. <tcwkw@sf.msc.edu> to sysinit() to prevent it from trying to get info about
  584. the console terminal when the console is not a terminal.  CKVTIO.C 2.0(063),
  585. 9 Nov 93.
  586.  
  587. Got new LIBCMU ...
  588.  
  589. Discovered that the new INPUT buffering broke code the INPUT command under
  590. certain circumstances, notably when using a VMS C-Kermit script to make a
  591. TCP/IP connection; after the first 1-second timeout, netinc(1) would start to
  592. get i/o errors (socket_errno == EBUSY, "Mount device busy") and then would
  593. return -1 immediately without actually timing out any more.  The INPUT
  594. buffering code made the erroneous assumption that if ttchk() returned a
  595. positive number n, that n successive calls to ttinc() would succeed, and this
  596. is apparently not always the case in VMS.  For now, the quick fix is to remove
  597. the INPUT buffering code (I left it in place, but conditionalized on CK_BURST,
  598. which is #undef'd).  When I have some spare time, I'll change INPUT to do its
  599. own buffering, just like CONNECT, rather than relying on some unseen and
  600. possibly unreliable underlying buffering mechanism.  ckuus4.c, 9 Nov 93.
  601.  
  602. Edited OS/2 section of standard (sample) CKERMOD.INI file to not swap Esc and
  603. accent grave keys, and to include hint messages about key mapping and colors.
  604.  
  605. Changed -Otcl in SCO Xenix 3.2 to -O.  It seems that -Otcl was producing bad
  606. code, at least in the SCRIPT command (noticed by Michael Haws
  607. <michael@suntex.com>; expect strings would always fail).  makefile, 12 Nov 93.
  608.  
  609. Added \v(keyboard) for OS/2 C-Kermit.  Returns keyboard type: 88, 101, 122,
  610. are the known types.  If OS/2 senses some other type, its 4-byte hex code is
  611. returned.  If OS/2 fails to get the keyboard type, the empty string is
  612. returned.  Code adapted from Kai Uwe Rommel's example.  ckcdeb.h, ckuusr.h,
  613. ckuus4.c, ckotio.c, cpcplm.doc.  15 Nov 93.
  614.  
  615. Added WILL SGA response to DO SGA.  This never came up before.  Problem
  616. reported by Wayne Hauber <wjhauber@isstate.edu>, with Apartus Technologies
  617. Telnet Gateway Service to Iowa State U Library's NOTIS system.  ckcnet.c
  618. 5A(022), 17 Nov 93.
  619.  
  620. Changed debug log entries for TELNET negotiations to be one-liners, all
  621. starting with TELNET, looking mostly like the UNIX telnet "toggle options"
  622. display.  Now you can get all TELNET negotions via "grep ^TELNET debug.log".
  623. ckcnet.c.  17 Nov 93.
  624.  
  625. Peter Kabal <kabal@aldebaran.ee.mcgill.ca> noticed that SET SPEED can fail in
  626. Ultrix 4.2 on the DECstation 2100 for speeds over 9600, but the system call
  627. does not return any error indication.  Therefore, all three places in C-Kermit
  628. that call ttsspd() to set the device's speed were changed to read it back
  629. with ttgspd() before setting the global 'speed' variable.  ckuus3.c, ckuus7.c,
  630. ckuusy.c, 17 Nov 93.
  631.  
  632. Changed the OS/2 C-Kermit installation procedure to skip all COM-port related
  633. questions if the user says she will not be using a COM port (e.g. for
  634. TCP/IP-only installation), and to skip modem-related questions if a modem will
  635. not be used.  ckoins.cmd (= install.cmd), 17 Nov 93.
  636.  
  637. Discovered why certain login scripts were not working on OS/2.  The clause
  638. "for (j = i; i-- > 0; )" was not generating the intended code, at least not
  639. when compiled by IBMCPP (the same code worked OK in most other versions).
  640. Moved the decrementing of i into the loop and then it worked fine.  ckuus4.c,
  641. 18 Nov 93.
  642.  
  643. After successfully executing a login script, OS/2 C-Kermit tended to have its
  644. echoing wrong.  To alleviate this problem, apparently caused by tn_ini() being
  645. called multiple times gratuitously, in spite of seemingly scrupulous setting
  646. and clearing of the tn_init flag at all appropriate places, I removed all
  647. calls to tn_ini() (and all references to tn_init) from all modules of all
  648. C-Kermit versions.  tn_ini() is now called only from within net_open(), after
  649. net_open() has determined that it has just made a successful TELNET
  650. connection.  Many modules affected: ck*tio.c, ck*net.c, ck*con.c, 18 Nov 93.
  651.  
  652. Changed OS/2 C-Kermit "set terminal color normal" to "set terminal color
  653. terminal-screen", which makes more sense.  Left "normal" as an invisible
  654. synonym.  ckuus7.c, 18 Nov 93.
  655.  
  656. Discovered that TELNET'ing from OS/2 C-Kermit to a host with a long name
  657. tended not to work.  In one case ("telnet martini.eecs.umich.edu 3000"), it
  658. would crash C-Kermit completely.  Traced the problem to (a) an inadequate
  659. buffer size in ckotio.c, which in turn was based on a pre-network definition
  660. of the symbol DEVNAMLEN, and (b) the use of strcpy() rather than strncpy() in
  661. ckocon for setting up the status line.  Also, I rearranged the status line
  662. to give more room to display the host name.
  663. ckocon.c 5A(105), ckotio.c 5A(108) 18 Nov 93.
  664.  
  665. REDIRECT doesn't work on OS/2 network connections, so I changed the REDIRECT
  666. command to fail under these conditions (instead of doing nothing).  ckuusr.c
  667. 5A(111) 18 Nov 93.
  668.  
  669. The INPUT command did not work correctly on VMS systems with DEC TCP/IP (UCX)
  670. when executed over a TELNET connection.  Diagnosis: when the socket_read()
  671. call was interrupted by an alarm/longjmp, subsequent calls to socket_read()
  672. would fail with socket_errno 16, EBUSY, "mount device busy".  Cure: replace
  673. the timer in netinc(), formerly alarm/signal/longjmp, with select().
  674. Complication: the UCX programming environment did not include the necessary
  675. header file, so the needed items (including copyright notice) had to be copied
  676. from 4.4BSD /usr/include/sys/types.h.  Note: It would also be possible to add
  677. select() for MultiNet, but it doesn't seem necessary; scripts, timeouts, etc,
  678. work ok.  ckcnet.h, ckcnet.c 5A, 20 Nov 93.
  679.  
  680. Now that the VMS and OS/2 INPUT commands are fixed, I tried turning on
  681. CK_BURST again (speedup for INPUT command by detecting bursts, code from Chuck
  682. Goodheart at NASA).  It works in MultiNet on the Alpha.  It works in MultiNet
  683. on the VAX.  It works in UCX on the VAX.  It works in UNIX.  It works in OS/2
  684. on both serial and TCP/IP connections.  And it's fast.  Tested with many
  685. services directory entries.  ckuus4.c, 20 Nov 93.
  686.  
  687. Added a new variable \v(cps), that tells the speed in characters per second of
  688. the last protocol operation.  ckuusr.h, ckuus4.c.  20 Nov 93.
  689.  
  690. Added a new function \fsize(filename), which returns the size of the given
  691. file.  ckuusr.h, ckuus4.c.  20 Nov 93.
  692.  
  693. Changed SHOW FUNCTIONS and SHOW VARIABLES not to list invisible items.
  694. ckuus5.c, 20 Nov 93.
  695.  
  696. Peter Manzella at DEC noticed that MSEND commands could fail in VMS because of
  697. a memory leak in ckuusr.c.  Solution: (1) increase the size of the buffer for
  698. VMS from 1K to 4K (since it needs it, and can afford the memory); (2) plug the
  699. memory leak.  The same thing could happen in UNIX as a result of
  700. tilde-expansion.  ckucmd.h (CMDBL definition), ckuusr.c 5A(112), 20 Nov 93.
  701.  
  702. Added a trailing catch-all #else clause for the new CK_TMPDIR section in
  703. the RECEIVE command, suggested by David Lane.  ckuusr.c, 20 Nov 93.
  704.  
  705. Changed SET KEY to allow { braces } around the key definition, like OUTPUT,
  706. INPUT, ECHO, and other commands, to allow easier specification of strings
  707. with leading and/or trailing blanks, and for consistency with all the other
  708. commands.  ckuusr.c, 20 Nov 93.
  709.  
  710. Noticed that curses did not always do a great job of optimizing screen
  711. writes, particularly in the "estimated time left" slot, so I added 3 lines
  712. of code to screenc() so Kermit could optimize this itself.
  713. ckuusx.c, 21 Nov 93.
  714.  
  715. From Kai Uwe Rommel, 21 Nov 93 (begin quote):
  716.  
  717. I have fixed the problems. Included I send a few diffs and a new ckotio.c,
  718. because I took the opportunity for a few cleanups in this module.
  719.  
  720. I have also made changes to allow compilation with IBM's TCP/IP 2.0, which has
  721. a 32-bit socket interface.  Unfortunately, this has the implication, that now
  722. *two* DLL's are required, SO32DLL.DLL and TCP32DLL.DLL.  Also, the executable
  723. doesn't run with TCP/IP 1.2.1 any longer.  So, we should make the distributed
  724. 32-bit executable for TCP/IP 1.2.1 and it also runs with TCP/IP 2.0.  I made
  725. changes only to allow someone to recompile C-Kermit if he has only TCP/IP
  726. 2.0.  To fully support it, we will have to wait until I finally find the time
  727. to restructure the TCP/IP support.
  728.  
  729. I have, BTW, dropped the IBMSELECT code, because it is not needed, both TCP/IP
  730. 1.2.1 and 2.0 support the BSD select() call and that is more portable.
  731.  
  732. Another problem: It is currently not possible to check for the return code of
  733. programs run via zshcmd().  In addition, the exit code was not returned
  734. correctly from zsyscmd() in the aegis and OS/2 cases.  I have somewhat quick-
  735. fixed zshcmd() for the OS/2 case to allow the "IF FAIL" command to work.  The
  736. UNIX branch has to be fixed too.  However, that only allows to check if the
  737. return code is not zero.  Sometimes it would be convenient to determine the
  738. exact exit code of the program.  How about adding a variable \v(exitcode)
  739. which holds the return code of the last program run via zshcmd() or zsyscmd()?
  740.  
  741. My current wish list of things I would like to do looks like:
  742. - Fix timed keyboard input with an additional thread instead of alarm()
  743. - Restructure TCP/IP code to support multiple vendors with one executable
  744. - Allow remote operation over serial lines and TELNET connections
  745. - Add Tektronix emulation
  746.  
  747. (End quote)
  748.  
  749. Built 16- and 32-bit OS/2 versions OK, 21 Nov 93; put cko190.zip up for
  750. testing on net.  All reactions so far are positive.
  751.  
  752. Another INPUT command speedup: Rather than always doing 1-second timed reads,
  753. time each read for the amount of time left in given timeout interval.  This
  754. reduces the number of system calls considerably, and still works fine --
  755. succeeds when it should succeed, fails when it should fail, terminates
  756. correctly under both extremes: no characters arriving at all; a steady stream
  757. of characters arriving.  ckuus4.c 21 Nov 93.
  758.  
  759. Revisited old problem of UNIX and VMS CONNECT showing a couple garbage
  760. characters upon first accessing a second or subsequent connection.  It was
  761. just a matter of having the CONNECT module reset its i/o buffer pointers
  762. whenever it knew it had a new connection, or that the current connection had
  763. terminated because of an i/o error.  CKVCON.C (VMS) 5A(031), ckucon.c (UNIX)
  764. 5A(058), 23 Nov 93.
  765.  
  766. When transferring a file with packets longer than about 2300, debug() calls
  767. would fail because the text to be logged was longer than the debug-record
  768. buffer.  This made it tough to track down certain kinds of errors related to
  769. long packets.  I changed the debug code to grow the buffer as necessary,
  770. dynamically.  ckuusx.c, 24 Nov 93.
  771.  
  772. Moved closing of debug log to just before _exit() is called, so now we can log
  773. the actions of ttres(), ttclos(), etc.  Reorganized UNIX ttclos() to not do a
  774. lot of silly things to the command terminal, especially if it was using stdin
  775. (file descriptor 0) to communicate with it.  ckutio.c, 24 Nov 93.
  776.  
  777. Added new WRITE-LINE (synonym: WRITELN) command.  Just like WRITE, except
  778. it writes its argument string in the form of a line or record, appropriate to
  779. the underlying operating system.  This lets scripts create output files
  780. in a system-independent fashion.  ckuusr.c 5A(113), 24 Nov 93.
  781.  
  782. Change ttclos() in ckutio.c for UNIX to unset the TIOCSINUSE flag for the
  783. device, since this bit had been set for it in ttopen().  I'm not sure if this
  784. fixes any problem, but it shouldn't hurt.  Also, changed sysinit() to call
  785. priv_ini() before doing anything else at all.  Apparently some UNIX versions
  786. (386BSD, etc) won't allow a set[gu]id program to open /dev/tty to get the
  787. terminal modes, etc, so this makes Kermit's effective UID be the user's real
  788. UID before any attempt is made to get terminal modes, etc.  ckutio.c 5A(117)
  789. 24 Nov 93.
  790.  
  791. Removed "#define WAIT_T pid_t" from ckcdeb.h (within #ifdef POSIX).
  792. Apparently, this is just completely wrong -- nowhere is the argument to wait()
  793. a pid_t; it's always either an int or else a struct of some kind.  According
  794. "Portable C Software", it's always safe to call wait() with an (int *).
  795. ckcdeb.h 24 Nov 93.
  796.  
  797. Changed lockfile for 386BSD from /var/spool/uucp to /var/spool/lock --
  798. suggested by many people.  makefile.
  799.  
  800. Changed ckhost(), the routine that gets the local host name, to call
  801. gethostbyname() in 386BSD, rather than utsname().  Suggested by Nick Sayer
  802. <mrappe@quack.kfu.com>, who says 386BSD (a.k.a. Jolix 0.1+pk0.2.4) didn't have
  803. utsname().  ckuusx.c.
  804.  
  805. Chased down a report that SET DIAL INIT-STRING didn't work when invoked from
  806. a macro.  As far as I can tell, it works fine.  However, SHOW DIAL did not
  807. report your DIAL INIT-STRING or PREFIX if you had not previously SET MODEM to
  808. something, which could be misleading.  ckudia.c 5A(051) 24 Nov 93.
  809.  
  810. The file attributes structure, zsattr, defined in ckcdeb.h, contained a member
  811. called passwd.  But some C compilers can't deal with structure members having
  812. the same names as other identifiers.  This killed C-Kermit compilation under
  813. Altos Xenix 3.0.  Reported by Ken George <nsaho@tuns.ca>.  ck*fio.c, 24 Nov 93.
  814.  
  815. Fixed BSEND and TSEND macros in standard CKERMIT.INI file; they would mess
  816. up if given wildcards.
  817.  
  818. Fixed SET HOST and TELNET commands to automatically SET CONTROL PREFIX 255
  819. for TCP/IP connections.  This omission pointed out by Bill Glass.  ckuus7.c,
  820. 25 Nov 93.
  821.  
  822. INPUT commands, when executed from VMS C-Kermit in remote mode for reading
  823. material from the console terminal (e.g. for checking terminal answerback
  824. sequence), were not working right because the VMS version of coninc() did not
  825. check to see if it timed out in certain cases and returned a character value
  826. like 0 or 127 rather than -1 in these cases.  Fixed in coninc(), CKVTIO.C
  827. 2.0-064 25 Nov 93.
  828.  
  829. VMS C-Kermit session logs were being written in Stream_LF format, but still
  830. contained carriage returns, which made them look funny when viewed in VMS
  831. editors (little arrows showed up at the end of each line).  This was fixed by
  832. opening the session log with "rfm=stm" (new) as well as "ctx=stm".  Suggested
  833. by Jason Seaman <jason@wccf.mit.edu>, Whitaker College, MIT.  CKVFIO.C
  834. 2.0-105, 25 Nov 93.
  835.  
  836. Executing a series of file transfer commands from a command file or macro took
  837. an inordinate amount of time because of long, annoying pauses between each
  838. command.  It seems there were some gratuitous sleep(1)'s and sleep(2)'s in the
  839. protocol module.  These were to allow "nonblocking" mode changes to take place
  840. between command and protocol mode.  These sleeps really had no business in the
  841. protocol module, and should be placed -- if necessary! -- in the appropriate
  842. system-dependent modules.  Removing them makes multiple local-mode transfers
  843. (send this, send that, send another, ...) go just as fast as a single wildcard
  844. transfer.  For remote-mode transfers: same speedup, but you have to remember
  845. to put SET DELAY 0 in your command file!  ckcpro.w 5A(057), ckutio.c 5A(118),
  846. 25 Nov 93.
  847.  
  848. Built today's version on SunOS 4.1.3, NeXTSTEP 3.0, Dell System V R4,
  849. OpenVMS/VAX, OpenVMS/AXP, Linux 0.99.13, RS/6000 AIX 3.1, DEC OSF/1-AXP.
  850.  
  851. A couple minor adjustments for FreeBSD to yesterday's code from Scott Mace
  852. <smace@freefall.cdrom.com>: declaration of sys_errlist[] in ckcfn3.c, SET
  853. SPEED keyword list in ckuus3.c, vanity banner for FreeBSD.  While futzing with
  854. the SET SPEED list yet again, I took the opportunity to redesign how it works.
  855. Kermit-specific symbols are now defined (or undefined) in ckcdeb.h for the
  856. uncommon speeds, and these can be augmented or overriden from the CC command
  857. line using BPS_xxxx or NOB_xxxx symbols.  Also, added 57600 and 115200 for
  858. Linux, and added an as-yet-unused entry for 230400 bps.  Documentation on
  859. speed configuration added to ckccfg.doc.  26 Nov 93.
  860.  
  861. Added SET CONSOLE as an invisible synonym for SET COMMAND, as the word CONSOLE
  862. is bit more intuitive, and in preparation for possibly adding other console-
  863. related items, like SPEED, PARITY, FLOW, ...  ckuusr.c 5A(114) 26 Nov 93.
  864.  
  865. About 6-8 weeks ago, Paul Placeway sent in a new set of source for Macintosh
  866. Kermit, in which several bugs were fixed in the Mac-specific (ckm*.*) modules,
  867. and which had been adapted for compilation under Think C as well as MPW C.
  868. These have now been adapted to C-Kermit edit 190, and I made several other
  869. changes too: added a fix to doactive() from Ed Huff <huff@mcclb0.med.nyu.edu>,
  870. apparently overlooked by Paul (?); I filled in the zhome() and zgtdir()
  871. functions (code from Steven Woolgar <famus2@dmi.usherb.ca>); enabled the CD
  872. and PWD commands as well as the corresponding functions and variables.  Some
  873. changes to ckcdeb.h, ckuus5.c, ckuusr.c, ckcfns.c.  Compiles under MPW C 3.2
  874. just fine, seems to run OK too, except CD command still pops up a bunch of
  875. windows on the screen saying "Writing to the console in applications is NOT
  876. supported!".  And zhome() always seems to return the null string.  And
  877. zgtdir() always seems to return the name of the disk, but not the current
  878. folder... (see code for these in ckmfio.c.)  26 Nov 93.
  879.  
  880. Added makefile entry for FreeBSD from Scott Mace <smace@freefall.cdrom.com>.
  881. 29 Nov 93.
  882.  
  883. Added SET PRINTER and SHOW PRINTER commands for OS/2 C-Kermit.  ckuusr.h,
  884. ckuusr.c, ckuus2.c, ckuus3.c, ckuus5.c.  30 Nov 93.
  885.  
  886. ID swapping needed for access() in the BSDI version: -DSW_ACC_ID added to
  887. the bsdi makefile entry.  From John Kohl.  1 Dec 93.
  888.  
  889. A fix from Kai Uwe Rommel for an OS/2 C-Kermit bug: if Kermit was left in
  890. CONNECT mode, the OS/2 system could not be shut down.  ckotio.c 5A(110)
  891. 1 Dec 93.
  892.  
  893. Added SET { FILE, TERMINAL } CHARACTER-SET HP-ROMAN8, to support Hewlett
  894. Packard's proprietary Latin-1-like 8-bit character set.  The translation used
  895. is the one provided by HP (e.g. via iconv); it is not invertible.  Also, fixed
  896. incorrect translation from DGI to Latin-2.  ckuxla.h, ckuxla.c 5A(021),
  897. 1 Dec 93.
  898.  
  899. Fixed TRANSLATE command to work right when one (or both) of the character-sets
  900. is Latin-2 or CP852.  ckuus4.c, 1 Dec 93.
  901.  
  902. Changed terminal emulator in OS/2 C-Kermit to not display transparent-print
  903. material on the screen, since this is how a real VT102 works.
  904. ckocon.c 5A(106) 1 Dec 93.
  905.  
  906. Consolidated and rearranged some Mac-specific definitions and declarations:
  907. ckcdeb.h, ckmusr.c, ckmtio.c, ckuus5.c, ckuus6.c.  The need for this was
  908. pointed out by Joe Bearly <jst@itsa.ucsf.edu>.  1 Dec 93.
  909.  
  910. Fixed sdata() to make a special case for the Atari ST when looking to see
  911. whether to interrupt the D-packet-sending loop, because the ST version of
  912. ttchk() never returns a value > 1.  ckcfn2.c 5A(049) 1 Dec 93.
  913.  
  914. Changed the packet-mode interruption defaults from 2 Ctrl-C's to 3 Ctrl-C's.
  915. This prevents protocol breakouts when users SET CONTROL UNPREFIX 3 or 131,
  916. because 3 Ctrl-C's in a row will be encoded with a repeat count.  This change
  917. might be a little disconcerting to users, but when they type two and nothing
  918. happens, they will almost certainly type a third.  ckcmai.c, 2 Dec 93.
  919.  
  920. Added a new compile-time symbol: NDGPWNAM.  If you define this, e.g. in
  921. CFLAGS or KFLAGS, it skips the forward declaration of getpwnam() in ckufio.c,
  922. presumably because it was already declared in <pwd.h>, and avoid "conflicting
  923. types for getpwnam" errors, e.g. from GCC 2.5.6.  ckufio.c 5A(077) 5 Dec 77.
  924.  
  925. The 32-bit version of OS/2 C-Kermit, when in server mode, failed to redirect
  926. the output of REMOTE DIRECTORY, REMOTE TYPE, and similar commands (which work
  927. by running a copy of CMD.COM via popen()), to the Kermit client.  Rather, the
  928. output would appear on the server's screen.  This was caused by a bug in the
  929. IBM C++ PDK Beta compiler which I have been using.  I upgraded to IBM C++ Set
  930. 2.0, and the problem went away.  8 Dec 93.
  931.  
  932. When Kai Uwe dropped the OS/2 C-Kermit IBM-style select() in favor of the BSD
  933. version, he forgot to update ckotcp.c and ckotcp.def, so OS/2 C-Kermit would
  934. no longer run on systems where IBM TCP/IP was not installed, because of a
  935. dynamic linking error at startup time caused by _bsdselect missing from the
  936. dummy DLL.  Kai Uwe to the rescue.  8 Dec 93.
  937.  
  938. Bo Kullmar noticed that SET TRANSFER CANCELLATION 3 3 does not quite make it
  939. safe to SET CONTROL UNPREFIX 3.  This is because the code in ttinl() to check
  940. for cancellation ignored the parity bit, so (for example) \x03\x83\x03 could
  941. still kill a transfer.  I changed ttinl() to ignore the parity bit only if
  942. PARITY was not NONE; this should be nearly 100% safe now that all C-Kermit
  943. programs capable of remote-mode operation also do automatic parity detection.
  944. Also, packet-mode interruption should occur only when C-Kermit is in remote
  945. mode, but ttinl() was letting it happen in local mode too, so I changed it.
  946. Also, I removed cancellation code from two C-Kermit programs that included it,
  947. but that could never be in remote mode: Mac Kermit and Atari ST Kermit.
  948. ck[9dlmsuv]tio.c, 9 Dec 93.  (OS/2 and Amiga Kermit were already OK.)
  949.  
  950. Added a new command-line option, -R (uppercase).  It is tied to a new IF
  951. command, IF REMOTE-ONLY.  This allows us to skip all the local-mode setups
  952. in the initialization files if we don't intend to use C-Kermit in local mode.
  953. ckuusr.h, ckuus6.c, ckuusy.c, ckuus2.c, ckuus4.c.  Also, in making this
  954. change, I discovered that prescan() did not handle bundled arguments
  955. correctly; fixed in ckuus4.c.  ckuusr.c 5A(115), 9 Dec 93.
  956.  
  957. Edited the standard initialization file, CKERMIT.INI, to skip dial and
  958. services directory setups if the -R command-line option given.  This makes
  959. C-Kermit startup WAY faster.  Ditto for CKERMOD.INI.  9 Dec 93.
  960.  
  961. Fixed another bug discovered by Bo Kullmar, namely that the automatic
  962. re-mallocation of the debug-log string buffer could make C-Kermit core dump
  963. under certain circumstances.  I flushed this code and used sprintf() formats
  964. to cut off the strings to fit in the buffer.  No more core dumps.  ckuusx.c,
  965. 9 Dec 93.
  966.  
  967. Michael Godfrey noticed that if a SET LINE command has been given (to open a
  968. serial line), a subsequent TELNET command, given without a hostname/address,
  969. acts like a CONNECT command on the serial line.  In OS/2 C-Kermit, which
  970. starts up using COM1 by default, this usually gives a message like "No carrier
  971. detected", which is not exactly what we want to say.  Now it gives an
  972. appropriate error message.  ckuus7.c, 9 Dec 93.
  973.  
  974. Backed off on yesterday's debug-log change because it turns out sprintf()
  975. field-width formats aren't portable after all.  Yesterday's change totally
  976. broke debug logging on VMS.  Now we just decline to log any string that's
  977. too big for the buffer.  ckuusx.c, 10 Dec 93.
  978.  
  979. One of the biggest problems with VMS C-Kermit was that it could not send
  980. packets longer than MAXBUF (a SYSGEN parameter), nor longer than any of
  981. various user quotas, such as BYTLM.  Attempts to do this resulted in SYS$QIOW
  982. failing with error 28, Quota Exceeded (as finally revealed by the new and
  983. improved debug log).  The low-level packet writer in VMS C-Kermit, ttol(), has
  984. now been recoded to handle these errors more or (mostly) less gracefully: if a
  985. write attempt fails with error 28, we chop the data in half and try again,
  986. repeating until the write succeeds or the length goes below 70, at which point
  987. we fail.  If the write succeeds, we remember the size for next time, so all
  988. subsequent writes use it and bypass the trial-and-error rigamarole.  The
  989. impact on performance is hardly noticeable, e.g. when sending 9000-byte
  990. packets with MAXBUF = 2064.  So now we no longer have to tell VMS sites to
  991. reconfigure and reboot their systems to solve this problem (though it is still
  992. a good idea to have sufficient MAXBUF and BYTLM on systems where file transfer
  993. is a commonplace activity).  Too see the new code in action, have VMS C-Kermit
  994. send a file using 9K packets, with its debug log active, preferably on a
  995. system with a small MAXBUF.  Then "search debug.log ttol" to see what happened
  996. internally.  The packet sizes are not optimal: This could be achieved using a
  997. binary-search trial-and-error technique, but it's not worth it -- the
  998. performance difference is negligible.  CKVTIO.C 5A(067), 15 Dec 93.
  999.  
  1000. Catch and ignore SIGDANGER in sysinit().  Suggested by Marc Pawliger,
  1001. <marc@sti.com>.  This code is enabled if SIGDANGER is defined.  As far as I
  1002. know, this holds true only on RS/6000 AIX.  The new code prevents C-Kermit
  1003. from being killed by AIX's swap-space police, except as a final resort.
  1004. ckutio.c 5A(120), 17 Dec 93.
  1005.  
  1006. The VMS version was not releasing the OPEN READ file descriptor, so successive
  1007. OPEN READ commands could use them up and then no further files could be
  1008. opened.  Noticed by Carl Friedburg, fixed by Terry Kennedy, ckvtio.c 5A(106),
  1009. 22 Dec 93.
  1010.  
  1011. ESC/Tab keyword completion of R into RECEIVE did not work (as C does for
  1012. CONNECT and S for SEND).  Noticed and fixed by Mike Freeman
  1013. <mikef@pacifier.rain.com>, ckuusr.c, 27 Dec 93.
  1014.  
  1015. Added APC support to OS/2 C-Kermit's terminal emulator, and made various fixes
  1016. and speedups to it also.  ckocon.c 5A(107), ckuus4.c, 29 Dec 93.
  1017.  
  1018. Added SET TERMINAL APC { ON, OFF, UNCHECKED } to control execution of APC
  1019. commands received by C-Kermit.  Conditionalized all APC-execution-related code
  1020. under CK_APC, so it can easily be activated for the Macintosh too, or any
  1021. other C-Kermit implementation that has a built-in terminal emulator.  I might
  1022. even consider adding it to the UNIX and VMS versions, but for now, this
  1023. feature is activated only in the OS/2 version.
  1024. ckuus[r23457].c, ckuusr.h, 30 Dec 93.
  1025.  
  1026. Added automatic parity detection and DDK to OS/2 version.  This was done by
  1027. adapting UNIX ttinl() to OS/2, which is not the optimal solution.  My original
  1028. plan was to restructure the system-independent packet-reader, rpack(), to take
  1029. over the many functions that have been improperly delegated to ttinl() and, in
  1030. fact, to retire ttinl() altogether.  But this will be a much bigger job than
  1031. it seemed, because of the many and diverse ways in which the various ttinl()
  1032. versions handle timed reads, blocking vs nonblocking reads, buffering, etc.
  1033. We no longer allow the device driver to handle parity; like all other Kermit
  1034. programs, OS/2 C-Kermit now does this itself.  In particular, the ttsettings()
  1035. routine always sets no parity, 8 data bits.  ckotio.c, 5A(111) 30 Dec 93.
  1036.  
  1037. In adding parity detection to the OS/2 version, I discovered that it often
  1038. failed because, when looking at the packet control fields, it neglected to
  1039. strip the parity bit first, thus misinterpreting (in particular) the packet
  1040. length fields.  I migrated this fix into the UNIX, VMS, AOS/VS, and Stratus
  1041. versions.   ck[uvodl]tio.c, 31 Dec 93.
  1042.  
  1043. When using OS/2 C-Kermit's VT102 emulator with UNIX 'more', I discovered that
  1044. lines that were wrapped around the "more?" prompt caused the inverse video of
  1045. the "more?" prompt to extend to the right margin, but only when this occurred
  1046. at the bottom of the screen, i.e. when scrolling a wrapped line.  Experiments
  1047. showed this happening whenever scrolling any wrapped line that had nondefault
  1048. video attributes.  Diagnosis: the scroll() routine was creating the new bottom
  1049. line using the current attributes.  Cure: the scroll routine should use the
  1050. normal, default attributes to create the new bottom line, and then let
  1051. subsequent character-writing operations take care of the attributes.
  1052. ckocon.c, 5A(108) 4 Jan 94.
  1053.  
  1054. Added a new UNIX makefile entry for Amdahl UTSV with TCP/IP support, from
  1055. Gerald J. Werner, Marshfield Clinic <wernerg@dgabby.mfldclin.edu>.  5 Jan 94.
  1056.  
  1057. Installed new Stratus VOS modules: ckltio.c, cklfio.c, cklnet.c.  From David
  1058. Lane <David_Lane@vos.stratus.com>, 5 Jan 94.
  1059.  
  1060. Added print / dump screen to OS/2 C-Kermit.  Works in both the 32-bit and the
  1061. 16-bit version.  Activate during CONNECT mode via Alt-P (or Alt-p), or by
  1062. <Escape-character>F/f as in MS-DOS Kermit.  Also had to add special code to
  1063. make it work for rolled-back screens.  Entries added to the two CONNECT-mode
  1064. help screens.  ckocon.c 5A(109), 6 Jan 94.
  1065.  
  1066. Fixed a screen-rollback bug in OS/2 C-Kermit, which occurred when a wrapped
  1067. line scrolled off the screen; the wrapped portion was not saved in the
  1068. rollback buffer.  The same thing happened with Index (ESC D); that's fixed
  1069. too.  ckocon.c 5A(109), 6 Jan 94.
  1070.  
  1071. Added TELNET NAWS (Negotiate About Window Size, RFC 1073) to the UNIX and OS/2
  1072. versions.  This feature is configured only if the program is built with the
  1073. CK_NAWS symbol defined.  Requires new system-dependent support routine,
  1074. ttgwsiz(), described in ckcplm.doc.  In UNIX C-Kermit, NAWS works only if the
  1075. TIOCGWINSZ symbol is defined and the corresponding ioctl is available and
  1076. executes without error.  Defined CK_NAWS by default for SunOS 4.1, NeXT,
  1077. System V R4, 4.4BSD, and OSF/1.  Override these default assignments by
  1078. including -DNONAWS on the CC command line.  I don't see how to do it for POSIX
  1079. or others, but people are encouraged to send in code to make it work for more
  1080. systems, or to confirm that it works safely on systems not yet included.
  1081. Note: Don't define CK_NAWS unless there is also a ttgwsiz() routine.
  1082. ckcnet.[ch], ckutio.c, ckocon.c, etc, 12 Jan 93.
  1083.  
  1084. Now that we know how to get the rows and colums of the controlling terminal,
  1085. we can change the various "more?"-prompting items to use the actual screen
  1086. length.  This includes the HELP command, SHOW MACROS, SHOW VARIABLES, etc.
  1087. ckuus[25].c, 12 Jan 93.  Later, this can also be extended to the file transfer
  1088. display screen and the command parser keyword and file menus.
  1089.  
  1090. Added SIGWINCH trapping for the UNIX version.  If you're running C-Kermit in a
  1091. window and you change the window size, UNIX delivers a SIGWINCH signal.
  1092. C-Kermit now catches this signal, asks UNIX what its new window size is, and
  1093. if a TELNET connection is open (and we have received permission to send NAWS
  1094. reports) we send a NAWS report.  Tested in NeXT Terminal window by stretching
  1095. the window during C-Kermit CONNECT mode, seemed to work fine for a while, but
  1096. then started to fall apart -- it seemed to interfere with some of the other
  1097. TELNET negotiations, like echoing.  But only when TELNET'ing from NeXT to
  1098. NeXT.  Removing the SIGWINCH code didn't make any difference.
  1099.  
  1100. Hmmm...  It seems the problem with the NeXT has nothing to do with NAWS.  Even
  1101. versions 188 and 189 had a similar problem, namely that the SIGUSR2 signal
  1102. which we use during CONNECT mode to let the lower fork tell the upper fork
  1103. about TELNET-negotiated echoing changes does not get delivered immediately,
  1104. and sometimes gets lost.  The reason the problem is only noticeable when going
  1105. from NeXT to NeXT is that the NeXT TELNET server sends many echoing changes,
  1106. rapid fire, and only the NeXT client is exhibiting the signal-delivery
  1107. sluggishness.
  1108.  
  1109. (Well, I spent two days on this one and could not solve it.  Then I discovered
  1110. that if I ran Kermit in a Stuart window rather than a Terminal window on the
  1111. NeXT, it worked perfectly.  It also works fine if I TELNET to the NeXT and
  1112. start Kermit in a TELNET session -- i.e. not in any kind of NeXT window.)
  1113.  
  1114. (This note inserted Aug 13, 1994: The changes that were made to the CONNECT
  1115. fork signalling in July-August 1994 have cleared all of this up, and now
  1116. C-Kermit can be used under Terminal just as well as under Stuart.)
  1117.  
  1118. Added CK_NAWS to VMS version.  Code for ttgwsiz() supplied by Mark Berryman
  1119. at SAIC.  CKVTIO.C 5A(069) 14 Jan 94.
  1120.  
  1121. Fixed a bug in the VMS version that I introduced when I moved the tn_ini()
  1122. call to be inside netopen(), which resulted in initial TELNET negotiations
  1123. never being sent.  ckcnet.c 5A(025) 14 Jan 94.
  1124.  
  1125. Added NOSIGWINCH symbol to allow SIGWINCH trapping be disabled without
  1126. disabling the NAWS feature itself.  ckccfg.doc, ckcnet.c, 14 Jan 94.
  1127.  
  1128. Fixed some dependencies in the UNIX makefile.  14 Jan 94.
  1129.  
  1130. Added NODISPO symbol to allow C-Kermit to be built to always refuse incoming
  1131. MAIL and REMOTE PRINT files.  ckcfn3.c, 14 Jan 94.
  1132.  
  1133. Jeff Altman <p00118@psilink.com> noticed that sequences of bold characters
  1134. would alternate between bold and regular.  The fix turned out to be rather
  1135. complicated, since it had to work for both normal and reverse-video screens,
  1136. and in working on this I discovered that the handling of DECSCNM, ESC [ ? 5
  1137. h/l, reverse-video/normal screen (i.e. the one that flips your entire current
  1138. screen between normal and reverse video), was totally broken.  Previously, it
  1139. would (a) only affect the rightmost 1/4 of an 80-column screen, and (b) it
  1140. wasn't "sticky" -- i.e. subsequently received characters would be displayed in
  1141. the opposite mode.  Much code was rewritten and tested successfully, and it
  1142. now works independently of your screen colors, etc.  ckocon.c 5A(112),
  1143. 15 Jan 94.
  1144.  
  1145. Added additional printing capabilities to OS/2 C-Kermit's terminal emulator
  1146. via host-generated escape sequences.  All these are only for the 32-bit
  1147. version, since the 16-bit version crashes with a stack overflow if they are
  1148. used.  For the VT102 emulator:
  1149.  . ESC [ 0 i, print current screen (also ESC [ i).
  1150.  . ESC [ ? 1 i, print current line (i.e. the line where the cursor is).
  1151.  . ESC [ ? 19 h/l, select print extent (h = full screen, l = scrolling region).
  1152.    This applies when ESC [ 0 i or ESC [ i is received.
  1153.  
  1154. And for the VT52 emulator:
  1155.  . ESC V, print current line.
  1156.  . ESC ], print current screen.
  1157.  . ESC W, turn on transparent printing.
  1158.  . ESC X, turn off transparent printing.
  1159.  . ESC ^, autoprint on (treated like transparent print).
  1160.  . ESC _, autoprint off (treated like transparent print).
  1161.  
  1162. Implemented SRM (Send/Receive Mode), for host-controlled remote/local echo
  1163. in the VT102 emulator, ESC [ 12 h/l (h = remote echo, l = local echo).
  1164.  
  1165. Fixed VT52 reverse index.
  1166.  
  1167. Fixed an oversight in the new APC code, namely that if an APC, OSC, or similar
  1168. string-bearing escape sequence starts to arrive but never finishes, there was
  1169. no way to break the deadlock.  Now "reset terminal" (Alt-=) does it.
  1170.  
  1171. Restored host-directed switching between US and UK sets in VT102 emulation,
  1172. but ONLY if the terminal character-set is ASCII.  All other character-set
  1173. selections must be made by the user, via SET TERMINAL CHARACTER-SET.  That's
  1174. because this is a VT102, not a VT220 or higher, which allows the host to
  1175. control character-set designation and invocation.  ckocon.c 5A(112) 15 Jan 94.
  1176.  
  1177. After discussions with Jeffrey Altman about OS/2 C-Kermit, added a new
  1178. feature: SET { SEND, RECEIVE } PATHNAMES { ON, OFF }.  This applies to the
  1179. handling of filenames when SET FILE NAMES LITERAL is in effect.  SET SEND
  1180. PATHNAMES ON means to leave pathnames on outbound file names, which is the
  1181. default for compatibility with earlier behavior.  OFF means to strip path
  1182. information, leaving only the name.  SET RECEIVE PATHNAMES applies to the
  1183. filenames in incoming file header packets; ON means to leave the name alone
  1184. and attempt to use it as-is, OFF means to attempt to strip path information
  1185. ON THE ASSUMPTION that any path information found there would be in the
  1186. notation of the local file system.  If not, the results are unpredictable.
  1187. Use SHOW FILE to display the SEND/RECEIVE PATHNAME settings.
  1188. ckcmai.c, ckuus[r247].c, ckuusr.h, ckcfns.c, 16 Jan 94.
  1189.  
  1190. After the above, Jeffrey sent in new copies of ckcdeb.h, ckcfns.c, and
  1191. ckufio.c to allow OS/2 C-Kermit to accept incoming files that had long or
  1192. nonstandard names (e.g. mixed case, many periods), even on FAT file systems,
  1193. even when FILE NAMES LITERAL is in effect.  Before attempting to open the
  1194. file, C-Kermit checks to see if the name would be OK.  If not, it converts it
  1195. to a legal FAT (8.3) name.  ckcdeb.h; ckcfns.c 5A(096), ckufio.c 5A(078),
  1196. 16 Jan 94.
  1197.  
  1198. Added CK_NAWS capability for AIX/6000 3.x, Solaris 2.x, Ultrix 4.x.
  1199. ckcnet.h, 16 Jan 94.
  1200.  
  1201. Kai Uwe Rommel sent in a fix for ckocon.c, for a problem I had noticed
  1202. earlier, namely that if you enter the OS/2 command processor directly from
  1203. CONNECT mode via <esc-char>!, then upon exit from OS/2 back to the C-Kermit
  1204. terminal screen, the entire screen would be blinking -- at least for me (but
  1205. not for Kai Uwe).  But even though he couldn't see it, he fixed it.
  1206. ckocon.c 5A(113), 16 Jan 94.
  1207.  
  1208. Added code to catch the case where the keyboard read() during CONNECT mode on
  1209. a TELNET connection is interrupted and returns 0 or -1, with errno == EINTR
  1210. (interrupted system call).  Previously, it would spuriously return
  1211. successfully with a random character.  Now it retries, up to 10 times, and
  1212. either fails or succeeds reliably.  ckucon.c 5A(059), 16 Jan 94.
  1213.  
  1214. From Jeffrey Altman, code for OS/2 version to create the directory for an
  1215. incoming file, if possible, when the incoming filespec includes directory
  1216. information.  ckotio.c 5A(112), ckufio.c 5A(078), ckcfns.c 5A(096), ckcdeb.h,
  1217. 16 Jan 94.
  1218.  
  1219. Corrections from Jeff to yesterday's directory-creation code.  Also, the OS/2
  1220. version, upon receiving a file whose name is illegal for the FAT (DOS) file
  1221. system, will save the illegal name in the file's Extended Attributes before
  1222. creating the file with a valid FAT name.  Thus the "LongName" will still be
  1223. visible from the OS/2 desktop or when the file is copied to an HPFS volume.
  1224. EA stuff works only in the 32-bit version, since the MSC 6.00 compiler/linker
  1225. won't swallow it.  ckcfns.c 5A(097), ckufio.c 5A(079), 17 Jan 94.
  1226.  
  1227. Vincent Fatica <vefatica@mailbox.syr.edu> reported that OS/2 C-Kermit still
  1228. messed up "more" displays.  Turns out he was using a VT220 or higher terminal
  1229. type on the host and it was sending ESC [ Pn m sequences with Pn's (22-27)
  1230. that are not supported by the VT102; these turn off selected types of
  1231. highlighting individually: 22 = Turn Off Bold; 24 = Turn Off Underline;
  1232. 25 = Turn off Blink; 27 = Turn Off Reverse Video.  These are now implemented,
  1233. and they work fine in all combinations.  ckocon.c 5A(117) 17 Jan 94.
  1234.  
  1235. HOWEVER, in getting this to work, and also as a result of fixing the
  1236. "whole-screen reverse/normal video" (DECSCNM) feature, I discovered that the
  1237. whole idea of having special user-selectable colors for reverse video was a
  1238. bad idea.  The code became horrendously tangled and big because of this, and
  1239. still many things didn't -- and could never -- work.  For example, it did not
  1240. take into account the host's ability to send color-changing commands per
  1241. character.  Nor, for that matter, the propensity of some video adapters to
  1242. interpret the "blink" bit as a background color change.  So from now on,
  1243. reverse video is reverse video; it simply swaps the fore- and background
  1244. colors.  Everything works right now; you can even display all the colors of
  1245. the ANSI spectrum, in all conceivable mixtures of attributes, flip the screen,
  1246. and flip it back again, with no loss or distortion of colors or attributes.
  1247.  
  1248. A new Alt key was added to flip the screen from the keyboard: Alt-R (Reverse
  1249. the Screen).  And a visual bell was added: SET TERMINAL BELL { AUDIBLE,
  1250. VISUAL, NONE }, as in MS-DOS Kermit.  ckuusr.h, ckuus2.c, ckuus7.c, ckocon.c,
  1251. 17 Jan 94.
  1252.  
  1253. Jeff A. found out how to enable directory creation for the 16-bit OS/2 version
  1254. so I added that.  ckufio.c 5A(098) 18 Jan 94.
  1255.  
  1256. I made SET RECEIVE PATHNAME apply at all times, not just with SET FILE
  1257. NAMES LITERAL.  ckuus2.c, ckcfns.c 5A(080) 18 Jan 94.
  1258.  
  1259. Fixed OS/2 C-Kermit to strip off disk letters when sending files, except
  1260. when FILE NAMES are LITERAL *and* SEND PATHNAMES are ON.  ckcfns.c 5A(099),
  1261. 19 Jan 94.
  1262.  
  1263. Added automatic directory creation to UNIX version.  Redesigned and rewrote
  1264. zmkdir(), added its specification to ckcplm.doc.  When an incoming file
  1265. includes a directory name in the file header packet, an attempt is made to
  1266. create the specified directory if SET RECEIVE PATHNAMES is ON.  In UNIX, any
  1267. directories that are created inherit the permissions of their parents, and the
  1268. owner and group of the user who is running the Kermit program.  Naturally,
  1269. directory creation fails if the user lacks the appropriate permissions.
  1270. ckcfns.c, ckufio.c 5A(081), 19 Jan 94.
  1271.  
  1272. Added skeleton of REXX command to the OS/2 version.  Jeff A will fill it
  1273. in.  To activate the REXX interface, define CK_REXX.  ckuusr.h, ckuusr.c,
  1274. ckuus3.c, ckuus4.c, 19 Jan 94.
  1275.  
  1276. Changed OS/2 version to send the system ID for OS/2, not UNIX!, in the
  1277. Attribute packet.  ckufio.c, 19 Jan 94.
  1278.  
  1279. In OS/2 version, added REXX and REXXFILE commands.  Jeffrey Altman filled in
  1280. the system-dependent execution thereof in ckotio.c, 5A(113), 20 Jan 94.
  1281. REXX executes a Rexx command.  REXXFILE executes a Rexx program from a file.
  1282. Both of these return the Rexx return code (a string) in the variable \v(rexx).
  1283. ckuusr.h, ckuusr.c 5A(117), ckuus2.c, ckuus3.c, ckuus4.c, 19 Jan 94.
  1284.  
  1285. Enabled SET FILE TYPE LABELED for OS/2.  Jeff Altman will fill in the
  1286. system-dependent code.  A new symbol, CK_LABELED, governs this feature now;
  1287. previously it was dependent on VMS.  LABELED transfers will allow OS/2 files
  1288. to be sent with all their attributes, either for direct use on another OS/2
  1289. system, or for archival on a non-OS/2 system.  ckcfn3.c, ckuus4.c, ckuusx.c,
  1290. 20 Jan 94.
  1291.  
  1292. Added code to append ".~number~" to the OS/2 longname in the extended
  1293. attributes block whenever we rename a file using znewn().  ckcfns.c 5A(100),
  1294. 20 Jan 94.
  1295.  
  1296. Changed OS/2 C-Kermit to *never* send a disk letter, regardless of FILE
  1297. NAMES or SEND PATHNAMES settings.  (Of course, you can still send a disk
  1298. letter in an "as-name").  ckcfns.c 5A(100) 20 Jan 94.
  1299.  
  1300. Fixed OS/2 C-Kermit's terminal emulator to preserve brightness of foreground
  1301. colors selected by SET TERMINAL COLOR.  This feature was destroyed in the
  1302. edits of January 17.  Blinking, however, still does not work right, and so
  1303. is simulated by a high-intensity background.  ckocon.c 5A(115), 21 Jan 94.
  1304.  
  1305. Disabled Rexx features in 16-bit OS/2 version, because MSC can't cope with
  1306. the rexxsaa.h header file.  21 Jan 94.
  1307.  
  1308. Added a small modification to ttopen() for POSIX-based Lynx OS 2.2, in which
  1309. file descriptor zero is read-only rather than read-write, from Simon Park
  1310. <si@wimpol.demon.co.uk>, plus a new makefile entry for this system.
  1311. ckutio.c 5A(123), 24 Jan 94.
  1312.  
  1313. Replaced the previous HP Roman-8 / Latin-1 character translation tables, which
  1314. were not invertible, by new invertible tables, approved by HP.
  1315. ckuxla.c 5A(022), 24 Jan 94.
  1316.  
  1317. Added a new variable, \v(newline), that contains the appropriate newline
  1318. character or sequence for each system where C-Kermit runs (UNIX = LF,
  1319. MAC = CR, OS/2 = CRLF, etc).  Use this when writing script programs that
  1320. output data to a file and you need to terminate lines in a system-independent
  1321. way.  I considered making this a simple backslash escape, \n, but this could
  1322. have wreaked havoc with existing scripts in which \n simply quoted the "n"
  1323. character.  ckuusr.c 5A(118), 24 Jan 94, ckuus4.c, ckuus5.c.
  1324.  
  1325. Created a new routine, domac(name,definition).  Call it with a macro name
  1326. and definition string, and it defines the macro and executes it.  This is
  1327. now called by the APC code in the CONNECT command, but it is also usable
  1328. in any other context.  Works OK with APC.  This will soon be used also to allow
  1329. OS/2 Rexx programs to execute Kermit commands.  ckuus5.c, 24 Jan 94.
  1330.  
  1331. Integrated Jeff Altman's new code supporting OS/2 Extended Attributes in
  1332. SET FILE TYPE LABELED operations.  In other words, now you can actually use
  1333. SET FILE TYPE LABELED to transfer OS/2 files, just as you can with VMS files.
  1334. ckufio.c, etc etc.  24 Jan 94.
  1335.  
  1336. Jeff Altman filled in the function that exports C-Kermit commands to Rexx.
  1337. So now you can run a Rexx program under Kermit and the Rexx program can
  1338. execute Kermit commands.  Rexx support is still activated only in the 32-bit
  1339. version, due to problems with the 16-bit libraries.
  1340. ckotio.c 5A(115), 25 Jan 94.
  1341.  
  1342. Removed OS/2 Extended Attribute support from 16-bit OS/2 version, since it
  1343. could not be compiled with MSC.  Ditto labeled file transfer.
  1344. Many modules, 25 Jan 94.
  1345.  
  1346. Added SET FILE LABEL {ARCHIVE, READ-ONLY, HIDDEN, SYSTEM, EXTENDED} {ON, OFF}
  1347. so user can include (ON) or exclude (OFF) the given attributes when
  1348. transferring OS/2 files in LABELED mode; 32-bit version only.  By default all
  1349. but ARCHIVE are ON.  ckcmai.c 5A(190), ckcdeb.h, ckuusr.c 5A(119), ckuus2.c,
  1350. ckuus5.c, ckuus7.c, ckcfns.c 5A(102), ckcfn3.c, 25 Jan 94.  Labeled file
  1351. option bits are passed in the lblopts member (a bit mask) of the filinfo
  1352. struct.  The low-level ckufio.c routines still need the OS/2-specific code to
  1353. handle them, and the format of the OS/2 labeled file needs to be expanded to
  1354. include them.
  1355.  
  1356. Jeff Altman suspected there might be a memory leak somewhere in the DIAL
  1357. command, so I went through it thoroughly to make sure that all writes into
  1358. buffers were checked in advance against overflow, and that all malloc'd items
  1359. were free'd before returning.  Found several cases where these actions were
  1360. not taken previously, so memory leaks were definitely possible, especially
  1361. when a phone number or a device name was VERY long.  ckudia.c 5A(052),
  1362. 29 Jan 94.
  1363.  
  1364. Harvey Stein at Hebrew University pointed out that there was no way to have
  1365. C-Kermit dial from a command file before the prompt was issued, and still be
  1366. able to interrupt dialing and get to the prompt.  It seems that the rules for
  1367. command order listed on "Using C-Kermit", p.323, were not being followed.  It
  1368. should have been possible to interrupt '-C "command list"' execution and get
  1369. back to the prompt, but it wasn't.  So I moved a block of code.
  1370. ckcmai.c 5A(190), 29 Jan 94.
  1371.  
  1372. Discovered that on at least one operating system, SunOS 4.x, C-Kermit's
  1373. lowest-level command parsing function -- gtword() in ckucmd.c -- was failing
  1374. to detect "end of file" when commands were coming from redirected standard
  1375. input (e.g. "kermit < foo").  Debugging showed that errno was being set to
  1376. EINTR for some unfathomable reason, which was being explicitly checked for as
  1377. an exception to EOF detection, because it could occur when a backgrounded
  1378. C-Kermit was re-foregrounded.  So I added a counter to break out of the
  1379. infinite loop that results from this situation.  ckucmd.c 5A(054), 30 Jan 94.
  1380.  
  1381. Noticed that if you start up UNIX Kermit with "&" so it is in the background
  1382. initially, then the command parser doesn't work right after putting it in the
  1383. foreground.  In this case, Kermit was not able to get its console modes when
  1384. it started up, so concb() was not able to modify them for "cbreak" mode.
  1385. Solution: If concb() is called when the original console modes are not yet
  1386. available, AND we know we are not in the background, then try to get the
  1387. console modes before giving up.  concb(), ckutio.c 5A(124), 30 Jan 94.
  1388.  
  1389. Added automatic command retry.  If at interactive prompting level, a command
  1390. has a syntax error, the next prompt will include the fields that were correct
  1391. (if any); for example:
  1392.  
  1393.   C-Kermit>set block foo
  1394.   ?No keywords match - foo
  1395.   C-Kermit>set block _
  1396.  
  1397. (where "_" shows the position of the cursor).  ckuus5.c, 30 Jan 94.
  1398.  
  1399. Added command recall.  It is enabled if DCMDBUF is defined, since it makes
  1400. liberal use of malloc().  To recall a command, type Ctrl-P (familiar to EMACS
  1401. users) or Ctrl-B (familiar to VMS users).  Repeatedly doing this moves up in
  1402. the command history buffer, up to the top.  Ctrl-N moves back down.  Effective
  1403. only for interactive-mode commands.  Tested on UNIX, OS/2, VMS -- should work
  1404. everywhere, not system-dependent at all (as it would be, for example, if we
  1405. allowed arrow keys to be used for this purpose!).
  1406. ckucmd.c 5A(054), 30 Jan 94.
  1407.  
  1408. Added SET COMMAND RECALL-BUFFER-SIZE command, to let the user establish the
  1409. size of the rollback buffer.  ckuusr.h, ckuus3.c.  ckuusr.c 5A(120), 30 Jan 94.
  1410.  
  1411. Added SHOW COMMAND to display SET COMMAND items.  ckuus5.c, 30 Jan 94.
  1412.  
  1413. Updated general and specific help texts.  ckuus2.c, ckuus6.c, 30 Jan 94.
  1414.  
  1415. Changed OS/2 CONNECT command to print the error status code if it gets
  1416. an i/o error.  ckotio.c 5A(117), ckocon.c 5A(116), 2 Feb 94.
  1417.  
  1418. Added some parens around "if" conditions in gattr() in ckcfn3.c to force
  1419. the IBM OS/2 C++ compiler to use the right precedence.  2 Feb 94.
  1420.  
  1421. The change to allow Ctrl-P in OS/2 C-Kermit during command parsing
  1422. broke Ctrl-C interruption.  So now we go back to how it was before:
  1423. Ctrl-C works again, Ctrl-P is likely to be ignored (or toggle the printer).
  1424. ckotio.c 5A(118), 3 Feb 94.
  1425.  
  1426. Ric Anderson pointed out a problem with the RENAME command in UNIX and OS/2,
  1427. namely that it would hang forever (until user typed Ctrl-C) if the new name
  1428. was the name of an already-existing directory.  Reason unknown, but the
  1429. solution went approximately like this:
  1430.  
  1431.  1. Change cmofi() (parse output filename) to return 2 if user types the
  1432.     name of an existing directory.  This allows anybody who calls cmofi()
  1433.     to decide whether to handle directory-changing, or just diagnose an error.
  1434.     ckucmd.c 5A(055) 5 Feb 94.
  1435.  
  1436.  2. Changed zrename(old,new) to "do the right thing" if the second argument
  1437.     is the name of an existing directory, i.e. move the old file into it.
  1438.     Also changed zchko(name) to fail if given the name of an existing
  1439.     directory.  ckufio.c 5A(083) 5 Feb 94.
  1440.  
  1441. This also allowed simple checking in the higher-level command-parsing routines
  1442. for when users gave a directory name when an output file name was required,
  1443. e.g. in the various LOG commands, etc.
  1444.  
  1445. Applied patches to IBM OS/2 C/C++ compiler, bringing it up to Service Level
  1446. CT00006.  Hard to say yet what good this did, but it did not fix the Ctrl-C
  1447. during DIAL problem (at least not for me).
  1448.  
  1449. OS/2 C-Kermit's SET FILE COLLISION UPDATE feature was not working very well.
  1450. For example, If I download (say) 45 different files, and then I tell OS/2
  1451. C-Kermit to SET FILE COLLISION UPDATE, and then download the exact same set of
  1452. files (without having touched any of them in the meantime), OS/2 C-Kermit
  1453. failed to reject about 50% of them.  It appears that OS/2 stat(), when asked
  1454. for the file's modification date/time, always returns an even number (which is
  1455. strange, because the OS/2 DIRECTORY command shows odd-numbered seconds).
  1456. Thus, many incoming files will appear to be newer than the OS/2 files that are
  1457. exact copies of them.  So I added OS/2-specific code to zstime() in ckufio.c
  1458. to ignore a one-second difference if the local modification time is an even
  1459. number.  5 Feb 94.
  1460.  
  1461. I finally tracked down what was killing typeahead in the interactive command
  1462. parser: the call to concb() that preceded each command in the main loop of the
  1463. parser() function.  Although concb() does not explicitly clear the keyboard
  1464. input buffer, apparently it does this as a side effect of setting modes.  In
  1465. fact, this call to concb() was unnecessary, since the console is already put
  1466. into cbreak() mode upon entry to the parser() function, and also by popclvl()
  1467. whenever the command stack pops back to top level.  So now typeahead works
  1468. between interactive commands, but it still can't be done while a command
  1469. file or macro is active.  That's because a command file or macro might
  1470. itself request keyboard input, or go into CONNECT mode, or go into protocol
  1471. mode.  ckuusr.c 5A(121), ckuus5.c, 6 Feb 94.
  1472.  
  1473. The DIAL command (dodial() in ckuus6.c) was changed to save the current parity
  1474. (which might have just been picked up from a dialing directory entry) and set
  1475. the parity to NONE before calling the actual DIAL module, ckdial() in ckudia.c,
  1476. and then to restore the parity when after ckdial() returns.  Since ckudia.c
  1477. has its own internal SIGINT trap, this works even if the DIAL command is
  1478. interrupted.  This change should facilitate dialing with the new breed of
  1479. buggy modems that is sensitive to parity, as well as dialing through TCP/IP
  1480. TELNET modem servers.  Lots of testing needed!  ckuus6.c, 6 Feb 94.
  1481.  
  1482. Also, found one place in the ckdial() function where it was returning
  1483. after having set up some signal()s without calling dreset() to put them
  1484. back.  Maybe this explains the crashes when typing Ctrl-C while dialing.
  1485. ckudia.c 5A(053), 6 Feb 94.  (Later: No, it doesn't -- the program still
  1486. crashes consistently on OS/2 if you Ctrl-C a DIAL command that is trying
  1487. to dial a modem that is not turned on.)
  1488.  
  1489. It has bothered me for years that END and RETURN can't serve their normal
  1490. functions when used in the command-list of a FOR, WHILE, or XIF command,
  1491. simply because these three commands are implemented as macros themselves.  Now
  1492. they do work as expected.  A small piece of code was added to each command,
  1493. which, before popping the command stack from the current level (macro or TAKE
  1494. file), looks to see if the currently executing macro (if any) is one of these
  1495. commands, and if so, pops the command stack twice and copies the macro
  1496. arguments up two levels (_putargs), and keeps doing this until it encounters a
  1497. command level in which none of these commands is executing, and therefore
  1498. works correctly with nested XIF/WHILE/FOR commands in any combination.  Tested
  1499. fairly extensively, but obviously more widespread testing is needed.  New
  1500. cketest and ckedemo files created to exercise this feature.  ckuusr.c,
  1501. ckuus6.c, 6 Feb 94.
  1502.  
  1503. Bo Kullmar noticed that two Ctrl-N's were required to get a new command
  1504. when reversing command recall direction.  Actually, the same was true when
  1505. going from down to up (two Ctrl-P's needed).  Fixed, in a rather dumb way,
  1506. in ckucmd.c 5A(056), 6 Feb 94.
  1507.  
  1508. Extended dialing parity business from yesterday to mdmhup() routine, the
  1509. one that escapes back to the modem and gives a modem-specific hangup command.
  1510. ckudia.c 5A(054), 7 Feb 94.
  1511.  
  1512. Updated OS/2 code from Jeff Altman:
  1513.  . SET FILE TYPE LABELED now includes regular (DOS) attributes.
  1514.  . Rexx functions finished up.
  1515.  . Documentation provided.
  1516.  
  1517. Added UNIX makefile entry for Bull DPX/2 BOS/X.  7 Feb 94.
  1518.  
  1519. Fixed "invisible" attribute handling in OS/2 C-Kermit terminal emulator,
  1520. and enabled handling of the (undocumented) DEC VT220 escape sequence,
  1521. CSI 28 m, "turn off invisible selectively", after verifying that this works
  1522. on a real DEC VT320 terminal.  Also, radically simplified handling of the
  1523. invisible attribute and removed lots of complicated code -- Joe Doupnik's
  1524. idea: if we're invisible mode, just write any graphic character as a space.
  1525. ckocon.c 5A(118), 8 Feb 94.
  1526.  
  1527. Added an optional "switch", /QUIETLY, to the CONNECT command, to skip the
  1528. verbose CONNECT message.  ckuusr.h, ckuusr.c 5A(122), ckuus4.c, 8 Feb 94.
  1529.  
  1530. Implemented SET DEBUG SESSION in OS/2 C-Kermit.  Forces TERMINAL WRAP ON.  C0
  1531. control characters are shown as corresponding letters in the underline color,
  1532. e.g. Ctrl-A is shown as underline A.  DEL is shown as underline question mark.
  1533. C1 controls are shown as IBM PC characters from code page columns 8 and 9, but
  1534. in underline color.  All other characters are shown as-is.  TELNET
  1535. negotiations are written out in words, one per screen line (a change from
  1536. before, when they were all run-on).  ckocon.c, ckcnet.h, ckcnet.c 5A(027),
  1537. 8 Feb 94.
  1538.  
  1539. Added SET TERMINAL DEBUG { ON, OFF } as a synonym for SET DEBUG SESSION.
  1540. ckuusr.c, ckuusr.h, ckuus5.c, ckuus7.c, 8 Feb 94.  Also added this to SHOW
  1541. TERMINAL display.
  1542.  
  1543. Added Alt-D to OS/2 C-Kermit's terminal emulator to toggle debugging on and
  1544. off, and added an indication to the status line.  ckocon.c, 8 Feb 94.
  1545.  
  1546. Fixed a bug in the OS/2 C-Kermit terminal emulator, in which it would escape
  1547. back to the prompt if it received an APC sequence, even if APC was OFF.
  1548. ckocon.c, 8 Feb 94.
  1549.  
  1550. Added another keyboard ID to OS/2 C-Kermit's \v(keyboard) list.  ckotio.c
  1551. 5A(121), 8 Feb 94.
  1552.  
  1553. Enabled VT100 and VT220 emulation in OS/2 C-Kermit.  The VT220 emulation is
  1554. not complete, but here's what we have so far:
  1555.  
  1556.  . You can now SET TERMINAL TYPE { VT52, VT100, VT102, VT220 }.
  1557.  . Kermit will identify itself accordingly in response to DECID or DA.
  1558.  . SHOW TERMINAL shows the current terminal type and ID string.
  1559.  . VT100 is exactly like VT102 except no character insert/delete.
  1560.  . 8-bit controls (like CSI = 155) are now accepted, but you must SET TERMINAL
  1561.    BYTESIZE 8 (and, of course, SET PARITY NONE) in order for them to work, and
  1562.    you also must set your terminal character-set to something other than
  1563.    TRANSPARENT or any of the IBM code pages or other sets that put graphic
  1564.    characters in the C1 area.  C1 controls are handled by converting them (in
  1565.    just one place: the rdserwrtscr() routine) to their 7-bit escape-sequence
  1566.    equivalents internally -- thus session logging, debug display, etc, will
  1567.    not reveal them; e.g. CSI shows up as "ESC [".  This was a cheap approach,
  1568.    but it works fine except for the logging.
  1569.  . If SET TERMINAL ANSWERBACK is ON, C-Kermit now includes terminal-type name
  1570.    in the answerback string, e.g. "OS/2 C-Kermit 501190 VT220".
  1571.  . The VT220 extensions added earlier take care of the most common needs
  1572.    of VT220-and-above applications; tests mostly OK with EDIT/TPU (EVE) on
  1573.    VMS, but more work needed to fill in some higher-level escape sequences
  1574.    that are not yet handled: character-set designation & invocation, 
  1575.    many reports, etc.
  1576.  
  1577. ckocon.c, ckuus5.c, ckuus7.c, 8 Feb 94.
  1578.  
  1579. Added nextfat UNIX makefile entry from Ronald C.F. Antony <rcfa@cubiculum.com>;
  1580. generates a NeXTSTEP binary that will run on both Intel and Motorola platforms.
  1581. 14 Feb 94.
  1582.  
  1583. Found and fixed the problem in the OS/2 C-Kermit VT terminal emulator with
  1584. EDT/TPU (EVE): Erase In Display (ED), CSI Pn J, was being handled incorrectly.
  1585. Although the VT terminal manuals don't say it, this sequence sets cleared
  1586. cells to the default attributes, not to the prevailing attributes -- verified
  1587. by experimentation on real VT terminals.  Now EDT/TPU works nicely, even in
  1588. VT220 mode on an 8-bit connection with 8-bit controls.  ckocon.c 5A(119),
  1589. 14 Feb 94.
  1590.  
  1591. A couple minor syntactic corrections to ckcnet.c and ckotio.c.  14 Feb 94.
  1592.  
  1593. Fixed a bad bug noticed by Carlo@sg.tn.tudelft.nl: SET MODEM HAYES (or other),
  1594. SET LINE whatever, HANGUP, before a DIAL command had been given, would crash
  1595. the program (if it was compiled with the DYNAMIC option) because the modem
  1596. response buffer had not been malloc'd yet.  ckudia.c, 15 Feb 94.
  1597.  
  1598. Minor correction to ckuus6.c from Steve Walton -- IF REMOTE parsing code
  1599. needed to be in #ifdef CK_IFRO..#endif.  15 Feb 94.
  1600.  
  1601. Added VT220 DECDSR reports to OS/2 C-Kermit's terminal emulator: printer
  1602. status, keyboard dialect.  Now all VT220 reports are supported except
  1603. DECDSR/UDK ... 15 Feb 94.
  1604.  
  1605. Some minor cleanups -- and LOTS of testing -- of VMS version, especially
  1606. when running under DCL.  15 Feb 94.
  1607.  
  1608. Added DECDSR/UDK report response to OS/2 C-K VT220 emulator -- it always
  1609. replies "UDKs are locked".  16 Feb 94.
  1610.  
  1611. Looked into changing VMS C-Kermit to use SYS$COMMAND rather than SYS$INPUT
  1612. as the designator for the console device.  This would allow DCL command
  1613. procedures to use the CONNECT command even when they did not DEFINE
  1614. SYS$INPUT to be SYS$COMMAND.  However, this prevents the command parser from
  1615. reading from SYS$INPUT, and therefore prevents the use of "image data" in
  1616. DCL command procedures, which would throw most VMS users for a loop.
  1617. Conceivably, we could separate the command input from the CONNECT input, but
  1618. this would require massive recoding.  Deferred.
  1619.  
  1620. Looked into adding user-defined modem hangup strings, similar to SET DIAL
  1621. INIT-STRING, etc.  Not easy, because we have not only the string itself to
  1622. deal with, but also the escape sequence and guard time; thus we would need
  1623. at least 3 or 4 new SET COMMANDS, assuming the Hayes model (pause, +++,
  1624. pause, ATH0 or whatever).  And this doesn't even take into account the
  1625. method to be used for reading the response.  Deferred.  17 Feb 94.
  1626.  
  1627. In view of persistent (and confirmed) reports of C-Kermit crashing on certain
  1628. systems (VMS, OS/2), but not others (UNIX), when DIAL commands fail, or when
  1629. they are interrupted, I ripped out (a) the "failure-within-a-failure" handler
  1630. from ckudia.c, which had nested setjmps, alarms, and signals, and whose
  1631. purpose I really never understood (it's Herm Fischer's code from 10 years
  1632. ago).  I also removed the Microm modem code that did similar things, and
  1633. replaced it with simple, straightforward (input, output) code.  The Microcom
  1634. code crashed consistently on VMS.  ckudia.c 5A(156), 18 Feb 94.  This change
  1635. didn't do any good at all, foo.
  1636.  
  1637. Added SET COMMAND RETRY { ON, OFF }, because one edit 190 previewer complained
  1638. that this feature interfered with DCL wrappers he had written for Kermit,
  1639. which parsed error messages, etc.  ckuus[235].c, 18 Feb 94.
  1640.  
  1641. Fixed command retry to account for variables used in commands, which can
  1642. change size during parsing, thus giving partial or garbage fields in the retry
  1643. prompt.  Problem noticed by Jeff Altman.  ckuus5.c, 19 Feb 94.
  1644.  
  1645. Changed SET KEY to allow inclusion of \K verbs, in the same manner as the
  1646. OUTPUT command allows \B or \L to be included, without losing the backslash.
  1647. Ditto for \{Kverb}.  All \Kverb-related material is enclosed in
  1648. #ifndef NOKVERB..#endif.  ckuus3.c, 19 Feb 94.
  1649.  
  1650. Added keyboard verb handling to OS/2 C-Kermit.  Routine sendcharduplex() split
  1651. into two routines: (1) sendescseq(), used to send DEC special keys, and (2)
  1652. sendkeydef(), used to send user-defined key macros.  sendkeydef() looks for
  1653. \Kverbs (including \K{verbs}) and executes them.  New routine dokverb() does
  1654. the actual execution.  A new header file, ckocon.h, was added to define
  1655. symbols for the keyboard verbs, as well as a table associating the verbs with
  1656. their symbols.  ckocon.[ch] 5A(120), 19 Feb 94.
  1657.  
  1658. Filled in dokverb() with a few easy verbs: \Kbreak, \Kexit, \Klbreak, \Kdump,
  1659. \Knull, \Kreset, \Kignore.  Works fine.  Added DEC F keys, DEC editing keys,
  1660. DEC cursor keys, all other DEC key groups except UDKs, the rest of the Kermit
  1661. action verbs, etc.  Moved a lot of code out of vt100key(); now it's in
  1662. dokverb(), which can be called from various places.
  1663.  
  1664. All functions previously available are still available, but rather than being
  1665. tied to hardwired scan codes, they are tied to \Kverbs.  This means:
  1666.  . You can move them anywhere you want.
  1667.  . You can't "lose" them, as you could before if you mapped something else
  1668.    over a sacred key, and therefore you can redefine sacred keys.
  1669.  . That is, NO keys are sacred; no keys are preempted by Kermit in any
  1670.    way that you can't overcome; you can undefine/redefine any and all keys.
  1671.  . Key mapping files now contain descriptive verbs rather than magic numbers
  1672.    as the definitions.
  1673.  . SHOW KEY shows the \Kverb, rather than obscure numeric cross-reference.
  1674.  
  1675. Furthermore:
  1676.  . The \Kverbs are totally compatible with MS-DOS Kermit (even though
  1677.    the scan codes are not!)
  1678.  . You can combine characters, strings, and \Kverbs arbitrarily in a
  1679.    key definition; e.g. you can put two or more verbs on key, etc.
  1680.  
  1681. Examples (for F1):
  1682.  . set key \315 \161             ; Any single character
  1683.  . set key \315 Any string       ; Any string of ordinary characters
  1684.  . set key \315 { Any string }   ; String with leading & trailing spaces
  1685.  . set key \315 \KupArr          ; Up-Arrow
  1686.  . set key \315 \KupArr\KrtArr   ; Up-Arrow and Right-Arrow
  1687.  . set key \315 abc\{KupArr}xyz  ; "abc", then Up-Arrow, then "xyz"
  1688.  . set key \315 abc\KupArr xyz   ; "abc", then Up-Arrow, then " xyz"
  1689.  . set key \315 \v(time)         ; Time when SET KEY was exucuted (constant)
  1690.  . set key \315 \\v(time)        ; Time when key is pressed (variable)
  1691.  
  1692. Braces are not required except to resolve ambiguity or to preserve leading
  1693. and/or trailing spaces in the definition.  Note that \\v(name) is a special
  1694. case.  Other backslash quantities cannot have their evaluation postponed by
  1695. "double quoting" in this way; they are simply emitted literally, e.g.
  1696. "set key \315 \\%a" causes F1 to send "\%a".
  1697.  
  1698. User-defined macros are not supported -- the code's there, but it doesn't
  1699. work yet.
  1700.  
  1701. Rollback now works differently.  Previously, you could only look at rolled
  1702. back screens, but you couldn't do any work in them; while rolled back, only
  1703. the rollback keys were operative (except for a horrible hack that let you
  1704. print/dump a rolled-back screen).  You couldn't type any of the special keys,
  1705. like pop-up help, or Alt-x to get back, etc, and you couldn't transmit any
  1706. characters to the host, which was a big pain, because you often want to be
  1707. looking at rolled-back material when typing stuff to the host.  Also,
  1708. arriving characters were not displayed until unrolled all the way down to
  1709. bottom.  Now, all of these restrictions are lifted.
  1710.  
  1711. The following \Kverbs are supported:
  1712.  
  1713.  (About 70 of them; I'll fill this in later; for now, see ckocon.h.)
  1714.  (Basically, there's a verb for every DEC key, like PF4, Gold, Select,
  1715.  F20, arrow keys, keypad keys, etc, and each of these verbs tracks the
  1716.  terminal type, keypad mode, etc, dynamically, just like in MS-DOS Kermit.)
  1717.  (Plus all the Kermit action verbs, like \Kexit, \KupScn, etc...)
  1718.  
  1719. The default key mapping is:
  1720.  
  1721.  Key           Function     Description
  1722.  Scroll Lock   \KholdScrn   Hold Screen
  1723.  Up Arrow      \KupArr      DEC up arrow 
  1724.  ...
  1725.  (I'll fill this in later; for now see macrotabini() in ckocon.c; the
  1726.  default mapping is about the same as before.)
  1727.  
  1728. The major casualty in all this is the status line and the pop-up help screen.
  1729. There is no way of knowing what verbs are mapped to which keys without doing
  1730. an exhaustive search of all keys and looking for substrings, plus some verbs
  1731. might be mapped to more than one key, etc.  Plus even if we do find the key
  1732. that, say, \Kexit is assigned to, we still don't have an easy way to translate
  1733. the scan code into "English", especially given the fact that -- hopefully --
  1734. the scan codes will change to become compatible with MS-DOS Kermit.
  1735.  
  1736. Still to do:
  1737.  
  1738.  . Add \v(rows), \v(columns).
  1739.  . Add compose-key feature.
  1740.  . Implement user-defined keys (UDKs, in the VT220 sense).
  1741.  . Add macro execution (\Kfoo, where foo is a user-defined macro).
  1742.  . Do something about mode-line and alt-help screen; presently these
  1743.    still contain the hardwired Alt-key legends, which will not be true
  1744.    if you change the key assignments.
  1745.  
  1746. And finally (I was hoping to enlist Kai Uwe's help with this one), it would
  1747. be very nice to have OS/2 C-Kermit differentiate among more key combos,
  1748. like Alt-x and Alt-Shift-X, and, in fact, to have its scan codes compatible
  1749. with MS-DOS Kermit's, so the two programs can share key settings files.
  1750.  
  1751. And, finally + 1, to illustrate just the VT220 keyboard setup, there's a
  1752. complete key settings that incorporates all VT220 features (I think):
  1753. it's in ~kermit/test/ckovtk2.ini.
  1754.  
  1755. Corrected SHOW TERM -- it had arrow-key modes reversed.  ckocon.c, 24 Feb 94.
  1756.  
  1757. Fixed OS/2 C-Kermit TELNET terminal-type negotiations to send the name of
  1758. the terminal currently being emulated.  ckcnet.c 5A(028).
  1759.  
  1760. Rearranged the error-handling code in DIAL module, ckudia.c.  Persistent
  1761. reports of crashes during dialing were traced (mostly thanks to hints from
  1762. Mark Berryman) to the fact that the code (inherited from H. Fisher, circa 1985)
  1763. was doing longjmps to places that were not on the call stack.  Apparently,
  1764. most UNIX C compilers go out of their way to accommodate this situation, but
  1765. on OS/2 and VMS we have guaranteed disaster.  To aid in debugging, I also
  1766. added timestamps to certain messages that are shown if DIAL DISPLAY is ON.
  1767. I also cleaned up some of the the other messages and made them more consistent.
  1768. ckudia.c 5A(057), 25 Feb 94.
  1769.  
  1770. Preliminary results look good.  All of these would cause crashes previously
  1771. under VMS and OS/2:
  1772.                                                  OS/2  VMS   UNIX
  1773.   SET MODEM MICROCOM and DIAL                     OK    OK    OK
  1774.   DIAL on a Hayes modem that's turned off         OK    OK    OK
  1775.   DIAL on a Telebit modem that's turned off       OK    OK    OK
  1776.   Ctrl-C before init message                      OK    OK    OK
  1777.   Ctrl-C after init message                       OK    OK    OK
  1778.   Ctrl-C after dialing message                    OK    ??    OK
  1779.  
  1780. One small problem remains: Interrupting VMS C-Kermit DIAL commands repeatedly
  1781. sometimes makes it EXIT (just as though the EXIT command had been given).
  1782.  
  1783. Added code from <carlo@sg.tn.tudelft.nl> to enable high serial speeds for
  1784. Linux.  ckutio.c 5A(125), 26 Feb 94.
  1785.  
  1786. Fixed a bug that caused two consecutive "Up" (Ctrl-P or Ctrl-B) commands,
  1787. when given at the top of the command recall buffer, to crash the program.
  1788. Reported by Marko Teittinen <marko@cs.umd.edu>.  ckucmd.c 5A(057), 26 Feb 94.
  1789.  
  1790. From Carlo Kid at the Technical University of Delft <carlo@sg.tn.tudelft.nl>,
  1791. fixes for the INPUT command.  It spuriously matched the first character of the
  1792. search string except it was also the first character received.  Thus "input 5
  1793. oofa" would not match "sofa" (right) but would match "blah sofa" (wrong).
  1794. Second, when backing up through previously received characters to restart a
  1795. search, it did not always back up to the right place.  ckuus4.c, 26 Feb 94.
  1796.  
  1797. Also from Carlo Kid: a new command, MINPUT - "multiple input".  He supplied
  1798. the code for the actual string matching, as well as command-parsing code,
  1799. etc.  I kept his string-matching code (doinput() routine in ckuus4.c) pretty
  1800. much as-is, but totally rewrote the command parsing.
  1801.  
  1802. Syntax: MINPUT <sec> [ string1 [, string2 [, string2 [, ... ] ] ] ]
  1803.  
  1804. Works just like the INPUT command, except more than one search string is
  1805. allowed.  Strings are separated by commas.  If any of the search strings is
  1806. encountered within the timeout interval, the command succeeds and the
  1807. \v(minput) variable is set to the number of the string that was found: 1, 2,
  1808. 3, etc.  If none of the search strings is found, the command times out,
  1809. fails, and \v(minput) is set to 0.  All SET INPUT paramaters apply - CASE,
  1810. etc.  Example:
  1811.  
  1812.   minput 30 Login:, Username:, Ready
  1813.   if success goto LBL\v(minput)
  1814.   end 1 Prompt didn't arrive.
  1815.  
  1816. Looks for any of the three strings "Login:", "Username:", or "Ready" and
  1817. then goes to one of the labels "LBL1", "LBL2", or "LBL3", depending on which
  1818. string was matched.
  1819.  
  1820. To include a comma in a string, enclose it in { braces }, or quote the comma
  1821. with two (yes, two) backslashes:
  1822.  
  1823.   minput 20 {a,b}, c
  1824.   minput 20 a\\,b, c
  1825.  
  1826. Both of these commands search for either "a,b" or "c".
  1827.  
  1828. As in the regular INPUT and REINPUT commands, leading and trailing spaces are
  1829. stripped from each search string unless it is enclosed in { braces }.
  1830. Example:
  1831.  
  1832.   minput 20 {  abc  }, {{ def }},    ghi
  1833.  
  1834. searches for "  abc  ", "{ def }", or "ghi".
  1835.  
  1836. This feature is included in C-Kermit if (a) NOMINPUT is not defined,
  1837. and (b) NOSPL is not defined.  So by default, all versions that include the
  1838. script programming language get the MINPUT command.
  1839. ckuusr.c 5A(125), 26 Feb 94; ckuusr.h, ckuus2.c, ckuus4.c.
  1840.  
  1841. Added zmkdir() for VMS, contributed by Mark Berryman of SAIC
  1842. <Mark.Berryman@Mvb.Saic.Com>.  Defined CK_MKDIR for VMS, thus enabling all
  1843. of the directory-creation code.  ckcdeb.h, ckvfio.c 2.0-107, 26 Feb 94.
  1844.  
  1845. Installed another new LIBCMU from Mike O'Malley.  26 Feb 94.
  1846.  
  1847. Changed OS/2 INSTALL.CMD (CKOINS.CMD) to use CKOVTK2.INI rather than
  1848. CKOVTK.INI.  Updated OS/2 READ.ME (CKOAAA.DSK) file.  27 Feb 94.
  1849.  
  1850. Found and plugged a tiny (1-byte) memory leak in the INPUT command.
  1851. ckuus4.c, 27 Feb 94.
  1852.  
  1853. In OS/2 C-Kermit, changed default VT cursor key mode to be "normal" (cursor)
  1854. rather than "application", and default keypad mode to be "numeric" rather than
  1855. "application", in accordance with power-up state of real DEC terminals.
  1856. ckocon.c 5A(121), ckuus5.c, ckuus7.c, 27 Feb 94.
  1857.  
  1858. Added a call to setcursormode() to doreset() in ckocon.c.  This fixes the
  1859. screen if it goes into all-blinking mode, which can happen if you have a
  1860. high-intensity background color and Alt-Esc back to the workplace shell,
  1861. and then resume Kermit.  Now Alt-= (\Kreset) stops the blinking.  ckocon.c,
  1862. 27 Feb 94.
  1863.  
  1864. Fixed OS/2 C-K's treatment of "Linefeed/Newline Mode".  On a real terminal,
  1865. this is controlled by the host via CSI 20 h/l (h = set, l = reset).  This
  1866. sequence (LNM) affects both sending (when set, Return and Enter send CRLF) and
  1867. receiving (when set, LF, FF, VT are displayed as CRLF).  But Kermit can
  1868. control the sending and receiving aspects separately via SET TERMINAL
  1869. NEWLINE-MODE and SET TERMINAL CR-DISPLAY.  ckocon.c previously used one
  1870. variable (linemode) for LNM, and two others (tlnm and tt_crd) for the
  1871. commands, somewhat inconsistently.  Now the linemode variable is eliminated
  1872. and the tlnm and tt_crd variables are set and reset appropriately by both
  1873. the LNM sequences and the Kermit commands, and used appropriately during
  1874. sending and receiving.  ckocon.c, 27 Feb 94.
  1875.  
  1876. Added SET KEY CLEAR to restore default key mappings.  ckuus3.c, 27 Feb 94.
  1877.  
  1878. Implemented DECTCEM, cursor enable/disable, in OS/2 C-K VT emulator.  Added
  1879. cursor-enable and newcursor() calls to doreset().  ckocon.c, 27 Feb 94.
  1880.  
  1881. Implemented DECPFF, print form feed mode, in OS/2 C-K VT emulator.  Only
  1882. affects host-generated print-screen operations, not user-initiated ones.
  1883. ckocon.c, 27 Feb 94.
  1884.  
  1885. Added a new \Kverb, \KprintFF, to send a formfeed to the printer.
  1886. ckocon.[ch], 27 Feb 94.
  1887.  
  1888. Cleaned up OS/2 C-Kermit's scrollback a bit; it seems less confus(ed/ing) now.
  1889.  
  1890. Since we now have NO IDEA of \Kverb assignments, I removed references to
  1891. Alt keys from the Status Line, and replaced them by escape-character notation
  1892. (e.g. "Return: ^]C  Help: ^]?").  I also removed the "Alt-Help" screen,
  1893. because it's useless now that all Alt functions can be moved, combined with
  1894. other functions, etc, plus the fact that there is no good way to translate
  1895. a scan code into a key name (even if the bits are consistent, we still have
  1896. national keyboards to contend with).  Finally, I made the \Khelp verb
  1897. invoke the regular Escape-Character help screen.  ckocon.c, 27 Feb 94.
  1898.  
  1899. Added SHOW KVERBS command to list the available \Kverbs; operative only in
  1900. OS/2.  Wrote a nice routine to display them, that arranges them on the screen
  1901. in columns dynamically according to the screen dimensions and the width of the
  1902. widest keyword (this can be adapted later to other SHOW commands, and maybe
  1903. also to "?" menus).  ckuus5.c, 27 Feb 94.
  1904.  
  1905. Made new kwdhelp() routine, show \Kverbs and \Functions() with it.
  1906.  
  1907. It was bothering me that if you SET EXIT WARNING ON in OS/2 C-Kermit, that
  1908. it thought a TCP/IP connection was still open after it had been closed by
  1909. the other side (e.g. when you log out).  It also annoyed me that if you try
  1910. to CONNECT again, it pops you right back to command mode.  Both of these
  1911. problems were because the TCPIPLIB code in ckcnet.c was not closing the
  1912. connection from its own side and setting ttyfd to -1 when it got an i/o error.
  1913. Now fixed.  28 Feb 94.
  1914.  
  1915. Fixed the problems with OS/2 C-Kermit screen rollback.  ckocon.c 5A(122),
  1916. 28 Feb 94.
  1917.  
  1918. Anna Tomecka <anna@vax.clarku.edu> noticed that SET QUIET ON didn't work
  1919. for C-Kermit's CONNECT messages any more (because of the new /QUIETLY switch).
  1920. Fixed in ckuus4.c, 2 Mar 94.
  1921.  
  1922. My previous interpretation of \Kprtscn was wrong.  In MS-DOS Kermit, it
  1923. toggles screen-printing on and off, so I made it that way in OS/2 C-Kermit
  1924. too.  \Kdump copies the current screen to the printer (or file).  Also, I
  1925. added a PRINTER ON indication to the status line.  ckocon.c 5A(123), 2 Mar 94.
  1926.  
  1927. Since it will be relatively rare for people to assign \Kverbs to keys in
  1928. combination with other characters, strings, or \Kverbs, I made a special case
  1929. for when a single \Kverb, and nothing else, is assigned to a key.  In this
  1930. case, the \Kverb is preinterpreted and its numeric index is stored in the
  1931. keymap[], indicated by setting a special bit.  When the user hits that key,
  1932. there is no need to toodle through the string looking for \Kverbs, and then
  1933. look them up to get their indices -- we just go execute the \Kverb directly
  1934. and immediately: dokverb(index), no lookups needed.  Changed the default
  1935. keymap to be preloaded with \Kverb indices rather than strings; got rid of
  1936. macrotabinit() routine, moved all key initializations to keymapinit(), moved
  1937. keymapinit() to ckocon.c, where it belongs.  Changed SHOW KEY to account for
  1938. the \Kverb indices.  ckuus3.c, ckotio.c, ckocon.c, 2 Mar 94.
  1939.  
  1940. This change lets us easily find out which functions are assigned to which
  1941. keys, which once again lets us give accurate help -- at least for US
  1942. keyboards.  Added an array of key names, indexed by scan code.  Added a lookup
  1943. through the keymap for the \Kexit and \Khelp codes, and if found to display
  1944. the corresponding key name.  2 Mar 94.
  1945.  
  1946. Created a structure of Very Important Keys (VIKs), whose names are needed
  1947. in the status line or popup help screens, which is filled in each
  1948. time the CONNECT command is entered, eliminating all key lookups during the
  1949. CONNECT session.  ckocon.c, 3 Mar 94.
  1950.  
  1951. Used the VIK structure to fill in all key references in the status line,
  1952. including the special rolled-back screen status line.  ckocon.c, 3 Mar 94.
  1953.  
  1954. Restored the \Khelp popup screen.  Now it lists everything that Alt-? used
  1955. to list before, but with the correct key legends in case the assignments
  1956. changed, and with functions omitted that are not assigned to any keys.
  1957. If a function is assigned to more than one key, only the first (lowest scan
  1958. code) key is listed.  ckocon.c, 3 Mar 94.
  1959.  
  1960. Added SET TERMINAL ROLL { ON, OFF } as in MS-DOS Kermit.  This controls what
  1961. happens when screens are rolled back.  OFF (the default) means a rolled-back
  1962. screen is treated just like a normal screen: you can communicate with the host
  1963. without affecting the rollback status -- this allows you to send characters
  1964. while viewing a rolled-back screen, and allows arriving characters to be
  1965. displayed on the "old" screen.  ON restores the earlier behavior, in which you
  1966. are constrained to typing only rollback keys while the screen is rolled back;
  1967. no characters are sent to the host, and newly arrived characters are displayed
  1968. only after rolling forward to the bottom of the rollback buffer, i.e. to the
  1969. current screen.  ckuusr.h, ckuus[357].c, ckocon.c, 3 Mar 94.
  1970.  
  1971. The \KprtScn was acting just like host-directed transparent print, i.e.
  1972. sending all received characters to the printer *instead* of to the screen.
  1973. This was a little surprising, so I added a flag to distinguish between host-
  1974. directed printing and user-directed printing.  ckocon.c, 3 Mar 94.
  1975.  
  1976. It seems there was a large installation that was using C-Kermit 5A(165) or
  1977. thereabouts, which had deployed thousands of MS-DOS Kermit scripts that looked
  1978. for strings in the old server message, which changed in 5A(183), August 1992.
  1979. They could not upgrade to the current release without visiting numerous sites
  1980. and installing new script programs.  So I added an OLDMSG compilation option.
  1981. ckcmai.c, 3 Mar 94.
  1982.  
  1983. In OS/2 C-Kermit, HANGUP did not do anything on network connections.
  1984. Fixed in tthang(), ckotio.c 5A(123), 4 Mar 94.
  1985.  
  1986. Added to OS/2 C-K pop-up \Khelp screen: printer toggle, screen forwards, push
  1987. to OS/2, print formfeed.  Changed default mappings so that their key names are
  1988. reasonably portable among all national systems/keyboards/versions.  Help is
  1989. now Alt-Tab rather than Alt-?, Reset is now Alt-R rather than Alt-= (but Alt-=
  1990. is kept active too for compatibility), and flip screen is moved from Alt-R
  1991. to Alt-V (for Video).  ckocon.c 5A(125), 4 Mar 94.
  1992.  
  1993. Enabled \Kdump (print/dump screen) during rollback, again, even when
  1994. TERMINAL ROLL is ON.  ckocon.c, 4 Mar 94.
  1995.  
  1996. Made a new popup help screen for rolled-back screens.  Made popup help box
  1997. use its own screen buffer, so it would work with rolled-back screens too.
  1998. Made popup help save and restore status line; previously the rollback status
  1999. line was wiped out after a help box.  ckocon.c, 4 Mar 94.
  2000.  
  2001. Cleaned up the cursor on/off routines in OS/2 C-Kermit a bit -- it turned out
  2002. you couldn't call the cursor-on routine if the cursor was already on, you'd
  2003. lose the cursor, or turn it into some weird blob.  Made these routines protect
  2004. themselves against this.  So now it's harder to make the cursor disappear.
  2005. Also, made "reset terminal" turn the cursor back on if it was off.
  2006. ckocon.c, 4 Mar 94.
  2007.  
  2008. Fixed bug in parsing SET TERMINAL DEBUG and ROLL in which the command-editing
  2009. keys didn't work right.  ckuus7.c, 4 Mar 94.
  2010.  
  2011. Added two new variables: \v(rows), \v(cols) -- console screen rows and columns.
  2012. ckuus4.c, 4 Mar 94.
  2013.  
  2014. Fixed SHOW VARIABLES -- it had stopped pausing after a screenful.
  2015. ckuus5.c, 4 Mar 94.
  2016.  
  2017. Added support for CK_REDIR (REDIRECT command) for NeXTSTEP, from Dave Johnson
  2018. <ddj@gradient.com>.  ckcdeb.h, ckutio.c 5A(126), 6 Mar 94.
  2019.  
  2020. phaniraj@badlands.NoDak.edu (V. Phaniraj) noticed that SET TERMINAL
  2021. { ARROW-KEYS, KEYPAD } { ON, OFF } was working backwards.  Fixed in ckuus7.c,
  2022. 6 Mar 94.
  2023.  
  2024. Fixed an error in ckuus5.c in which tt_rows and cmd_rows, etc, were
  2025. referenced but not declared if CK_NAWS was not defined, reported by many.
  2026. 6 Mar 94.
  2027.  
  2028. Backed off on enabling REDIRECT for NeXT -- it broke a lot of NeXT
  2029. compilations.  ckcdeb.h, ckutio.c, 6 Mar 94.
  2030.  
  2031. Changed OS/2 default key map again.  Alt-Tab was a bad choice -- in a windowed
  2032. session, it moves the window to the background.  So now Alt-h is Help, Alt-u
  2033. is Hangup.  ckocon.c 5A(126), 7 Mar 94.
  2034.  
  2035. Made VT220 the default emulation for OS/2, since it is, after all, a superset
  2036. of VT102 and VT100.  ckocon.c 5A(126), 7 Mar 94.
  2037.  
  2038. Changed OS/2 emulator's response to color-setting escape sequences, CSI 3x;4xm,
  2039. to reverse the fore/background sense if the screen is in reverse video mode
  2040. (DECSNM).  ckocon.c 5A(126), 7 Mar 94.
  2041.  
  2042. Corrected REDIRECT code for NeXT -- I had messed up Dave Johnson's changes the
  2043. first time.  ckutio.c, 7 Mar 94.
  2044.  
  2045. Marko Teittinen (marko@cs.umd.edu) noticed that SET KEY \blah \27b was
  2046. erroneously misinterpreted as \Kbreak.  Fixed in ckuus3.c and ckucmd.c by
  2047. adding a new xlookup() function, requires exact match, and by fixing a couple
  2048. out-of-order entries in the keyboard verb table in ckocon.h.  7 Mar 94.
  2049.  
  2050. Marko also reported the following: "I have noticed that when the normal mode
  2051. background is low intensity color (for example lgray), underline attribute
  2052. background doesn't display high intensity.  My preferred color settings are
  2053. (these worked for 189):
  2054.  
  2055.   set term color normal black lgray
  2056.   set term color under black white
  2057.   set term color status white blue
  2058.  
  2059. (end quote)".  I said this was because the background intensity was reserved
  2060. to indicate blinking.  Marko persisted: "I would still argue that both high
  2061. and low intensity backgrounds should be allowed.  There could be a warning in
  2062. the doc files, that blinking may pass unnoticed on the screen, if mixed
  2063. backgrounds are used, but please don't make me lose my favorite feature in
  2064. C-Kermit.  I've never seen blinking color attributes except in some animated
  2065. text files, but I'm willing to lose those for good underline highlighting.  I
  2066. want to have black text color, and all low intensity backgrounds (except light
  2067. gray) are terrible.  Then again the bright white background is too bright to
  2068. use for the whole window (=hurts my eyes).  Using high intensity backgrounds
  2069. I'm able to get highlight marker effect for the special attributes."  This
  2070. seems quite reasonable, so I made the suggested change.  ckocon.c, 7 Mar 94.
  2071.  
  2072. Added \Kignore for Num Lock to the default key map, to prevent the Num Lock
  2073. key from beeping.  ckocon.c, 7 Mar 94.
  2074.  
  2075. Added new verbs \Ktn_ip (send TELNET Interrupt Process) and \Ktn_ayt (send
  2076. TELNET Are You There).  By default, they are not assigned to any keys.
  2077. ckocon.[ch], 7 Mar 94.
  2078.  
  2079. Ric Anderson noticed that OS/2 C-Kermit would crash if you Ctrl-C'd the file
  2080. transfer display screen.  Sure enough, an alarm was left active that should
  2081. have been turned off.  This happened not only in the OS/2 version, but also
  2082. the VMS version.  Fixed in trap(), ckuusx.c.  8 Mar 94.
  2083.  
  2084. Ric Anderson also noticed that 0x80 (NUL with 8th bit on), received by
  2085. OS/2 C-Kermit's terminal emulator, was treated as CSI (ESC [).  In fact, it
  2086. turns out that *any* C1 control was treated as CSI because two statements
  2087. were transposed.  This is now fixed too.  ckocon.c 5A(127) 8 Mar 94.
  2088.  
  2089. Jim Reisert <reisert@wrksys.enet.dec.com> noticed a case where clear-to-end-
  2090. of-line was "leaking attributes" (while running DEC Notes on VMS).  Several
  2091. of the clearing functions were indeed filling the cleared area with the
  2092. current video attribute rather than the default attribute.  Fixed in ckocon.c
  2093. 5A(128), 9 Mar 94.
  2094.  
  2095. Changed OS/2 C-Kermit's session debugging facility to show 8-bit C1 characters
  2096. literally, rather than as ESC blah, to aid in debugging of 8-bit VMS sessions.
  2097. ckocon.c, 9 Mar 94.
  2098.  
  2099. Fixed the bug in which the TELNET lead-in character (255) would sometimes be
  2100. shown on the terminal emulation screen (often as y-diaeresis).  And conversely,
  2101. the one in which a quoted IAC (255) would *not* be shown on the terminal
  2102. screen.  ckocon.c, ckucon.c 5A(060), ckvcon.c 5A(033), ckdcon.c 5A(045),
  2103. cklcon.c 5A(002), 9 Mar 94.
  2104.  
  2105. I seem to have fixed the problem of the cursor being in the wrong place after
  2106. escaping back to the OS/2 command screen.  I'm not sure how I did it, but I
  2107. can't make it happen any more.  ckocon.c, 9 Mar 94.
  2108.  
  2109. Fixed a subtle bug in the command parser, in which a temporary program
  2110. prompt would be forgotten if the user typed ? to get help, if the
  2111. prompt-setting call did not include a pointer to an evaluation function.
  2112. ckucmd.c 5A(057), 9 Mar 94.
  2113.  
  2114. Enabled \Kxxxx, where xxxx is a macro name.  ckuus3.c, ckuusr.c 5A(125),
  2115. ckocon.c, 9 Mar 94.  Example:
  2116.  
  2117.   define download receive, connect
  2118.   set key \417 \Kdownload
  2119.  
  2120. This puts the act of receiving a file from a remote Kermit that has already
  2121. been told to send it on a "hot key", in this case Alt-Page-Down on the PC.
  2122. C-Kermit will not automatically reenter terminal emulation upon completion of
  2123. the macro unless the macro includes a CONNECT command, as in the example
  2124. above.
  2125.  
  2126. Enabled SET KEY commands to be given on separate lines, as in MS-DOS Kermit.
  2127. SET KEY <return> now prompts you press a key or key combo, so you don't have
  2128. to know the scan code.  Then it shows you the current definition and prompts
  2129. you for a new one.  ckuus3.c, 9 Mar 94.
  2130.  
  2131. In OS/2 C-Kermit, added a 5-second write timeout to reduce the amount of
  2132. popping back to command mode that happens when the user types something but
  2133. CTS is not being asserted by the DCE.  Doesn't seem to make a lot of
  2134. difference.  ckotio.c, 9 Mar 94. 
  2135.  
  2136. Changed CKERMIT.CMD to use arg(1) rather than %1 %2 ... %9 to pass arguments
  2137. to OS/2 C-Kermit, suggested by Drew Derbyshire <kermit@kew.com>.  10 Mar 94.
  2138.  
  2139. Replaced the white-background OS/2 C-Kermit icon with a transparent-background
  2140. one, from Hugo Jimenez <jimenez@gaus90.chem.yale.edu>.  10 Mar 94.
  2141.  
  2142. Installed a patch from Mike Freeman <mikef@pacifier.rain.com> to enable
  2143. Ctrl-A status reports even when FILE DISPLAY is NONE.  ckuusx.c, 10 Mar 94.
  2144.  
  2145. Fixed the bug with the cursor being restored to the wrong position (sometimes)
  2146. when escaping back to the OS/2 C-Kermit prompt from CONNECT mode.  The problem
  2147. was introduced when I implemented the VT220 DECTCEM (cursor enable/disable)
  2148. feature (27 Feb 94), I used the cursoron flag to indicate whether the cursor
  2149. was enabled or disabled (makes sense, right?).  When the CONNECT command
  2150. exits, it calls restorescreen(&commandscreen), which restores the saved
  2151. command screen.  restorescreen() then calls lgotoxy() to put the cursor in the
  2152. saved place.  But lgotoxy() doesn't do anything unless cursoron != 0.  Well,
  2153. cursoron would be zero if characters were arriving at the time we escaped back
  2154. (because we gain screen-painting speed by turning off the cursor whenever more
  2155. than 20 characters are waiting to be read).  It can also be off if the screen
  2156. is rolled back, etc.  The obvious solution would have been to simply set
  2157. cursoron to 1 before restoring the command screen, but that would break the
  2158. DECTCEM feature.  So now we save the cursoron value, set cursoron to 1, call
  2159. restorescreen(), and then restore the cursoron value before returning from
  2160. CONNECT mode.  ckocon.c 5A(129), 10 Mar 94.
  2161.  
  2162. OS/2 C-Kermit's DEC keypad verbs were badly fractured.  SET TERMINAL KEYPAD
  2163. NUMERIC and APPLICATION were backwards, but the corresponding escape sequences
  2164. were not.  Furthermore, much of the \Kverb-interpreting code was backwards too
  2165. (thus compensating for the first mistake...).  Thanks to Jim Reisert for
  2166. persistent reports about this.  Fixed in ckocon.c 5A(129), 10 Mar 94.
  2167.  
  2168. Added default assignments for DEC keypad minus, period, comma, and Enter, to
  2169. the corresponding main keypad Alt combinations.  Also made default assignments
  2170. for screen scroll and arrow keys to the appropriate numeric keypad keys when
  2171. Num Lock is Off.  ckocon.c, ckcker.upd, 10 Mar 94.
  2172.  
  2173. Fixed SHOW KEY command not to say "Undefined" when a key is defined.
  2174. ckuus5.c, 10 Mar 94.
  2175.  
  2176. Added support for VT220 S7C1T and S8C1T escape sequences for selecting 7
  2177. and 8-bit transmission of DEC keys (ESC [ vs CSI, etc).  ckocon.c, 10 Mar 94.
  2178.  
  2179. Added an ANSI terminal type to OS/2 C-Kermit.  This involved adding support
  2180. for some escape sequences used by ANSI.SYS that are not in the VT100++
  2181. repertoire, plus forcing white on black coloration, character-set
  2182. transparency, and no chopping of 8th bits, and restoring all of that if the
  2183. user sets the terminal type to something else after using ANSI.  ckuusr.h,
  2184. ckuusr.c 5A(126), ckuus7.c, ckocon.c 5A(130), 11 Mar 94.
  2185.  
  2186. Added SET TERMINAL TYPE NONE to OS/2 C-Kermit.  The idea was to let the
  2187. console driver handle the screen.  Theoretically, this would allow
  2188. substitution of different emulations by installing different console drivers,
  2189. and might also allow "pass-through" types of connections (dial up OS/2, run
  2190. C-Kermit, dial out from C-Kermit to someplace else).  ckuus7.c, ckocon.c, 11
  2191. Mar 94.  But it didn't work, at least not as intended -- the console driver
  2192. seems to have its ANSI features disabled.  Control characters are handled
  2193. OK, but escape sequences are simply printed.  (Turns out this could be fixed
  2194. by using different "write" calls, but it's not worth it.)
  2195.  
  2196. Joel Seiferas <joel@cs.rochester.edu> reported that reading news on UNIX
  2197. produced "striped" screens when OS/2 C-Kermit's screen was in reverse video
  2198. mode (\Kflipscrn).  Sure enough.  Fixed in ckocon.c 5A(130), 11 Mar 94.
  2199.  
  2200. Removed SET TERMINAL TYPE NONE from OS/2 C-Kermit.  It doesn't do anything, so
  2201. there's no point.  ckuus3.c, 12 Mar 94.
  2202.  
  2203. Changed all sets and tests of tt_keypad and tt_arrow to reference symbolic
  2204. values for clarity: TTK_NORM means normal (numeric or cursor) mode; TTK_APPL
  2205. means application mode.  These have tricked me too many times, no more!
  2206. ckuusr.h, ckocon.c, ckuus3.c, 12 Mar 94.
  2207.  
  2208. Fixed "more"-prompting in SHOW VARIABLES to account for the length of the
  2209. \v(input) string, and also improved the display to show control chars
  2210. symbolically.  ckuus5.c, 12 Mar 94.
  2211.  
  2212. Added dummy code to set the code page from Kai Uwe -- it doesn't do anything,
  2213. since when he tried to use it, it crashed; also, the call to set the code
  2214. page is no longer documented in OS/2 2.x.  ckotio.c, 12 Mar 94.
  2215.  
  2216. Added code to OS/2 C-K from Kai Uwe Rommel to make RTS/CTS work during CONNECT
  2217. mode.  When transmission is blocked due to lack of CTS, an asterisk appears in
  2218. the status line on the name of the COM port, e.g. "*COM1".
  2219. ckocon.c, 12 Mar 94.
  2220.  
  2221. Added SET TERMINAL CTS-TIMEOUT to let user specify the longest CTS blockage
  2222. to tolerate during CONNECT mode.  ckuusr.h, ckuus7.c, ckuus2.c, 12 Mar 94.
  2223.  
  2224. Fixed SHOW TERMINAL to include CURSOR and CTS-TIMEOUT.  This involved some
  2225. rearranging of the screen, since it was already full.  You still can't find
  2226. out what the terminal colors are set to -- not only do we lack the screen
  2227. real estate, but we don't really know -- they are not simple variables that
  2228. "stay put" when we set them -- they also have attribute bits that change,
  2229. they get reversed, etc etc.  ckuus5.c, 12 Mar 94.
  2230.  
  2231. Compose-key support for OS/2 C-Kermit.  Keyboard verb \Kcompose enabled, can
  2232. be assigned to any key.  Compose sequences are roughly those used by DEC VT220
  2233. and higher for Latin-1.  No support for Latin-2, Cyrillic, Hebrew, etc.  Made
  2234. a special status line while a compose sequence is going on, and made a special
  2235. popup help screen too.  ckocon.[ch], 12 Mar 94.
  2236.  
  2237. Minor cosmetic improvements to the Alt-H popup help screen.
  2238. ckocon.c, 12 Mar 94.
  2239.  
  2240. Changed OS/2 C-Kermit's CONNECT-mode character-sending function to beep and
  2241. discard characters entered while in its transmission-failure retry loop.
  2242. This prevents typeahead from being passed along to the command prompt when the
  2243. retry timer expires and CONNECT mode is broken, with possibly disastrous
  2244. results; suggested by Ric Anderson.  ckocon.c 5A(132), 13 Mar 94.
  2245.  
  2246. When transmission is blocked, instead of putting a cryptic "*" in the status
  2247. line, now we write a new status line saying "TRANSMISSION BLOCKED: x", where
  2248. x is the countdown timer.  Fun to watch, and informative too!
  2249. ckocon.c 5A(132), 13 Mar 94.
  2250.  
  2251. Changed SET TERMINAL CTS-TIMEOUT to SET TERMINAL TRANSMIT-TIMEOUT -- easier
  2252. for most people to understand, and it might also apply to other situations.
  2253. ckuus[257].c, 13 Mar 94.
  2254.  
  2255. There were major problems with the OS/2 C-Kermit CONNECT-mode status line.
  2256. With all the recent additions to the program, the status line was being used
  2257. for lots of things in addition to its normal purpose (to show emulation, how
  2258. to get help, how to escape back, the comm device, etc): rollback status,
  2259. Compose-key minibuffer, how to make a popup help screen go away, debug mode,
  2260. printer active, transmission blocked, etc etc.  Some of these conditions could
  2261. occur while others were active: for example, after rolling back some screens,
  2262. you might start a compose sequence, and then request popup help -- at this
  2263. point, the status line is pushed three levels deep.  But till now, there was
  2264. no stack to push the status lines onto.  Now we have a stack that will hold up
  2265. to ten levels of status lines, including their separate parts (usertext,
  2266. helptext, exittext, etc), so that massive amounts of recoding were not
  2267. necessary to get this working fairly well.  ckocon.c 5A(132), 13 Mar 94.
  2268.  
  2269. Fixed a bug in OS/2 C-Kermit VT emulation: ESC [ 2 J clears the whole
  2270. screen but does NOT move the cursor.  In ANSI emulation, however, ESC [ 2 J
  2271. also homes the cursor (ref: DOS 5.0 manual, ANSI.SYS description; DEC VT 220
  2272. Programmers Manual).  ckocon.c 5A(133), 14 Mar 94.
  2273.  
  2274. Added a WINNT symbol for Windows-NT-specific features, in preparation for a
  2275. Windows NT version, which, presumably, will follow the OS/2 32-bit path.
  2276. ckcdeb.h, ckuver.h, 24 Mar 94.
  2277.  
  2278. A few minor corrections to the makefile for Solaris 2.3 builds with gcc and
  2279. SunPro cc, plus some minor tweaks to ckuus3.c, ckuus6.c, ckcfn2.c, in which
  2280. variables named partab conflicted with Solaris library functions.  Added two
  2281. new makefile options for Solaris 2.x, which should be the preferred, normal
  2282. ones from now on: solaris2x (for use with SunPro C) and solaris2xg (for GCC).
  2283. 25 Mar 94.
  2284.  
  2285. Changed the way the UNIX man page is produced.  Instead of one man-page fits
  2286. all, the man page is now generated automatically as part of the C-Kermit build
  2287. procedure, based on the CFLAGS used at compile time.  The "source code" for
  2288. the man page is now called ckuker.cpp.  It is run through the C preprocessor
  2289. with the same CFLAGS as used for compiling C-Kermit.  It contains #ifdef's
  2290. just like C-Kermit source code.  An output file, ckuker.nr, is produced that
  2291. is suitable for use as input to "nroff -man", i.e. as a UNIX man page.
  2292. Requires cc -E and grep.  The man page itself contains very little in the way
  2293. of #ifdefs (for now, only a small amount of special wording for HP-UX 10.0 and
  2294. SunOS/Solaris), but the way is now clear to add them liberally -- for example,
  2295. to remove references to TCP/IP if TCPSOCKET is not defined, etc.
  2296. ckuker.cpp, makefile, 25 Mar 94.
  2297.  
  2298. Backed off on automatic man page generation.  Turns out the cc -E method is
  2299. not portable.  The first system I tried it on outside of SunOS 4.1.x choked
  2300. on it.  Man pages are now generated by hand.  To produce the default general-
  2301. purpose man page:
  2302.  
  2303.   make manpage
  2304.  
  2305. To make a custom man page:
  2306.  
  2307.   make CFLAGS=-DHPUX100 manpage
  2308.  
  2309. 26 Mar 94.
  2310.  
  2311. Installed an HPFS partition and a "real printer" on my OS/2 system so I can
  2312. exercise more of OS/2 C-K's features.
  2313.  
  2314. From Kai Uwe Rommel, new OS/2 C-Kermit scan codes for Tab (to distinguish
  2315. from Ctrl-I) and Shift-Esc.  ckocon.c 5A(134), ckotio.c 5A(124), 26 Mar 94.
  2316.  
  2317. From Kai Uwe Rommel, OS/2 C-Kermit code to get and set the title bar text,
  2318. not used, saved for future reference under #ifdef CK_SETTITLE.  ckotio.c,
  2319. 26 Mar 94.  Kai Uwe's comments:
  2320.  
  2321.   There is an undocumented system call for this purpose. I have added
  2322.   two functions to ckotio.c for this purpose, as well as code to
  2323.   save/restore the original session title. I have not yet added code
  2324.   where to call it since we should first think a bit over where it may
  2325.   make sense to change the title. 
  2326.  
  2327.   Unfortunately, as I said, the call is undocumented, although it is
  2328.   used by CMD.EXE itself to control the title bar of sessions. I would
  2329.   therefore like it if that code were not in the distributed executables
  2330.   but only available for those who want to recompile themselves. I have
  2331.   added a symbol CK_SETTITLE for this purpose. The call does also
  2332.   require a defintion for the system loader where to find it. That can
  2333.   be provided by
  2334.  
  2335.       IMPLIB SESMGR.LIB C:\OS2\DLL\SESMGR.DLL
  2336.  
  2337.   And linking C-Kermit with that library.
  2338.  
  2339.   The opposite call, to determine the current title, is documented but
  2340.   only for PM applications. It happens to work for text mode programs
  2341.   too, but that is to be considered "undocumented" too.  Only PM
  2342.   applications have real control over their title bar. What is better
  2343.   documented possible is to change the value of the entry of a session
  2344.   in the task list (window list).
  2345.  
  2346. Added \v(terminal) to get the terminal type.  In OS/2, it's the current
  2347. SET TERMINAL TYPE, in others, it's getenv("TERM").  ckuusr.h, ckuus4.c,
  2348. ckuusr.c 5A(127), 26 Mar 94.
  2349.  
  2350. Changed OS/2 C-Kermit's escape-character argument for hanging up to be U
  2351. rather than H.  Now it's more like the default "hot keys": H for help, U
  2352. for hangup.  Previously, it was too easy to hang up by accident this way.
  2353. ckocon.c, 26 Mar 94.
  2354.  
  2355. Added SET TERMINAL COLOR BORDER <color> to OS/2 C-Kermit, based on info
  2356. from Kai Uwe Rommel -- this sets the color of the border around the terminal
  2357. emulation screen in OS/2 fullscreen sessions only.  Added this to CKERMOD.INI;
  2358. a green border seems nice; changed the status line to white on gray.
  2359. ckuusr.h, ckuus7.c, ckocon.c, 26 Mar 94.
  2360.  
  2361. Changed OS/2 C-Kermit's SET TERMINAL TYPE ANSI command to automatically set
  2362. the code page to 437, saving the old one, and to restore the old code page
  2363. upon SET TERM TYPE <anything-else>, based on info profided by Kai Uwe.  Also
  2364. added a SET TERMINAL CODE-PAGE command, but left it commented out because it
  2365. needs to verify that the given code-page number is valid, and then succeed or
  2366. fail immediately -- it seemed to me like switching code pages was a bad way
  2367. to do this...  ckuus7.c, 26 Mar 94.
  2368.  
  2369. Several people reported that the previous edit of OS/2 C-Kermit would hang
  2370. uninterruptibly when sent the ESC Z or CSI 0 c (What are you?) query in VT220
  2371. mode on a serial (not network) connection.  It seems that sendstr() was
  2372. overrunning the output device by calling ttoci() too rapidly; this happened
  2373. whenever the string to be sent was longer than 4 or 5 characters, and probably
  2374. also when the UART did not have an output silo (mine doesn't, so I could
  2375. reproduce this problem easily).  I added an msleep(50) between each character
  2376. as a bandaid.  This should only affect the sending of escape sequences (mostly
  2377. query responses, since VT key sequences are never more than 3-4 chars long).
  2378. ckocon.c, 26 Mar 94.
  2379.  
  2380. Changed OS/2 C-Kermit INSTALL script to ask the user about the VT220 key
  2381. mappings and to put a TAKE command in CKERMOD.INI for them if she wants them.
  2382. ckoins.cmd / install.scr, 26 Mar 94.
  2383.  
  2384. Michael Godfrey noticed that in OS/2 C-Kermit, during DEBUG terminal-emulation
  2385. display, if you escape back while control characters are being shown in
  2386. underline coloration, and then SET TERM DEBUG OFF, and then CONNECT again,
  2387. that the colors don't go back to normal.  There were also some coloring mixups
  2388. when making TELNET connections; TELNET negotiations would be printed in
  2389. seemingly random colors.  Fixed in ckuus7.c and ckocon.c, 26 Mar 94.
  2390.  
  2391. Also noticed that session debugging could write stuff to the terminal screen
  2392. even when we weren't in CONNECT mode, oops!  Fixed in ckocon.c, 26 Mar 94.
  2393. But this fix means we lose the first couple negotations from the terminal
  2394. screen, since they happen at ttopen() time, before the CONNECT module is
  2395. entered.  No big deal, they can still be captured in the debug.log.
  2396.  
  2397. Changed SET TERMINAL DEBUG to show TELNET options in boldface.
  2398. ckocon.c, ckcnet.c, 26 Mar 94.
  2399.  
  2400. Fixed WRITE TRANSACTION-LOG command; previously, it would accept no
  2401. abbreviations.  Noticed by Max Evarts.  ckuusr.c, 26 Mar 94.
  2402.  
  2403. Found a bunch of SET commands that were returning SUCCESS when there
  2404. were parsing errors.  Fixed in ckuus7.c, 26 Mar 94.  There are probably
  2405. more of these in other modules...
  2406.  
  2407. There were complaints that VMS C-Kermit sometimes failed to SET SPEED.
  2408. Evidently, the actual speed setting worked OK, but then the SET SPEED command
  2409. went back to read the speed and compare with what it thought it had set, and
  2410. they did not compare.  Turns out the VMS ttgspd() routine didn't really do
  2411. anything except return the speed variable -- which was not SET yet!  A slight
  2412. amount of creative recoding fixes the problem.  CKVTIO.C 2.0-072, 27 Mar 94.
  2413. (But it would, of course, be better to have the VMS ttgspd() actually make a
  2414. system call to read the device speed...)
  2415.  
  2416. Added support for file-append operations -- OPEN APPEND, LOG .. APPEND,
  2417. SET FILE COLLISION APPEND, etc, in VMS C-Kermit, code from Terry Kennedy.
  2418. CKVFIO.C 2.0-108, 27 Mar 94.
  2419.  
  2420. Added SET TERMINAL CODE-PAGE to OS/2 C-Kermit, thanks to a new support
  2421. routine, os2checkcp(), from Kai Uwe Rommel, ckuus7.c, 17 Mar 94.
  2422.  
  2423. Cleaned up SHOW TERMINAL DISPLAY, added CODE-PAGE to it, added LOG SESSION
  2424. to it, etc, ckuus5.c, 17 Mar 94.
  2425.  
  2426. In OS/2 C-Kermit, it was still possible for the cursor to disappear if you
  2427. executed the \Kpush verb (os2push() routine) during CONNECT mode and then ran
  2428. an application (such as SYSLEVEL) that turned off your cursor -- noticed by
  2429. Ric Anderson.  os2push() now explicitly turns the cursor on when resuming
  2430. CONNECT mode unless the cursor was previously disabled.  Also changed
  2431. os2push() to restore the CONNECT-mode border color upon return to CONNECT
  2432. mode.  ckocon.c 5A(135), 27 Mar 94.
  2433.  
  2434. The VMS C-Kermit DELETE, DIRECTORY, and RENAME commands would change the
  2435. terminal mode, but forgot to change it back, so command editing didn't work
  2436. any more after giving these commands.  Fixed in ckuus6.c, 27 Mar 94.
  2437.  
  2438. Added some more helpful info to the OS/2 C-K rollback popup help screen.
  2439. ckocon.c, 27 Mar 94.
  2440.  
  2441. Removed "^L to refresh screen" from OS/2 C-K's fullscreen file transfer
  2442. display.  ckuusx.c, 27 Mar 94.
  2443.  
  2444. Added support for 57600 and 115200 bps for NetBSD, from Mike Long
  2445. <Mike.Long@analog.com>, plus various other NetBSD fixups.  ckcdeb.h, ckcfn3.c
  2446. (sys_errlist[] declaration), ckutio.c 5A(127) (UUCP lockfile directory).
  2447. Also, SHOW PROTOCOL display was malformatted if C-Kermit built with NOSERVER.
  2448. ckuus4.c.  27 Mar 94.
  2449.  
  2450. John Chandler reported that when C-K is doing a non-windowed transfer
  2451. (i.e. window size < 2), and an ACK arrives (again) for the previous packet,
  2452. C-Kermit just sits there & does nothing.  In the non-windowed case, it should
  2453. treat this as a NAK for the current packet, so it can retransmit the current
  2454. packet right away, rather than waiting for its timer to go off.  ckcfn2.c,
  2455. ckcfns.c 5A(104), 27 Mar 94.
  2456.  
  2457. In the process of testing the previous item, discovered that OS/2 C-Kermit
  2458. lowercased any strings that were given to SET KEY.  Fixed in xlookup(),
  2459. ckucmd.c 5A(058), 27 Mar 94.
  2460.  
  2461. Added SET SEND / RECEIVE PAUSE <msec> command, hopefully to help when engaging
  2462. in Kermit protocol with a real slow or buggy machine, like the HP48, which
  2463. goes deaf for a short time after sending a packet.  ckuus7.c, 27 Mar 94.
  2464.  
  2465. Bo Kullmar got Kermit to crash while dialing, a traceback indicated it was
  2466. in a free() -- so changed every "free(blah);" to "if (blah) free(blah);
  2467. blah = NULL;".  ckudia.c 5A(058), 27 Mar 94.
  2468.  
  2469. Added some simple code, suggested by Terry Kennedy, to cut down on the
  2470. zombie processes left behind when the VMS C-Kermit server gets a BYE.
  2471. ckvtio.c, 27 Mar 94.
  2472.  
  2473. ------
  2474.  
  2475. 28 Mar 94: Started getting 5A(190) ready for public testing.  Changed
  2476. designation from "Development" to "ALPHA.01".  Fixed a minor glitch with the
  2477. status line during screen rollback in OS/2.  Changed the CHECK command to name
  2478. the missing feature if it gives an error message.  Compiled, linked, and ran
  2479. on many systems and in many configurations, fixing compiler & makefile
  2480. glitches along the way: SunOS 4.1.3, Solaris 2.3, NeXTSTEP 3.1, Linux 0.99.14,
  2481. Dell SVR4, HP-UX 8.0, 4.4BSD, OSF/1, DG/UX 5.4, AIX 3.2, ULTRIX 4.2, ...
  2482.  
  2483. Discovered a typo in ckuxla.h that caused Macintosh Latin and DG Multinational
  2484. character sets to get the same designator.  Macintosh Latin translations were
  2485. broken since HP-Roman8 was added in December '93; nobody noticed until me,
  2486. using OS/2 C-Kermit to look at the Mac Kermit makefile...  29 Mar 94.
  2487.  
  2488. Got C-Kermit to compile on Solaris 2.3 with SunPro CC.  29 Mar 94.
  2489.  
  2490. Data General AOS/VS version compiles and links without complaint, but won't
  2491. run: "Memory allocation error on program initialization: insufficient pages
  2492. available for stack/heap space".  But 189 runs OK on the same system.  Sent
  2493. a message to DG asking about this.  29 Mar 94.
  2494.  
  2495. Spent a long time trying to compile the Macintosh version with MPW C 3.2.  Ran
  2496. into problems with wart (ckwart.c) -- Finally I realized that the fakeouts for
  2497. fopen and friends that were done in ckcdeb.h did not (and must not) apply to
  2498. ckwart.c, because ckwart.c is not linked with the module (ckmfio) where the
  2499. fakeout routines (mac_fopen, etc) are defined.  Then there were compilation
  2500. problems with ckmtio.c & some others, fixed.  29 Mar 94.
  2501.  
  2502. So the Mac version compiled and linked OK, but crashed when I tried to run it.
  2503. Luckily I had Macsbug loaded and was able to get a stack dump -- it crashed in
  2504. cmdini() in ckuus5.c.  It seems Mac Kermit was trying to open an init file --
  2505. apparently somebody added part of the code for this, but not all of it, so
  2506. mac_fopen() was being passed an uninitialized string pointer for the file
  2507. name.  I #ifndef MAC'd all of the init-file code, and now it works OK.
  2508. ckuus5.c, 29 Mar 94.
  2509.  
  2510. Eugenia Harris of DG changed the LINK command for AOS/VS C-Kermit to make
  2511. it allocate a bigger heap+stack, now it runs OK.  30 Mar 94.
  2512.  
  2513. In fact, now it compiles, links, and runs OK on all platforms where I am able
  2514. to test it, so we're just about ready for public Alpha testing.
  2515.  
  2516. OS/2 C-Kermit would no longer recognize the Tab key for purposes of command
  2517. completion.  Fixed in ckotio.c, 30 Mar 94.
  2518.  
  2519. Added display of valid code pages to OS/2 C-Kermit SHOW TERM, and simplified
  2520. SET TERM CODE-PAGE, code from Kai Uwe Rommel, 30 Mar 94.
  2521.  
  2522. Jim Reisert reported that leaning on a function key while OS/2 C-Kermit was in
  2523. CONNECT mode on a serial connection resulted in "TRANSMISSION BLOCKED" errors.
  2524. I noticed that there were two routines in ckocon.c that did essentially the
  2525. same thing: sendstr() and sendescseq().  I had already modified one of them to
  2526. insert a 50-msec pause between each character; this time I just merged the
  2527. two routines.  The result tests just fine at both 19200 bps and 300 bps.
  2528. ckocon.c 5A(136), 30 Mar 94.
  2529.  
  2530. Made new makefile entries for, and built C-Kermit on, UnixWare 1.1.
  2531. "make unixware" (no TCP/IP, no curses), and "make unixwarenetc" (Lachman
  2532. TCP/IP, curses).
  2533.  
  2534. Fixed another OS/2 C-Kermit terminal bug, reported by Ric Anderson: if
  2535. SET TERMINAL ROLL ON, and the End key is pushed before any other rollback
  2536. keys, we get the Black Screen Of Death.  Fixed in ckocon.c 5A(137), 31 Mar 94.
  2537.  
  2538. Same deal as yesterday, but this time when sending strings assigned to keys.
  2539. ckocon.c, 31 Mar 94.
  2540.  
  2541. Thanks to a report from wilkins@rockvax.rockefeller.edu, I learned that the
  2542. APC command was ineffective if it was given as the last line in a command
  2543. file (in this case, the last line of the .kermrc file) in the Solaris version.
  2544. Turns out the Solaris version did not include -DNOSETBUF, and so the APC
  2545. sequence was not being followed by an fflush(), on the assumption that output
  2546. was unbuffered anyway.  I added -DNOSETBUF to the Solaris version, and I also
  2547. made the apres-APC fflush() unconditional.  ckuus5.c, 31 Mar 94.
  2548.  
  2549. Jeffrey Altman noticed that the OUTPUT command was generating garbage
  2550. under OS/2.  Another apparent case of IBM C generating bad code.  I rewrote
  2551. the code to use no macros and simpler types of expressions, seems to work
  2552. ok now, but somewhat slower.  ckuus5.c, 1 Apr 94.
  2553.  
  2554. Jamie Watson <jw@adasoft.ch>, working with IBM engineers, changed the
  2555. AIX/RS-6000 flow control code to comply with IBM's recommendations.
  2556. ckutio.c 5A(129), 4 Apr 94.  Jamie tested this on:
  2557.  
  2558.   RS/6000-520, AIX 3.2.5 (rs6aix32c)
  2559.   RS/6000-520, AIX 3.2.3 (rs6aix32c)
  2560.   RS/6000-320, AIX 3.1.5 (rs6000c)
  2561.   RT/PC 6150-125, AIX 2.2.1 (rtaixc)
  2562.  
  2563. as well as several ULTRIX systems.
  2564.  
  2565. New OS/2 INSTALL.CMD from Jeffrey Altman, keeps old CKOVTK2.INI file intact
  2566. if it already existed, since the user might have customized it, and to avoid
  2567. asking the user CKERMOD.INI-related questions if the user already has a
  2568. CKERMOD.INI in the destination directory.  4 Apr 94.
  2569.  
  2570. Added \v(connection) to show the connection when in local mode:  "serial",
  2571. "tcp/ip telnet", "decnet lat", etc.  This allows a script program to take
  2572. different actions depending on the connection type.  ckuusr.h, ckuus4.c,
  2573. 4 Apr 94.
  2574.  
  2575. Bill Schlesinger of the Motorola System Support Center pointed out that the
  2576. DIR and REMOTE DIR commands did not (necessarily) work under a restricted
  2577. shell in UNIX, because DIRCMD and DIRCMD2 were defined to include the
  2578. full path, instead of just the command name, and so did not follow the PATH
  2579. environment variable.  Removed the path from these strings, made them just
  2580. "ls -l".  ckufio.c 5A(084) 4 Apr 94.
  2581.  
  2582. Added SET TERMINAL HIDE-CURSOR { ON, OFF } to OS/2 version, to allow user to
  2583. turn off the cursor-hiding feature; this reduces confusion at the expense of
  2584. slower screen updating.  On a 486/66, with TERMINAL HIDE ON (the default), on
  2585. a TELNET connection (where the CPU is the limiting factor), fullscreen, it
  2586. takes 20 seconds to dump a 1000-line, 80-column file to the screen; with HIDE
  2587. OFF, it takes 33 seconds.  The difference is negligible on a serial
  2588. connection, where the communication speed is the bottleneck.  The same file
  2589. takes about 46 seconds to display on a 19200 bps connection with SET TERMINAL
  2590. HIDE OFF or ON.  ckuusr.h, ckuus2.c (HELP), ckuus5.c (SHOW), ckuus7.c (SET),
  2591. ckocon.c 5A(138), 5 Apr 94.
  2592.  
  2593. In OS/2 C-Kermit, reinstalled Kai Uwe's code to get and set the session name
  2594. in the task list, and added a call to the SET LINE / SET HOST code in
  2595. ckuus7.c to actually set the name to the current communication device or
  2596. host name.  ckuus7.c, ckotio.c 5A(128), 5 Apr 94.
  2597.  
  2598. Looked into adding APC support to the UNIX version, but there were too many
  2599. obstacles, the worst being that the APC command would be collected in the
  2600. lower CONNECT fork, which has no good way to pass it back upstairs when it
  2601. exits.  So forget it.  5 Apr 94.
  2602.  
  2603. Added code to VMS version from Terry Kennedy to fill in the LENGTH-IN-K
  2604. file attribute, which heretofore had always been specified as 0.
  2605. CKVFIO.C 2.0-109, 5 Apr 94.
  2606.  
  2607. Looked into making the TAKE command in OS/2 not require a full filespec if
  2608. the file is in INIT, DPATH, or PATH.  This one turned out to be impractical
  2609. too -- it would require a custom copy of cmifi(), which is a very long
  2610. procedure.  5 Apr 94.
  2611.  
  2612. System-wide init file for UNIX et al...  Better to let the user's personal
  2613. init file, if any, take precedence.  The system-wide copy is used only if
  2614. the user doesn't have one.  This way we don't have thousands of users
  2615. wondering why their init files don't work any more.  Also, I discovered some
  2616. code that I thought had been removed years ago: if the specified or default
  2617. init file could not be found, then Kermit looked in the current directory for
  2618. one -- bad idea!  ckuus5.c, 5 Apr 94.
  2619.  
  2620. More of this...  Actually, there is no single right way to handle the
  2621. system-wide init file.  There are reasons why it should take precedence over
  2622. the user's, and equally valid reasons why it shouldn't.  So I added two new
  2623. symbols: CK_INI_A means the system-wide init file should take precedence,
  2624. CK_INI_B means the user's init file should take precedence.  If neither one is
  2625. defined, CK_INI_A is assumed.  These symbols have effect only if CK_SYSINI is
  2626. also defined.  Also, in the former case, if the system-wide init file can't be
  2627. opened, C-Kermit takes the user's instead.  Details in ckuins.doc.
  2628. ckuusr.h, ckuus5.c, 5 Apr 94.
  2629.  
  2630. By arrangement with HP, made a default system-wide init file for HP-UX 10.0:
  2631. /usr/share/lib/kermit/ckermit.ini.  ckuusr.h, makefile, 5 Apr 94.
  2632.  
  2633. New INSTALL.CMD from Jeffrey Altman for OS/2 C-Kermit, which does not replace
  2634. the program object / icon if one is already there.  6 Apr 94.
  2635.  
  2636. Added SET TERMINAL OUTPUT-PACING to allow users to overcome UART buffer
  2637. overrun problems when pasting into OS/2 C-Kermit terminal window.
  2638. ckocon.c 5A(139), ckuusr.h, ckuus7.c, ckuusr.c 5A(131), 7 Apr 94.
  2639.  
  2640. Albert Crosby <acrosby@comp.uark.edu> pointed out that if OS/2 C-Kermit is
  2641. started with a -c command-line argument, the "Prompt: Alt-x" message in the
  2642. status line is misleading.  Changed the CONNECT module to write "Exit: Alt-x"
  2643. if it knows that escaping back will exit from C-Kermit.
  2644. ckocon.c 5A(140), 8 Apr 94.
  2645.  
  2646. Vincent Fatica noticed that the scrolling region (or rather, the bottom of
  2647. it) was lost between sessions.  Fixed in ckocon.c, 8 Apr 94.
  2648.  
  2649. Added a new command PSEND <filename> <starting-position> [ <as-name> ].  It's
  2650. just like send, except no wildcards are allowed, and it begins sending from
  2651. the given position (0-based byte-offset number) in the file.  The only problem
  2652. with it is that on systems where an int (in C terms) is 16 bits, we can't
  2653. parse starting positions bigger than 32767, because cmnum() returns an int;
  2654. there's a check in the parser for this.
  2655. ckuusr.h, ckuusr.c, ckcfn3.c, ckufio.c.  9 Apr 94.
  2656.  
  2657. Designed and coded a recovery feature.  It works only on stream format files,
  2658. only for binary-mode transfers, and requires the failed transfer to have been
  2659. done also in binary mode and with SET FILE INCOMPLETE KEEP on the receiving
  2660. end.  The only new command is RESEND.  It has exactly the same syntax as the
  2661. SEND command.  Recovery capability is negotiated at protocol startup time, and
  2662. the starting position is negotiated automatically.  9 Apr 94.
  2663.  
  2664. Inclusion of this feature, and also of the PSEND command, is governed by the
  2665. compile-time symbol CK_RESEND, which is defined (in ckcdeb.h) by default for
  2666. UNIX (all versions except pdp11) and OS/2.  The feature can be turned off in
  2667. these versions by adding -DNORESEND to the compile-time CFLAGS.  C-Kermit
  2668. builds and works OK if CK_RESEND is not defined.
  2669.  
  2670. The underlying support for CK_RESEND is available only in ckufio.c for UNIX
  2671. and OS/2: the new zfseek(pos) routine.  This needs to be filled in for the
  2672. other versions: VMS, etc.
  2673.  
  2674. Made SET FILE INCOMPLETE KEEP be the default.  Otherwise, RESEND and PSEND
  2675. will be of little use.  10 Apr 94.
  2676.  
  2677. Fixed file transfer display "Estimated Time Left" to work right for resending.
  2678. ckuusx.c, 10 Apr 94.
  2679.  
  2680. Got RESEND to work for the 16-bit OS/2 version by adding an MSC 6.00
  2681. compile-time switch suggested by Kai Uwe.  10 Apr 94.
  2682.  
  2683. Three years ago, Seth Chaiklin <psykseth@aau.dk> worked very hard on the
  2684. MAIL and REMOTE PRINT handling by the Kermit receiver.  The idea was that if
  2685. the receiver knew it was mail (or a print job), it (a) did not have to create
  2686. a file, but instead could pipe the incoming material to the appropriate
  2687. program (Mail or lpr), and (b) mail messages could have a nice subject; that
  2688. is, the "filename" from the F packet would actually be the subject.  But there
  2689. were massive problems accomplishing this; Seth actually did get it working,
  2690. but many issues remained unresolved, such as what to do about an interrupted
  2691. transfer, etc.  After all the reorganization above, it seemed like a good time
  2692. to revisit this question.  But it's still not worth it.  The basic problem is:
  2693. the F packet comes before the A packet.  We don't know it's Mail until the A
  2694. packet comes.  But it's at F-packet time we have to handle the filename
  2695. checking and collision options.  There's just no good way around this.  Also,
  2696. the idea of piping into a Mail program, etc, is specific to UNIX and so we
  2697. would still have to keep the old temp-file code around for all the other
  2698. systems.  Plus the interruption problems would remain, which we don't have now
  2699. using the temp-file method.  Plus the MAIL and REMOTE PRINT commands are so
  2700. little used that the work and the risk are not worth it.  I still have Seth's
  2701. voluminous notes and diffs (75K of them) in case this should come up again.
  2702.  
  2703. In verifying edit 190 on 2.11BSD (on a PDP-11), I found that somehow the
  2704. call to gethnam() is no longer resolved by the linker, so I removed it from
  2705. ckhost() in the pdp11 case.  ckuusx.c.  I also had to shuffle the overlays
  2706. around again to make them all 15K or less; one of them had exceeded the 15K
  2707. limit by 192 bytes. I also had to add switches to deselect some of the new
  2708. features like REDIRECT, RETRY, MSEND.  Overlays all OK, but the main segment
  2709. is still too big by 2K.  Two choices: remove UUCP support, or try to build
  2710. with -DDYNAMIC (I can't remember why this was never done before).  (Several
  2711. hours later...)  Now I know: for some reason, -DDYNAMIC compilation results
  2712. in *bigger* object files, rather than smaller ones, on this system.  So
  2713. out goes UUCP lockfile support.  Still not enough.  Added -DNOFRILLS.  Still
  2714. not enough.  15 Apr 94.
  2715.  
  2716. Removed CK_TMPDIR from PDP-11 version.  Still not enough.  Removed automatic
  2717. parity detection.  That did it.  ckubs2.mak, 18 Apr 94.
  2718.  
  2719. Checked DEC OSF/1 2.0.  C-Kermit compiled under OSF/1 1.3 still runs OK.
  2720. Same code compiles and runs fine under 2.0.  23 Apr 94.
  2721.  
  2722. Changed OS/2 section of CKERMOD.INI to eliminate garish and bold colors for
  2723. normal screens (terminal-screen, status-line, underline, etc).  Easier on the
  2724. eyes, and prevents the all-screen-blinking effect that occurs on some systems
  2725. when switching back to the terminal screen when it had a bright (white)
  2726. background.  23 Apr 94.
  2727.  
  2728. Changed OS/2 C-Kermit SET TERM TYPE ANSI to use light gray rather than white
  2729. as the foreground color, by popular demand.  ckuus7.c, 23 Apr 94.
  2730.  
  2731. Changed OS/2 C-Kermit terminal reset routine to restore the border.
  2732. ckocon.c 5A(141), 23 Apr 94.
  2733.  
  2734. Steven Asher <sasher@intel9.intel.com> and Russ Herman <rwh@gov.on.ca> noticed
  2735. that several keyboard verbs in OS/2 C-Kermit were wrong: \KdecInsert,
  2736. \KdecRemove, \KdecSelect, \KdecNext.  Fixed, ckocon.c, 23 Apr 94.
  2737.  
  2738. Ever since edit 189 was released, there have been scattered reports of
  2739. corrupted files after transfer.  Tom Kloos <tk@sequent.com> finally provided
  2740. the vital clue: it happened when certain control characters were unprefixed
  2741. *and* PARITY was not NONE (and, therefore, locking shifts were in effect).
  2742. Diagnosis: the packet decoder had never been changed to account for this
  2743. combination, and so left Ctrl-P's in the file instead of treating them as Data
  2744. Link Escapes for locking shifts.  Fix: a very small change to the decode()
  2745. routine in ckcfns.c, 5A(107), 23 Apr 94.
  2746.  
  2747. Changes in various places to enforce prefixing of carriage return when we know
  2748. we have a TELNET connection.  Bare carriage returns in packets are very
  2749. confusing to TELNET servers, as they should be, since they defy the TELNET
  2750. specification, which says a carriage return must always be followed by either
  2751. LF or NUL.  ckcpro.w, ckuus3.c, 23 Apr 94.
  2752.  
  2753. Changed UNIX, VMS, OS/2, AOS/VS C-Kermit CONNECT commands to quote not only
  2754. IAC but also DEL if it has a parity bit on a TELNET connection.  23 Apr 94.
  2755.  
  2756. Changed protocol module to clear counters a bit earlier to cut down on
  2757. spurious info in the file transfer display.  23 Apr 94.
  2758.  
  2759. Hugo Jimenez <jimenez@gaus90.chem.yale.edu> noticed that the OS/2 C-Kermit
  2760. server was sending only linefeeds, rather than CRLFs, at the end of each line
  2761. output by an inferior process, e.g. in response to REMOTE DIRECTORY.  Cure
  2762. from Kai Uwe Rommel: in zxcmd(), open the pipe with mode "rb" rather than
  2763. just "r".  ckufio.c 5A(086) 26 Apr 94.
  2764.  
  2765. Downloaded IBM C/C++ CSDs from IBM OS/2 BBS and applied them to the OS/2
  2766. C compiler.  27 Apr 94.
  2767.  
  2768. A tester complained that if OS/2 C-Kermit starts a Rexx program and the
  2769. Rexx program includes "call ckcommand connect", that Kermit terminates after
  2770. 2 seconds.  This turned out to be caused by the fact that the setjmp was
  2771. being done in one thread, but the longjmp in another, which happened when the
  2772. call to congks(2) (wait 2 sec for a keystroke) timed out.  The reason for the
  2773. timeout is to allow Kermit to check every 2 seconds to see if the connection
  2774. has dropped, in which case it can pop back to the prompt automatically.
  2775. Fixing this required complete redesign and rewriting of the keyboard input
  2776. routines, which was done by Jeffrey Altman.  ckocon.c, ckotio.c, 27 Apr 94.
  2777.  
  2778. But it doesn't work in the 16-bit version...  Jeff then conditionalized the
  2779. new code for the 32-bit version only, keeping the old code in the 16-bit
  2780. version.  29 Apr 94.
  2781.  
  2782. Jeff also fixed a bug with PUSH, RUN, ! in the OS/2 version.  ckufio.c
  2783. 5A(087) 29 Apr 94.
  2784.  
  2785. Joel Seiferas <joel@cs.rochester.edu> reported crashes when receiving files
  2786. in the OS/2 version and SET FILE COLLISION RENAME.  The debug log revealed
  2787. this had something to do with the .LONGNAME extended attribute -- somehow
  2788. a huge name was being generated and written to the static buffer, which was
  2789. too short for it.  Jeff made a workaround for this -- a dynamic buffer, an
  2790. additional debugging statement -- in ckufio.c, so we can track down the real
  2791. reason this is happening.  Installed and announced as 5A(190) ALPHA.04.
  2792. ckufio.c, ckcfns.c, 29 Apr 94.
  2793.  
  2794. -----
  2795.  
  2796. An hour later...  Jeff found and fixed the .LONGNAME bug.  ckufio.c, ckcfns.c,
  2797. again, 29 Apr 94, 5A(190) ALPHA.05.
  2798.  
  2799. -----
  2800.  
  2801. New OS/2 C-K keyboard reading code, again, from Jeff, to correct problems that
  2802. were discovered by testers over the weekend.  ckotio.c 5A(130), ckocon.c,
  2803. 2 May 94.
  2804.  
  2805. I fixed one last Black Screen Of Death problem in OS/2 C-K that occurred when
  2806. the screen was rolled back when nothing had yet been placed in the rollback
  2807. buffer.  ckocon.c 5A(143), 2 May 94.
  2808.  
  2809. Closed a potential memory leak that could occur when collecting a debug log
  2810. during a TELNET connection.  ckcnet.c, 2 May 94.
  2811.  
  2812. Fixed HP-UX 10.0 support to use HDB-style, rather than SVR4-style, UUCP
  2813. lockfile names.  ckutio.c 5A(130), 3 May 94.
  2814.  
  2815. Fixed SET TERMINAL CHARACTER-SET <remote> [ <local> ], in the OS/2 version,
  2816. to default the <local> character set to the current code page, if known.
  2817. ckuus7.c, 3 May 94.
  2818.  
  2819. Added a few #includes to ttgwsiz() in ckutio.c to allow compilation under
  2820. SCO UNIX 3.2v4.0, from William Bader <wbader@csee.lehigh.edu>, ckutio.c
  2821. 5A(130), 3 May 94.  Also from William, some ANSIfication in ckufio.c.
  2822.  
  2823. An SCO UNIX 3.2v4.1-related fix to the sco32v4net makefile entry (the
  2824. addition of -D_IBCS2 to CFLAGS, so make the winsize structure in termio.h
  2825. be defined) from Han Holl <100327.1632@compuserve.com>.  3 May 94.  Also,
  2826. at Han's suggestion, ANSIfied the declarations of dodebug() and tlog() in
  2827. ckuusx.c, to suppress complaints.
  2828.  
  2829. Added support for the DECHEBM escape sequence, CSI ? 35 h/l, to OS/2 C-Kermit.
  2830. Upon receipt of CSI ? 35 h, it executes the macro KEYBOARDS, which must be
  2831. defined by the user.  Upon receipt of CSI ? 35 l, it executes the macro
  2832. KEYBOARDR.  This is just like in MS-DOS Kermit 3.13, and allows host-initiated
  2833. switching of keyboard mode, e.g. between English and Hebrew.  The KEYBOARD[RS]
  2834. macros, presumably, contain a bunch of SET KEY commands.  After actually using
  2835. this with the ALEPH software, however, I discovered it was intolerably slow
  2836. and irritating -- ALEPH sends *lots* of DECHEBM commands, and so Kermit's
  2837. screen was constantly blacking out, etc.  So I switched to a hardwired
  2838. approach -- very fast, no blinking, but also not remappable by the user.
  2839. We'll see what people think about it...  ckocon.[ch] 5A(144), 4 May 94.
  2840.  
  2841. Added skeleton for named pipe support to OS/2 C-Kermit.
  2842. ckcnet.h defines PIPENAML to be maximum length of server name.
  2843. ckuus3.c defines char pipename[PIPENAML], parsers SET NETWORK NAMED-PIPE
  2844. <pipename>, sets nettype to NET_PIPE, and stores pipename in pipename[].
  2845. ckuus7.c, routine setlin(), adds SET HOST <servername> if nettype is NET_PIPE,
  2846. and constructs \\pipename\pipe\serverename in ttname, to be passed to ttopen().
  2847. If Kermit is to be a named-pipe server, awaiting a connection, the user must
  2848. type SET NET NAMED-PIPE <servername>, SET HOST *.  Jeff A will fill in
  2849. the supporting code in cko???.?.  5 May 94.
  2850.  
  2851. Changed SET TERM TYPE ANSI to give appropriate warning message if it could
  2852. not change code page to 437.  ckuus7.c, 5 May 94.
  2853.  
  2854. Rec'd named pipe support routines from Jeff Altman:  ckonet.[ch], ckotio.c,
  2855. corrections to ckuus[37].c.  NOTE: Named pipe support is only for the 32-bit
  2856. version -- MSC chokes on undefined symbols, etc, in ckonet.c.  6 May 94.
  2857.  
  2858. Fixed SHOW NET to display named-pipe info.  ckuus4.c, 6 May 94.
  2859.  
  2860. Fixed TELNET command to work right after a previous SET NET NAMED-PIPE
  2861. command.  ckuusr.c, 6 May 94.
  2862.  
  2863. HP-UX 9.03, 6 May 94:
  2864.  . Added new makefile entry, hpux90, to be used with restricted HP compiler.
  2865.  . Enabled RTS/CTS, REDIRECT, Kanji, so now it's a full version.
  2866.  . Added custom version herald.
  2867.  . Checked uucp lockfile -- it's ok.
  2868.  . Added CK_POLL.
  2869.  . Added RENAME.
  2870.  . Added more \v(cpu) tests (for model 700, etc).
  2871.  . With all the above new features, stripped executable = 626K.
  2872.  . Tried unrestricted C compiler:
  2873.      OK with -O (= +O2), stripped executable = 495K
  2874.      OK with +O3, stripped executable = 512K (bigger because of inlining)
  2875.      Not ok with +Obb780.
  2876.      (+Obb780 = +O2, 780 max number of basic blocks)
  2877.  . Tried ANSI compilation with "KFLAGS=-Aa -CK_ANSIC -D_HPUX_SOURCE":
  2878.      It died right away.
  2879.  . Tested modem communications:
  2880.      Works great with RTS/CTS, DIALs OK, etc etc.
  2881.      Passes ripple & download tests at 57600 bps over V.32bis.
  2882.      Gets about 2200 cps on Kermit transfer of text files.
  2883.      But does not pop back to prompt automatically upon loss of carrier.
  2884.  . Tested direct serial communications:
  2885.      Null modem cable from tty00 to tty01, getty on tty01.
  2886.      Loses characters at 115200 bps, even with RTS/CTS turned on.
  2887.      Works perfectly at 57600 bps, gets about 5100 cps on text file xfers.
  2888.      Does not seem to detect any modem signals.
  2889.  . NOTE: Program must not be installed setuid or setgid to root.
  2890.  
  2891. Added Hebrew-keyboard-mode indication to OS/2 C-Kermit status line: "-H" is
  2892. appended to the terminal-type when the keyboard is in Hebrew mode, e.g.
  2893. "VT220-H".  Also fixed reset function to clear (reset) Hebrew mode.
  2894. ckocon.c 5A(145), 7 May 94.
  2895.  
  2896. Fixed the annoying problem with the beginning of file-transfer error messages
  2897. being cut off, which has been there for years.  Mostly in ckcfn2.c -- created
  2898. a separate buffer, pktmsg, for these messages.  Allocated in ckcfn3.c,
  2899. declared in ckcmai.c, used in ckcfn2.c and ckcpro.w.  7 May 94.
  2900.  
  2901. Added a local option to the OS/2 named-pipe support, "SET HOST .", which
  2902. allows users (like me) who don't have Named Pipe support installed on their
  2903. PCs to still use this feature for connections between two C-Kermit processes
  2904. on the same computer, e.g. for testing stuff.  ckonet.c 5A(013), 7 May 94.
  2905.  
  2906. Defined POSIX_CRTSCTS for NetBSD, from Mike Long.  ckcdeb.h, 8 May 94.
  2907.  
  2908. Documented modem initialization strings for several modems that are not
  2909. directly supported by C-Kermit's DIAL command: AT&T DataPort 14400, Boca 14.4
  2910. Faxmodem, Hayes Ultra 144, Multitech MT1432, Practical Peripherals 14400FXMT,
  2911. Zoom Telephonics 14400.  ckcker.bwr, 8 May 94.  Added a sample to the OS/2
  2912. section of CKERMOD.INI.
  2913.  
  2914. New code for OS/2 from Jeff Altman, 8 May 94:
  2915.  . Beginnings of mouse support, not turned on.
  2916.  . Beginnings of NETBIOS support, not turned on.
  2917.  . New ttoci() uses DosWrite(), but checks connection first.
  2918.  . Fix for Named Pipe buffering.
  2919.  
  2920. Added command-level support for SET NET NETBIOS, SET TERMINAL MOUSE, including
  2921. HELP, SHOW NET, SHOW TERMINAL, SHOW FEATURES, etc.  Lots of files.  8 May 94.
  2922.  
  2923. Tested new OS/2 ttoci() on a 57600-bps serial connection thru a non-buffered
  2924. UART with TERMINAL OUTPUT-PACING set to 0 -- works great: does not get blocked
  2925. at all when typing, using F or arrow keys, using keys that have long strings
  2926. assigned to them, and even when pasting massive amounts of text into the
  2927. window.  But it still does give the TRANSMISSION BLOCKED indication if, for
  2928. example, RTS/CTS is in effect and the modem turns off CTS.  And it still pops
  2929. back to the prompt if CD drops.  So I changed the default TERMINAL
  2930. OUTPUT-PACING to be 0 (no pacing!) instead of -1, and changed CKCKER.UPD
  2931. accordingly.
  2932.  
  2933. Also tested Named Pipe support -- works much better -- file transfers with
  2934. 4 window slots x 2K-byte packets go without a hitch.
  2935.  
  2936. Fixed OS/2 VT emulator's newline-mode to go by the book (DEC VT220
  2937. programmer's manual): "Causes a received LF, FF, or VT code to move the cursor
  2938. to the first column of the next line."  Also fixed CR-DISPLAY CRLF to echo a
  2939. linefeed locally (as well as a CR) when TERMINAL ECHO is LOCAL.  Also
  2940. straightened out a small mess with SO/SI.  Also documented the flow of
  2941. incoming data in the source code.  Also discovered that code-paging switching
  2942. doesn't work in a window.  ckocon.c 5A(146), 8 May 94.
  2943.  
  2944. -----
  2945.  
  2946. Added SIGTSTP suspend support to HP-UX 9.0 and later versions.  ckutio.c
  2947. 5A(131), 9 May 94.
  2948.  
  2949. Added parsing for SET NET NETBIOS <name> and SET HOST for NETBIOS.  ckcnet.h,
  2950. ckuus[37].c, 9 May 94.
  2951.  
  2952. Howie Kaye <howie@columbia.edu> discovered a bug in REINPUT (it was matching
  2953. things it shouldn't have been).  He also noticed that it was not possible to
  2954. refer to \%letter variables in uppercase, e.g. \%A.  Both fixed in ckuus4.c,
  2955. 9 May 94.
  2956.  
  2957. Fixed HP-UX 9.0 ANSI + optimizing compilation.  ckufio.c, makefile.  10 May 94.
  2958.  
  2959. Fixed some glitches in the CRT and FULLSCREEN file transfer display during
  2960. and/or after RESEND operations.  12 May 94.
  2961.  
  2962. Steve Walton enabled RESEND for the Amiga version.  Defined CK_RESEND in
  2963. ckcdeb.h for the Amiga.  16 May 94.
  2964.  
  2965. New set of Stratus-VOS-specific files from David Lane
  2966. <David_Lane@vos.stratus.com>, 16 May 94.
  2967.  
  2968. After an extended debugging session with Jeff Altman, it was determined that
  2969. LINK386 2.01.012 or later is needed to build 32-bit OS/2 C-Kermit; otherwise
  2970. we get garbage like two variables allocated to the same storage, etc.
  2971. 16 May 94.
  2972.  
  2973. New ckotio.c, ckocon.c, ckoker.mak files from Jeff Altman with mouse support
  2974. and keyboard buffering added, removal of critical sections, now replaced by
  2975. threads.  Also, I fixed a bug with DEC line-drawing characters that I
  2976. introduced in May 8th's cleanup.  This is Alpha.11, dated 18 May 94.
  2977.  
  2978. -----
  2979.  
  2980. Changed E-PACKET command to always send packet 0 with block-check type 1.
  2981. Otherwise there's a good chance the other Kermit won't be able to read it.
  2982. ckcmai.c, ckcpro.w, ckuusr.c.  19 May 94.
  2983.  
  2984. Changed PCGET macro (APC version) in CKERMIT.INI to account for the
  2985. possibility that the requested file might not exist on the other end.
  2986. 19 May 94.
  2987.  
  2988. After wiping out my connection once too often by accident, I decided to make
  2989. SET EXIT WARNING also apply to SET HOST, SET LINE, SET PORT, and TELNET
  2990. commands.  ckuus[r37].c, ckuusr.h.  20 May 94.
  2991.  
  2992. While reading code in cmifi() - input filename parser - I noticed that it
  2993. could return without freeing malloc'd memory.  Fixed in ckucmd.c, 19 May 94.
  2994.  
  2995. Changed the OS/2 CD command to allow unquoted backslashes in directory
  2996. names.  cmdir() in ckucmd.c 5A(060), 20 May 94.
  2997.  
  2998. Ditto for input file parsing in cmifi() and output file parsing in cmofi() in
  2999. ckucmd.c.  I also added special cases for IF EXIST and IF DIRECTORY in
  3000. ckuus6.c.
  3001.  
  3002. In cmdir() and cmifi(), Kermit now tries to parse the string as a file or
  3003. directory name literally.  If it succeeds, fine; if not, then it passes the
  3004. string through the variable-expander (xxstring()) and tries again.  In
  3005. cmofi(), the process is somewhat different: the string is scanned to see if
  3006. contains C-Kermit variable or function names, and if it does, it is evaluated;
  3007. otherwise it is taken literally.  The reason for this is that C-Kermit
  3008. variable names can easily be legal OS/2 filenames; "receive \%a" could create
  3009. a file called %A in the root directory.
  3010.  
  3011. The previous syntax (using / or \\ as the directory separator) continues to
  3012. work.
  3013.  
  3014. The new scheme follows the "principle of least astonishment" for regular
  3015. users, but might confound (a very small number of) diehard script programmers;
  3016. the rules are spelled out in the OS/2 section of CKCKER.UPD, along with
  3017. techniques that script programmers can use for resolving ambiguities.
  3018.  
  3019. Fixed the DIRECTORY, TYPE, and DELETE commands in OS/2 C-Kermit to work when
  3020. given a filespec that contains a directory field.  This never worked before.
  3021. Also, changed the DIRECTORY command to accept trailing switches to be passed
  3022. to OS/2, like "directory c:\temp\foo.* /p /o-d", as well as output redirection,
  3023. so now it accepts almost everything the OS/2 DIR command accepts, including
  3024. lone disk letters.  ckuusr.c, ckuus6.c, ckucmd.c, 20-21 May 94.
  3025.  
  3026. Added some text about the mouse to OS/2 C-K HELP TERMINAL. ckuus2.c, 21 May 94.
  3027.  
  3028. Fixed the HELP command's "more?" prompter not to set the FAILURE flag if the
  3029. user says No.  This was causing command retry to kick in.  ckuus2.c, 21 May 94.
  3030.  
  3031. Work of 19-21 May installed as Alpha.12, 21 May 94.
  3032. -----
  3033.  
  3034. Added a few lines of code to allow OS/2 C-Kermit to use up- and down arrow
  3035. keys for command recall, in command mode only.  ckotio.c 5A(135), ckuus2.c,
  3036. 22 May 94.
  3037.  
  3038. Added CHECK RTS/CTS to let script programs check whether RTS/CTS flow
  3039. control is available before trying to use it.  ckuus3.c, 23 May 94.
  3040.  
  3041. Fixes for OS/2 C-K from Kai Uwe Rommel: a problem with Named Pipe connections;
  3042. SET DIAL DIRECTORY command parsing; REMOTE SPACE execution by OS/2 C-K server. 
  3043. ckcpro.w 5A(062), ckonet.c 5A(016), 25 May 94
  3044.  
  3045. Fixed CHECK command to show full name of feature, even if user only gave an
  3046. abbreviation, or used completion.  ckuus3.c, 25 May 94.
  3047.  
  3048. Added conditional assembly support to ckcmai.c and ckcnet.c for the SOCKS
  3049. Internet relay package, from Rainer Glaschik <glaschick.kd@sni.de>, Siemens,
  3050. Paderborn.  25 May 94.
  3051.  
  3052. Discovered that C-Kermit lost its mind if it tried to evaluate a variable
  3053. whose value was "\" (a single backslash).  Fixed in xxstring(), ckuus4.c,
  3054. 25 May 94.
  3055.  
  3056. Added a new command: GETC.  Like ASK, but gets just a single character, with
  3057. no confirmation or editing; returns immediately when user pushes any key
  3058. (i.e. any key that can be read by coninc(0)).  ckuusr.h, ckuusr.c 5A(137),
  3059. ckuus6.c, 25 May 95.
  3060.  
  3061. Rec'd confirmation that OS/2 C-K works with FTP Software's PC/TCP from
  3062. Patrick W. Foster, Tech Support, FTP Software Inc., 2 High Street, North
  3063. Andover, MA  01845, pwf@ftp.com.
  3064.  
  3065. Call this one 5A(190) ALPHA.14 25 May 94.
  3066. -----
  3067.  
  3068. Started working on HP-UX 10.0 makefile entry.  Added -DCK_POLL and -DCK_RENAME.
  3069. 25 May 94.
  3070.  
  3071. Added EVALUATE command - trivial, since we already have the \feval() function.
  3072. ckuusr.h, ckuus2.c, ckuusr.c 5A(138), 26 May 94.
  3073.  
  3074. Kai Uwe Rommel sent in massive changes to the OS/2 version:
  3075.  . A new intermediate TCP/IP DLL now sits between Kermit and the real
  3076.    TCP/IP DLL (if any), so we no longer have to worry about whether or not
  3077.    to install the old "dummy" DLL.  The new DLL itself determines, at run
  3078.    time, whether TCP/IP is installed.  This change affects many CKO*.*
  3079.    modules, the makefile, etc.
  3080.  . The Rexx interface was changed to (a) remove the need for the
  3081.    CKCOMMAND command in Rexx programs, and (b) the need for the REXXFILE
  3082.    command in C-Kermit.
  3083.  
  3084. Jeff Altman integrated Kai Uwe's diffs and updated the install script
  3085. and the CKOREXX.DOC file.  He also did some more work on the mouse support,
  3086. but it isn't complete, so mouse support was disabled.
  3087.  
  3088. This is C-Kermit 5A(190) ALPHA.15, 1 June 1994.
  3089.  
  3090. ----
  3091. New HP-UX 10.0 makefile entries for ANSI C optimizing compiler.  makefile,
  3092. 4 Jun 94.
  3093.  
  3094. New OS/2 C-K mouse copy & paste support from Jeff Altman.  ckocon.c.  Also,
  3095. NETBIOS support cleanups -- even though this feature doesn't work yet, the
  3096. previous changes broke compilation; now at least it compiles again.  4 Jun 94.
  3097.  
  3098. ANSI prototyping fixes for HP-UX 10.0, ckufio.c, 5 Jun 94.
  3099.  
  3100. Discovered that "def \%a { foo }" did not produce the expected result, i.e.
  3101. strip the braces, keep the spaces.  Fixed in ckuus6.c.  5 Jun 94.
  3102.  
  3103. Fixed ttgmdm() to correctly report on Ring Indicator for HP-UX; ckutio.c
  3104. 5A(132), 5 Jun 94.
  3105.  
  3106. Changed the protocol module to accept an I-packet when in RECEIVE mode.  It
  3107. does no harm, and helps the client recover quickly when it sends a REMOTE,
  3108. GET, FINISH, or BYE command to a non-server.  ckcpro.w 5A(063), 6 Jun 94.
  3109.  
  3110. For selected systems where we know it's safe to do this, I increased the
  3111. default maximum buffer size from 9K to 90K: SunOS 4.x, Solaris, HP-UX 10.0,
  3112. NeXTs, 32-bit OS/2, IRIX 4.0, VMS, etc.  ckcker.h, 6 Jun 94.
  3113.  
  3114. Fix to CKVFIO.C for zchki() to make it use private data structures, to
  3115. prevent unrelated input-file operations (e.g. OPEN READ) from interfering
  3116. with each other, from Terry Kennedy.  CKVTIO.C 2.0-110, 8 Jun 94.
  3117.  
  3118. New-&-improved mouse support for OS/2 from Jeff Altman.  ckocon.c 5A(150),
  3119. ckuus5.c, ckcdeb.h, 9 Jun 94.
  3120.  
  3121. Support added for WHATAMI field in protocol initialization string.  This
  3122. quietly helps get text/binary and similar items right in client/server
  3123. connections when both client and server support this feature by letting the
  3124. client's settings predominate.  No fanfare.  ckcker.h, ckcfns.c 5A(112),
  3125. ckcpro.w 5A(064), 8 Jun 94.
  3126.  
  3127. NETBIOS support added to OS/2 C-Kermit for IBM's LAN Adapter and Protocol
  3128. Support product (ACSNETB.DLL), but not yet for the Novell LAN Server / Netware
  3129. Requestor (NETAPI.DLL), by Jeff Altman.  Many modules.
  3130.  
  3131. From Terry Kennedy - a fix to allow VMS C-Kermit to construct an attribute
  3132. packet even if the VMS system does not have a rights database (which shouldn't
  3133. happen, but did).  ckvfio.c 2.0-111, 17 Jun 94.
  3134.  
  3135. The services directory has always used login macros (VMSLOGIN, UNIXLOGIN, etc)
  3136. that have their respective host prompts (such as \13\10$) hard-coded.  But
  3137. since prompts on VMS, UNIX, and other systems can differ (and are often
  3138. customized per site, or by the user), it would be preferable to include the
  3139. prompt as a parameter to the login macro.  However, there was no obvious way
  3140. to do this without changing the format of the services directory, which would
  3141. break existing services directories, and also because a services directory
  3142. already can have up to 9 fields, which is the maximum number of macro
  3143. arguments.  This was fixed in today's edition of CKERMIT.INI via what Baldric
  3144. would call a "cunning plan"...  The second item in a services directory entry
  3145. is the name of the login macro, such as:
  3146.  
  3147.   vmslogin
  3148.  
  3149. Now it can also, optionally, be the login macro name followed by the system
  3150. prompt, grouped by braces, as in:
  3151.  
  3152.   {vmslogin chemvax:\32}
  3153.  
  3154. Old services directories continue to work as before, in which case the default
  3155. (hardwired) prompt is looked for.  The new form can be used to specify a
  3156. non-default prompt.  ckermit.ini, 17 Jun 94.
  3157.  
  3158. Fixed DIAL command to catch the case where a dialing directory includes an
  3159. entry name but nothing else (i.e. no phone number).  ckuus6.c, 18 Jun 94.
  3160.  
  3161. Added -DCK_POLL to DG/UG 5.4 version.  makefile, 18 Jan 94.
  3162.  
  3163. Spent the day building and testing this version:
  3164.  . DEC 5800 MIPS Ultrix 4.2 - OK
  3165.  . DEC Alpha AXP OSF/1 1.3 - OK
  3166.  . DEC Alpha AXP OSF/1 2.0 - OK
  3167.  . DEC Alpha AXP OpenVMS 1.5 / MultiNet - OK
  3168.  . DEC Alpha AXP OpenVMS 1.5 / no net - OK
  3169.  . DG AViiON DG/UX 5.40 - OK
  3170.  . HP-9000/300 4.4BSD - OK
  3171.  . HP-9000/550 HP-UX 5.21 - OK
  3172.  . HP-9000/385 HP-UX 8.00 - OK
  3173.  . HP-9000/715 HP-UX 10.0 - OK
  3174.  . Linux 0.99.14 - OK
  3175.  . NeXT - OK
  3176.  . PC with OS/2 16- and 32-bit - OK
  3177.  . PC with UnixWare 1.1.1 - OK
  3178.  . Solaris 2.3 with gcc - OK
  3179.  . SunOS 4.1.3 - OK
  3180.  . SunOS 4.1.3 POSIX universe - OK
  3181.  
  3182. BUT...
  3183.  . DG AOS/VS version compiles and links OK, but does not work.  Various script
  3184.    commands (IF, OPEN READ) are mysteriously broken.  Discovered this was
  3185.    because of a misplaced #endif in the IF EXISTS / IF DIRECTORY code, which
  3186.    would have affected any C-Kermit version that did not have CK_TMPDIR
  3187.    defined.  Fixed 19 Jun 94.  Also fixed the AOS/VS CD command -- when given
  3188.    without an operand, it would fail because "homdir" ended in a colon.
  3189.  
  3190.  . PDP-11 2.11 BSD version is too big, again.  By 64 bytes in root segment.
  3191.    Tried getting rid of 81-byte pktmsg[] buffer, only for pdp11, in a
  3192.    disgusting hack in which it shares the user interface's tmpbuf[].  But that
  3193.    made no difference at all.  Removed E-PACKET fixes from May 19.  Still not
  3194.    small enough.  Added -DNOWHATAMI.  Finally built OK.  19 Jun 94.
  3195.  
  3196. Built VAX/VMS versions (no net, MultiNet, UCX) and Macintosh version.
  3197. 19 Jun 94.
  3198.  
  3199. This is 5A(190) ALPHA.18, 16 Jun 94.
  3200. -----
  3201.  
  3202. Updates to VMS makefile from Terry Kennedy to allow for linking on VMS systems
  3203. that have the new FORTRAN V6 library (don't ask), plus insertion of a warning
  3204. message in the generated CKVKER.COM file that it is generated automatically
  3205. from the makefile, and all changes should be made to the makefile itself.
  3206. 20 Jun 94.
  3207.  
  3208. From Jeff Altman: maximum scrollback in OS/2 32-bit version 
  3209. increased from 4K lines to 2,000,000 lines = 512M max process memory / 132 / 2.
  3210. Plus numerous NETBIOS changes/fixes.  20 Jun 94.
  3211.  
  3212. Changed reporting ownership of UUCP lockfile in ttopen() in UNIX version.
  3213. Previously, if the device had a lockfile, ttopen() would try to print a
  3214. directory listing of the lockfile.  But if the lockfile directory was not
  3215. read-accessible to the user, Kermit would give a stupid message like:
  3216.  
  3217.   /var/spool/locks/LCK..tty00 not found
  3218.   Sorry, device is in use: /dev/tty00
  3219.  
  3220. This is because Kermit's own setuid/setgid privilege is/are not (and should
  3221. not be) passed along to ls.  Rather than building an entire ls program into
  3222. Kermit, I changed it to read the lockfile (since Kermit itself has the needed
  3223. privs), get the pid, if any, and display it.  The directory listing is now
  3224. attempted only if we fail to get a pid.  ckutio.c 5A(133), 22 Jun 94.
  3225.  
  3226. Fixed CKERMIT.INI login macros again; the previous fix broke the feature that
  3227. allows the password to be given on the macro command line.  22 Jun 94.
  3228.  
  3229. Fixed a bug in which a TERMINAL ECHO setting could be spuriously "restored" to
  3230. half duplex (local echo) upon return from a non-TELNET network CONNECT session
  3231. (e.g. Named Pipe or NETBIOS).  Discovered by Jeff Altman.
  3232. ckuus7.c 22 Jun 94.
  3233.  
  3234. Improvements in OS/2 NETBIOS support from Jeff Altman.  ckonbi.[ch],
  3235. ckuus[3x].c.
  3236.  
  3237. This is 5A(190) BETA.01, 22 Jun 94, 11:30pm EST.
  3238. -----
  3239.  
  3240. Fixes to OS/2 NETBIOS support from Jeff Altman, ckuus[3x].c (these were
  3241. including <os2.h>, but <os2.h> #defines COMMENT, which turns on all the
  3242. commented-out code in these modules).  Also, improvements to OS/2 mouse
  3243. support, ckocon.c 5A(152), 23 June 94, 8:00am EST.  Today's changes affect
  3244. only the OS/2 version.
  3245.  
  3246. This is 5A(190) BETA.02, 23 Jun 94.
  3247. -----
  3248. Small change to ckcdeb.h to allow compilation on DECstation with Mach 2.6,
  3249. which has the same "union wait" "feature" as the NeXT, from Paul Placeway.
  3250. 23 Jun 94.
  3251.  
  3252. Changed REMOTE SET FILE TYPE to also set the local file type correspondingly,
  3253. to help prevent surprises when WHATAMI takes effect.  ckuus7.c, 24 Jun 94.
  3254.  
  3255. Allow OS/2 C-Kermit server to respond to REMOTE WHO (it just sends back
  3256. a string saying it's an OS/2 C-Kermit server).  Jeff Altman, ckufio.c
  3257. 5A(089), 25 Jun 94.
  3258.  
  3259. Numerous fixes and cleanups for OS/2 C-Kermit from Jeff Altman, primarily
  3260. moving mouse support to its own module, ckomou.c, because ckocon.obj was
  3261. getting too big for the linker, which resulted in runtime errors.  Many cko*
  3262. modules.  Also, Jeff updated the mouse and NETBIOS material, and other OS/2
  3263. specifics, in CKCKER.UPD and CKOKER.BWR.  25 Jun 94.
  3264.  
  3265. Made Interactive UNIX #include <sys/stream.h> and <sys/ptem.h> for picking up
  3266. TIOCGWINSZ structure member declarations.  Problem reported by Kenneth W
  3267. Cochran.  25 Jun 94.
  3268.  
  3269. Made a scad of new UNIX makefile entries to differentiate HP-UX 9.0x on the
  3270. model 800 (where poll() is not available) from all other models (where poll()
  3271. *is* available), using a new compile-time symbol NOPOLL, which overrides
  3272. CK_POLL.  makefile, 25 Jun 94.
  3273.  
  3274. Added a new symbol, LINUXFSSTND, which can be used in Linux compilations to
  3275. select the "new" (ho hum) lockfile conventions (/var/lock/LCK..name, decimal
  3276. ASCII 10-byte PID string with leading zeros) rather than the "old" ones
  3277. (/usr/spool/uucp/LCK..name, int PID).  Suggested by Phil Keegstra
  3278. <keegstra@aruba.gsfc.nasa.gov>.  ckutio.c 5A(135), 25 Jun 94.  
  3279.  
  3280. Fixed a problem in the Data General AOS/VS version, reported by Cory Sane
  3281. <sane@musc.edu>, namely that if Kermit failed to find CKERMIT.INI in the
  3282. user's home directory, it should (and used to) look in the user's searchlist,
  3283. but this was broken in edit 190 (when I made a change that I thought affected
  3284. only UNIX).  Old behavior restored in ckuusr.c 5A(140), ckuus5.c, 25 Jun 94.  
  3285.  
  3286. Also, at Cory's suggestion, added RESEND capability to AOS version.  This was
  3287. simply a matter of copying the zfseek() routine from the UNIX version and
  3288. defining CK_RESEND at compile time.  ckdfio.c 5A(066) 25 Jun 94;
  3289.  
  3290. This is 5A(190) BETA.03, 25 Jun 94.
  3291. -----
  3292. Fixed indexing in UNIX man page.  26 Jun 94.
  3293.  
  3294. Got VMS C-Kermit makefile additions and corrections from Bernie Volz
  3295. <VOLZ@PROCESS.COM> for Process Software TCPware on the VAX and the Alpha AXP,
  3296. plus C-Kermit binaries for those two combinations.  These same binaries also
  3297. run under UCX and, presumably also under TGV MultiNet, which has a UCX
  3298. compatibility mode...  There is also a small change to ckuus4.c for SHOW NET.
  3299. I also learned that the CKVHEX program can be run on a VAX to make a hex file
  3300. out of an AXP binary.  27 Jun 94.
  3301.  
  3302. Discovered that the DEC OSF/1 2.0 C compiler generates bad code if
  3303. optimization is used.  Created a new makefile entry, dec-osf20, for this,
  3304. which omits optimization.  makefile.  27 Jun 94.
  3305.  
  3306. Eduard Vopicka in the Czech Republic added code to enable hardware flow
  3307. control for SCO UNIX 3.2.something-or-other == ODT 3.0.  It worked fine for
  3308. turning RTS/CTS ON, but RTS/CTS did not get turned off when FLOW was set back
  3309. to NONE or XON/XOFF after having been set to RTS/CTS.  This turns out to be my
  3310. fault.  So, more rearranging of tthflow() in ckutio.c, 5A(136), 27 Jun 94,
  3311. plus adding in Eduard's code.  The result compiles OK on SunOS, UnixWare,
  3312. HP-UX, etc, but needs testing.
  3313.  
  3314. Fix from Jeff Altman for OS/2 C-Kermit TCP/IP sessions.
  3315. ckonet.c 5A(018), 27 Jun 94.
  3316.  
  3317. This is 5A(190) BETA.04, 27 Jun 94.
  3318. -----
  3319.  
  3320. For better debugging, rearranged things to make the "-d" command-line
  3321. option take effect first thing, rather than waiting until after sysinit()
  3322. is called.  ckcker.h, ckcmai.c, ckuus4.c.  28 Jun 94.
  3323.  
  3324. Changes for SET FLOW KEEP for OS/2 from Kai Uwe.  He discovered a device
  3325. (a radio clock) that gets power from the RTS line, which must be low. 
  3326. Previously, OS/2 C-Kermit always set RTS high.  Now SET FLOW KEEP leaves it
  3327. alone.  ckotio.c 5A(136), 28 Jun 94.
  3328.  
  3329. At the urging of Eduard Vopicka <Eduard.Vopicka@vse.cz>, added APC code to the
  3330. UNIX version.  But it doesn't work because of the two-forks business (memory
  3331. is not shared, data is changed in the wrong fork).  Eduard might take a look
  3332. at using pipes, etc.  28 Jun 94.
  3333.  
  3334. Added End-of-Attributes attribute ("@ ") to end of A packet.  sattr(),
  3335. ckcfn3.c.  ckcfns.c 5A(113), 29 Jun 94.
  3336.  
  3337. Raised maximum window size from 31 to 32.  The proof that this may be safely
  3338. done is left as an exercise for the reader.  ckcker.h, ckcfns.c, ckuus3.c,
  3339. 29 Jun 94.
  3340.  
  3341. More OS/2 Netbios fixes from Jeff Altman.  ck[co]net.c, 29 Jun 94.
  3342. And again, 30 Jun 94.
  3343.  
  3344. It turns out that some UNIX versions that are not based on System V R4
  3345. nevertheless implement RTS/CTS flow control via <[sys/]termiox.h>, e.g.
  3346. HP-UX 9.0.  So I removed the #ifdef SVR4..#endif around the [S]TERMIOX
  3347. section in ckutio.c.  1 Jul 94.
  3348.  
  3349. Due to a typo in ckcdeb.h, REXX support disappeared from the 32-bit OS/2
  3350. version in Beta.04.  Now fixed, 1 Jul 94.
  3351.  
  3352. Eduard Vopicka changed ckucon.c to use a pipe for all types of communication
  3353. between the upper and lower fork.  This enabled the APC code to function in
  3354. the UNIX version -- the lower fork sends the APC command to the upper one by
  3355. interrupting it with SIGUSR1 and then sending a function code and the APC
  3356. string through the pipe.  This eliminates the need for SIGUSR2.  I cleaned up,
  3357. debugged, and rearranged the code a bit, but it still has a few minor glitches
  3358. (e.g. unpredictability of messages, sometimes you have to hit Return to get
  3359. back, etc), and so I have not added -DCK_APC to any of the makefile entries.
  3360. Use at your own risk.  Without CK_APC defined, ckucon.c should operate as
  3361. before, but with the pipe.
  3362.  
  3363. This is 5A(190) BETA.05, 1 Jul 94.
  3364. ----- 
  3365.  
  3366. From Jeff Altman: ckotio.c 5A(137), ckonet.c 5A(020), and ckonbi.c 5A(004),
  3367. with corrections affecting NETBIOS and, to some degree, other networking
  3368. methods in OS/2 C-Kermit.  2 Jul 94.
  3369.  
  3370. Added "resend" and "psend" indications to fullscreen file transfer display.
  3371. Also added some small fixes involving too-long names, from Bill Glass
  3372. <glass@vixvax.mgi.com>.  ckuusx.c, 2 Jul 94.
  3373.  
  3374. More work on APC for UNIX.  Ensured that when TERM APC is OFF, that the APC
  3375. is passed through transparently, so if UNIX C-Kermit is "in the middle", in
  3376. CONNECT mode, that an APC sent from the remote host will be visible to the
  3377. most local computer, e.g. MS-DOS Kermit or whatever on your desktop PC.
  3378.  
  3379. Ensured that APC ON does not interfere with character-set translation, neither
  3380. 7-bit national character sets, nor 8-bit sets.  However, note that when
  3381. transferring files through C-Kermit "in the middle", in CONNECT mode, this
  3382. Kermit (the one in the middle) better have its TERMINAL CHARACTER-SET set to
  3383. TRANSPARENT; otherwise, the packets will be changed on their way through and
  3384. the transfer will fail.
  3385.  
  3386. Noted that pipe() is supposedly available in all versions of UNIX, and that
  3387. the smallest maximum amount of stuff that can be written to a pipe is
  3388. something like 4K, whereas an APC sequence can never be more than about 1K.
  3389. Built C-Kermit on a bunch of different UNIX systems (NeXT, SunOS, SVR4, etc)
  3390. with APC enabled with no apparent problems in compilation, linking, or
  3391. execution.  So I defined CK_APC by default for all UNIX versions that are also
  3392. built with the script programming (i.e. for which NOSPL is not defined).
  3393. ckuusr.h, 2 Jul 94.
  3394.  
  3395. There is still one problem with UNIX APC: Any characters that come in on the
  3396. communication line while the APC commands are being executed are lost.  This
  3397. does not happen in the OS/2 version.  But this doesn't happen in UNIX version
  3398. when APC is not involved -- if you escape back to the C-Kermit prompt while
  3399. the remote end is generating output, it will be saved up (given buffer
  3400. capacity, flow control, etc) for when you next CONNECT.
  3401.  
  3402. Added APC support to VMS C-Kermit.  This was much easier, since the CONNECT
  3403. command does not run in two forks.  It works, but has exactly the same problem
  3404. as the UNIX version: losing the remote Kermit's next prompt upon reconnecting.
  3405. To be figured out tomorrow...  CKVCON.C 5A(034), 2 Jul 94.
  3406.  
  3407. Noticed that spurious "Type escape character (^\) followed by..." message
  3408. was still being given in cases where it wasn't needed when the file transfer
  3409. display was not fullscreen.  Fixed in ckuusx.c, 3 Jul 94.
  3410.  
  3411. While looking at the previous problem, I realized that there was a lot of
  3412. inconsistency and overlap between ttchk() and conchk() in ckutio.c.  So I
  3413. created a new (static) routine, in_chk(), which replaces both of them, and
  3414. adds new methods of checking to each, including select(), which had never been
  3415. used here before.  Addition of select() covers HP-UX systems prior to 9.0,
  3416. which previously were not covered (I checked the oldest HP-UX system I have
  3417. access to, 5.21, and it had select()).  But then after building and testing
  3418. the new code on HP-UX, I discovered that all HP-UX versions also had FIONREAD,
  3419. which is preferable to select() because it returns not only the state of the
  3420. read buffer, but the number of bytes in it.  The new in_chk() routine is
  3421. structured to use FIONREAD, if it is available, in preference to select(),
  3422. poll(), rdchk(), or other methods, because FIONREAD gives not just a yes/no
  3423. status, but the actual number of characters waiting.  This is a major
  3424. improvement for HP-UX and probably many others -- not only does it make
  3425. local-mode file transfer interruption easier, but it makes sliding windows
  3426. work better (see notes above from Oct 25, 93).  In doing this, I also got rid
  3427. of usleep() in the SunOS, NeXTSTEP, and BSDI, versions, replacing it by
  3428. select(), in msleep().  Also, I moved the compile "logic" (#ifdefs) for
  3429. deciding about all this to ckcdeb.h, so it would be available at all times to
  3430. all modules, and added display of their status to SHOW FEATURES.  makefile,
  3431. ckcdeb.h, ckuus5.c, ckutio.c 5A(137), 3 Jul 94.
  3432.  
  3433. Since HP-UX doesn't need CK_POLL any more, I removed all the HP-UX 9.0
  3434. model-800 specific makefile entries that I added a few days ago to account for
  3435. poll() not being available on the 800 series.  I also removed it from the
  3436. HP-UX 10.0 entries.  Also added -DRENAME to HP-UX 8.0 makefile entries, and
  3437. cleaned them up.  Tested on HP-UX 5.21, 8.0, 9.03, and 10.0.
  3438. makefile, 3 Jul 94.
  3439.  
  3440. Noticed that file dates weren't recorded correctly by 4.4BSD (BSDI, etc) when
  3441. receiving files.  This is because there was no code in zstime() in ckufio.c
  3442. to adjust for the timezone.  After some digging, I found out how to do it
  3443. and added the needed code.  Tested on BSD4.4-Lite and BSDI 1.0.  It won't work
  3444. (obviously) if the system does not have its timezone set correctly, but
  3445. otherwise it seems fine.  ckufio.c 5A(090), 3 Jul 94.
  3446.  
  3447. Linus Torvalds told me that Linux supports both select() and FIONREAD, so I
  3448. defined SELECT for all Linux builds, allowing it to be used in (at least)
  3449. msleep().  FIONREAD is not available on Linux 0.99.14.  I'm not sure which was
  3450. the first release to have it, but if Kermit is built on a system that has
  3451. FIONREAD defined in <sys/ioctl.h> (?), then it will be used by in_chk().  In
  3452. any event, the Linux version now has a working in_chk(), and so users no
  3453. longer have to precede local-mode file-transfer interruption characters with
  3454. the CONNECT-mode escape character, and sliding-window transfers will work
  3455. better now.  ckcdeb.h, ckutio.c 5A(138), 4 Jul 94.
  3456.  
  3457. Removed -DUSLEEP from Linux makefile entries, fixed the static-linking Linux
  3458. entries (which never worked before), and consolidated all the Linux entries
  3459. into linux, linuxs, linuxtcp, linuxtcps.  makefile, 4 Jul 94.
  3460.  
  3461. Discovered that UnixWare 1.1.1 supports select() too, but didn't do anything
  3462. about because who knows about 1.1, 1.0, etc, and it already uses poll(), so
  3463. who cares.
  3464.  
  3465. Rearranged and fixed the Linux hi-speed stuff again, via suggestions from
  3466. Alan Modra <alan@spri.levels.unisa.edu.au>.  I also got rid of the messages
  3467. telling about LINUX_HI_SPEED or ASYNC_SPD_MASK.  It turns out that it does no
  3468. harm to always build Linux C-Kermit with high speeds enabled.  If the
  3469. underlying Linux version does not support a high speed, the corresponding
  3470. SET SPEED command will fail (tested on Linux 0.99.14).  If it turns out I'm
  3471. wrong, you can add -DNOHISPEED to CFLAGS.  ckcdeb.h, makefile, ckutio.c,
  3472. 6 Jul 94.
  3473.  
  3474. Minor changes for SCO Xenix 2.2.3 & 2.2.4 with Excelan and Lachman TCP/IP,
  3475. respectively, from William Bader.  6 Jul 94.
  3476.  
  3477. Fixed prescan() to compile OK with -DNODEBUG, change from Douglas Boyce
  3478. <ak272@freenet.buffalo.edu>.  ckuus4.c, 6 Jul 94.
  3479.  
  3480. Changed OS/2 default flow control from KEEP to NONE, because KEEP no longer
  3481. explicitly turns on Request To Send (RTS), but all the other methods do.  This
  3482. was preventing communication from taking place at all for some people
  3483. (reported by Bob Babcock).  ckotio.c 5A(138), 6 Jul 94.
  3484.  
  3485. Made separate keyword tables for SET FILE TYPE and REMOTE SET FILE TYPE.  On
  3486. VMS, OS/2, etc, users should not be allowed to REMOTE SET FILE TYPE LABELED or
  3487. other system-specific types -- only TEXT and BINARY.  Thanks to Max Evarts for
  3488. noticing this anomoly.  Also, hooked SET SESSION-LOG into the REMOTE table,
  3489. since TEXT and BINARY should be the only combinations.  Also, made ASCII an
  3490. invisible synonym for TEXT.  ckuus3.c, ckuus7.c, 6 Jul 94.
  3491.  
  3492. More fixes to OS/2 NETBIOS support from Jeff Altman, ckonet.c, 6 Jul 94.
  3493.  
  3494. Minor ANSIfications to CKVFIO.C and ckcnet.c for VMS with GCC, from James
  3495. Sturdevant <sturdeva@watsun.cc.columbia.edu>.  CKVFIO.C 5A(112),
  3496. ckcnet.c, 8 Jul 94.
  3497.  
  3498. Added code, but left it commented out, for setting socket buffer size for
  3499. TCP/IP connections, from William Bader <wbader@csee.lehigh.edu>.
  3500. ckcnet.c 5A(032), 8 Jul 94.
  3501.  
  3502. Eduard Vopicka pointed out that problems with UNIX APC losing characters might
  3503. be exacerbated by the arrangement of the two CONNECT forks.  But we can't
  3504. switch to using select() in one fork, because select() is not portable.  Nor
  3505. can we use lightweight processes, shared memory, threads, etc, for the same
  3506. reason.  The current structure (top fork reads/sends keystrokes, bottom fork
  3507. reads/displays communications device input) was chosen arbitrarily about 10
  3508. years ago, and we have built upon it ever since.
  3509.  
  3510. One problem with the CONNECT module is that it clears its internal buffers
  3511. (ibuf, obuf) and pointers (ibp, obp) every time it is entered.  So I
  3512. rearranged the code to ensure that these buffers and pointers are allocated
  3513. and set only upon first entry.  This way, if we read (for example) an APC
  3514. escape sequence followed by the subsequent prompt into the CONNECT command's
  3515. internal buffer, we don't clear out the material after the escape sequence
  3516. in the act of popping back to the command parser.  This won't help with UNIX
  3517. because of the fork problem, but to test this hypothesis, I rearranged the VMS
  3518. CONNECT module (one fork) to behave this way.  And now it works.
  3519.  
  3520. In the UNIX version, the upper and lower forks have their own private copies
  3521. of the communications-device input buffer, ibuf[].  If the lower fork exits
  3522. with characters remaining in ibuf[], they are lost.  This could be fixed, as
  3523. Eduard Vopicka suggests, reversing the forks.  Let's say the fork that reads
  3524. the keyboard and sends the keystrokes is the called KEYB fork, and the fork
  3525. that reads from the communications device and displays on the screen is called
  3526. the PORT fork.  Currently, the PORT fork is the lower fork.
  3527.  
  3528.  1. The PORT fork can get a disconnect indication when trying to read from
  3529.     the communications device, and it must inform the KEYB fork.  Likewise,
  3530.     the KEYB fork can get a disconnect indication when trying to send to
  3531.     the communications device, and it must kill the PORT fork.  The same
  3532.     would be true if the forks were reversed.
  3533.  
  3534.  2. The PORT fork gets incoming TELNET negotiations, and so it must inform the
  3535.     KEYB fork of echoing changes, since the KEYB fork is responsible for
  3536.     echoing.  Thus, no matter what the arrangement of the forks, the two must
  3537.     keep their echoing status in sync.
  3538.  
  3539.  3. The PORT fork gets X.25 PAD parameters, so it must convey them to the KEYB
  3540.     fork because the KEYB fork uses them all.
  3541.  
  3542.  4. The PORT fork gets the APC escape sequence, and must convey it to the
  3543.     command parser.  It also may have read ahead, and so therefore must not
  3544.     destroy the low-level communications input buffer.
  3545.  
  3546. If the forks were reversed, we would still need signals from the lower to the
  3547. upper fork in cases 1-3.  We would still need to send data through pipes in
  3548. cases 2 and 3, but from top to bottom rather than vice versa.  So we would
  3549. gain nothing in simplicity of structure.  Tons of code would need to be
  3550. rearranged and tested.  The ramifications could be far-reaching, the effort
  3551. and risk great, and the benefits by no means assurred.  So no reversing the
  3552. forks.
  3553.  
  3554. A simpler solution was found: the lower fork, upon detecting the end of an APC
  3555. sequence, first flushes its output buffer to refresh the screen (ckcputf), and
  3556. then passes the values of its input buffer pointers (ibp), count (ipc), and
  3557. contents (ipc characters starting at ibp) to the upper fork through the pipe.
  3558. We know that no characters are sitting in the lower level ck*tio.c buffers,
  3559. because the last call to ckcgetc() got all that there were.  Any other
  3560. characters that have arrived from the host in the interim are still in the
  3561. operating system's buffers, and we can still read them later.  Now since ibp,
  3562. ipc, and ibuf (as of today) stay put from one conect() invocation to the next,
  3563. the CONNECT command will pick up exactly where it left off previously, with
  3564. the next newly-created lower fork inheriting the correct buffer counts,
  3565. pointers, and contents from the upper fork.  The only glitch seems to be that
  3566. when the APC commands include an ECHO command, sometimes the first character
  3567. of the echoed text is lopped.  ckucon.c 5A(065), 8 Jul 94.
  3568.  
  3569. Glitch fixed.  The problem was that we always would output the Esc character
  3570. that starts an APC sequence, because we did not yet know it was going to be an
  3571. APC.  This would cause bizzare effects in the terminal emulator or window,
  3572. since any character at all could show up after the APC sequence.  So now, when
  3573. APC processing is enabled (i.e. SET TERM APC is not OFF), we hang on to the
  3574. Esc character until the next character arrives; if it is not the APC
  3575. introducer (underscore), then we output the Esc before outputting the next
  3576. character.  If it is the APC introducer, we process the entire APC sequence
  3577. internally, including the Escape.  ckucon.c 5A(066), 9 Jul 94.
  3578.  
  3579. Migrated today's changes to the VMS version.  CKVCON.C 5A(035), 9 Jul 94.
  3580.  
  3581. From Jeff Altman, more fixes and improvements to OS/2 NETBIOS support,
  3582. including enabling of sliding-window transfers, plus a new OS/2 makefile.
  3583. 9 Jul 94.
  3584.  
  3585. Installed LINK386 2.01.016 on my OS/2 system, which fixes a stack problem
  3586. that was causing OS/2 C-Kermit to crash when the mouse was used.  9 Jul 94.
  3587.  
  3588. Added REDIRECT command for Linux.  ckcdeb.h, 9 Jul 94.
  3589.  
  3590. Tried adding -DSELECT for Solaris, but it seemed to screw things up; put it
  3591. back to how it was, using poll().  Tried "#define FIONREAD FIORDCHK" for
  3592. Solaris, but that REALLY did not work.  In case anybody ever asks you,
  3593. FIORDCHK != FIONREAD.
  3594.  
  3595. Built new OS/2 C-Kermits, 16 and 32 bit, with above fixes and new linker.
  3596.  
  3597. And new VMS C-Kermits, VAX and AXP, UCX and TGV.  And new UNIX C-Kermits:
  3598. SunOS 4.1.3, Solaris 2.3, NeXTSTEP 3.1, Linux, UnixWare, HP-UX, etc, working
  3599. out glitches long the way.
  3600.  
  3601. (Note: still need to test -DNOCSETS, -DNOAPC, -DNOESCSEQ, etc...)
  3602.  
  3603. (Note: still need to fix up X.25 code in ckucon.c...)
  3604.  
  3605. This is Beta.07, 9 Jul 94.
  3606. -----
  3607.  
  3608. Noticed that when TELNETing from Linux or Solaris (System-V-style signal
  3609. handling) to NeXTSTEP (which has a bizarre TELNET server that sends lots of
  3610. echo changes when you first connect to it, probably 3 or 4 within a couple
  3611. microseconds), that when the TELNET server breaks the connection, Kermit would
  3612. hang.  Turns out that this was caused by our nice new pipeint() routine and
  3613. consolidation of SIGUSR1 and SIGUSR2.  The problem was that we were trying to
  3614. read from a pipe (to handle the duplex change) after the port fork was already
  3615. pause()'d.  So I went back to having two signal handlers, one for
  3616. disconnections (forkint() on SIGUSR1) and the other for mode-change messages
  3617. to be read from the lower fork through the pipe (pipeint() on SIGUSR2).  This
  3618. fixed the problem on both Solaris and Linux.
  3619.  
  3620. However, Linux is having one heck of a time handling SIGUSR2s...  Signals do
  3621. not seem to be delivered reliably, or else they are not blocked while being
  3622. handled.  When TELNETing to the NeXT, Linux C-Kermit almost always gets the
  3623. echoing wrong because Linux can't seem to handle the repeated SIGUSR2 signals
  3624. caused by rapid-fire echoing changes without dropping some.  The pre-APC
  3625. version of ckucon.c had exactly the same problem on Linux so we can't blame it
  3626. on the new code.  Hopefully, this won't affect anybody, ha ha.
  3627.  
  3628. Ha ha indeed.  Next I tried the new code on Unixware.  Upon TELNETing to a
  3629. NeXT, it politely said "User signal 2" and then Kermit's upper fork simply
  3630. vanished, leaving the lower CONNECT fork merrily spinning away, like a
  3631. headless chicken.  Evidently, the default action for SIGUSR2 in Unixware is to
  3632. _exit().  This problem turns out to be present also for earlier versions -- it
  3633. was evidently *never* possible to TELNET from C-Kermit on Unixware to a NeXT.
  3634.  
  3635. To fix, I began by putting signal(SIGUSRx,SIG_IGN)'s everywhere (program
  3636. startup in sysinit(), CONNECT exit code, etc) to ensure these signals are
  3637. never armed when Kermit's handler is not ready.  When pipeint() gets SIGUSR2,
  3638. it rearms it immediately as its first statement.  Thus there is only the
  3639. tiniest possible window during which a SIGUSR2 is caught and the time at which
  3640. it is re-armed -- i.e. the time that it takes to execute the signal() call.
  3641. Nevertheless, this problem will occur about 50% of the time when TELNET'ing
  3642. with C-Kermit from Unixware to a NeXT.  In looking at Unixware <signal.h>, I
  3643. see that SIGUSR1 and SIGUSR2, normally 30 and 31, have different values: 16
  3644. and 17, which are more often used (on other systems) for such items as SIGURG
  3645. and SIGSTOP.  Then I discovered that in Linux, the values are 10 and 12.  I
  3646. wonder if that's the trouble...  No.  Logs reveal that when TELNET'ing to a
  3647. normal kind of host, like a Sun, pipeint() gets invoked as expected and works
  3648. properly.
  3649.  
  3650. OK, so back to Linux.  After having honed this code down to the bone, I ran
  3651. it again on Linux and found:
  3652.  
  3653.   CONNECT TELNET duplex change=0
  3654.   pipeint arg=12
  3655.   pi** PORT=255 <-- Aha! pipeint is interrupted before it can do anything.
  3656.  
  3657. It read the function code from the pipe, but was interrupted before it
  3658. could (a) finish writing the debug entry (which should have said "pipeint
  3659. code=3"), and (b) execute the function, i.e. change duplex.  And again:
  3660.  
  3661.   TELNET SENT DONT ECHO=1
  3662.   CONNECT TELNET duplex change=1
  3663.   pipeint arg=12
  3664.   pi** PORT=13   <-- And again.
  3665.   ...
  3666.   tn_doop returns=2
  3667.   CONNECT TELNET duplex change=0
  3668.   pipeint arg=12
  3669.   pCKCGETC 1 calling ttinc(0)  <-- And again.
  3670.  
  3671. So the (disgusting, bleh) solution is for the lower fork, after signalling a
  3672. duplex change to the upper fork, to sleep for a few hundred milliseconds.
  3673. This should be totally transparent to the user, because, after all, how often
  3674. could it possibly happen during a telnet session?  This change makes the
  3675. Linux version echo correctly, and it seems to fix the Unixware situation too.
  3676.  
  3677. All this: ckucon.c 5A(067), 10 Jul 94.
  3678.  
  3679. This is Beta.08, 10 Jul 94.  The changes from 07 to 08 are strictly specific
  3680. to UNIX.
  3681. -----
  3682.  
  3683. From Mark <markd@sco.com>, who works at SCO...  He says that RTS/CTS
  3684. (CK_RTSCTS) and Sys V R3 Job Control (SVR3JC) can safely be added to all SCO
  3685. UNIX 3.2v4 makefile entries.  makefile, 11 Jul 94.  Also, a fix for a typo in
  3686. ckucon.c which breaks compilation when DYNAMIC is not defined, reported by
  3687. Mark and many others.  11 Jul 94.
  3688.  
  3689. Changed default SET TERMINAL APC in OS/2 from ON to OFF for security reasons.
  3690. ckuus5.c, 13 Jul 94.
  3691.  
  3692. Jeff Altman cured a problem in OS/2 C-Kermit, in which the system could hang
  3693. under certain conditions during execution of spawned subprocesses. 
  3694. ckufio.c 5A(091), 13 Jul 94.
  3695.  
  3696. Also from Jeff, more improvements to the OS/2 Netbios code.  Now long-packet
  3697. sliding-window transfers go very smoothly over Netbios.
  3698. ckonbio.c 5A(006), ckonet.c 5A(023), 13 Jul 94.
  3699.  
  3700. Also from Jeff, updates to the OS/2 makefile.  ckoker.mak, 13 Jul 94.
  3701.  
  3702. This is Beta.09.
  3703. -----
  3704. Fixed CKETEST.INI to be able to TAKE CKEDEMO.INI even if it is not being
  3705. executed from the current directory, as long as it is in the same directory
  3706. that CKETEST.INI was TAKEn from, using a diabolical trick involving
  3707. \freverse(\v(cmdfile))...  CKETEST.INI, 14 Jul 94.
  3708.  
  3709. More NetBios fixes from Jeff, plus a fix for an off-by-one error in the
  3710. file transfer display.  ckonbi.c, ckonet.c, ckuusx.c, 14 Jul 94.
  3711.  
  3712. Made OS/2 C-Kermit screen writes during execution of REMOTE commands be
  3713. unbuffered to alleviate jerkiness.  ckcfns.c, 14 Jul 94.
  3714.  
  3715. Added \v(ftype) = file type ("text", "binary", etc).  ckuus4.c, 14 Jul 94.
  3716.  
  3717. Made REMOTE SET WINDOW also set the local window size.  ckuus3.c, 14 Jul 94.
  3718.  
  3719. Got access to an Alpha AXP VMS 6.1 system with Wollongong TCP/IP, courtesy of
  3720. the Mount Sinai School of Medicine of the City University of New York, with
  3721. special thanks to Ragu Nagalingam.  Built Kermit OK, but the TELNET command
  3722. doesn't work.  Turns out to be because of some kind of DEC C prefixing.  Larry
  3723. Henry at Wollongong pointed me at the Wollongong makefile sample showing how
  3724. to get around this, but when I use it, some of the modules (like ckvfio.c)
  3725. won't compile because of conflicting definitions in Wollongong and DEC header
  3726. files.  Just for laughs, I tried building CKVFIO.C with the old makefile,
  3727. which works (luckily, CKVFIO.C contains no network references), and then
  3728. building the rest with the new procedure (a temporarily hacked-up .COM file),
  3729. and then linking them together.  It worked.  Will have to sort all this out
  3730. later.
  3731.  
  3732. This is Beta.10.
  3733. -----
  3734.  
  3735. New XSEND.CMD Rexx procedure from Jeff Altman, for sending directory trees
  3736. from OS/2 C-Kermit, similar to the XSEND.EXE program for DOS, except there
  3737. is no intermediate command file.  CKOXSE.CMD (= XSEND.CMD on the diskette).
  3738. 14 Jul 94.
  3739.  
  3740. Bob Babcock reported: "If I want to send file Bin/foo, and I type:
  3741.  
  3742.    send B<tab>f
  3743.  
  3744. then realize that the file name completion has not generated a path
  3745. separator, and try to backspace to correct the problem, I get a message that
  3746. file Bin is not readable.  Somehow it doesn't seem right for Kermit to
  3747. complain that I've entered something invalid in response to my attempt to
  3748. backspace to fix what I've typed."  Fixed in ckucmd.c 5A(061), 15 Jul 94.
  3749. Now if you activate filename completion on a directory name (except in the VMS
  3750. version, where path specifications have more complicated syntax), Kermit will
  3751. complete the name of the directory, then supply the path separator, and then
  3752. beep to let you know that the file specification is not complete.  CK_TMPDIR
  3753. must be defined, because we need the isdir() function for this.
  3754.  
  3755. \m(foo) is supposed to be a "long variable name", and should act like any
  3756. other variable, such as \%a.  However, it turns out that it never did, and
  3757. nobody ever noticed.  The difference that \m(foo) returned the definition of
  3758. the "macro" foo, literally, without bothering to evaluate it any further.  So:
  3759.  
  3760.   def \%a \v(date)
  3761.   echo \%a
  3762.   15 Jul 94
  3763.  
  3764. but:
  3765.  
  3766.   def foo \v(date)
  3767.   echo \m(foo)
  3768.   \v(date)
  3769.  
  3770. In other words, \m(foo) was the same as \fdefinition(foo).  Now \m(foo)
  3771. returns the fully evaluated definition of foo, but \fdef(foo) still returns
  3772. its "bare" definition, as before, and as it should.  I hope nobody depended on
  3773. the old erroneous behavior; if so, they need only change \m to \fdef wherever
  3774. it matters.  The new behavior is compatible with MS-DOS Kermit.  ckuus4.c,
  3775. 15 Jul 94.
  3776.  
  3777. Added CHECK REDIRECT.  ckuusr.c 5A(142), 15 Jul 94.
  3778.  
  3779. New command file, ckuszrz.ini, for UNIX, for defining macros to run sz, rz,
  3780. sb, rb, sx, rx as external protocols.  Depends on the \m(foo) change and on
  3781. CHECK REDIRECT.  15 Jul 94.
  3782.  
  3783. Never mind.  Backed off on \m(foo) change, and reworked ckurzsz.ini
  3784. accordingly.  The \m(foo) change had disastrous consequences when "foo"
  3785. was defined to be an OS/2 file specification that included \ as the path
  3786. separator.  This totally broke almost everything in CKERMIT.INI.  Live and
  3787. learn (again).  15 Jul 94.
  3788.  
  3789. Roger J Allen <rja@sispro.sis.rpslmc.edu> noticed that TELNET BREAK wasn't
  3790. working any more on DYNIX/ptx, since some time after Alpha.02.  Turns out
  3791. it was broken in a lot more places than that -- everywhere but OS/2.  Fixed
  3792. in ckcnet.c 5A(034) 15 Jul 94.
  3793.  
  3794. This is Beta.11.
  3795. -----
  3796.  
  3797. Corrected a typo in the sco3v4 makefile entry noticed by Lawrence Kirby.
  3798. 20 Jul 94.
  3799.  
  3800. From Jeff Altman, a fix to the OS/2 version, which could crash if you:
  3801.  
  3802.   SET NETWORK NETBIOS BLAH
  3803.   SET HOST *
  3804.  
  3805. twice in a row, if you did not have TCP/IP installed on your system.
  3806. ckonet.c 5A(025) 21 Jul 94.
  3807.   
  3808. Made an executable for VAX/VMS 5.5-2 / Wollongong Pathway 1.1 thanks to access
  3809. provided by the Mt. Sanai School of Medicine in New York City.
  3810.  
  3811. This is Beta.12.
  3812. -----
  3813.  
  3814. Fixes from Jeff Altman for OS/2 C-Kermit:  "(1) SET NETWORK NETBIOS now
  3815. defaults to the myhost[] string instead of 'kermit' for the local NetBios
  3816. name.  ckuus3.c.  (2) Refixed yesterday's tcp_avail fixes.  The previous
  3817. fixes probably broke DECNet.  I also fixed an extremely rare bug which would
  3818. occur if a file transfer was broken prematurely by the Kermit server while
  3819. using DecNet, Named Pipes, or NetBios as the transfer media.  Since these
  3820. media use a local buffer, a netflui() call must flush the local buffer as well
  3821. as the network.  Otherwise, kermit would get very confused.  ckonet.c."
  3822.  
  3823. Also, I changed the SET NETWORK command to fail on OS/2 if it is given for
  3824. any type of network that is not loaded.  And I changed the default network
  3825. type in OS/2 to be the first one on the following list which actually is
  3826. loaded:  TCP/IP, DECnet, NETBIOS, Named Pipe.  I also fixed the SHOW NETWORK
  3827. command to fit on one screen again by omitting details of networks which are
  3828. not loaded or active.  ckonbi.c, ckonet.c, ckuus4.c.  22 Jul 94.
  3829.  
  3830. Changed OS/2 SET NETWORK to hide the network names of uninstalled networks so
  3831. they won't show up in the SET NET ? listing, and changed the SET NET default
  3832. string from a hardwired "tcp/ip" to the name of the highest installed network
  3833. from the list above.  ckuus3.c, 22 Jul 94.
  3834.  
  3835. Fixed OS/2 C-Kermit server's response to REMOTE HELP to contain CRLFs rather
  3836. than only LFs.  ckcmai.c, 22 Jul 94.
  3837.  
  3838. This is Beta.13, 22 Jul 94.
  3839. -----
  3840.  
  3841. Changed REMOTE SET FILE TYPE { TEXT, BINARY } to also allow LABELED.
  3842. VMS and OS/2 only.  ckuus[37].c, 23 Jul 94.
  3843.  
  3844. Added \v(sysid) variable to return the Kermit code for the system ID
  3845. (see pp.275-278 of the Kermit book), e.g. U1 for UNIX, UO for OS/2, etc.
  3846. ckuusr.h, ckuus4.c, 23 Jul 94.
  3847.  
  3848. Added \v(space) variable -- for OS/2 only for now.
  3849. ckuusr.h, ckuus4.c, 23 Jul 94.
  3850.  
  3851. Added client and server end of REMOTE PWD.  This is a new Generic server
  3852. command, "A".  ckuusr.h, ckuus7.c, ckuusr.c 5A(143), ckcpro.w 5A(065),
  3853. 23 Jul 94.
  3854.  
  3855. Designed and implemented REMOTE QUERY and REMOTE ASSIGN, to let a Kermit
  3856. client inquire about and set the values of a Kermit server's variables.  The
  3857. design is system independent, allowing separate querying of "kermit" read-only
  3858. variables (like C-K's and MSK's \v(...) items), "system" read-only variables
  3859. (like environment variables in UNIX or DOS, or logical names in VMS), and
  3860. "global" variables (for want of a better term), which can be queried or set.
  3861. When C-Kermit is the client, results of queries (up to 1K in length) go into
  3862. the new \v(query) variable, which refers to the query response buffer, which
  3863. is 1K in length.  Anything after 1K is discarded.
  3864.  
  3865. Added QUERY and ASSIGN to ENABLE / DISABLE server-feature list.
  3866. ckuusr.h, ckuus6.c, ckcpro.w 5A(066) 24 Jul 94.
  3867.  
  3868. Added text about REMOTE QUERY and ASSIGN to server help text.
  3869. ckcmai.c, 24 Jul 94.
  3870.  
  3871. Added help text for REMOTE { QUERY, ASSIGN } to ckuus2.c.  24 Jul 94.
  3872.  
  3873. Changed REMOTE QUERY to display as well as store.  All the other REMOTE
  3874. commands display whatever comes back, so REMOTE QUERY should too.  ckcfns.c,
  3875. 24 Jul 94.
  3876.  
  3877. Noticed that in OS/2 version, the DIRECTORY command, when given a wildcard
  3878. filespec which matched no files or exactly one file, would give a parse error.
  3879. rather than reporting "file not found" or listing the single matching file.
  3880. Fixed in ckuus6.c, and ckucmd.c 5A(062), 24 Jul 94.
  3881.  
  3882. Discovered that SET BUFFERS never worked in 16-bit C-Kermit implementations
  3883. where malloc() requires an integer argument, if given numbers that were too
  3884. big for the wordsize.  The 16-bit OS/2 version, for example, would just hang.
  3885. Fixed inibufs() to use unsigned ints and to catch and recover from integer
  3886. overflow, and fixed the SET BUFFERS parser also to catch integer overflow and
  3887. give an informative message.  ckcfn3.c, ckcfns.c 5A(115), 24 Jul 94.
  3888.  
  3889. This is Beta.14.
  3890. -----
  3891.  
  3892. Cast away a bunch of complaints about (CHAR *) vs (char *) mismatches from
  3893. ckcpro.w.  26 Jul 94.
  3894.  
  3895. Fixed a bug in the rejection of files on the basis of size, noticed by Jeff
  3896. Altman.  ckcfn3.c, ckcfns.c 5A(116) 26 Jul 94.
  3897.  
  3898. Changed #ifdef COMMENT to #ifdef CK_LINGER around the block of TCP/IP
  3899. code that William Bader sent in for netopen().  This turns off the socket
  3900. "linger" parameter, which makes a close() block until all data is sent, but
  3901. which can result (he says) in Kermit hanging when telnet'ing to a flaky server
  3902. or to a modem server when the modem is in use.  Also included is some code
  3903. to increase socket buffer sizes, now selected by CK_SOCKBUF.  Both of these
  3904. symbols are undefined by default.  On SunOS 4.1.3, enabling CK_LINGER revealed
  3905. that the linger parameter was already off, so it had no effect.  Enabling 
  3906. CK_SOCKBUF increased the socket buffers from 24576 to 32768, but no
  3907. improvement in performance was noted.  ckcnet.c 5A(035), 30 Jul 94.
  3908.  
  3909. From Steve Walton: Commodore Amiga support for the DIAL and SCRIPT commands.
  3910. ckudia.c 5A(059), ckuscr.c 5A(020), 30 Jul 94.
  3911.  
  3912. Don't call prescan() if NOICP is defined.  ckcmai.c 5A(190), 30 Jul 94.
  3913. From Michael T Pins <amigapd@icaen.uiowa.edu>.
  3914.  
  3915. A lot of recoding in the system-independent modules to allow F and G packets
  3916. (as well as ACKs) to be long packets of any length at all, up to the maximum
  3917. negotiated length.  Elimination of various extraneous limited-length static
  3918. buffers and arcane code regarding encstr() -- encstr() now encodes directly
  3919. into the packet data buffer.  I don't remember what the problem was before
  3920. that prevented this from working, but I must have fixed it since then.  These
  3921. changes allow filenames, server commands, and ACK data fields up to the
  3922. maximum negotiated packet length, and thus allow short-form responses to
  3923. server commands to be made via long ACK packets.  C-Kermit server tested
  3924. against both C-Kermit and MS-DOS Kermit client successfully.  ckcpro.w
  3925. 5A(067), ckcfns.c 5A(117), ckcfn2.c, ckuusx.c, etc etc, 30 Jul 94.
  3926.  
  3927. Changed REMOTE QUERY GLOBAL to REMOTE QUERY USER -- just the name, not the
  3928. semantics... GLOBAL is too computery.  ckuus7.c.  30 Jul 94.
  3929.  
  3930. Ever since the UNIX APC code went into ckucon.c on July 9th, Eduard Vopicka in
  3931. Prague <Eduard.Vopicka@vse.cz> has been finding and closing little race
  3932. conditions in the interprocess communication between the two CONNECT forks.
  3933. First, he found that the msleep(250) was not necessarily enough, so what was
  3934. needed was a portable equivalent of semaphores.  To make a 3-week-long story
  3935. short, we now have the two CONNECT forks interrupting each other in *both*
  3936. directions, rather than just one, and using pipes in both directions to ensure
  3937. that needed actions have completed.  Also, we're back to using one signal
  3938. rather than two, and that signal can be defined at compile time.  It turns out
  3939. that SIGUSR1 is not safe on all systems -- for example, it is said to do take
  3940. the place of SIGURG in SCO versions, to signal OOB data on a TCP socket.  And
  3941. of course, we learned earlier that SIGUSR2 is dangerous elsewhere, like in
  3942. UnixWare.  So in ckucon.c we now use CK_FORK_SIG, which can be defined at
  3943. compile time to be any signal you want.  Because of the new synchronization
  3944. between the forks, many msleeps and sleeps could be removed, resulting in
  3945. noticeably snappier performance.  Eduard also discovered that under certain
  3946. conditions -- apparently only involving APCs -- the CONNECT module can be
  3947. entered with an alarm() active, which eventually goes off causing a longjmp to
  3948. a long-gone place and thus a core dump.  The cause was not found, but adding a
  3949. call to ttimoff() in the CONNECT module fixes the problem.  I took Ed's work
  3950. pretty much as-is, but had to fix assorted portability problems, mainly with
  3951. preprocessor constructions & identifier names, and also fixed the problem with
  3952. the disappearing "Back at..." message after an APC had been executed.
  3953. ckucon.c 5A(068), ckutio.c 5A(142), 30 Jul 94.
  3954.  
  3955. Tested new UNIX CONNECT module on SunOS 4.1.3, NeXTSTEP 3.1, UnixWare 1.1.1,
  3956. Solaris 2.3 (with both GNU cc and SUNPro CC), Linux 0.9.14, HP-UX 9.03.
  3957. It seems to function perfectly everywhere.
  3958.  
  3959. Also from Eduard: an ASCII-graphic percent-done thermometer for the fullscreen
  3960. file transfer display.  Included only if you define CK_PCT_BAR, which is not
  3961. defined by default.  ckuusr.c 5A(144), ckuusx.c, 30 Jul 94.
  3962.  
  3963. Changed HELP module to check terminal rows not only in HELP command, but
  3964. also in INTRO and anything else that calls hmsga().  ckuus2.c, 31 Jul 94.
  3965.  
  3966. Added #define NOJC to ckoker.h, because SUSPEND is not supported in OS/2 C-K.
  3967. 31 Jul 94.
  3968.  
  3969. Added \v(startup) (startup device:directory) to OS/2 version.  ckuusr.h,
  3970. ckuus4.c, 31 Jul 94.
  3971.  
  3972. More changes to OS/2 NETBIOS support from Jeff Altman, primarily that NETBIOS
  3973. can never be the default network type because the user has to choose a session
  3974. name.  ckonet.c 5A(027), 31 Jul 94.
  3975.  
  3976. OS/2 space-checking routine fixed by Jeff A to account for the space that will
  3977. be vacated by an existing file that will be removed because of the file
  3978. collision action.  ckufio.c 5A(092), 31 Jul 94.
  3979.  
  3980. Removed "ioctl(ttyfd,TCSAFLUSH,&n);" from the BSD44 section of UNIX ttflui().
  3981. TCSAFLUSH is not a valid argument for ioctl().  This call was making console
  3982. messages ("ser0: ioctl(,2,,)") pop up on the system console of (at least)
  3983. NetBSD/Mac68k systems.  Reported by Ken Nakata <kxn3796@hertz.njit.edu>.
  3984. ckutio.c 5A(143), 31 Jul 94.
  3985.  
  3986. I discovered that when C-Kermit has a connection to a Kermit server upon
  3987. which C-Kermit's own packets are echoed back at it, C-Kermit's "echo
  3988. cancellation" technique fails under certain circumstances, and one of them
  3989. leads to an infinite loop.  Most of this has to do with the overloading of
  3990. packet 0...  Anyway the solution was to have the protocol state machine ignore
  3991. E packets and Y packets when in server command wait state.  Previously,
  3992. C-Kermit would answer an E packet received in this state with another E
  3993. packet, which not only was wrong, but results in an infinite exchange of
  3994. E-packets.  And when the C-Kermit server replies to a G command with a
  3995. short-form response (i.e. in the data field of an ACK) and the ACK is echoed
  3996. back, C-K would not detect it as an echo.  So ACKs received during server
  3997. command wait are also now ignored.  ckcpro.w 5A(068), 31 Jul 94.
  3998.  
  3999. In the course of this investigation it was discovered that the mysterious
  4000. messages like:
  4001.  
  4002.   @-|3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$5$0___E
  4003.  
  4004. that we sometimes see were the result of an Init string (in the data field of
  4005. an ACK to an I packet) being misinterpreted as encoded data, which happens
  4006. when the client's G packet is clobbered: the server times out and retransmits
  4007. its previous ACK to the client's I packet, which contains the Init string, but
  4008. the client thinks it is a short-form reply to the G packet "decodes" it,
  4009. producing results like the above.  There is no way for the client to tell the
  4010. difference because the two Y packets have the same sequence number (0):
  4011. If-I-Had-It-To-Do-Over Dept.
  4012.  
  4013. Nelson Beebe reported that if you used C-Kermit under Solaris 2.3 in local
  4014. mode to transfer a file with its FILE DISPLAY set to FULLSCREEN, then upon
  4015. return to the prompt, keystrokes would no longer echo.  I fixed this by
  4016. adding -DCK_NEWTERM to the Solaris makefile entries.  31 Jul 94.
  4017.  
  4018. This is Beta.15, 31 Jul 94.
  4019. -----
  4020.  
  4021. Corrected a typo in the incoming-file-size-checking code, from Jeff Altman.
  4022. ckufio.c 5A(093) 1 Aug 94.
  4023.  
  4024. Minor correction to an error-handling section in UNIX CONNECT module from
  4025. Eduard Vopicka.  Also, reshuffling of some of the declarations to allow
  4026. non-DYNAMIC compilations to work right.  ckucon.c 5A(069), 1 Aug 94.
  4027.  
  4028. Added -DDYNAMIC -DCK_CURSES + "LIBS= -lcurses -ltermcap" to Tandy 16/1600
  4029. makefile entry, from Jay Rouman <jsr@dexter.mi.org>.  Makefile, 2 Aug 94.
  4030.  
  4031. Added Transfer Rate (CPS) to the fullscreen file transfer display, and
  4032. made a couple other minor changes to it.  ckuusx.c, 2 Aug 94.
  4033.  
  4034. Added \v(charset), which in the general case is the current file character
  4035. set, and in OS/2 is the current codepage (which is usually also the current
  4036. file set).  ckuusr.h, ckuus4.c, 3 Aug 94.
  4037.  
  4038. A correction to ckcmai.c from Mike Long <Mike.Long@Analog.com> to prevent
  4039. hlptxt from coming up undefined when built with -DNOSERVER, and correction
  4040. to some wording in SHOW FEATURES in ckuus5.c.  3 Aug 94.
  4041.  
  4042. Added the file transfer thermometer as a runtime selection in all CK_CURSES
  4043. versions: SET FILE DISPLAY FULL { THERMOMETER, NO-THERMOMETER }.  No
  4044. thermometer is the default except in OS/2, which has a nice-looking one.
  4045. ckuusr.h, ckuus7.c, ckuusx.c.  3 Aug 94.
  4046.  
  4047. Core dumps reported on NetBSD.  In tracking this down with gdb, I discovered
  4048. that SIGQUIT was always armed in SVORPOSIX versions, even when FIONREAD,
  4049. CK_POLL, SELECT, or RDCHK were available, a mistake which makes it impossible
  4050. to escape back to the prompt under gdb, because gdb takes over SIGQUIT.
  4051. So now esctrp() and all references to it in ckutio.c are enabled only if
  4052. SVORPOSIX is defined *and* FIONREAD, SELECT, RDCHK, and CK_POLL are *all*
  4053. undefinded.  ckutio.c 5A(144), 4 Aug 94.
  4054.  
  4055. NetBSD saga: Crash is reproducible.  It happens every time we return to the
  4056. prompt after showing a curses display.  It's because something overwrites the
  4057. cmprom pointer.  When transferring files without using a curses display, it
  4058. never crashes.  So this narrows it down to the code in ckuusx.c that handles
  4059. the curses display, or else the curses library itself.  Trying to debug this
  4060. with gdb, placing a watchpoint on cmprom takes hours and hours...  (Hours and
  4061. hours later...)  It turns out the problem was caused by a bcopy() within
  4062. getwd() writing over random memory.  Cured by using getcwd() instead.  (The
  4063. real cause, pointed out by Mike Long, is that MAXPATHLEN was not appropriately
  4064. defined, because ckufio.c was not #including <sys/param.h> -- who knew.
  4065. ckufio.c 5A(094) 4 Aug 94.
  4066.  
  4067. However, there must have been some reason I was using getwd() in 4.4BSD to
  4068. begin with, but I can't find it in my notes.  Vangogh at Berkeley is down now,
  4069. but that's where I would have done it.  Checking on BSDI, it seems OK there,
  4070. no core dumps, etc, but something else is wrong: the curses display only works
  4071. once.  The second time, many of the fields are stuck against the left and
  4072. right margins.  Session logs show that curses is sending different stuff the
  4073. second time around -- the escape sequences and graphic characters are the
  4074. same, but the tabs are all messed up -- too many or too few in many cases.
  4075. But this does not happen on NetBSD.
  4076.  
  4077. Fixes from Jeff Altman for the situation in which rapid-fire APCs from the
  4078. host could hang OS/2 C-Kermit.  ckocon.c 5A(152), ckomou.c 5A(002), 5 Aug 94.
  4079.  
  4080. Changes to OS/2 NETBIOS support to allow multiple virtual adapters, e.g. when
  4081. IBM and Novell NETBIOS to coexist on the same machine, from Jeff Altman.
  4082. ckuus[4y].c.  5 Aug 94.
  4083.  
  4084. Made 4.4BSD-based versions search <sys/param.h> to get MAXPATHLEN, and
  4085. put a little more bullet-proofing, debugging, and comments in this area.
  4086. ckufio.c 5A(095), 5 Aug 94.
  4087.  
  4088. Changes to SET PORT NETBIOS command to allow switching from a NETBIOS
  4089. connection to (say) a TCP/IP connection, and then back to the same NETBIOS
  4090. connection without getting an error.  ckuus3.c, 5 Aug 94.
  4091.  
  4092. Adjustments to previous edit by Jeff Altman.  ckuus3.c, 6 Aug 94.
  4093.  
  4094. QNX work, QNX 4.2.1, Watcom C16 9.5, 6 Aug 94:
  4095.  . Basic 32-bit version, OK: 366259.
  4096.  . Added KANJI, TCPSOCKET, OK: 400459.
  4097.  . Job Control doesn't work: ^Z has no effect, SUSPEND hangs (sh, ksh),
  4098.    leaves zombies behind after disconnecting.
  4099.  . ANSIC OK, Optimize -O OK: 433669.
  4100.  . CK_NAWS, CK_TMPDIR, OK.
  4101.  . CK_REDIR <sys/wait.h>: 435179.  Works too.
  4102.  . CK_CURSES OK: 396363 (curses but no TCP)
  4103.  . curses-related core dump - happens 2nd time curses is invoked.
  4104.    Fixed by calling initscr() every time, but 2nd & subsequent displays
  4105.    are messed up, like on BSDI.  Several hours spent fooling with this
  4106.    one, to no avail.
  4107.  . CK_WREFRESH added, works OK, but using stdscr instead of curscr
  4108.    because QNX curses doesn't have curscr.
  4109.  . Added 57600, 76800, 115200 bps.  No way of testing them.
  4110.  . ckhost() didn't work; it was calling uname(), changed to gethostname().
  4111.  . Input-buffer-peeking methods available are FIONREAD and select().
  4112.    FIONREAD works, but needed <sys/ioctl.h> included, works ok.
  4113.  . Including <sys/ioctl.h> also gives us modem signals (TIOCMGET, etc).
  4114.  . For msleep, added -DSELECT for select(), for which <sys/select.h> needed
  4115.    including.
  4116.  . "INPUT n string" doesn't work in remote mode, i.e. coninc(x) where x > 0
  4117.    (timed console read) does not work.  Ditto for local mode and ttinc(x).
  4118.    But ttinl(timo..) does work.  It's as if a single-character read() can't
  4119.    be interrupted, but a multiple-character read can be.  Thus, an INPUT that
  4120.    fails will hang forever.
  4121.  
  4122. Outstanding problems:
  4123.  
  4124.  . Ctrl-C trap doesn't work, I can't see why.  SIGINT is armed in in conint(),
  4125.    but it is never caught.  It is probably something to do with the c_cc[]
  4126.    array that is set up in concb() in ckutio.c.  Anyway, in command mode,
  4127.    C-Kermit reads Ctrl-C just like any other character.
  4128.  . Job control doesn't work.  Code compiles and links ok, but SIGTSTP key
  4129.    is ignored and SUSPEND command makes the program hang, no matter which
  4130.    shell is used.
  4131.  . Reactivating the curses display after first leaving it doesn't work right.
  4132.  . ttinc(n) and coninc(n) single-character read()s never get interrupted by
  4133.    alarm()/signal(), so INPUT can hang.
  4134.  . Hardware flow control needs to be added, I don't see how to do it.
  4135.    termios.h has bits called TT*HW, but they are for tcflow(), which is used
  4136.    for flow control actions, not flow-control mode selection, so I don't see
  4137.    how to do it.  There is no termios.h, and there is no CRTSCTS symbol
  4138.    defined anywhere, nor CTSFLOW or RTSFLO, nor RTSXOFF, etc etc.
  4139.  . A 16-bit version still needs to be built.
  4140.  . SET SPEED, especially high speeds, needs testing.
  4141.  . Does QNX use UUCP lockfiles?  If so, which kind?  /usr/spool/uucp/LCK..???
  4142.  . Dialout and serial comms in general needs testing.
  4143.  
  4144. Discovered why Ctrl-C trap didn't work in QNX.  concb() (the routine that
  4145. sets the console terminal modes for command parsing) did not set the ISIG
  4146. flag in c_lflag unless job control was enabled.  Very silly -- it should
  4147. always be set, otherwise we can't catch SIGINT.  This partially fixes the
  4148. problem.  Now the first Ctrl-C is caught but subsequent ones are ignored;
  4149. they don't even show up as data characters any more.  And yet the signal is
  4150. definitely being rearmed, as revealed in the debug.log.
  4151.  
  4152. Changed UNIX C-Kermit to check the handling of SIGTSTP immediately upon
  4153. startup, and if it is SIG_IGNored, then not to catch SIGTSTP signals and
  4154. suspend itself, since the shell above won't know what to do with a suspended
  4155. Kermit, and will just hang.  This doesn't help QNX though.
  4156. ckutio.c 5A(145), 6 Aug 94.
  4157.  
  4158. On the QNX system I was using, it turns out that I can't get *any* process to
  4159. suspend, so it's not just Kermit -- no matter what shell I use (sh, csh, ksh).
  4160. stty -a says that ^Z is the suspend character, and so does Kermit's debug log.
  4161. (Later, I learned that QNX does not support job control, and so added -DNOJC
  4162. to the compilation).
  4163.  
  4164. At the suggestion of James Lummel <jlummel@caprica.com>, changed jmp_buf,
  4165. setjmp, and longjmp to sigjmp_buf, sigsetjmp, and siglongjmp in the QNX
  4166. version, because QNX uses POSIX signal-handling, namely that whenever a signal
  4167. is generated, it is masked off, and the signal handler must unmask it.  This
  4168. is done by sigjmp_buf, sigsetjmp, and siglongjmp.  This is why SIGINT would be
  4169. caught only once.  A new symbol governs this: CK_POSIX_SIG, which is currently
  4170. defined (in ckcdeb.h) only for QNX.  ckcmai.c, ckcnet.c 5A(036), ckucon.c
  4171. 5A(071), ckudia.c 5A(060), ckuscr.c 5A(022), ckutio.c 5A(146), ckuusx.c,
  4172. ckuusr.c 5A(145), 7 Aug 94.  Testing on QNX shows that this change clears up
  4173. the problems with Ctrl-C and with timeouts not working (but it makes me wonder
  4174. why C-Kermit works without these changes on all the other POSIX-based UNIX
  4175. implementations -- I guess they are not so strictly POSIX after all), so now
  4176. we need:
  4177.  
  4178.  . The restarting-curses problem fixed.
  4179.  . UUCP lockfile conventions worked out.
  4180.  . setuid/setgid operation checked out.
  4181.  . DIAL command checked out.
  4182.  . Serial communications checked out.
  4183.  . Hardware flow control added.
  4184.  . A 16-bit version produced.
  4185.  
  4186. I built Kermit on Linux 0.99.14 with CK_POSIX_SIG and it works fine, so I
  4187. added this to the makefile, plus some warning comments about how to back off.
  4188. Linked the Linux version with libncurses rather than libcurses, and the
  4189. second-invocation-of-curses problem went away.  Added this to the makefile
  4190. too.  makefile, 7 Aug 94.
  4191.  
  4192. Fixed VMS RUN and DIRECTORY commands to return success/failure status
  4193. according to return codes from zshcmd(), based on whether LIB$SPAWN returns
  4194. SS$_NORMAL (it always does).  Larry Henry of TWG just sent in code to get
  4195. the actual return code from the command, but I haven't quite figured out how
  4196. to use it -- it almost works...  ckuus6.c, ckvfio.c 5A(112), 7 Aug 94.
  4197.  
  4198. Beta.16.
  4199. -----
  4200.  
  4201. Aug 8... QNX again.  Disabled job control because QNX does not yet implement
  4202. it.  Worked on 16-bit version with much assistance from Dan Hildebrand of QNX
  4203. Software Systems Inc in Kanata, ON <danh@qnx.com>.  Removed various features:
  4204. speeds higher than 38400 because of 16-bitness; ioctl() can't be used because
  4205. it is not in the 16-bit libs.  Aside from that, everything is there: TCP/IP,
  4206. curses, all character sets, etc.  Makefile, ckuusx.c, ckutio.c, 8 Aug 94.
  4207.  
  4208. Tried adding hardware flow control to QNX version based on info from danh:
  4209. IEXTEN must be set in c_lflag, and then IHFLOW|OHFLOW are set in c_cflag.
  4210. It compiles and runs OK, but who knows if it works.  ckutio.c 5A(147),
  4211. 8 Aug 94.
  4212.  
  4213. Discovered that bad things could happen if a file arrived whose name was
  4214. longer than C-Kermit's maximum filename length, e.g. the file would not be
  4215. transferred because C-Kermit failed to open the output file.  zrtol() changed
  4216. to cut the name off at the maximum length.  ckufio.c 5A(096) 8 Aug 94.
  4217.  
  4218. The #ifdefs around the POSIX signal-handling changes were inconsistent in
  4219. ckuusx.c, noticed by Eduard Vopicka, and this would result in a memory leak
  4220. that could cause a core dump.  Fixed (#ifdef QNX => #ifdef CK_POSIX_SIG) in
  4221. ckuusx.c, ckuusr.c 5A(146), 9 Aug 94.
  4222.  
  4223. Added serial high speeds back into the 16-bit QNX version.  This required an
  4224. internal change to ttsspd() and ttgspd(), which should be safe, namely 
  4225. declaring the internal speed variable to be of type speed_t rather than int
  4226. if it is a POSIX compilation, since this type is required by POSIX.1 for
  4227. cfsetispeed(), etc.  Tested OK on QNX, BSDI, and Linux.  Also, changed
  4228. ttgwsiz() to work on 16-bit QNX as well as 32-bit QNX.  ckcdeb.h, ckutio.c
  4229. 5A(148) 9 Aug 94.
  4230.  
  4231. Got access to an SGI IRIX 5.2 system, built today's C-K with no problems.
  4232. Looked thru header files, found no evidence of hardware flow control or serial
  4233. speeds > 19200.  9 Aug 94.
  4234.  
  4235. This is Beta.17
  4236. -----
  4237.  
  4238. Discovered the QNX version omitted SET SPEED 57600 due to a typo.
  4239. ckcdeb.h 10 Aug 94.
  4240.  
  4241. Added QNX-specific modem-signal code to ttmget() in ckutio.c 5A(149),
  4242. 10 Aug 94.
  4243.  
  4244. Verified that serial comms work ok on QNX: SET LINE, DIAL, CONNECT, file
  4245. transfer, etc.  RTS/CTS seems to work, but I can't tell for sure.
  4246.  
  4247. From Jeff Altman: fullscreen file transfer display now updates the
  4248. Estimated Time Remaining no more than once per second.  ckuusx.c, 10 Aug 94.
  4249.  
  4250. Decided to use the thermometer in the curses display by default after all.
  4251. It kind of grew on me.  ckuus7.c, 10 Aug 94.
  4252.  
  4253. Tried building on Solaris 2.3 with SunPro CC.  It compiles fine but doesn't
  4254. link because ckuus5.o is only about 1/10 of its normal size.  Building it by
  4255. hand, however, via cc -E "CFLAGS=(same ones)..." > foo.c, then cc -c foo.c
  4256. produces a normal object file (!?), which can then be linked with the others,
  4257. producing a normal executable.  Better try this on some other machine...
  4258. (Later, it turns out that Sun cc 2.0.1 does this -- with patches applied,
  4259. not sure which ones, the problem goes away.)
  4260.  
  4261. Changed format of ASCII thermometer slightly, at Eduard Vopicka's suggestion,
  4262. and used new, simplified, unified code for OS/2 and all others, from Ed.
  4263. ckuusx.c, 11 Aug 94.
  4264.  
  4265. Added -DNOSETBUF to QNX makefile entries.  11 Aug 94.
  4266.  
  4267. Made VMS conoll() return a proper return code.  Until now, it always returned
  4268. a success indication, even if it failed, which could wreak havoc when the
  4269. user's job become disconnected in the middle of a TRANSMIT command.  CKVTIO.C
  4270. 5A(073), 11 Aug 94.  Also, changed TRANSMIT command to check conoll's return
  4271. code.
  4272.  
  4273. From Jeff Altman, a fix to ckcpro.w that allows labeled-mode transfers to
  4274. work when a GET command is given.  11 Aug 94.
  4275.  
  4276. Added debugging statements to zopeno() and zclose() in ckmfio.c in an attempt
  4277. to track down the cause for Mac Kermit failures on the newer Macs.  12 Aug 94.
  4278.  
  4279. Added some bulletproofing to the console routines in the VMS version to better
  4280. catch when the job becomes disconnected from its console terminal.  12 Aug 94.
  4281.  
  4282. Added percent efficiency to fullscreen file transfer display summary. ckuusx.c,
  4283. 13 Aug 94.
  4284.  
  4285. Vincent Fatica reported that the SET SPEED command in the Linux version was
  4286. broken.  After three hours of debugging, it finally hit me: s (the speed) is
  4287. now declared of type speed_t in POSIX implementations, and in Linux speed_t is
  4288. typedef unsigned int (POSIX.1 says that speed_t "shall" be unsigned, but in
  4289. other systems I looked at it, was simply "long").  Today's lesson: comparisons
  4290. of unsigned variables with negative constants don't produce the desired
  4291. results -- e.g. don't use -1 as a value for the speed variable, to mean the
  4292. speed is unknown.  It took quite a while to recover from the fallout -- ttvt()
  4293. and ttpkt() needed some head-bashing, etc.  Made and tested many new binaries
  4294. on Linux, SunOS, Solaris, Unixware, IRIX, QNX, HP-UX, etc etc.  ckutio.c
  4295. 5A(150), 13 Aug 94.
  4296.  
  4297. Discovered that REDIRECT works OK in QNX on serial connections, but not on
  4298. TCP/IP connections.
  4299.  
  4300. Fixed "Network type" in fullscreen file transfer display.  ckuusx.c, 13 Aug 94.
  4301.  
  4302. Max Evarts <evarts@columbia.edu> reported the following scenario: MS-DOS
  4303. Kermit is a TCP/IP Kermit server ("set port tcp *"), C-Kermit is the client.
  4304. MS-DOS Kermit side goes away (e.g. user Ctrl-C's and hangs up).  The next
  4305. packet-related command given to C-Kermit makes the C-Kermit process
  4306. immediately and silently disappear.  This happens under at least SunOS,
  4307. NeXTSTEP, and Unixware.  It occurs when ttol() is called to send a packet to
  4308. the server.  ttol() calls upon write(), and write(), rather than returning an
  4309. error, kills the entire process.  To avoid this situation, I devised a cunning
  4310. plan: ttol(), before issuing a write() on a TCP/IP connection, checks to see
  4311. if the connection is still there by issuing a read() for zero bytes.  On SunOS
  4312. the read always succeeds if the connection is active, and fails with
  4313. ECONNRESET if the connection has been dropped.  This allows us to print an
  4314. informative error message, close down our end of the connection, and
  4315. gracefully return a failure code rather than vanishing without a trace.
  4316. However, a quick check of other OS's shows that this technique is not a bit
  4317. portable.  It's OK in NeXTSTEP, but not in Unixware.  So it will be used only
  4318. if CK_READ0 is defined, and presently it is defined only for SUNOS41 and NEXT.
  4319. ckcnet.h, ckutio.c 5A(151), 14 Aug 94.
  4320.  
  4321. This also required some adjustments to ckcpro.w, ckcfn*.c, etc, to ensure that
  4322. failure return codes are propogated up the call stack.  14 Aug 94.
  4323.  
  4324. Added a new command, FORWARD.  It is exactly like GOTO except it searches for
  4325. the given label forward from the current position in the macro or TAKE file,
  4326. rather than rewinding to the beginning first.  This command is purely for
  4327. performance -- executing long scripts from diskettes, for example, can be
  4328. painfully slow if every GOTO must rewind the command file.  (It might have
  4329. been better to fix GOTO to first search forward, then rewind, then search up
  4330. to where the first search started, but that would (a) need a lot of recoding,
  4331. and (b) break a lot of existing scripts.)  This is not an example of a quality
  4332. control structure, and its use is not recommended except where script
  4333. performance is critical.  ckuusr.h, ckuus6.c, ckuusr.c 5A(147), 14 Aug 94.
  4334.  
  4335. Added transaction log entries for incoming file refusal.  Also, when receiving
  4336. files, don't send an error packet if there is an error opening the output file
  4337. -- instead, just refuse the file.  That way, an error on one file does not
  4338. prevent subsequent files from coming.  Added a statistic for files that were
  4339. discarded/rejected/interrupted, so STATISTICS and the transaction log now show
  4340. the number of files that were actually successfully transferred.
  4341. ckcfns.c 5A(118), ckcfn2.c, ckcfn3.c, ckuus4.c, 15 Aug 94.
  4342.  
  4343. Fixed Mac Kermit not to crash when downloading files under System 7.1.x by
  4344. removing the call to PBFlushFile() from ckmfio.c.  And fixed the Mac Kermit
  4345. READ command not to crash.  Tested on Mac IIx with System 6.0.3, Mac LC with
  4346. System 7.0, Centris 660 AV with System 7.1, and a Power Mac 7100/66 with
  4347. System 7.1.2 (the latter two being platforms where downloads would crash
  4348. Kermit or the Mac prior to today), including downloads of 1MB-long files.
  4349. ckmfio.c 5A(084), 16 Aug 94.
  4350.  
  4351. Changed Mac Kermit's version number from 0.99(190) to 0.991(190) so people can
  4352. tell the difference between the one that works and previous ones.  Fixed LOG
  4353. SESSION, LOG TRANSACTIONS, LOG PACKETS, which never worked before.  In the
  4354. case of LOG SESSION, this required consolidation of the Session Log menu
  4355. selection and the LOG SESSION command, which used totally different
  4356. mechanisms.  Changed text files to be TeachText ('ttxt') applications, rather
  4357. than MacWrite ('MACA').  Fixed format of log and other text files to be like
  4358. regular Mac text files.  Removed Mac-specific tlog() and had Mac Kermit use
  4359. the regular one, which works fine.  Fixed file transfer display not to lie
  4360. about "Sending" and "Receiving".  Fixed Mac-specific modules not to mess with
  4361. file type setting behind the back of the protocol modules so downloads would
  4362. take the right data type from the attribute packet.  Added SET FILE TYPE
  4363. MACBINARY to command parser.  Updated the ckmker.bwr file.  ckcfn3.c,
  4364. ckcker.h, ckmfio.c, ckmini.c, ckmsfp.c, ckmusr.c, ckmutl.c, ckuus4.c,
  4365. ckuus7.c, ckuusx.c, 17 Aug 94.
  4366.  
  4367. Made Mac Kermit's file transfer display screen correctly show the transfer
  4368. mode of incoming files.  Made the SET FILE TYPE command immediately affect the
  4369. internal file transfer mode of the Mac modules, so the Settings..File Defaults
  4370. dialog shows the right modes, no matter how they were set.  It works for
  4371. MacBinary too.  ckmscr.c, ckmfio.c, ckmsfp.c, 18 Aug 94.
  4372.  
  4373. Fixed Mac zgtdir() routine to return the actual working directory -- the full
  4374. pathname, not just the current folder name, rather than the disk name, with
  4375. help from Rick Watson <rick@akbar.cc.utexas.edu>.  Previously, it returned
  4376. the name of the current disk.   Zhome() was corrected to return the name of
  4377. the boot disk.  ckmfio.c, 18 Aug 94.
  4378.  
  4379. Discovered why we get "Writing to console not allowed" alert boxes all the
  4380. time: they are caused by perror().  Nobody ever bothered to for perror what
  4381. had been done for printf().  So I did it.  ckcdeb.h, ckmptp.h,
  4382. ckmtio.c 5A(082), 18 Aug 94.
  4383.  
  4384. Changed the CD command for Mac Kermit to allow spaces in the directory name,
  4385. and to use the top-level directory of the boot disk as its default place to
  4386. CD to.  ckuus5.c, 18 Aug 94.
  4387.  
  4388. Added the current directory to Mac Kermit's file transfer display.
  4389. ckmscr.c, 18 Aug 94.
  4390.  
  4391. A couple more fixes to Mac Kermit's file transfer display, so that file
  4392. transfer commands issued at the Mac-Kermit> prompt would be reflected
  4393. correctly (e.g. it would not say "Receiving" if it was sending).  ckuusr.c
  4394. 5A(148), 19 Aug 94.
  4395.  
  4396. Added a DIRECTORY command to Mac Kermit.  It shows regular files and their
  4397. sizes, but does not show directory files.  ckuusr.c, ckuus6.c, 19 Aug 94.
  4398.  
  4399. Removed SET FILE COLLISION DISCARD from Mac Kermit because it crashes the
  4400. program.  Removed { APPEND, NEW } options from Mac Kermit LOG command because
  4401. append operations don't work.  ckuus4.c, ckuus7.c, 19 Aug 94.
  4402.  
  4403. Added a new command-parsing function, cmtxtnq(), which is just like cmtxt()
  4404. except it treats question mark and backslash like ordinary text characters.
  4405. ckucmd.c 5A(063), 19 Aug 94.  (Later removed)
  4406.  
  4407. Changed the ASK and ASKQ commands to use cmtxtnq() rather than cmtxt(),
  4408. so script-driven interactive dialogs can be carried on with unsuspecting
  4409. users without scaring them if they type a question mark.  This is also a good
  4410. idea for situations like "ask \%x \27Z", in which the terminal might send back
  4411. a string containing question marks, like ESC [ ? 1 c, which would otherwise
  4412. cause an infinite round of "getty babble".  It's also handy for prompting
  4413. users for DOS-like filenames, such as C:\TEMP\OOFA.TXT, which could not
  4414. otherwise be entered except by making the users double each backslash.  See
  4415. ckcker.upd for more about this.  ckuus6.c, 19 Aug 94.
  4416.  
  4417. Added CHECK FORWARD to allow .INI & other files to select GOTO or FORWARD.
  4418. ckuusr.c 5A(149), 20 Aug 94.
  4419.  
  4420. Jeff Altman had changed CKERMIT.INI to use FORWARD instead of GOTO, but this
  4421. was a rather drastic change that would prevent it from working at all with
  4422. last week's or earlier Kermit versions, so the new CKERMIT.INI does a CHECK
  4423. FORWARD first to see if this is OK.  20 Aug 94.
  4424.  
  4425. VMS 6.0 (or 6.1) changed its "terminal inquire" feature.  Old versions of VMS
  4426. sent ESC Z first, then ESC [ c if the ESC Z response timed out.  The new
  4427. version reverses this, and then also sends a "resize" sequence.  I needed to
  4428. change the VMSLOGIN macro to account for both methods, but found it was
  4429. virtually impossible to put an MINPUT command into a macro because of the
  4430. comma that is used to separate the MINPUT arguments.  Luckily, some time ago
  4431. James Sturdevant had sent in code to let space, rather than comma, be the
  4432. separator, with {...} used for grouping items that have imbedded spaces.  This
  4433. also required a change at the deepest level of the command parser (the
  4434. gtword() function), which is something we always wanted -- the ability to
  4435. group words where they could not be grouped before.  E.g. now we can do:
  4436.  
  4437.   if equal \%a {This is a bunch of words} echo It's equal.
  4438.  
  4439. Previously, this would break on the space after "This" and give a parse error.
  4440. The new code was tested with all the various command-testing suites
  4441. (ckermit.ini, ckermod.ini, cketest.ini, ckedemo.ini, etc) and no ill effects
  4442. were noted.  ckucmd.c 5A(064), ckuusr.c 5A(149), 20 Aug 94.
  4443.  
  4444. More about this from James's notes:
  4445.  
  4446. I did "white box" testing, looking for places in the code where cmfld was
  4447. called and then testing them.  The modules are
  4448.  
  4449.     ckuusr  array names
  4450.             labels  (A label :{This label} is accepted
  4451.                      but GOTO won't find it)
  4452.             minput (now)
  4453.     ckuus5  macro names
  4454.              This works:Define {Space name} The name has a space
  4455.                         echo \m({Space name})
  4456.     ckuus6  variable names and file names
  4457.     ckuus7  user id and password.
  4458.             IP name/number
  4459.             TCP service name/number
  4460.     calls to cmfld or gtword in ckucmd:
  4461.             cmfld cmnum cmofi cmifi cmdir cmtxt cmkey
  4462.  
  4463. New VMSLOGIN macro handles old and new terminal inquiry sequences.
  4464. CKERMIT.INI, 20 Aug 94.
  4465.  
  4466. Added code from Jeff Altman to (a) display a weighted CPS rate in the
  4467. fullscreen file transfer display, rather than a flat average, with a weight
  4468. of 1/4 going to the most recent second, and 3/4 going to past history.  The
  4469. final CPS is still calculated the normal way -- (total file chars / secs).
  4470. And also from Jeff, code to allow the file-transfer display screen to be
  4471. refreshed in OS/2.  ckuusx.c, 20 Aug 94.
  4472.  
  4473. Added SET COMMAND QUOTING { ON, OFF }.  ON means normal behavior.  OFF (new)
  4474. means to treat \ and ? as ordinary text characters during input to the command
  4475. parser.  The main purpose of this is allow a script writer to confer the same
  4476. behavior on other commands as was given to ASK a couple days ago, or to let
  4477. the experienced user turn off backslash processing to make it easier to deal
  4478. with DOS or OS/2 filesnames, e.g.:
  4479.  
  4480.   set command quoting off
  4481.   send foo.bar c:\foo\bar\baz\oofa.txt
  4482.   get d:\files\???.?
  4483.   set command quoting on
  4484.  
  4485. instead of:
  4486.  
  4487.   send foo.bar c:\\foo\\bar\\baz\\oofa.txt
  4488.   get d:\\files\\\?\?\?.\?
  4489.  
  4490. Or in OS/2 itself:
  4491.  
  4492.   set command quoting off
  4493.   cd \
  4494.   set port \\server\modem
  4495.   directory e:\pictures\pic???.gif
  4496.   set command quoting on
  4497.  
  4498. rather than:
  4499.  
  4500.   cd \\
  4501.   set port \\\\server\\modem
  4502.   directory e:\\pictures\\pic\?\?\?.gif
  4503.   set command quoting on
  4504.  
  4505. Use with caution.  ckucmd.c, ckuus6.c, 20 Aug 94.
  4506.  
  4507. In VMS version, make congm() get terminal type, etc, to remove annoying
  4508. "Sorry, terminal type not supported" messages when running from a .COM file,
  4509. SPAWN'd, etc.  From James Sturdevant.  CKVTIO.C 5A(075), 20 Aug 94.
  4510.  
  4511. Added #include "ckcsym.h" to all modules that didn't already have it, and
  4512. added dependencies on it to all rules in the makefile.  From Mike Long.
  4513. 20 Aug 94.
  4514.  
  4515. Fixed up "kermit -h" help screen to include recently added options, and to
  4516. report bad options by saying what they were.  ckuus[2y].c, 20 Aug 94.
  4517.  
  4518. Reorganized the ckcker.upd file.  21 Aug 94.
  4519.  
  4520. This is Beta.18
  4521. -----
  4522.  
  4523. Removed a prototype for a static function from ckcnet.h.  Today's lesson:
  4524. never use the word "static" in a header file, and certainly not in one that is
  4525. shared by more than one module.  22 Aug 94.
  4526.  
  4527. Fixed the VMS C-Kermit makefile to build correctly with MultiNet on the 
  4528. Alpha, thanks to a suggestion from Steve Smail at Wollongong:
  4529.  
  4530.   "After I generated a link map, I realized that the link is pulling in the
  4531.   DEC C/UCX based socket routines, not those provided by PathWay.  These
  4532.   routines return the DEC C version of a file descriptor, not a VMS device
  4533.   channel; the QIO system service needs the channel, and is rejecting that
  4534.   parameter as invalid.  I suspect the same issue occurs when building KERMIT
  4535.   against TGV's product (though I have no way to test this).
  4536.  
  4537.   "The DEC C compiler will prepend the string DECC$ to the name of most
  4538.   "known" C library entries.  For example, references to fopen() become
  4539.   decc$fopen(), socket() to decc$socket(), etc ... at link time, DEC's entries
  4540.   are used, not those provided by PathWay in the TWGLIB.OLB object library.
  4541.  
  4542.   "We typically get around this issue by making use of the DEC C compiler
  4543.   /PREFIX_LIBRARY_ENTRIES qualifier to request that the compiler not prepend
  4544.   DECC$ to our socket library routines."
  4545.  
  4546. Tested successfully on VMS 1.5 and 6.1 on Alphas, and VMS 5.3 on a VAX.
  4547. The Alpha VMS 1.5 version runs fine on 6.1.  23 Aug 94.
  4548.  
  4549. Converted OS/2 C-Kermit update file from plain text to INFO (VIEW) format.
  4550. 25-29 Aug 94.
  4551.  
  4552. Exchanged "thermometer" definitions between ckuus7.c and ckuusx.c to allow
  4553. successful linking with -DCK_CURSES and -DNOICP.  29 Aug 94.
  4554.  
  4555. Added SIGPIPE handling to ckudia.c, which is needed to catch the case where
  4556. a connection to a TELNET modem server is broken while dialing (previously, as
  4557. reported by Ray Moody, Kermit would just disappear when this happened).
  4558. 29 Aug 94.
  4559.  
  4560. Minor corrections to makefile for SCO UNIX 3.2v4 & ODT 3.0.  Minor change to
  4561. ckutio.c to allow cross compilation under UNIX for Xenix.  From William Bader.
  4562. makefile, ckutio.c 5A(152), 30 Aug 94.
  4563.  
  4564. Ray Moody found some other places (SCRIPT, INPUT, etc etc) where remotely
  4565. broken TCP/IP connections could result in the Kermit process vanishing (in
  4566. UNIX, not sure about others).  He suggested setting SIGPIPE to SIG_IGN in
  4567. ttol() & then restoring it, but that only plugs the hole in one place.
  4568. Instead, I added signal(SIGPIPE,SIG_IGN) to sysinit(), so SIGPIPE is ignored
  4569. the whole time Kermit is running, and removed all other SIGPIPE-related code
  4570. from ckudia.c, ckutio.c, and ckucon.c, as well as the CK_READ0 business from a
  4571. couple weeks ago.  Tested successfully on SunOS by SET HOST to MS-DOS Kermit
  4572. that had been told to "set port tcp *", and then issuing HANGUP from MS-DOS
  4573. Kermit while C-Kermit is transferring files, dialing, in CONNECT mode, running
  4574. a script program, etc etc.  30 Aug 94.
  4575.  
  4576. TMPDIR and RESEND capabilities added to Stratus VOS Kermit by David Lane.
  4577. Changes merged into ckcdeb.h, ckuus6.c, cklfio.c 5A(003), 30 Aug 94.
  4578.  
  4579. Fixed server to encode response to REMOTE PWD, noticed by David Lane (because
  4580. VOS directory names include #).  ckcpro.w 5A(070), 30 Aug 94.
  4581.  
  4582. Changes to OS/2 install script from Jeff Altman, so it now correctly updates
  4583. the desktop icon, even if an old one was already there.  Also a minor change
  4584. to ckotio.c to recognize CKERMIT as a synonym for CKCOMMAND from REXX scripts.
  4585. 30 Aug 94.
  4586.  
  4587. Fixed OS/2 C-Kermit to allow SET { SEND, RECEIVE } START-OF-PACKET to be
  4588. a printable character.  ckuus7.c, 30 Aug 94.
  4589.  
  4590. This is Beta.19, 30 Aug 94.
  4591. -----
  4592.  
  4593. Fixed editing of several SET TERMINAL commands (WRAP, ANSWERBACK) -- OS/2
  4594. only.  31 Aug 94.
  4595.  
  4596. Cast long arguments to shocps() to int.  ckuusx.c, 31 Aug 94.
  4597.  
  4598. Updates to CKVKER.MMS from Mike Freeman (CMU/Tek, Mattgoat MMK support).
  4599. 1 Sep 94.
  4600.  
  4601. From Eduard Vopicka, 1 Sep 94:
  4602.  
  4603. (1) Solution to previously mentioned ftime redefinition problem in
  4604.     ckufio.c: ODT30 has prototype for ftime() in header file, so always
  4605.     use it, no matter what it is. Just as mentioned in the original
  4606.     comments. Tested on both XPG4 and pre-XPG4 version of SCO 3.2v4.2.
  4607.  
  4608. (2) -DCK_WREFRESH can be safely added to the sco32v4net makefile entry.
  4609.  
  4610. (3) Hot keys (X to cancel file etc) do not work during file transfer!!!
  4611.     This is certainly serious problem, but fortunately, the fix is fairly
  4612.     easy (namely that FIONREAD is defined, but doesn't do anything and so
  4613.     needs to be undefined after #including <sys/socket.h>).
  4614.  
  4615. From Mike Long <mike.long@analog.com>, Analog Devices Inc, Norwood MA, USA:
  4616.  
  4617.   These patches modify Kermit to use the 4.4BSD seteuid() and setegid()
  4618.   functions.  You want to use sete[ug]id() on 4.4-based systems because
  4619.   setreuid() is a compatibility function that is implemented on top of them,
  4620.   and it doesn't behave exactly the same.  Also, the system I use (NetBSD)
  4621.   sends an obnoxious warning to the console if setreuid() is used.  I've been
  4622.   using these patches for the past month without any problems.
  4623.   ckutio.c, 1 Sep 94.
  4624.  
  4625. Added CK_POLL to MIPS makefile entries -- not only does it work, it also
  4626. eliminates core dumps in msleep() (thanks to Bob Bolio (sp?) at Santa Cruz
  4627. Metro Transit for testing this out over the phone).  makefile, 1 Sep 94.
  4628.  
  4629. Added a call to con_cancel() to syscleanup() in ckvtio.c in hopes of curing
  4630. problems with VMS C-Kermit leaving zombie processes behind after being
  4631. disconnected and/or interrupted.  ckvtio.c 5A(076) 2 Sep 94.
  4632.  
  4633. New code and makefile for OS/2 C-Kermit to support FTP Software 32-bit PC/TCP
  4634. from Jeff Altman.  ckoker.mak, ..., ckonet.c 5A(030) 2 Sep 94.
  4635.  
  4636. Added code to allow spaces in input and output file names (cmifi, cmofi) and
  4637. directory names (cmdir) when either expressed as \32 or when the name is
  4638. enclosed in braces.  It works in commands like CD, SEND, and RECEIVE, which
  4639. are executed by Kermit itself, but an additional level of quoting might still
  4640. be needed if the result is being passed to (say) a UNIX shell, e.g.
  4641. DIRECTORY {"a b"} (the braces are for Kermit, the doublequotes are for UNIX).
  4642. Note that quoting space with \ still does not work (e.g. DIRECTORY a\ b), nor
  4643. has it ever.  ckucmd.c 5A(065), 2 Sep 94.
  4644.  
  4645. Added code to display which TCP/IP DLL was loaded to OS/2 version of SHOW NET.
  4646. ckuus4.c, ckonet.c 5A(031), 3 Sep 94.
  4647.  
  4648. New code and makefile for OS/2 C-Kermit to support FTP Software 16-bit PC/TCP
  4649. from Jeff Altman.  ckoker.mak, ..., ckonet.c 5A(031) 2 Sep 94.  A new set of
  4650. DLLs now goes on the OS/2 C-Kermit disk, and is handled by the installation
  4651. procedure, and the appropriate one is loaded automatically at startup.
  4652.  
  4653. Fixed ASK and ASKQ to not save their responses in the command-recall buffer.
  4654. ckuus6.c ckucmd.c, 3 Sep 94.
  4655.  
  4656. This is Beta.20
  4657. -----
  4658.  
  4659. When sending a file group in local mode and some of the files are rejected
  4660. (size, date, name, whatever), the file transfer display thermometer would go
  4661. nuts.  Fixed in ckuusx.c, 4 Sep 94.
  4662.  
  4663. Added \v(modem) (current SET MODEM value) and \v(evaluate) (result of most
  4664. recent EVALUATE command).  ckuusr.h, ckuus4.c, ckuusr.c 5A(150), 5 Sep 94.
  4665.  
  4666. Updates to OS/2 .inf file, make file, install script, external protocol
  4667. scripts, etc, from Jeff Altman.  Added a new external protocol script for
  4668. CEXYZ/2 from Jim Reisert.  5 Sep 94.
  4669.  
  4670. Make DIAL module echo commands sent to the modem if DIAL DISPLAY is ON and
  4671. DUPLEX is set to HALF.  Also make DIAL module not treat "964" response from
  4672. Telebit model-number inquiry as if it were a "4" (ERROR).  Reported by Simon
  4673. Casady <cap@hces.com>.  ckudia.c 5A(061) 5 Sep 94.
  4674.  
  4675. This is Beta.21
  4676. -----
  4677.  
  4678. Fixed DECREQTPARM report in OS/2 VT220 emulator to correctly indicate 7 or
  4679. 8 bit mode, taking TERMINAL BYTESIZE setting into account.  Noticed by
  4680. Andrew Orndorff <aorndorff@nhtsa.dot.gov>.  ckocon.c 5A(153), 6 Sep 94.
  4681.  
  4682. Added \N to OUTPUT string to send a NUL.  Prior to this, there was no way
  4683. to send a NUL from a script program.  ckuusr.c 5A(151), 9 Sep 94.
  4684.  
  4685. Various #ifdef cleanups from Mike Long, ckuus*.c, 9 Sep 94.
  4686.  
  4687. Changes from Jeff Altman to allow coexistence of OS/2 C-Kermit 5A(190) with
  4688. the "fake TCPIPDLL" that was distributed with 5A(189).  ckonet.c 5A(032),
  4689. 9 Sep 94.  Also, changes to the makefile, cko*.def files, etc.
  4690.  
  4691. This is Beta.22.
  4692. -----
  4693.  
  4694. A new OS/2 icon.  Also in OS/2, allow Named Pipe handles on the server to be
  4695. inherited by child processes (such as P.EXE).  Jeff Altman.  ckonet.c 5A(033),
  4696. 11 Sep 94.
  4697.  
  4698. Added SET TELNET NEWLINE-MODE RAW to send CR as just a bare CR, in addition to
  4699. ON (send CR as CRLF) and OFF (send CR and CR-NUL), for use when talking to
  4700. non-TELNET servers that do not react poorly to both CRLF and CR-NUL (such as
  4701. certain rlogin-based modem servers).  Suggested (most recently) by Kerry Schwab
  4702. <kschwab@healthcare.com>.  ckcnet.h (symbols), ckcnet.c (default), ckuus3.c
  4703. (SET TELNET command), ckuus4.c (OUTPUT command), ckcfn2.c (packets), ckuusr.c
  4704. 5A(152), ckucon.c (CONNECT) 5A(073), 15 Sep 94.
  4705.  
  4706. Also: ckvcon.c 5A(036), ckocon.c 5A(154), ckdcon.c 5A(046), cklcon.c 5A(005),
  4707. 15 Sep 94.
  4708.  
  4709. Bill Chen <chen@columbia.edu> noticed that (a) WRITE-LINE SESSION-LOG added
  4710. material to the session log out of sequence, and (b) this command would core
  4711. dump if given after opening, using, and closing the session log.  The problem
  4712. was that zsoutl() was not coded in parallel with zsout() in ckufio.c.  The
  4713. latter (and also zchout()) used unbuffered i/o for the session log, but
  4714. buffered i/o elsewhere.  Also, zsoutl() was not checking the file descriptor
  4715. before writing to it.  ckufio.c 5A(097) 15 Sep 94.
  4716.  
  4717. From Mike Long <mike.long@analog.com>: Fix a backwards #ifdef regarding IEXTEN
  4718. in UNIX ttpkt(): ckutio.c 5A(154).  Fix an incorrect #ifdef for selecting the
  4719. SHOW NETWORK command, ckuusr.c.  Plug a hole in the decode() logic in which a
  4720. variable (a7) could be used when not initialized, ckcfns.c 5A(119), 15 Sep 94.
  4721. Also remove double inclusion of ckcsym.h from ckcmai.c.
  4722.  
  4723. Put contents of UNIX ttgwsiz() within #ifndef NONAWS, because evidently some
  4724. systems (AT&T 3B2) define TIOCGWINSZ in their header files but do not define
  4725. the associated winsize struct, which causes compilation of ckutio.c to fail.
  4726. ckutio.c 5A(154), 15 Sep 94.
  4727.  
  4728. New Amiga ckitio.c from Steve Walton, fixes timeouts, adds modem signal
  4729. support.  16 Sep 94.
  4730.  
  4731. Adapting SUNX25 support to Solaris 2.3 + SunLink X.25 8.0, 16 Sep 94....  Had
  4732. to change ckcnet.h to allow SUNX25 under SOLARIS as well as under SunOS.  Had
  4733. to remove #includes for <sys/mbuf.h> and <sys/domain.h> since they don't exist
  4734. under Solaris.  Added #include for <sys/sockio.h>.  Fixed bad call to
  4735. x25reset() in ckucon.c.  The X.25 get/set facilities function had totally
  4736. changed (e.g. reverse-charge, closed user group, etc).  Also, various
  4737. ANSIfications were needed.  All of this taken care of in ckcnet.h and ckcnet.c
  4738. 5A(037).  New makefile entry, solaris2x25, added for this.  Compiles and links
  4739. OK, but doesn't work: connect() complains that "address family and protocol
  4740. family do not agree".  There are evidently some additional differences between
  4741. the old and new versions of SunLink that I haven't figured out yet.  Sample
  4742. programs supplied with new SunLink are still the old ones and don't work.
  4743. Needs more work, which will have to wait till I get documentation & access.
  4744.  
  4745. Fix for SET TELNET TERMINAL-TYPE for OS/2 from Jeff Altman.  ckcnet.c 5A(038),
  4746. 17 Sep 94.
  4747.  
  4748. Discovered that C-Kermit, when sending a file and the file was rejected
  4749. because of size, type, etc, which means that the transfer failed, still
  4750. reported success, when it should have failed.  In general, a file transfer
  4751. should fail whenever an attribute rejection occurs EXCEPT if the rejection
  4752. indicates that the file did not need to be transferred because it was already
  4753. there, namely if the reason was "date" (#) (SET FILE COLLISION UPDATE) or name
  4754. (SET FILE COLLISION DISCARD / NO-SUPERSEDE).  A new attribute tag was added to
  4755. indicate the latter case: "?" means "name", but can only be used in attribute
  4756. replies, not in A-packets themselves (because A packets are not encoded, but
  4757. filenames might have to be).  ckcfn*.c 5A(120), ckcpro.w 5A(071), 17 Sep 94.
  4758.  
  4759. The treatment by HP-UX 10.00 of UUCP lockfiles turns out to be so different
  4760. from all the others that I had to write an entire custom version of ttlock()
  4761. for it, allowing for (a) four or more possible different names for the same
  4762. dialout device, and (b) creation of two lockfile names rather than just one
  4763. (sometimes), plus the cleaning up of any number of stale lockfiles, plus
  4764. allowances for symbolic links to device names, plus recovery from all sorts
  4765. of errors, etc.  An all-day+night project.  ckutio.c 5A(155), 17 Sep 94.
  4766.  
  4767. Added a message when C-Kermit interrupted during initialization file or
  4768. command-line processing to let user know why it is disappearing.  Suggested
  4769. by Eduard Vopicka.  ckcmai.c 5A(190), 18 Sep 94.
  4770.  
  4771. Some fixes to yesterday's work on file transfer success/failure.  ckcfn*.c,
  4772. ckcpro.w.
  4773.  
  4774. Made -h command-line option imply -Y, i.e. if all they want is the command-line
  4775. help screen, don't bother reading in the init file, since Kermit will exit
  4776. anyway as soon as the help screen is printed.  ckuus4.c, 18 Sep 94.
  4777.  
  4778. Fixed a bug in command recall reported by Clifford L. Pelletier
  4779. <PELLETIER@CCSUA.CTSTATEU.EDU>, with help from Jeff Altman.  ckucmd.c 5A(066),
  4780. 18 Sep 94.
  4781.  
  4782. Fixed the "more?" prompter to be smart enough not to prompt if it knows
  4783. it's on the last line of the text.  ckuus2.c, 18 Sep 94.
  4784.  
  4785. This is Beta.23.
  4786. -----
  4787.  
  4788. A couple minor corrections to #ifdefs based on compiling it in dozens of
  4789. different environments...  Added a new makefile entry for LynxOS 2.1, from
  4790. Michael Brennen <mbrennen@maverick.intecom.com>.  19 Sep 94.
  4791.  
  4792. Added -DCK_NEWTERM to dynixptx20c makefile entry to fix terminal-mode problems
  4793. reported by Tom Kloos at Sequent.  Also, a correction to a typo in ckuusx.c
  4794. from Tom.  20 Sep 94.
  4795.  
  4796. New Stratus VOS files from David Lane: Automatic recovery from incomplete
  4797. packet sends, updated documentation, simulated "curses" support, new binaries
  4798. and updated docs.  20 Sep 94.
  4799.  
  4800. Fixes to 4.4BSD priv_xxx() package from John Kohl <jtk@kolvir.blrc.ma.us>.
  4801. ckutio.c 5A(156).  Also, John updated the ckuuid program to test for 4.4BSD
  4802. semantics.
  4803.  
  4804. From Mike Long: "4.4BSD doesn't have the lockf() function.  I verified this by
  4805. checking the original 4.4BSD distribution that freebsd.cdrom.com has up for
  4806. FTP.  So the following is probably appropriate (also fixes an unterminated
  4807. comment that gcc -Wall found)" -- patches to ckutio.c, 21 Sep 94.
  4808.  
  4809. From Steven Schultz <sms@WLV.IIPO.GTEGSC.COM>: BSDI does not use string-format
  4810. PIDs in lockfiles.  ckutio.c 5A(157), 22 Sep 94.
  4811.  
  4812. Changed ASK and ASKQ to take "comments" literally.  ckucmd.c, 26 Sep 94.
  4813.  
  4814. Increased max wildcard matches from 500 to 4096 in VMS C-Kermit,
  4815. ckvfio.c 5A(114), 29 Sep 94.
  4816.  
  4817. Fixed a prototype in ckcnet.c so SunLink X.25 code would compile again under
  4818. SunOS 4.1.x and old (pre-8.00, not sure exactly which version) SunLink.
  4819. Compiles, links, runs, and even works -- CONNECT, file transfer (7 and 8 bit),
  4820. various SET and SHOW commands all tested successfully.  ckcnet.c 5A(039),
  4821. 30 Sep 94.
  4822.  
  4823. Numerous improvements to #ifdefs (esp NOLOCAL and NOSERVER) and removal of
  4824. declarations for unused variables, from Mike Long.  Many modules.  1 Oct 94.
  4825.  
  4826. Many other similar cleanups in other modules.
  4827.  
  4828. Increased OS/2 C-Kermit's HANGUP interval for dropping DTR from 1/2 sec to
  4829. one full second, suggested by Ric Anderson.  1 Oct 94.
  4830.  
  4831. Fixed OS/2 C-Kermit's display of TELNET TERMINAL-TYPE.  ckuus4.c, 1 Oct 94.
  4832.  
  4833. Added an #ifdef to enable REDIRECT support for Sony News (like NeXT) from
  4834. Bernard Chen <bern@CS.UCLA.EDU>, ckutio.c 5A(158) 1 Oct 94.
  4835.  
  4836. Discovered that somehow in the past month I seem to have destroyed the
  4837. much-touted benefits of SET COMMAND QUOTING OFF, e.g. for entering DOS
  4838. filespecs in their natural form.  The code for this command had a part of it
  4839. commented out (the part that makes the xxstring function pointer either point
  4840. to the real string processing function, zzstring(), or else NULL), so I
  4841. uncommented it and that fixed everything right up.  I can't remember why I
  4842. commented it out previously, so that's a little worrisome...
  4843. ckuus3.c, 1 Oct 94.
  4844.  
  4845. Jeff Altman noticed that MINPUT 30 {\13\10$ } ... ... didn't work.  Yup,
  4846. setatm() was breaking on the CR.  I changed SETATM to accept any characters
  4847. at all that are inside braces.  ckucmd.c 5A(067), 2 Oct 94.
  4848.  
  4849. Due to the accumulated weight of questions and complaints about the often
  4850. wildly fluctuating CPS figure in the fullscreen file transfer display, I
  4851. #ifdef'd out the weighted calculation and restored the simple, flat average.
  4852. The 1/4 weighted CPS can be put back with -DCPS_WEIGHTED; Vince Fatica's
  4853. formula can substituted by adding -DCPS_VINCE.  shocps(), ckuusx.c, 2 Oct 94.
  4854.  
  4855. Added SET CMD and SHOW CMD as invisible synonyms for SET COMMAND and SHOW
  4856. COMMAND.  ckuusr.c, 2 Oct 94.
  4857.  
  4858. This is Beta.24.
  4859. -----
  4860. Updated MINPUT help message (spaces, not commas, separate items).
  4861. ckuus2.c, 4 Oct 94.
  4862.  
  4863. Fixed a type in the dynixptx20c makefile entry, reported by Tom Kloos.
  4864. 4 Oct 94.
  4865.  
  4866. Added 57600 bps for BSDI.  makefile, 4 Oct 94.
  4867.  
  4868. Added automatic recognition of Telebit Qblazer Plus to dial module and plugged
  4869. a nearby possibly null-pointer derefencing, thanks to Brian Utterback
  4870. <blu@jericho.mc.com>, ckudia.c 5A(062), 4 Oct 94.
  4871.  
  4872. William Bader noticed that if C-Kermit received (for example) "apc ls -l",
  4873. and he then Ctrl-C'd out of "ls", that PUSH, !, RUN, etc, did not work any
  4874. more.  Fixed in ckuusx.c.  4 Oct 94.
  4875.  
  4876. Eduard Vopicka said to change from using rdchk() to poll() in SCO UNIX
  4877. 3.2v4, so I did -- he's the expert.  makefile, 4 Oct 94.
  4878.  
  4879. Fixed a malloc/free problem that could result in a segmentation fault when
  4880. INPUT and MINPUT were called alternately and repeatedly, noticed by
  4881. Corey Minyard <minyard@wf-rch.cirr.com>.  ckuusr.c 5A(156), 4 Oct 94.
  4882.  
  4883. Shuffled the 2.10/2.11 BSD overlays to make them all fit within their
  4884. alloted sizes.  ckubs2.mak, 4 Oct 94.
  4885.  
  4886. Changed UNIX congm() not give an error message and fail if it can't
  4887. open "/dev/tty", but instead to just go ahead and use 0 as the file
  4888. descriptor.  This is for cases where "/dev/tty" does not exist, i.e. when
  4889. there is no controlling terminal, e.g. when launched from a daemon.
  4890. ckutio.c 5A(159) 4 Oct 94.
  4891.  
  4892. Revised the makefile entry for Solaris 2.3 / SunLink X.25.
  4893.  
  4894. Added a makefile entry for IBM AIX 4.1 and 4.1.1.
  4895.  
  4896. Added TELNET CR handling to DIAL and SCRIPT command execution.
  4897. ckudia.c 5A(063) and ckuscr.c 5A(023).
  4898.  
  4899. From Mark Berryman: RESEND support for VMS.  ckvfio.c 5A(115) 4 Oct 94,
  4900. ckcfn3.c, ckcdeb.h.  zfseek() routine added to ckvfio.c.  It is strictly
  4901. block-oriented, since all binary file transfers in VMS are also block-oriented.
  4902. Later, fix resending to stop at FFB. ckvfio.c 5A(116).
  4903.  
  4904. Fix for OS/2 C-Kermit DECnet support from Jeff A.  ckonet.c 5A(035), 4 Oct 94.
  4905.  
  4906. Fix for OS/2 C-Kermit DECnet file transfer.  ckonet.c 5A(036), 4 Oct 94.
  4907.  
  4908. Removed the word "Beta" from the version herald.  ckcmai.c 5A(190), 4 Oct 94.
  4909.  
  4910. ******************************
  4911.  
  4912. ------------------------------
  4913. C-KERMIT 5A(188)-(190) TEST RESULTS
  4914.  
  4915. Systems where C-Kermit 5A was successfully compiled, linked, and executed.
  4916. Dates of October 4, 1994, or later apply the final release of edit 190.
  4917. June 1994 or later apply to edit 190 while in development; missing dates are
  4918. prior to November 1992, during the version 5A development cycle, 1990-1992,
  4919. others are as follows:
  4920.  
  4921. Chonology:
  4922.  5A(188) - 23 November 1992
  4923.  5A(189) - 30 June 1993
  4924.  5A(190) - Entered Beta June 1994, released 4 October 94.
  4925.  
  4926. Notes:
  4927.  ISC = Interactive Systems Corporation (a division of SunSoft)
  4928.  JLE = Japanese Language Environment (for SunOS, by Nihon Sun)
  4929.  ODT = SCO Open Desk Top
  4930.  ODT 1.1 = SCO UNIX/386 3.2v2 plus SCO TCP/IP
  4931.  ODT 2.0 = SCO UNIX/386 3.2v4 plus SCO TCP/IP
  4932.  ODT 3.0 = SCO UNIX/386 3.2v4.2 plus SCO TCP/IP + X11R5 + new DOSmerge
  4933.  Solaris 1.01 = SunOS 4.1.2
  4934.  Solaris 1.1  = SunOS 4.1.3
  4935.  Solaris 2.x  = SunOS 5.x (x = 0..3)
  4936.  gcc  = GNU C compiler
  4937.  apcc = Apogee C compiler for Solaris 2.x
  4938.  UCX  = DEC TCP/IP Services for (Open)VMS
  4939.  VMS  = VMS or OpenVMS
  4940.  
  4941. Non-UNIX versions:
  4942.  
  4943. MACHINE                   OS NAME     OS VERSION  BUILD FILE      DATE     SIZE
  4944. Apollo DN-570             Aegis              9.7  aegis           930405 552742
  4945. Apple Macintosh LC        Mac OS             7.0  ckmker.mak      940819 423117
  4946. Apple Macintosh II        Mac OS            6.03  ckmker.mak      940819 423117
  4947. Apple Centris 660 AV      Mac OS             7.1  ckmker.mak      940819 423117
  4948. Apple Power Mac 7100/66   Mac OS           7.1.2  ckmker.mak      940819 423117
  4949. Atari ST                  GEMDOS             1.0  cksker.mak      930701 292454
  4950. Atari ST                  GEMDOS             1.0  cksker.mak/min  930701  85281
  4951. Commodore Amiga           Amiga OS           2.1  ckiker.mak      941008 367628
  4952. -----
  4953. Data General MV2500       AOS/VS II      2.20.73  ckdker.mak      941006 677888
  4954. Data General MV ???       AOS/VS II         3.00  ckdker.mak      940712      ?
  4955. Data General MV7800XP     AOS/VS            7.67  ckdker.mak      930630 612352
  4956. -----
  4957. DEC Alpha AXP             VMS / no TCP       1.5  ckvker.mak      941026 833536
  4958. DEC Alpha AXP 3000-800    VMS / no TCP       6.1  ckvker.mak      941026 813056
  4959. DEC Alpha AXP             VMS / TGV          1.5  ckvker.mak      940026 868352
  4960. DEC Alpha AXP 3000-800    VMS / TGV 3.3      6.1  ckvker.mak      941026 847360
  4961. DEC Alpha AXP             VMS / UCX 3.1      1.5  ckvker.mak      941101 871936
  4962. DEC Alpha AXP 3000-300    VMS / TCPware      1.5  ckvker.mak      941027 637952
  4963. DECpc AXP 150 (2000)      VMS / TCPware      6.1  ckvker.mak      940627 820224
  4964. DEC Alpha AXP 3000-800S   VMS / Pathway1.1.2 6.1  ckvker.mak      941101 950784
  4965. DEC VAX model unknown     VMS / no_net       4.5  ckvold.com      941101 467456
  4966. DEC VAXstation 3100/38    VMS / no_net     5.5-2  ckvker.mak      941026 604160
  4967. DEC VAXstation 3100/38    VMS / UCX 2.0    5.5-2  ckvker.mak      941026 637952
  4968. DEC MicroVAX 3100/10      VMS / UCX 3.1      6.1  ckvold.com      940919 637952
  4969. DEC MicroVAX-II           VMS / TGV 3.1      5.3  ckvker.mak      941026 669696
  4970. DEC VAX 8650              VMS / TGV 3.3A   5.5-2  ckvker.mak      940626 645632
  4971. DEC VAX, model unknown    VMS / CMU/Tek    5.5-2  ckvker.mak      940623 586752
  4972. DEC VAXstation 4000/90    VMS / TCPware    5.5-2  ckvker.mak      941027 870400
  4973. DEC VAX 4000/300          VMS / Pathway1.1 5.5-2  ckvker.mak      941101 645632
  4974. -----
  4975. IBM PS/2                  OS/2 (16-bit)      1.3  ckoker.mak/msc         377237
  4976. IBM PS/2-70               OS/2 (16-bit)     2.00  ckoker.mak/msc         377237
  4977. IBM PS/2-70               OS/2 (32-bit)     2.00  ckoker.mak/ibm         458485
  4978. IBM PS/VP+IBM TCP/IP      OS/2 (16-bit)     2.10  ckoker.mak/msc  941006 499061
  4979. IBM PS/VP+IBM TCP/IP      OS/2 (32-bit)     2.10  ckoker.mak/ibm  941006 680014
  4980. PC 486 + Essex TCP/IP     OS/2 (16-bit)     2.10  ckoker.mak/msc  940824      ?
  4981. PC 486 + Essex TCP/IP     OS/2 (32-bit)     2.10  ckoker.mak/msc  940824 499987
  4982. PC 486 + FTP PC/TCP       OS/2 (32-bit)     2.10  ckoker.mak/msc  940902 499987
  4983. PC 486 + FTP PC/TCP       OS/2 (16-bit)     2.10  ckoker.mak/msc  940910      ?
  4984. PC 486 + IP-Switch TC/TCP OS/2 (32-bit)     2.10  ckoker.mak/msc  940916 499987
  4985. IBM PS/2-77 + SIO.SYS     OS/2 (32-bit)     2.10  ckoker.mak/ibm              ?
  4986. PC 486 + IBM TCP/IP 2.0   OS/2 (32-bit)     3.00  ckoker.mak/ibm  941004 682898
  4987. -----
  4988. Motorola 680x0            OS-9             2.2.2  ck9ker.mak      930630 294542
  4989. Motorola 680x0            OS-9                 ?  ck9ker.mak      941004 361004
  4990. -----
  4991. Stratus XA/2000 160 680x0 VOS               10.5  cklmak.cm       941016      ?
  4992. Stratus XA/2000 240 680x0 VOS               11.5  cklmak.cm       941016      ?
  4993. Stratus XA/2000 240 680x0 VOS             11.7.2  cklmak.cm       941016      ?
  4994. Stratus XA/R 310 i860     VOS               11.5  cklmak.cm       941016      ?
  4995. Stratus XA/R 310 i860     VOS               11.7  cklmak.cm       941016      ?
  4996. -----
  4997. UNIX versions:
  4998. -----
  4999.  
  5000. MACHINE                   OS NAME     OS VERSION  MAKE ENTRY      DATE     SIZE
  5001. Acorn                     RISCiX             1.2  riscixgcc       941201      ?
  5002. AGI (Everex) 386/20       ESIX        3.2 Rev. D  sys5r3          921203 423018
  5003. Altos ACS68000            UNIX System III     R2  altos3          921212 252102
  5004. Amdahl 5880               UTS 2.1      SVR5.2.6b  sys3            921204 489400
  5005. Amdahl mainframe          UTS         5.2.6b 580  sys3            940921 544999
  5006. Amdahl mainframe          UTS         5.2.6b 580  utsv            940921      ?
  5007. Amdahl mainframe          UTS             5.2.6b  utsv            921204 456044
  5008. Amdahl 5995A-700          UTS              2.1.5  utsvtcp              ? 526368
  5009. Apollo 425e               DomainOS 4.3BSD   10.4  sr10-bsd        940922 638780
  5010. Apple Macintosh IIfx      A/UX               3.0  aux3gcc         921204 382272
  5011. Apple Macintosh Powerbook Tenon MachTen  2.1.1.D  machten         940825 626396
  5012. Ardent Titan              ?                    ?  sys5r3               ?      ?
  5013. ARIX System 90 Model 85   UNIX              SVR3  sys5r3na             ? 452912
  5014. AT&T 3B2/300              UNIX          SVR2.1.0  att3bxc         921204 461844
  5015. AT&T 3B2/622              UNIX          SVR3.2.3  att3bxc         921204 458220
  5016. AT&T 3B2/MIPS             UNIX              SVR4  sys5r4sxtcpf    940713 694629
  5017. AT&T 6300 PLUS            UNIX            SVR2.0  att6300c        921204 353978
  5018. AT&T 6386E WGS            UNIX         V/386 3.2  sys5r3c         921204 441762
  5019. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upcshcc     921204 415284
  5020. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upcgc            ? 405312
  5021. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upcx             ? 371340
  5022. AT&T PC 7300 UNIXPC (3B1) System V         3.51m  sys3upc         940809      ?
  5023. Atari ST                  MINIX           1.6.23  minix68k             ? 168310
  5024. BEST Compact 386/25       SCO UNIX       3.2v2.0  sco3r22              ? 336716
  5025. Bull DPX/2                BOS/X                ?  bulldpx2             ?      ?
  5026. CDC 4600 MIPS             ?                    ?  ?                    ?      ?
  5027. Commodore Amiga 2500/030  Amiga SVR4.0    2.1p2a  svr4amiganet    940827 483352
  5028. Commodore Amiga 2500/030  Amiga SVR4.0    2.1p2a  sys5r4sx        940827      ?
  5029. Concurrent 3280           Xelos System V     R02  ccop1           921294 566553
  5030. Concurrent/Masscomp 6000  RTU                4.1  rtubsd               ? 478348
  5031. Concurrent/Masscomp 6400  RTU                  5  rtusvr3              ? 488864
  5032. Concurrent/Masscomp 6400  RTU                6.0  rtusvr3              ? 488864
  5033. Convergent MiniFrame      CTIX System V R3  3.20  sys5                 ? 396438
  5034. Convergent, model unknown CTIX             6.4.1  ctix            921209 434456
  5035. Convex 3240               ConvexOS          10.1  convex9         921208      ?
  5036. Convex C1                 ConvexOS          V9.0  convex9              ?      ?
  5037. Convex C2                 ConvexOS          10.1  convex10gcc          ?      ?
  5038. Convex C220               ConvexOS       V10.0.3  convex9         921208 651264
  5039. Convex C240               ConvexOS       V10.0.2  convex9         921208 651264
  5040. Cray XMP                  UNICOS             6.1  cray            921208      ?
  5041. Cray XMP-EL               UNICOS             6.1  cray            921208      ?
  5042. Cray YMP 2E, 4E, 8I       UNICOS             6.1  cray            921208      ?
  5043. Cray YMP 2E, 4E, 8I       UNICOS             7.C  cray            921208      ?
  5044. Cray YMP16 (C90)          UNICOS             7.C  cray            921208      ?
  5045. Cray-2                    UNICOS       8.0-Alpha  cray8           921208      ?
  5046. Cray-2                    CSOS               1.0  craycsos             ?1295272
  5047. Cray-3                    CSOS               1.0  craycsos             ?1295272
  5048. DEC 3000 Model 500 AXP    DEC OSF/1       T1.2-1  dec-osf         921221      ?
  5049. DEC 3000 Model 500 AXP    DEC OSF/1     V1.3 112  dec-osf         940919 802816
  5050. DEC 3000 AXP              DEC OSF/1          1.3  dec-osf         940801 794624
  5051. DEC 4000 Model 610 AXP    DEC OSF/1      1.3.111  dec-osf         940415 753664
  5052. DEC 4000 Model 610 AXP    DEC OSF/1          2.0  dec-osf20       941006 770048
  5053. DEC 4000 Model 610 AXP    DEC OSF/1          3.0  dec-osf30       941027 737280
  5054. DEC PDP-11/44             BSD               2.11  bsd211          941006 127558
  5055. DEC PDP-11/73             BSD               2.11  bsd211          940418 133154
  5056. DEC MicroVAX-II           BSD                4.3  bsd43                ?      ?
  5057. DEC MicroVAX-II           BSD           4.3-Reno  bsd43           921127 253952
  5058. DECstation 5000/20        MACH               2.6  bsd43 (?)       940623      ?
  5059. DECstation 3000/500       OSF/1         T1.2-R12  dec-osf              ?      ?
  5060. DEC MicroVAX-II           ULTRIX             4.2  du42            921207 403456
  5061. DEC MicroVAX-II           ULTRIX             4.2  du42c           921207 418816
  5062. DEC MicroVAX 2000         ULTRIX             4.2  du42c           941008 485376
  5063. DEC MicroVAX 2000         ULTRIX             4.2  du42            941008 467968
  5064. DECstation 2100           ULTRIX             4.2  du42                 ? 532480
  5065. DECstation 2500           ULTRIX             4.2  du42c                ?      ?
  5066. DECstation 3100           ULTRIX             4.2  du42                 ? 532480
  5067. DECstation 5000/200       ULTRIX             4.2  du42                 ? 532480
  5068. DECstation 5100           ULTRIX             4.2  du42c                ?      ?
  5069. DECstation MIPS           ULTRIX             4.2  du42            940801 602112
  5070. DECstation 5800           ULTRIX         4.2-R96  du42c           941006 634880
  5071. DECstation 5800           ULTRIX         4.2-R96  du42s5r4             ? 540672
  5072. DECstation 5800           ULTRIX         4.2-R96  posix                ? 499712
  5073. DECstation 2100           ULTRIX             4.3  du42            921207 532480
  5074. DECstation 2100           ULTRIX             4.3  du42c           921207 557056
  5075. DECstation 2100           ULTRIX             4.4  du42c           940803 618496
  5076. DECstation 5000/200       ULTRIX             4.3  du42            940625 589824
  5077. DECstation 5000/25        ULTRIX             4.3  du42                 ? 532480
  5078. DECstation 5000/200       ULTRIX/UWS         4.3  du42            921221 532480
  5079. DECstation 5000/25        ULTRIX/UWS     4.3-R10  du42c           921221 532480
  5080. DECstation 5000/50 R4000  ULTRIX            4.3A  du43c-mips3          ? 561152
  5081. DECstation 5000/50 R4000  ULTRIX             4.4  du43c-mips3     941008 606208
  5082. DECstation 5000/50        ULTRIX             4.4  du44-mips3      941008 581632
  5083. DECstation 5000/200       ULTRIX            4.2C  du42c           940803 626688
  5084. DECstation 5000/240       ULTRIX             4.3  du42c           941008 634880
  5085. DECstation 5000/240       ULTRIX             4.3  du42            941008 610304
  5086. DECsystem 5100            ULTRIX             4.2  du42c           941008 634880
  5087. DECsystem 5100            ULTRIX             4.2  du42            941008 610304
  5088. DECsystem 5100            ULTRIX             4.3  du42c           941008 638976
  5089. DECsystem 5100            ULTRIX             4.3  du42            941008 610304
  5090. DECsystem 5100            ULTRIX            4.3A  du42c           941003 634880
  5091. DECsystem 5100            ULTRIX            4.3A  du42            941003 610304
  5092. DEC VAXstation 2000       ULTRIX             4.2  du42c           940803 480256
  5093. DEC VAX-11/750            BSD                4.3  bsd43           921127 253952
  5094. DEC VAX-11/785            BSD          4.3-Net/2  bsd44c               ? 379904
  5095. DEC VAX 8350              DEC UNIX SVR3      3.1  sys3                 ?      ?
  5096. DEC VAX 8650              DEC UNIX SVR3      3.1  sys3                 ?      ?
  5097. DEC VAX 8800              ULTRIX             4.2  du42                 ?      ?
  5098. DEC VAX Model Unknown     ULTRIX             4.2  du42c           940919 486400
  5099. DEC VAXstation 3100       ULTRIX/UWS         4.2  du42            921127      ?
  5100. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22              ? 336716
  5101. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22gcc           ? 344692
  5102. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22net           ? 363872
  5103. Dell 433 DE               SCO UNIX       3.2v2.0  sco3r22netc          ? 419396
  5104. DG AViiON                 DG/UX              5.4  dgux540c             ?      ?
  5105. DG AViiON                 DG/UX            5.4.1  dgux540c             ?      ?
  5106. DG AViiON                 DG/UX            5.4.2  dgux540c             ?      ?
  5107. DG AViiON                 DG/UX         5.4R2.01  dgux540c        941006 629908
  5108. DG AViiON                 DG/UX         5.4.2.10  dgux540         940714      ?
  5109. DG AViiON                 DG/UX         5.4.2.10  dgux540c        940822 627980
  5110. DG AViiON                 DG/UX         5.4R3.00  dgux543c        941130      ?
  5111. DIAB DS90-00              DNIX 5.2          2.2c  dnix                 ? 368496
  5112. DIAB DS90-00              DNIX 5.2          2.2c  dnixnetc             ? 424704
  5113. DIAB DS90-10              DNIX 5.3         1.4.3  dnix5r3              ?      ?
  5114. DIAB DS90-20              DNIX 5.3           2.2  dnix5r3ansi          ?      ?
  5115. DIAB DS90-30              DNIX 5.3         2.2.1  dnix5r3ansinet  941001      ?
  5116. Dolphin Triton 88/17      UNIX SV/88 R3.2    3.6  sv88r32         921210 604336
  5117. DTK Keen 2000             Microport SVR3  0U3.0e  sys5r3          921208 405668
  5118. Encore Multimax           UMAX               4.3  encorec              ? 465424
  5119. Everex 386DX/25           BSDI (BSD/386)   0.9.1  bsdi                 ? 360448
  5120. Fortune 32:16             For:Pro           2.1c  ft21                 ? 336368
  5121. Gateway 2000 386/25DX     ISC UNIX      SVR3 2.2  is5r3n3t             ? 399836
  5122. Gateway 2000 486DX/33     MWC Coherent  4.0.1r65  coherentmi           ? 111664
  5123. Gateway 2000 486DX/33     MWC Coherent  4.0.1r65  coherentmax          ? 324976
  5124. Gateway 2000 486DX/33     Linux           1.1.21  linuxnet        940623 410628
  5125. Harris HCX-2900           CX/UX              5.1  sys5r3               ? 390184
  5126. Harris Night Hawk         CX/UX              6.1  cx_ux                ? 626560
  5127. Hewitt/Rand 483/33EISA    SCO ODT         2.1.0b  sco32v4netc          ? 424688
  5128. Honeywell/Bull RS/6000    AIX              3.2.5  rs6aix32        940801      ?
  5129. HP 9000/300               BSD           4.4-Lite  bsd44           940703 462848
  5130. HP 9000/300               BSD           4.4-Lite  bsd44c          941006 512000
  5131. HP Integral (9000/207)    HP-UX/PAM          5.0  hpuxpre65            ? 396096
  5132. HP 9000/550               HP-UK             5.21  hpux500wintcp   940703 549512
  5133. HP 9000/550               HP-UK             5.21  hpuxpre65       941006 528548
  5134. HP 9836CU                 HP-UX            5.5-P  hpuxpre65            ?      ?
  5135. HP 9000/855               HP-UX          A.B7.00  hpux70lfnc           ? 587776
  5136. HP 9000/834               HP-UX              7.0  hpux80pac            ?      ?
  5137. HP 9000/350,370,375,380   HP-UX             7.05  hpux70lfnc           ? 495616
  5138. HP 9000/385,400dl,425s    HP-UX          A.08.00  hpux80               ? 368640
  5139. HP 9000/385,400dl,425s    HP-UX          A.08.00  hpux80c              ? 409600
  5140. HP 9000/710,750           HP-UX          A.08.07  hpux80pac            ? 421888
  5141. HP 9000/385               HP-UX          B.08.00  hpux80          941006 446464
  5142. HP 9000/385               HP-UX          B.08.00  hpux80c         940822 446464
  5143. HP 9000/700               HP-UX              8.0  hpux80pagcc     930120 623224
  5144. HP 9000/825,835SE         HP-UX              8.0  hpux80pac            ? 430080
  5145. HP 9000/847               HP-UX             8.02  hpux80pac            ? 430080
  5146. HP 9000/847               HP-UX          A.09.00  hpux90???       940624 495616
  5147. HP 9000/400               HP-UX          B.09.03  hpux90gcc       940623 405504
  5148. HP 9000/715               HP-UX          A.09.03  hpux90          940703 630704
  5149. HP 9000/715               HP-UX          A.09.03  hpux90o         940707 507904
  5150. HP 9000/715               HP-UX          A.09.03  hpux90o700      940822 503808
  5151. HP 9000/712               HP-UX          B.09.05  hpux90o700      941006 507904
  5152. HP 9000/715               HP-UX      IC1 B.10.00  hpux100         940703 626688
  5153. HP 9000/715               HP-UX      IC2 B.10.00  hpux100         941006 652622
  5154. HP 9000/715               HP-UX      IC1 B.10.00  hpux100o        940703 495616
  5155. HP 9000/715               HP-UX      IC2 B.10.00  hpux100o        941006 513297
  5156. IBM 370-Series mainframe  AIX              1.2.1  aix370          921217 527784
  5157. IBM 370-Series mainframe  AIX/ESA            2.1  aixesa          921229 959166
  5158. IBM PS/2                  AIX                1.2  ps2aix               ? 417772
  5159. IBM PS/2-70               AIX   Level 1009 1.2.1  ps2aix          930223 448936
  5160. IBM PS/2-95               AIX                1.3  ps2aix3         930223 417772
  5161. IBM RS/6000               AIX                3.1  rs6000c              ? 487297
  5162. IBM RS/6000 250 PowerPC   AIX              3.2.5  rs6aix32c       941010 584145
  5163. IBM RS/6000 320H          AIX              3.1.3  rs6000c         940803 569445
  5164. IBM RS/6000 320           AIX              3.1.5  rs6000c         941008 578285
  5165. IBM RS/6000 320           AIX              3.1.5  rs6000          941008 567450
  5166. IBM RS/6000 520           AIX              3.2.5  rs6aix32c       941008 585417
  5167. IBM RS/6000 520           AIX              3.2.5  rs6aix32        941008 575094
  5168. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000c         930223 490909
  5169. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000          930223 483326
  5170. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000c              ? 490909
  5171. IBM RS/6000 530           AIX   Level 2008 3.1.8  rs6000               ? 483326
  5172. IBM RS/6000               AIX                3.2  rs6aix32        940627 549762
  5173. IBM RS/6000               AIX                3.2  rs6aix32c       940627 557929
  5174. IBM RS/6000 320H          AIX                3.2  rs6aix32             ? 483665
  5175. IBM RS/6000 550           AIX                3.2  rs6aix32             ? 492333
  5176. IBM RS/6000 950           AIX                3.2  rs6aix32             ? 483665
  5177. IBM RS/6000               AIX              3.2.2  ?                    ? 484750
  5178. IBM RS/6000 320           AIX             3.2.3E  rs6000c         930223 491565
  5179. IBM RS/6000 320           AIX             3.2.3E  rs6000          930223 483982
  5180. IBM RS/6000 320           AIX             3.2.3E  rs6aix32c       930223 491445
  5181. IBM RS/6000 320           AIX             3.2.3E  rs6aix32        930223 484494
  5182. IBM RS/6000 520           AIX              3.2.5  rs6aix32c       941007 579489
  5183. IBM RS/6000 520           AIX              3.2.5  rs6aix32        941003 576106
  5184. IBM RS/6000 580           AIX              3.2.5  rs6aix32c       940712 569169
  5185. IBM RS/6000 PowerPC       AIX              4.1.1  rs6aix41c       941018 643163
  5186. IBM RT PC 6150            AIX              2.2.1  rtaix           940827 554900
  5187. IBM RT PC 6150-125        AIX              2.2.1  rtaixc          941008 603488
  5188. IBM RT PC 6150-125        AIX              2.2.1  rtaix           941008 556612
  5189. IBM RT PC                 BSD           4.3/Reno  bsd44c          921206 438272
  5190. ICL DRS400                DRS/NS             2.1  iclsys5r3       921111      ?
  5191. ICL DRS400E               DRS/NS             5.1  sys5r4               ?      ?
  5192. ICL DRS3000 486           DRS/NX SVR4          ?  iclsys5r4_486   921209      ?
  5193. ICL DRS6000 SPARC         DRS/NX SVR4      5.1.4  iclsys5r4       921209 452840
  5194. Integrated Solutions V8S  ISI 4.2BSD       3.07D  isi                  ?      ?
  5195. Intel 303 383-33          SCO Xenix       2.3.1b  sco3r2               ? 364720
  5196. Intel 486/25              ESIX             4.0.4  esixr4               ? 393192
  5197. Intergraph Clipper x000   CLIX        3.1 R7.0.9  clix            930108      ?
  5198. Intergraph Clipper x000   CLIX               6.x  clix            930108      ?
  5199. Intergraph Clipper x000   CLIX                 ?  clixnetc        930108      ?
  5200. Luxor ABC-9000            DNIX 5.2          2.2c  ?                    ?      ?
  5201. MIPS 3230, 3240, M120     RISC/OS UMIPS     4.52  mips            940901      ?
  5202. MIPS 3230, 3240, M120     RISC/OS UMIPS     4.52  mipstcpc        940901 712704
  5203. Modcomp Realstar 1000     REAL/IX            D.1  sv88r32         921208 639312
  5204. Motorola MVME 147/68030   UNIX SV/68R3     3v5.1  sv68r3v51       921204 308772
  5205. Motorola VME Delta 3000   UNIX SV/68R3     3v6.2  sv68r3          921204 441256
  5206. Motorola VME Delta 4000   UNIX SV/68R3     3v6.2  sv68r3          921204 441256
  5207. Motorola VME Delta 4000   UNIX SV/68R3     3v7.1  sv68r3          921204 441256
  5208. Motorola VME Delta 8000   UNIX SV/88R3.2  32v3.0  sv88r32         921204 567296
  5209. Motorola VME Delta 8000   UNIX SV/88R3.2  32v3.1  sv88r32         921204 567296
  5210. Motorola VME Delta 8000   UNIX SV/88R4.0  40v3.0  sv88r4          921204 478752
  5211. Motorola VME Delta 8000   UNIX SV/88R4.1  40v4.1  sv88r4          940623      ?
  5212. NCR Tower 32/450          Tower 32 OS   02.01.00  tower32-2            ? 345864
  5213. NCR Tower 32/650          NCR UNIX           3.0  tower32              ? 376876
  5214. NCR Tower XP              NCR UNIX             ?  sys3nv               ?      ?
  5215. NCR Tower 32              NCR UNIX 5.0       1.1  tower32-1            ?      ?
  5216. NCR System 3000           System V R4        2.0  sys5r4sxna           ?      ?
  5217. NCR System 3000           System V R4        2.0  sys5r4net2           ?      ?
  5218. NCR System 3430/Pentium   System V R4        4.0  sys5r4sx             ?      ?
  5219. NCR System 3350           NCR UNIX +TWG 02.02.01  sys5r4net2      941006 483996
  5220. NCR System 3445           NCR UNIX +TWG 02.02.01  sys5r4net2      940819 478728
  5221. NCR System 3450           NCR UNIX +TWG 02.02.01  sys5r4net2      940819 478728
  5222. NeXTcube                  NeXTSTEP           2.1  next                 ? 344064
  5223. NeXTcube                  NeXTSTEP           3.0  next                 ? 352256
  5224. NeXTstation               NeXTSTEP           2.1  next                 ? 344064
  5225. NeXTstation               NeXTSTEP           3.0  next                 ? 352256
  5226. NeXTstation               NeXTSTEP           3.1  next            941006 417792
  5227. Nixdorf Targon/31         TOS             4.0.11  t31tos40x            ?      ?
  5228. Nixdorf Targon/31 M15     TOS             4.0.13  t31tos40x            ? 384044
  5229. Norsk Data Uniline 88/17  UNIX SV/88 3.2     3.6  sv88r32              ? 604336
  5230. Olivetti CP 486           UNIX SVR4        2.1.1  sys5r4nx        921206 356724
  5231. Olivetti CP 486           UNIX SVR4        2.1.1  sys5r4sx        921206 356988
  5232. Olivetti LSX 3005..3045   X/OS UNIX     2.3..3.0  xos23           921211 438944
  5233. Olivetti LSX 3005..3045   X/OS UNIX     2.3..3.0  xos23c          921211 475416
  5234. Olivetti LSX 5020         SCO UNIX         3.2.2  sco3r22         921206 354848
  5235. PC 386 and above          386BSD          0.1.24  386bsd               ? 401408
  5236. PC 386 and above          386BSD             0.1  bsd44           921205 401408
  5237. PC 386 and above          386BSD             0.1  bsd44c          921205      ?
  5238. PC 386 and above          AT&T SYSV/386  3.2.2.3  sys5r3          921210 380806
  5239. PC 386 and above          BSDI (BSD/386)     1.0  bsdi            941006 491520
  5240. PC 386 and above          Coherent/386     4.0.1  coherentmax          ? 324996
  5241. PC 486                    Consensys Sys V R4.2-1  sys5r4sxtcpc         ? 526720
  5242. PC 486                    DEC OSF/1          1.2  dec-osf              ?      ?
  5243. PC 386 and above          Dell SVR4.04       2.2  dellsys5r4c          ? 418216
  5244. PC 386 and above          Dell SVR4          2.2  dellsys5r4mi         ? 126276
  5245. PC 386 and above          Dell SVR4          2.2  dellsys5r4m          ?  90372
  5246. PC 386 and above          ESIX         3.2 Rev.D  sys5r3               ? 423018
  5247. PC 386 and above          FreeBSD            0.1  386bsd               ?      ?
  5248. PC 386 and above          ISC SV/386    3.2-3.01  isr3                 ?      ?
  5249. PC 386 and above          ISC SV/386 R3      3.0  is3gcc          930210 308528
  5250. PC 386 and above          ISC SV/386 R3      4.0  is5r3jc         940625 440060
  5251. PC 386 and above          ISC SV/386         2.2  is5r3netjc      921205 439816
  5252. PC 386 and above          ISC SV/386         3.0  is5r3netjc      921205 439816
  5253. PC 386 and above          ISC SV/386 3.1    1.06  is5r3net             ? 351104
  5254. PC 386 and above          ISC SV/386 3.1   2.2.1  is5r3gcc        930115 366286
  5255. PC 486 (Dell 466V)        Linux          0.99.14  linux           941006 443396
  5256. PC 486 (Dell 466V)        Linux          0.99.14  linuxs          940704 508932
  5257. PC 486 (Dell 466V)        Linux          0.99.14  linuxtcp        941006 459780
  5258. PC 486 (Dell 466V)        Linux          0.99.14  linuxtcps       940704 541700
  5259. PC 486                    Linux            1.0.9  linuxtcp        940801 459913
  5260. PC 486                    Linux           1.1.20  linux           940712 410628
  5261. PC 386 and above          Lynx OS            2.1  lynx21          940919 405536
  5262. PC 386 and above          Lynx OS            2.2  lynx22               ?      ?
  5263. PC 386 and above          Microport SVR4.0  V4.1  sys5r4sx             ? 310636
  5264. PC 386 and above          NetBSD             0.9  bsd44c               ? 471040
  5265. PC 486                    NetBSD        1.0 Beta  netbsd          940918 446464
  5266. PC 532 NS32532            NetBSD        1.0 Beta  netbsd          940805      ?
  5267. PC 486                    NeXTSTEP/486       3.2  next            940713      ?
  5268. PC 386 and above          Novell UnixWare   V1.0  unixware             ? 422296
  5269. PC 386 and above          Novell UnixWare   V1.1  unixware             ?      ?
  5270. PC 386 and above          Novell UnixWare   V1.1  unixwarenetc         ?      ?
  5271. PC 386 and above          Novell UnixWare V1.1.1  unixwarenetc    940822 518872
  5272. PC 386 and above          Novell UnixWare V1.1.2  unixware        941006 437160
  5273. PC 386 and above          Novell UnixWare V1.1.2  unixwarenetc    941006 525232
  5274. PC 486                    OSF/1                ?  ?                    ?      ?
  5275. PC 286 16-bit             QNX                4.1  qnx16_41        930114 252759
  5276. PC 286 & above 16-bit     QNX               4.21  qnx16           941006 535667
  5277. PC 386/486/586 32-bit     QNX               4.21  qnx32           941006 465675
  5278. PC 386 and above          SCO ODT            1.1  sco3r22net           ? 363872
  5279. PC 386 and above          SCO ODT            2.0  sco32v4net      940919      ?
  5280. PC 386 and above          SCO ODT            3.0  sco_odt30            ?      ?
  5281. PC 386 and above          SCO UNIX         3.2.0  sco3r2netnd          ? 364908
  5282. PC 386 and above          SCO UNIX=ODT20 3.2v4.0  sco32v4         940624 434196
  5283. PC 386 and above          SCO UNIX=ODT20 3.2v4.0  sco32v4net      941003      ?
  5284. PC 386 and above          SCO UNIX       3.2v4.0  sco32v4netnd         ? 368304
  5285. PC 386 and above          SCO UNIX       3.2v4.0  sco32v4netc          ? 402960
  5286. PC 386 and above          SCO UNIX       3.2v4.0  sco32v4netgcc        ? 370609
  5287. PC 386 and above          SCO UNIX=ODT30 3.2v4.2  sco_odt30       940826 484060
  5288. PC 386 and above          SCO UNIX/XPG4  3.2v4.2  sco_odt30       941006 505072
  5289. PC 386 and above          SCO UNIX       3.2v4.2  sco32v4              ? 408800
  5290. PC 286 and above          SCO Xenix/286    2.3.3  sco286               ? 312076
  5291. PC 386 and above          SCO Xenix/386    2.3.2  sco286               ? 363463
  5292. PC 386 and above          SCO Xenix/386    2.2.3  sco386               ? 342504
  5293. PC 386 and above          SCO Xenix/386    2.3.3  ?                    ?      ?
  5294. PC 386 and above          SCO Xenix/386    2.3.4  sco3r2x              ?      ?
  5295. PC 386 and above          Solaris 1.0    ISC 2.2  is5r3net               399836
  5296. PC 286 and 386            Trusted XENIX        ?  ?                    ?      ?
  5297. Perkin-Elmer 3200         Xelos System V     R02  ccop1                ? 566553
  5298. Pyramid MIS-S Series      DC/OSx SVR4        1.0  pyrdcosx             ? 655649
  5299. Pyramid MIS-S Series      DC/OSx SVR4        1.1  pyrdcosx             ? 645765
  5300. Pyramid MIS-T Series      OSx Dual Port     4.4b  pyramid         921201
  5301. Pyramid MIS-T Series      OSx Dual Port     5.1a  pyramid         921201 516096
  5302. Pyramid MIS-T Series      OSx Dual Port     5.1a  pyramid-hdb     921201 540672
  5303. Sequent S27               DYNIX/ptx        1.3.1  dynixptx13      921205 544080
  5304. Sequent S2000/700         DYNIX/ptx       V1.4.0  dynixptx13      921205 544080
  5305. Sequent S81               DYNIX/ptx          1.4  dynixptx13      921205 409600
  5306. Sequent S400 (6 x 486/50) DYNIX/ptx        1.4.1  dynixptx13      940623 597204
  5307. Sequent S400 (6 x 486/50) DYNIX/ptx        1.4.2  dynixptx13      941003 613644
  5308. Sequent S2000/250         DYNIX/ptx          2.0  dynixptx20           ? 513972
  5309. Sequent S27               DYNIX           V3.1.4  dynix31c        940623 460929
  5310. Sequent S81               DYNIX        V3.2.0NFS  dynix31         921205 409600
  5311. Sequent S81               DYNIX             V3.2  dynix31c             ? 364548
  5312. Sequent S2000/250         DYNIX/ptx        2.0.3  dynix20              ? 513972
  5313. Sequent S2000/250         DYNIX/ptx        2.0.3  dynix20c             ? 610128
  5314. Sequent S2000/700         DYNIX/ptx        2.1.0  dynixptx20      940919 674542
  5315. Sequent S2000/700         DYNIX/ptx        2.1.0  dynixptx20c     941002 776518
  5316. Sequent S2000/700         DYNIX/ptx        4.0.0  dynixptx20c     941002 650012
  5317. SGI Iris                  IRIX               3.3  sys5r3               ?      ?
  5318. SGI 4D/35                 IRIX             4.0.1  irix40               ? 331776
  5319. SGI 4D                    IRIX SVR3        4.0.5  irix40          921216 499712
  5320. SGI Indigo                IRIX            4.0.5F  irix40          930414 495616
  5321. SGI Indigo                IRIX            4.0.5F  irix40ypc       930414 606208
  5322. SGI Elan                  IRIX            4.0.5H  irix40               ? 507904
  5323. SGI Elan                  IRIX            4.0.5H  irix40ypc            ? 618946
  5324. SGI Elan                  IRIX            4.0.5H  irix40u              ? 507904
  5325. SGI Elan                  IRIX            4.0.5H  irix40uc             ? 569344
  5326. SGI Indigo Elan           IRIX               5.2  irix51ypc       940822 676608
  5327. SGI Indigo                IRIX               5.0  irix40ypc            ?      ?
  5328. SGI Challenge             IRIX           5.1.1.1  irix51ypc            ?      ?
  5329. SGI Indigo R3000          IRIX               5.2  irix51ypc       940623 652032
  5330. SGI Indigo R4000          IRIX               5.2  irix40ypc       940809 660224
  5331. SGI Indigo R4000          IRIX               5.2  irix51ypc       941015 680704
  5332. Solbourne 5E/905          OS/MP           4.1A.1  sunos41         921222 475136
  5333. Solbourne 5E/900          OS/MP           4.1A.3  sunos41              ?      ?
  5334. Sony NEWS                 NEWS-OS         4.0.1C  sonynews             ?      ?
  5335. Sony NEWS                 NEWS-OS         4.1.2C  sonynews             ?      ?
  5336. Stardent 1520             Stardent UNIX      2.2  sys5r3          921127      ?
  5337. Stratus, various models   FTX                2.1  sys5r4               ?      ?
  5338. Stratus XA/R Model 310    FTX              2.2.1  sys5r4sxtcpc    940829 725212
  5339. Stratus XA/R Model 20     FTX            2.2.2.2  sys5r4sxtcpc    940829 732716
  5340. Sun (model unknown)       Solaris            2.0  sunsol20gcc          ?      ?
  5341. Sun-3/160                 Sun UNIX 4.2       3.2  bsd                  ? 434176
  5342. Sun-3/60                  Sun UNIX 4.2       3.5  sunos3gcc       930115      ?
  5343. Sun 3/60                  SunOS              4.1  sunos41c        940827 335872
  5344. Sun-3/60                  SunOS            4.1.1  sunos41c        921204 417792
  5345. Sun-4/280                 SunOS            4.1.1  sunos41c             ? 499712
  5346. Sun-4/280                 SunOS            4.1.1  sunos41s5r3          ? 450560
  5347. Sun-4/280                 SunOS            4.1.1  sunposix             ? 442368
  5348. Sun-4/470                 SunOS            4.1.2  sunos41              ? 475136
  5349. Sun-4/470                 SunOS            4.1.2  sunos41c        921204 524288
  5350. Sun-4/690                 SunOS            4.1.2  sunos41c             ?      ?
  5351. Sun SPARCserver           SunOS            4.1.1  sunos41         940623 573440
  5352. Sun SPARCserver           SunOS  4.1.3/X.25 7.00  sunos41x25c     941024 606208
  5353. Sun SPARCserver           SunOS            4.1.2  sunos41s5r3          ? 450560
  5354. Sun SPARCserver           SunOS            4.1.2  sunposix             ? 442368
  5355. Sun SPARCstation 1        SunOS            4.1.2  sunos41c             ? 499712
  5356. Sun SPARCstation 2        SunOS           4.1.1b  sunos41c             ? 507904
  5357. Sun SPARCstation 2        SunOS            4.1.3  sunos41gcc           ? 475136
  5358. Sun SPARCstation 2        SunOS            4.1.3  sunos41c             ? 499712
  5359. Sun SPARCstation 2        SunOS 4.1.3/JLE  1.1.3  sunos41c        921205 524288
  5360. Sun SPARCstation 2        SunOS 5.0  Solaris 2.0  sunsol20        921204 547144
  5361. Sun SPARCstation 2        SunOS 5.1  Solaris 2.1  sunos51              ?      ?
  5362. Sun SPARCstation 2        SunOS 5.1  Solaris 2.1  sunos51c             ?      ?
  5363. Sun SPARCstation 2        SunOS 5.1  Solaris 2.1  sunos51tcp           ?      ?
  5364. Sun 4M SS10               SunOS            4.1.3  sunos41gcc      940623 524288
  5365. Sun 4 ELC                 SunOS         4.1.3_U1  sunos41gcc      940623 524288
  5366. Sun 4 SS1+                SunOS            4.1.3  sunos41gcc      940624 524288
  5367. Sun 4M SS10-40            SunOS            4.1.3  sunos41gcc      940623 524288
  5368. Sun 4M Classic            Solaris            2.3  solaris2xg      940919 578768
  5369. Sun SPARCserver 10        Solaris            2.3  solaris2xg      940919 578768
  5370. Sun SPARCserver 10        SunOS            4.1.3  sunos41c        941006 589824
  5371. Sun SPARCserver 10        SunOS            4.1.3  sunos41mi       940822 196608
  5372. Sun SPARCserver 10        SunOS            4.1.3  sunos41m        940822 147456
  5373. Sun SPARCserver 10        SunOS            4.1.3  sunposix        941006 516096
  5374. Sun SPARCserver 10        SunOS            4.1.3  sunos41s5c      940813 573440
  5375. Sun SPARCserver 1000      Solaris            2.3  solaris2x       941006 651188
  5376. Sun SPARCstation 10       SunOS            4.1.3  sunos41gcc      940808 540672
  5377. Sun SPARCstation 10       SunOS 5.1  Solaris 2.1  sunos51/cc           ? 366960
  5378. Sun SPARCstation 10       SunOS 5.1  Solaris 2.1  sunos51c             ?      ?
  5379. Sun SPARCstation 10       SunOS 5.1  Solaris 2.1  sunos51tcp           ?      ?
  5380. Sun SPARCstation 10       SunOS 5.1  Solaris 2.1  sunos51tcpc/cc       ? 448220
  5381. Sun SPARCstation 10       SunOS 5.1  Solaris 2.1  sunos51/apcc         ? 411100
  5382. Sun SPARCstation 10       SunOS 5.1  Solaris 2.1  sunos51tcp/apcc      ? 433984
  5383. Sun SPARCstation 10       SunOS 5.1  Solaris 2.1  sunos51tcpc/apc      ? 492476
  5384. Sun model unknown         SunOS 5.1  Solaris 2.1  sunos51cgcc     930119 438908
  5385. Sun SPARCstation LX       SunOS 5.1  Solaris 2.1  sunos51cgcc          ? 476156
  5386. Sun SPARCserver  10       SunOS 5.2  Solaris 2.2  sunos51tcp           ? 450204
  5387. Sun SPARCclassic          SunOS 5.3  Solaris 2.3  solaris2xg      941006 578960
  5388. Sun SPARCstation 2        SunOS 5.3  Solaris 2.3  solaris2x       940916 576404
  5389. Sun SPARCstation 2        Solaris 2.3, X.25 8.01  solaris2x25     941014 607324
  5390. Sun SPARCstation ELC      SunOS            4.1.1  sunos41c        921127      ?
  5391. Sun SPARCstation ELC      SunOS            4.1.2  sunos41gcc           ?      ?
  5392. Sun SPARCstation IPC      SunOS           4.1.1b  sunos41c             ? 507904
  5393. Sun SPARCstation IPC      SunOS 5.1  Solaris 2.1  sunsol20             ?      ?
  5394. Sun SPARCstation IPX      SunOS 5.0  Solaris 2.0  sunsol20             ? 481264
  5395. Sun SPARCstation IPX      SunOS            4.1.1  sunos41c             ? 499712
  5396. Sun SPARCstation IPX      SunOS            4.1.3  sunos41         940712 540672
  5397. Sun SPARCstation IPX      SunOS            4.1.3  sunos41gcc      940712 540672
  5398. Sun SPARCstation IPX      SunOS         4.1.3_U1  sunos41         940919 557056
  5399. Sun SPARCstation IPX      SunOS         4.1.3_U1  sunos41gcc      940919 548864
  5400. Tandy Model 6000          Xenix              3.2  trs16           940827 354940
  5401. Tektronix 6130            Utek             2.3.1  utek            921205 363520
  5402. Tektronix 6130            Utek               3.0  utek            921205 363520
  5403. Tektronix XD88            UtekV SVR3      3.2e.3  utekvr3         921229 648368
  5404. Torch XXX 68010           Unisoft UniPlus+   5.2  sys3            930107 426701
  5405. UNISYS S/4040 68040/25    CTIX SVR3.2      6.4.1  sys5r3          921201 373600
  5406. UNISYS U5000/95           UNIX SVR3        6.0.2  sys5r3c         940727 481704
  5407. UNISYS U6000/65 MP 486/50 UNIX SVR4        1.0.2  sys5r4nx        921201 366828
  5408. UNISYS U6000/65           UNIX SVR4        1.1.1  sys5r4nxnetc    940727 514096
  5409.  
  5410. (End of CKC190.UPD)
  5411.