home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c-kermit / ckc04e.txt < prev    next >
Text File  |  2020-01-01  |  48KB  |  1,207 lines

  1. CKUV4E.UPD
  2.  
  3. This file contains the edit history of C-Kermit version 4.2(030), May 1985,
  4. through 4E(072), January 1989.
  5.  
  6. C-KERMIT FOR UNIX, CHANGES FROM VERSION 4E(070) TO 4E(072), 24 Jan 89
  7.  
  8. Maintenance release.  Fixes some major bugs, makes a few minor changes in
  9. functionality.
  10.  
  11. 1. In ckcfn2.c, function spack(), change the test for long packets from "if (j
  12. > 95)" to "if (j+2 > MAXPACK)".  When long packets were being sent by
  13. C-Kermit, and the final packet was 93-95 characters long, the packet would be
  14. erroneously sent as a short packet, with garbage in the LEN field.  Thanks to
  15. Mike Brown, Purdue Univ Computing Center.
  16.  
  17. 2. In ckcfns.c, function rpar(), set data[1] (MAXL, maximum normal packet
  18. length) to 94 when using long packets, rather than inserting garbage into this
  19. field based on the requested long packet length.  Properly parenthesize the
  20. operations in setting data[10] (CAPAS).  Thanks to Chuck Hedrick at Rutgers
  21. and Joe Doupnik at Utah State University for this fix.  This fix should also
  22. allow C-Kermit to correctly process incoming initialization strings that have
  23. a second or subsequent CAPAS byte.
  24.  
  25. 3. In ckcfn2.c, function rdata(), initialize rdatap to null so a debug() call
  26. from rpack doesn't crash the program.  Thanks to Andy Tanenbaum at the Vrije
  27. Universiteit in Amsterdam, Netherlands, for reporting these crashes.
  28.  
  29. 4. In ckutio.c, function ttopen(), change "if (*lcl == -1)" to "if (*lcl != 0)"
  30. because some compilers set this number (the result of a logical comparison) to
  31. some nonzero number other than -1.  This should allow the local/remote status
  32. to be sensed more accurately on some systems, like 4.3bsd.  Thanks to Ray
  33. Moody at Purdue for this one.
  34.  
  35. 5. Fix declarations ckcmai.c.  Four of them had semicolons where there should
  36. have been commas.  Luckily all were ints.  Thanks to Anton Rang for this.
  37.  
  38. 6. In ckuusr.c, in 'case XXSHE:', add a missing semicolon at the end of the
  39. line "while (((wstat = wait((int *)0)) != pid) && (wstat != -1))", to ensure
  40. that the following statement, "signal(SIGINT,istat);", gets executed at least
  41. once.  Otherwise, there can be foreground/background confusion.  Thanks to
  42. Robert Andersson in Norway.
  43.  
  44. 7. Also from Robert Andersson: "In ckutio.c in the function ttpkt().  If UXIII
  45. was set, ttraw.c_cc[4] was set to 200 and ttraw.c_cc[5] was set to 1. The idea
  46. here probably was to increase performance by reading chunks of 200 characters
  47. in one read().  However, the end result was that absolutely all reads took at
  48. least 1/10 of a second (due to cc[5] being 1).  The effect of this is a
  49. performance typically 1/3 of the 4D version.  I changed c_cc[4] to 1 and
  50. c_cc[5] to 0 and everything was fine.  Note that since the actual read() is
  51. done with a 256 character buffer it will return as many characters as it can,
  52. even with c_cc[4] and [5] set like this!!"
  53.  
  54. 8. Remove a couple of spurious "\" escapes from strings in ckuus2.c and
  55. ckwart.c, that were noticed by Gnu CC.  The latter may have prevented
  56. compilation of ckcpro.c by some C compilers.  John Gilmore at Berkeley.
  57.  
  58. 9. In ckutio.c, module ttlock(), replace ATT3BX code that writes the pid into
  59. the lockfile with a safer version.  Reportedly, the old way would cause core
  60. dumps if the dial command were executed many times.  John Zeeff, Ann Arbor, MI.
  61.  
  62. 10. Fix eighth-bit-prefixing negotiation so that it works for more than one
  63. SEND command.  Add "rqf = -1;" to tinit() in ckcfn2.c.  Gordon Scott, Micro
  64. Focus, Newbury, UK.  The symptom here was that files sent with the second and
  65. subsequent SEND command when parity was other than NONE could be corrupted
  66. (usually if they contained &'s).
  67.  
  68. 11. Attempt to fix ATT7300 UNIX PC support.  Code contributed by Joe Doupnik,
  69. Utah State Univ, Feb 88.  Large changes to ckutio.c and ckudia.c.
  70.  
  71. 12. When sending ACK for F-packet, encode the filename rather than sending it
  72. bare.  Change to ckcpro.w, entry "<rgen,rfile>F".  Doesn't jibe with MS-Kermit
  73. 2.32, but that is fixed in 2.32/A.
  74.  
  75. 13. Add support for IBM/Siemens/Rolm CBX dialing in ckudia.c.  Might not
  76. actually work, since the CBX is not really a modem and its modem signals do
  77. not behave like a real modem's.
  78.  
  79. 14. Have command parser (ckucmd.c) treat Ctrl-I as an ESC, rather than a space,
  80. in line with current C-Shell, K-Shell, GNU EMACS, etc, practice.  Also in same
  81. module, strip parity bit from any input characters.
  82.  
  83. 15. Change wart to use short, rather than int, as the datatype for the state
  84. transition array.  Saves several K.  Those who use wart to build programs with
  85. more than 127 actions should rebuild wart and define TBL_TYPE to be "int".  Or
  86. edit wart's output, changing "short" to "int".
  87.  
  88. 16. Replace Andy Lowry's clever CRC algorithm with a more mundane table-driven
  89. version, which works about 30% faster: function chk3(), module ckcfn2.c.
  90. (This doesn't mean that file transfers go 30% faster, because other things are
  91. going on too.  But they are faster, especially on systems with slow CPUs.)
  92.  
  93. 17. Add "hangup" command (ckuusr.c, ckuus2.c, ckuusr.h).  Tested in Ultrix,
  94. works there at least.  "Hangup" simply calls tthang() in ckutio.c, which is a
  95. confusing mess, especially for System-V-based systems.  Be sure to wear your
  96. special #ifdef glasses...  The new hangup command seems to clear up problems
  97. that previously caused C-Kermit to hang or give up with i/o errors upon
  98. connecting to an external line that had been previously escaped back from.
  99.  
  100. 18. Let users set speed to 19200, at their own risk.  ckutio.c: ttsspd();
  101. ckuus2.c: ('help set speed'); ckuus3.c: chkspd().  Tested in Ultrix, works
  102. there.
  103.  
  104. 19. Add 2.10 BSD entry to makefile (ckuker.mak), and to ckutio.c (Stan Barber,
  105. sob%bcm.tmc.edu@tmc.edu).  Also Microport Sys V entry (Bernie Eiben, DEC).
  106.  
  107. 20. Fix up SCO Xenix entries in makefile (John Owens, john%jetson.uucp@uunet).
  108.  
  109. 21. Fix mtime() in ckutio.c to also work on 16-bit 2.10 BSD systems (just
  110. make sure we're using long arithmetic).  Jack Nelson, U of Pittsburgh.
  111.  
  112. 22. Avoid creation of zombie processes (e.g. under 4.3BSD) by not trying to
  113. kill processes that have already exited.  ckufio.c: zclosf().  Ray Moody,
  114. Purdue Univ.
  115.  
  116. 23. Allow for situation in which C-Kermit sends I-packet (packet 0), times out,
  117. resends I(0), gets ACK(0), sends R(0), gets another copy of the ACK to I(0)
  118. when it's expecting S(0) and exits with "unexpected packet type".  Normally,
  119. the input() function would catch this kind of thing, but in this case sequence
  120. number 0 is being reused (3 times!).  Thanks to Ted Medin for catching this
  121. one.  Fix is to add a state "<get>Y" in ckcpro.w.
  122.  
  123. 23. Some Ultrix-specific code added under "#if(n)def ultrix" for opening
  124. and closing tty line vs modem control, etc, in ckutio.c.  From Paul Vixie
  125. at DEC.
  126.  
  127. 24. Turns out SUNOS 4.0 and later use the Sys V R3 convention of declaring
  128. signal() to be void rather than int.  Change ckcdeb.h to take care of this,
  129. and add a corresponding entry to the makefile, "make sunos4".
  130.  
  131. 25. Add program heralds to ckutio.c and ckufio.c for SUNOS 4.x and VAX/Ultrix.
  132.  
  133. 26. Make ttoc() time out after 2 seconds if it can't write a character to the
  134. port.  This function is only used in connect mode for sending typed characters
  135. out the port, and in scripts and dial commands.
  136.  
  137. 27. In ckucon.c, if 'connect' gets an i/o error when reading from the
  138. port, make it try 3 times before giving up.  On each retry, have it execute
  139. the hangup function, tthang() from ckutio.c.
  140.  
  141. 28. In ckutio.c, tthang(), make BSD systems not only drop and raise DTR, but
  142. also close and open the line.  Without the close/open sequence, subsequent
  143. 'connect' commands would hang.
  144.  
  145. 29. Make 'cd' a synonym for 'cwd'.
  146.  
  147.  
  148. C-KERMIT FOR UNIX, CHANGES FROM VERSION 4E(069) TO 4E(070), 29 Jan 88
  149.  
  150. ckuusr.c
  151.   Put reference to SIGSTOP in #ifdef SIGTSTP conditionals.
  152.  
  153. ckcmai.c
  154.   Update version number and date.
  155.  
  156. C-KERMIT FOR UNIX, CHANGES FROM VERSION 4E(068) TO 4E(069), 27 Jan 88
  157.  
  158. ckcfn2.c:
  159.   In input(), set the rdatap pointer to the timeout message.
  160.  
  161. ckucmd.c:
  162.   Change name of getwd() to gtword(), to avoid conflict with BSD getwd()
  163.   function.
  164.  
  165. ckufio.c:
  166.   Change to conditionalize zgtdir() function, calling getwd() for BSD,
  167.   getcwd() for System V, and returning a constant string for others.
  168.  
  169. ckutio.c:
  170.   Change foreground/background test in conint() for Berkeley to be based
  171.   on something that really works, namely testing the process group against
  172.   the controlling terminal's process group.  There is apparently no way to
  173.   do this in Sys V...  This fixes the disappearing prompt problem, at least
  174.   on BSD-based systems.  (Thanks to Fuat Baran of CUCCA for this.)
  175.  
  176.  
  177. C-KERMIT FOR UNIX, CHANGES FROM VERSION 4E(067) TO 4E(068), 24 Jan 88
  178.  
  179. Make this the standard released version, rename all files to ck* from xk*.
  180.  
  181. Change version number and date in ckcmai.c.
  182.  
  183. Makefile:
  184.   Add entries for sco286 and sco86 to Makefile (D.W. Bettinger, DEAN@SUVM)
  185.   Make ckudia.c depend on ckucmd.h (G. Uddeborg, uddeborg@chalmers.se)
  186.  
  187. ckwart.c:
  188.   Change ungetc(c) to ungetc(c,fp) in case '/' in gettoken().
  189.  
  190. ckcfns.c:
  191.   In function cwd(), after changing directory, ask system for new directory
  192.   name by calling new function zgtdir().
  193.  
  194. ckuusr.c:
  195.   Add stptrap() function to allow job to be suspended by Ctrl-Z.
  196.   Change call to dial() to ckdial().
  197.  
  198. ckudia.c:
  199.   Change name of dial() to ckdial() to avoid name conflict.
  200.   Add support for ATT 7300 modem from R.E. Hill (untested).
  201.  
  202. ckutio.c:
  203.   Add corrections to conint() from Bob Brown (brown@carrara.marble.com)
  204.   to make Ctrl-Z job suspension work right.
  205.   Add support for ATT 7300 modem from R.E. Hill (untested).
  206.  
  207. ck?fio.c:
  208.   Add new function zgtdir() to ck[uvdmi]fio.c, to return name of current
  209.   working directory.  Call it from ckcfns.c.
  210.  
  211. C-KERMIT FOR UNIX, CHANGES FROM VERSION 4E(066) TO 4E(067), 5 Aug 87
  212.  
  213. This version makes the minor corrections to 4E(066) that proved necessary
  214. after the beta test of that release.
  215.  
  216. - ckcfns.c -
  217.  
  218. In spar(), fix long packet negotiation to allow "set send packet-length"
  219.  override to work.
  220. Rename maxsize parameter of getpkt to bufmax to avoid confusion with global
  221.  maxsize.
  222.  
  223. - ckcfn2.c -
  224.  
  225. In rpack(), allow 3 tries to get a packet.  This allows for hosts (like IBM
  226.  mainframes) that echo the CR that terminates C-Kermit's packets with a CRLF.
  227. Misc "lint" cleanups.
  228.  
  229. - ckcmai.c -
  230.  
  231. Update program version number and date, give credit to more people.
  232.  
  233. - ckucon.c -
  234.  
  235. Change wait(0) to wait((int *)0).
  236.  
  237. - ckudia.c -
  238.  
  239. Add Concord Condor CDS 220 2400b modem support from Jim Guyton.
  240. Misc "lint" cleanups.
  241.  
  242. - ckufio.c -
  243.  
  244. Change wait(0) to wait((int *)0).
  245. Don't #include <sys/file.h> for Xenix (this might be dangerous?).
  246. In zxcmd, set effective group & user IDs for BSD to override security
  247.  checks of csh.
  248.  
  249. - ckuker.mak (Makefile) -
  250.  
  251. Added make options for cleaning out intermediate & object files and for lint.
  252. Added make option for CDC VX/VE systems.
  253. Added some comments for improved clarity.
  254.  
  255. - ckutio.c -
  256.  
  257. Break a line that was longer than 80 chars.
  258. Add missing return in conditionals at end of ttpkt(), so program can run
  259.  on Pyramid and similar systems.
  260. Add support for CDC VX/VE Sys V Unix from S.O. Lidie, Lehigh U.
  261. Don't #include <sys/file.h> for Xenix.
  262.  
  263. - ckuusr.h -
  264.  
  265. Move definition of KERMRC here from ckuusr.c.
  266.  
  267. - ckuusr.c -
  268.  
  269. Fix parsing of "show parameters" (now you can edit it).
  270. Change wait(0) to wait((int *)0).
  271. Remove some debug() statements.
  272. Move definition of KERMRC from here to ckuusr.h, so "show" command can find it.
  273. Set default prompt before reading init file instead of after, so "set prompt"
  274.  in init file will work.
  275. Set effective group & user IDs for shell command execution.
  276.  
  277. - ckuus2.c -
  278.  
  279. Fix help message for "set send/receive packet-length".
  280.  
  281. - ckuus3.c -
  282.  
  283. Attempt to fix parsing of "remote cwd" command from take file.
  284. Fix typo in "Extended-length packets requested" message.
  285.  
  286. - ckvfio.c -
  287.  
  288. Define PWDCMD so that "cwd" can work (hopefully).
  289.  
  290. - ckvtio.c -
  291.  
  292. Add missing syscleanup() function (just returns 0).
  293.  
  294.  
  295. C-KERMIT FOR UNIX, CHANGES FROM VERSION 4D(061) TO 4E(066), 5 Aug 87
  296.  
  297. This version is being released as a test version, because it has not been
  298. tested at all on the Mac, Amiga, VMS, or Data General, or on many of the common
  299. Unix systems (SUN, etc), and has not been tested in local mode at all except
  300. under Ultrix 2.0 on a VAX 750, and under 2.9BSD on a Pro-380.
  301.  
  302.  
  303. MAJOR CHANGES:
  304.  
  305. Added support for long packets.
  306.  
  307. Performance improvements: less copying of received data, more efficient i/o.
  308.  
  309. C-Kermit now takes its init file always, even if invoked with command-line
  310. action arguments.
  311.  
  312. Easy escape from packet mode (^C^C at any time).
  313.  
  314. Added file bytesize mask to 'set file type {text, binary} {7, 8}' so that
  315. Kermit can be used to strip 8th data bit during file transfer (e.g. of
  316. Wordstar files), independent of parity setting.  Default 8.
  317.  
  318. Added 'set terminal bytesize {7, 8}'.  Default 7.
  319.  
  320. Added 'set retry' command to adjust packet retransmission limit.
  321.  
  322. Included changes to support Data General, Apollo, Amiga, Mac with Megamax C.
  323.  
  324. New 'make' options for sys5r3, CIE Regulus, HP-UX, IBM IX/370, zilog.
  325.  
  326. Better statistics reporting.
  327.  
  328. Fix a few major bugs:
  329. . Loss of trailing control characters at end of file when sending.
  330. . 2-character checksum now works with 8-bit binary files.
  331. . Background/take-file interaction fixed, maybe.
  332. . Insertion of spurious CRLF at position 4096 when doing 'kermit -k'.
  333. . Parsing of multiline 'get' command (again).
  334.  
  335.                            Tested against:
  336. Tested under:              MS-Kermit  VM/CMS  DEC-20  VMS  Prime  Ultrix  PDP11
  337. . Ultrix 1.2 on VAX 8650       x
  338. . Ultrix 1.1 on VAX 750        x
  339. . Ultrix 2.0 on VAX 750        x        x        x     x     x      x       x
  340. . Ultrix 2.0 on VAX 8700       x
  341. . System V on 3B20             x                 x                  x
  342. . 2.9BSD on Pro-380                              x                  x
  343.  
  344. THINGS NOT DONE:
  345.  
  346. Sliding windows.
  347.  
  348. Cleaning up the horrible #ifdef mess, especially in CKU[TF]IO.C (at least,
  349. not very much).
  350.  
  351. Improving the command parser.  One obvious improvement would be to replace the
  352. relatively limited CKUCMD command-parsing package with the newer, more general
  353. and powerful CCMD package.  This was not done because (a) CCMD is bigger, and
  354. (b) CCMD has not yet been ported to all the systems that C-Kermit can be built
  355. for (VMS, Data General, etc etc).  Anyway, CKUCMD does the job.
  356.  
  357. Command macros.
  358.  
  359. A consistent, sensible treatment of program return codes, to allow C-Kermit
  360. to be run from scripts or DCL procedures, etc, so that they can tell whether 
  361. Kermit "succeeded" or "failed".  But what does failure or success mean?
  362. What if it transfers 29 out of 30 files?  What should the return code be?
  363.  
  364. Improving modem support.  There are ioctl's in BSD & Ultrix (TIOC(N)MODEM,
  365. TIOC(N)CAR, TIOCWONLINE) for ignoring/heeding modem signals, but it's not
  366. clear (to me) which versions of BSD they apply to.  If somebody wants to
  367. straighten this out in ckutio.c, be my guest.
  368.  
  369. Dealing in any way with lock files or bidirectional terminal lines, esp. the
  370. acucntrl business in 4.3BSD, the uugetty business in Sys V, making the program
  371. run suid, etc.  Got many, many hints about this, but it's so touchy I'll leave
  372. this to somebody who knows what she's doing and can test the results on a
  373. variety of systems.  The main problem is that this area is the least
  374. consistent among all the Unix variants.  Lock files and directories, their
  375. names, the permissions thereon, and the contents thereof differ from system to
  376. system, from one version of a system to the next, and within the same version
  377. of the same system, from site to site.
  378.  
  379. REMOTE KERMIT command support in the C-Kermit server.
  380.  
  381. Attribute packets.
  382.  
  383. Dialing code for ATT7300 from Richard E. Hill.
  384.  
  385. "Demon dialer" code from Jon Zeeff.
  386.  
  387. Code for automatically choosing a dialout line from Frank Wortner.
  388.  
  389. Support for Tandy 6000 and Alcyon Regulus from Frank Wortner.
  390.  
  391. etc etc
  392.  
  393.  
  394. CHANGES, MODULE BY MODULE:
  395.  
  396. - ckcdeb.h -
  397.  
  398. remove #ifdef LONG_DEF ... #endif because LONG_DEF wasn't used anywhere.
  399. remove old commented-out Amiga junk (Phil Julian).
  400.  
  401. define FREAD and FWRITE for Fortune, which doesn't have sys/file.h
  402. (David Sizeland).
  403.  
  404. Put conditional comments around vax11c #includes if not vax11c (Ron Heiby).
  405.  
  406. Add typedef SIGTYP for signal(), it's void under Sys V R3, int elsewhere
  407. (Ron Heiby).
  408.  
  409. - ckcfn2.c -
  410.  
  411. Insert #include ckcsym.h before other includes for benefit of Megamax C,
  412. so that symbol MAC can be defined (Jim Noble)
  413.  
  414. Remove extraneous * from "*pkt++" in for-statement in chk2() (Jim Noble).
  415.  
  416. change all "screen(SCR_PT,'Q',(long)n,recpkt);" to
  417.            "screen(SCR_PT,'Q',(long)(*n),recpkt);" (3 places) (Jim Noble).
  418.  
  419. Fix type-2 block checks for binary files (make everything unsigned)
  420. (David Wilson).
  421.  
  422. Change name of unchar() macro to xunchar(), to remove conflict with unchar
  423. typedef for unsigned character on ATT3Bx SVR3 systems (Ron Heiby).
  424.  
  425. Add support for long packets, mostly in rpack() and spack().
  426.  
  427. In input(), recognize a valid Error packet even if it has the wrong
  428. sequence number.
  429.  
  430. Make chk2() only return the low order 12 bits of the checksum, to ward off
  431. sign extension problems.
  432.  
  433. Remove extra level of copying by eliminating call to inlin() in rpack().
  434. Instead, call ttinl() directly.
  435.  
  436. Replace rpack() and spack() with "book-Kermit" versions, to allow receiving
  437. and sending of long packets, and removing many extraneous and time-consuming
  438. validity checks.
  439.  
  440. Change packet logging functions to start at the ^A when there are leading
  441. nulls (e.g. padding) that would otherwise act as string terminators.
  442.  
  443. Recode dopar() to do a simple table lookup, rather than calculate parity,
  444. to improve packet construction speed.
  445.  
  446. Fix resend() to resend a packet even if it has leading null pad characters.
  447.  
  448. - ckcfns.c -
  449.  
  450. Zillions of "#ifdef datageneral...#endif" sections added, mostly having
  451. to do with wildcard expansion, yuck (the ckc* files weren't s'posed to have
  452. system dependencies).
  453.  
  454. Changed extern long tsecs to extern int tsecs.
  455.  
  456. Fixed getpkt() to remember final leftovers, so that trailing control
  457. characters are not omitted during send (Gordon Scott).
  458.  
  459. Fixed sdebu() to display seol rather than eol (Scott Ribe).
  460.  
  461. Add rdebu() to display rpar() results.
  462.  
  463. Change name of unchar() macro to xunchar() to avoid S5r3 name conflict.
  464.  
  465. Cast tsecs to (long) in call to tlog in tstats() (Dan Murphy).
  466.  
  467. Replace rpar() and spar() with "book-Kermit" versions.
  468.  
  469. Remove extraneous variable chklen.
  470.  
  471. Add resetc() function to reset some statistics counters.
  472.  
  473. Move fstats(), tstats(), sdebu(), and rdebu() from here to ckuus2.c,
  474. because ckcfns.c had grown too large for some systems (like PDP-11s).
  475. Must keep text size of each module below 8K!
  476.  
  477. - ckcker.h -
  478.  
  479. Change name of unchar() macro to xunchar().
  480.  
  481. - ckcmai.c -
  482.  
  483. Process init file before reading command line args.
  484.  
  485. SAS version had some code to support the REMOTE KERMIT command via a
  486. temp file kludge, which was omitted (do it right, use CCMD, maybe next
  487. release).
  488.  
  489. Shortened hlptxt again, sigh (for Xenix).
  490.  
  491. #include "ckcsym.h" for Mac.
  492.  
  493. #ifdef datageneral for longer filenames.
  494.  
  495. #ifdef for Apollo which wants to use main() for something else.
  496.  
  497. New server REMOTE HELP message for Mac.
  498.  
  499. Remove extraneous variable chklen.
  500.  
  501. - ckcpro.w - 
  502.  
  503. Change calling convention for rpar(), which now returns a string pointer.
  504.  
  505. Reset the tty after returning from packet protocol.
  506.  
  507. Remove extraneous variable 'image', which caused problems for some compilers.
  508.  
  509. Issue "Escape back" messages when given 'send' or 'receive' command in
  510. remote mode.
  511.  
  512. Terminate with message when error packet received and running in background
  513. (Les Mikesell).
  514.  
  515. Only reset statistics counters when files are actually being transferred.
  516.  
  517. - ckucmd.c -
  518.  
  519. Many conditionals added to support Apollo and Data General.
  520.  
  521. - ckufio.c -
  522.  
  523. make zchout return -1 or 0, rather than just passing along ferror's
  524. return code.
  525.  
  526. change NULL arg to execl to (char *)NULL in zxcmd().
  527.  
  528. Various conditionals for Apollo Aegis.
  529.  
  530. Updated support for Fortune (now FT18), from David Sizeland, London University
  531. Medical School.
  532.  
  533. #include <sys/types.h> before other includes (Les M).
  534.  
  535. - ckutio.c -
  536.  
  537. Many Apollo Aegis conditionals.
  538.  
  539. Minor Fortune changes.
  540.  
  541. In conint(), always perform background check, so that backgrd flag can
  542. be set correctly.  This allows errors in TAKE files to be fatal once again
  543. (as they were in 4C). (Gordon Scott) 
  544.  
  545. Also in conint(), enable SIGTERM and SIGHUP signals so lock files can be
  546. cleaned up (Les M).
  547.  
  548. Rearrange the whole conint() function until it seems to make sense, and
  549. try to make connoi() symmetrical with it, i.e. put back the same interrupts
  550. that conint() set traps for.
  551.  
  552. Remove trailing text from #endif's.
  553.  
  554. In ttpkt(), the call to fcntl should OR the FNDELAY bit into the flags,
  555. not AND it! (2 places) (Howard Chu, umich)  For BSD, replace this call
  556. with an ioctl() to set and unset FIONBIO (blocking/nonblocking i/o).
  557. (Later, don't do any of this for BSD.  Measurements showed BSD does better
  558. with blocking reads and buffer checks.)
  559.  
  560. Make some changes to myread() so that it actually works under 4.xBSD.
  561. Change some of the System III/V code as well, so that myread() can actually
  562. return -1 when no data is available (inspection of the previous code showed
  563. that this could never happen before).  (Later, BSD doesn't use myread() any
  564. more.)
  565.  
  566. Add parity to list of args for ttpkt(), so that it can be saved for use by
  567. other tt functions, particularly ttinl().  Saves another copy step.  Add
  568. parity arg to calls from ckcpro.w and ckudia.c.  *** WARNING -- This required
  569. corresponding changes in ck[idvm...]tio.c, which could not be tested! ***
  570.  
  571. Allow user to type ^C^C anytime during packet protocol to exit from
  572. the program and restore terminal modes, by checking for this in ttinl(),
  573. and adding a new -2 return code.  *** Need to change ck[vd...]tio.c too! ***
  574.  
  575. Add support for HP-UX dialout modems from Bill Coalson of McDonnell Douglas.
  576.  
  577. Add syscleanup() function, currently empty.
  578.  
  579. Rearrange myread() a little bit for doing myunread() (Les M).
  580.  
  581. Totally rewrite ttinl() for efficiency & cleanliness.  No #ifdef's!
  582.  
  583. - ckuusr.h -
  584.  
  585. Add symbol for 'set terminal'.
  586.  
  587. - ckuusr.c -
  588.  
  589. Return(0) from parser when we exit from command file.
  590.  
  591. change dcl of istat & qstat from int to SIGTYP.
  592.  
  593. in cmdlin(), make sure to set quiet = 1 if 'k' option was elected.  This
  594. fixes the infamous 4K CRLF bug (the 'conoll("")' in ckcmai.c was inserting
  595. an unbuffered CRLF into the buffered data after the first 4K buffer).
  596.  
  597. Add 'set retry'.
  598.  
  599. Add call to syscleanup() from doexit().
  600.  
  601. Change some GOOD_EXITs to BAD_EXITs.
  602.  
  603. Fix parsing of the last line of multiline 'get' to allow editing.
  604.  
  605. Fix reading multiline 'get' commands from 'take' file.
  606.  
  607. Move functions shopar(), dolog(), debopn() to ckuus2 because ckuusr.c was
  608. getting too big to compile on some systems (PDP-11s, etc).  Also, move
  609. statistics display to new function dostat() in ckuus2.c.
  610.  
  611. - ckuus2.c -
  612.  
  613. Some new messages for Data General.
  614.  
  615. Add '-e' (extended packet length) to usage() message, but remove -h so
  616. whole message still fits on screen.
  617.  
  618. Fix hmsg() to allow editing of 'help' commands.  Previously, operations like
  619. 'help send<esc><^W>' would fracture the command line.
  620.  
  621. Move functions shopar(), dolog(), debopn() here from ckuusr.c.  Add dostat().
  622.  
  623. In shopar(), display limits on send & receive packet lengths, file and
  624. terminal byte sizes.
  625.  
  626. Move fstats(), tstats(), sdebu(), and rdebu() here from ckcfns.c.
  627.  
  628. - ckuus3.c -
  629.  
  630. Conditionals for Data General.
  631.  
  632. Add 'set retry'.
  633.  
  634. Add support for long packets in 'set send/receive packet-length'.
  635.  
  636. Add trailing argument to 'set file type {binary, text} {7, 8}'.
  637.  
  638. Add 'set terminal bytesize {7, 8}'.
  639.  
  640. Remove extraneous variable 'image', which caused problems for some compilers.
  641.  
  642. Increase debug and transaction log string buffer lengths, and do length
  643. checking before sprintf()'s to avoid core dumps.
  644.  
  645. - ckucon.c -
  646.  
  647. Before forking, do signal(SIGUSR1,SIG_SIGN) to avoid killing parent if
  648. connecting to a line with no carrier.  Without this, the child's signal would
  649. arrive before the parent's handler was set up (Les M).
  650.  
  651. - ckudia.c -
  652.  
  653. Change declarations of savAlrm and savInt from int to SIGTYP (Ron Heiby).
  654.  
  655. Change Hayes dialing string from AT DT to AT D.
  656.  
  657. Change Ventel modem dial string from "<K%s'r>" to "<K%s\r>" (Jim Knutson).
  658.  
  659. - ckuscr.c -
  660.  
  661. Change declaration of savAlrm from int to SIGTYP (Ron Heiby).
  662.  
  663. Don't output gratuitous messages when in quiet mode.
  664.  
  665. Increase script buffer size (SBUFL) from 300 to 512 (Les M).
  666.  
  667. Remove 7-char restriction on "expect" strings (Les M).  Then remove this
  668. change after core dumps.
  669.  
  670. Log script execution to session log.  Requires addition of new flushi()
  671. function.
  672.  
  673. - ckwart.c -
  674.  
  675. Several minor fixes from Jim Noble, mostly regarding format of output file.
  676.  
  677. - Makefile (ckuker.mak) -
  678.  
  679. New Fortune support under "make ft18" (David Sizeland).
  680.  
  681. New make option for "sys5r3" (Ron Heiby).
  682.  
  683. New make option for "cie" (David Lawyer).
  684.  
  685. New make option for "hpux" (Bill Coalson).
  686.  
  687. New make option for "ix370" (Wayne Van Pelt).
  688.  
  689. New make option for "zilog" (Dave Woolley).
  690.  
  691. Add Xenix hints (Dan Murphy).
  692.  
  693.  
  694. C-KERMIT FOR UNIX, CHANGES FROM 4D(060) TO 4D(061), 9 SEP 86:
  695.  
  696. Changes from Jack Rouse and Phil Julian of SAS Institute:
  697. . Commodore Amiga support replaced, all-new CKI*.* files.
  698. . Revert CKUCMD.[CH] and CKUUS?.[CH] to their old selves (mostly).
  699. . Fix multiline GET parsing.
  700. . Supply a missing printf() parameter in CKWART.C.
  701.  
  702. Other changes:
  703. . Fix top-level parse loop in CKUUSR.C to reset any erroneous start state.
  704. . Make sysinit() in CK[UVMI]IO.C return -1 if it fails, 0 if it succeeds.
  705. . Have CKCMAI.C check sysinit() return code.
  706. . Change refs in CKUFIO.C to _file member of FILE structure to fileno().
  707. . In CKUFIO.C, have zclosf() kill fork before wait().
  708. . In CKUTIO.C, fix typos in Sys-V speed setting code.
  709. . In CKCFN2.C fix errpkt() to close open files.
  710. . Add 4.3BSD acu control code to CKUTIO.C, under NEWUUCP conditional.
  711.  
  712. Compiled and tested under Ultrix 1.1 (= 4.2BSD), Ultrix 1.2 (whatever that
  713. may be a hybrid of), 2.9BSD on a DEC Pro/380, and true 4.3BSD on a VAX
  714. 11/750 (4.3BSD includes an earlier version of C-Kermit -- 4C(057) -- on
  715. its distribution tape).
  716.  
  717.  
  718. C-KERMIT FOR UNIX, CHANGES FROM 4C(058) TO 4D(060), 29 APR 86:
  719.  
  720. . Add support for Commodore Amiga (Lattice C) from Davide Cervone of Rochester
  721.   University in modules CKI*.*, with minor changes to CKCMAI.C, CKUUS?.C,
  722.   CKUCMD.C, CKCDEB.H.  No effect on UNIX Kermit. 
  723.  
  724. . Fix several minor bugs in UNIX version:
  725.   - Multiline GET command failure when executed from TAKE file (CKUUSR.C).
  726.   - File collision renaming bugs fixed, algorithm improved (CKUFIO.C).
  727.   - CONNECT command now reports fork creation failure (CKUCON.C).
  728.  
  729.  
  730. C-KERMIT FOR UNIX, CHANGES FROM 4C(057) TO 4C(058), 19 MAR 86:
  731.  
  732. makefile:
  733. . Add special entry "rtu" for Masscomp.
  734. . Fix up "bsd29" entry.
  735.  
  736. ckcdeb.h:
  737. . Added defs for CHAR and LONG for 2.9 BSD.
  738.  
  739. ckcfns.c:
  740. . Make reof() return a value, like it's supposed to.
  741. . Make spar() set the right packet terminator (seol, not eol).
  742. . Change tinit() to put a NAK packet in retransmit buffer, but don't send it.
  743. . Reset cxseen in reof(), so it isn't sticky for the next file.
  744.  
  745. ckcfn2.c:
  746. . Fix input() to treat NAK for packet n+1 as ACK for packet n.
  747. . Defend against writing 0 past end of buffer in rpack().
  748.  
  749. ckcpro.w:
  750. . Don't send NAK automatically at beginning of receive.
  751. . In <sseof> rule, call sfile with argument xflg, like sfile expects.
  752. . Sleep a couple secs before returning to give last packet some time to escape.
  753.  
  754. ckucon.c:
  755. . Remove ^S from among escape character arguments.
  756.  
  757. ckufio.c:
  758. . Change execl() calls to have NULL as 5th arg, rather than (char *)0.
  759. . Fix up 2.9 BSD stuff, make it use opendir() for directory stepping.
  760.  
  761. ckutio.c:
  762. . Fix nontimed read in ttinl() to work.
  763. . Change msleep() to return immediately if argument is 0 (for dial pause).
  764. . Skip setting console modes in con...() functions if not a real tty.
  765. . Give system error message in ttopen() if line can't be opened.
  766. . Remove erroneous references to DIRSIZ.
  767. . Fix up 2.9BSD stuff.
  768.  
  769. ckuusr.c:
  770. . Change execl() calls to have NULL as 5th arg, rather than 0, or (char *)0.
  771.  
  772. ckvfio.c (VAX/VMS support):
  773. . Fix system() to allow spawning interactive shell if '!' command given.
  774. . Fix zopeni() to not spuriously reject certain calls, so REMOTE commands work.
  775. . Fix msleep(m) to return immediately if m==0.
  776.  
  777.  
  778. C-KERMIT FOR UNIX, CHANGES FROM 4C(056) TO 4C(057), 31 JUL 85:
  779.  
  780. general (many modules affected):
  781. . Change "set send packet-length" to override Send-Init value.
  782. . Change still more global character variables from int or char to CHAR.
  783. . Fix 4.1BSD and C/70 support (Charles Brooks), 2.9 support (Herm Fischer).
  784.  
  785. ckcfns.c:
  786. . Server always executes generic (but not host) commands in text mode.
  787. . Change calling convention for getchx() to allow better reporting of eof.
  788.   Some earlier changes had apparently broken PDP-11 support for binary
  789.   files because of sign extension...
  790. . Again, several hours after initial announcement of 4C(057) found that above
  791.   change had busted things for 68000s (again) because of still more int/char
  792.   conversion problems.  Changed 'next' from int to char and moved its file
  793.   begin/end function to a new flag variable, 'first'.  Hopefully, not too many
  794.   copies got out; those that did are dated 29 July; the version with this fix
  795.   is dated 31 July.  Sigh...
  796.  
  797. ckuusr.c:
  798. . Fix timing statistics to work for 16-bit machines too (Dan).
  799. . Change calls to execl() to terminate with "(char *)0", not "0".
  800.  
  801. ckufio.c:
  802. . Fix bug that sometimes prevented sending files with 14-char long names.
  803.  
  804. ckutio.c:
  805. . Herm fixed it up so all the changes in previous edits that broke his
  806.   modem control code are now more compatible with it.  Also, myread() -- the
  807.   nonblocking equivalent of read() -- was fixed to report errors better.
  808.  
  809. ckudia.c:
  810. . Many changes from Herm & Dan, mostly relating to modem control and resetting
  811.   alarms to get the dialing-with-no-carrier-to-connected-with-carrier
  812.   transition working again.
  813.  
  814.  
  815. C-KERMIT FOR UNIX, CHANGES FROM 4C(055) TO 4C(056), 11 JUL 85:
  816.  
  817. ckcpro.w:
  818. . Make new ssfile state, to allow for display of data in ack to file header.
  819. . If data comes in ack to file header, log to transaction file.
  820. . Put local filename in data field of ack to F packet.
  821. . Add calls to new rtimer(), gtimer() to allow transactions to be timed.
  822. . When sending, include D in EOF packet in all cases when interrupted.
  823.   Previously, only "czseen" would do it, but not cxseen.
  824. . Upon receipt of Z packet, send Ack AFTER closing file rather than before.
  825.   If file can't be closed, send Error packet instead of Ack.
  826. . Upon receipt of error packet while receiving file, discard file.
  827. . Upon receipt of unexpected packet type, send Error, not Nak.
  828.  
  829. ckcfns.c:
  830. . Change clsof() to accept an argument specifying whether to discard.
  831. . Change clsof() to keep incomplete file regardless of arg if keep != 0.
  832. . Change clsof() to return -1 if output file could not be closed.
  833. . Change name of getch() to getchx() to avoid conflict with libraries.
  834. . Fix Yet Another Problem with 8th-bit Quoting Negotiation.  The bug was that
  835.   if other side said 'N' we would treat 'N' as quoting prefix rather than "NO"
  836.   (but only if parity was set to other than none).
  837. . Remove input buffer flush from sfile() (why was it ever there???).
  838. . Change seof() to accept an argument to put in the Z-packet data field.
  839. . Add transaction timing statistics to reof(),reot() for transaction log.
  840. . Combine sfile() and sxpack() into one function.
  841.  
  842. ckcfn2.c:
  843. . Improve performance of rpack by reducing scan for soh to number of chars
  844.   read rather than whole buffer (required changing inlin()'s return code).
  845. . Allow rpack to skip over "blank lines" without failing; this was preventing
  846.   file transfer with some systems that always sent CRLF before transmitting
  847.   anything (e.g. UCLA's MVS/TSO VTAM).
  848. . Don't flush input buffer at end of rpack(), because if the packet that we
  849.   just read is a repeat or an echo, the one we want might be queued up after
  850.   it.  Instead, flush in input() only after the desired packet arrives.
  851. . Allow user to type ^A^C^C to interrupt rpack and exit cleanly from program.
  852.  
  853. ckuusr.c:
  854. . Add "incomplete" to "set" parse table and display incomplete in "show".
  855. . Add "%" command for comment lines.
  856. . Add elapsed time and effective baud rate display to "statistics" command.
  857. . Fix "show parameters", had send/receive end-of-packet reversed.
  858. . Make modem-type lookup in "show" a little cleaner.
  859. . Fix "echo" to interpret \ooo escapes in its argument.
  860.  
  861. ckuus2.c:
  862. . Add "help set incomplete".
  863. . Fix help message for "set line".
  864.  
  865. ckuus3.c:
  866. . Add "set incomplete" support.
  867. . Allow "set prompt" argument in doublequotes and strip quotes if used, to
  868.   allow specification of prompt with leading &/or trailing blanks.
  869. . Fix "set send/receive padding/pad-character" -- they had variables reversed.
  870.  
  871. ckufio.c:
  872. . For Pro/Venix V1, make MAXWILD and SSPACE even smaller, so malloc() still
  873.   has some space left to allocate...
  874. . Change zclose() to return -1 if file could not be closed.
  875.  
  876. ckutio.c:
  877. . Use Sys III/V nonblocking read() technique also for 4.xBSD -- improves
  878.   performance noticeably!
  879. . Add rtimer() and gtimer() functions for resetting/getting elapsed time.
  880. . Don't return failure from tthang() if line wasn't open.
  881. . Print warning message if tthang() or ttunlk() fail.
  882. . In ttclos(), relinquish exclusive access.
  883. . Change some #ifdefs so they depend on features, like FIONREAD, rather than
  884.   system, like BSD4.  This allows collapsing a lot of redundant code.
  885.  
  886. ckucon.c:
  887. . Add hangup (h) option to escape character arguments.
  888.  
  889. ckuscr.c:
  890. . Change static timeInt() to global scrtime() to avoid problems on code
  891.   mapped systems.
  892.  
  893.  
  894. C-KERMIT FOR UNIX, CHANGES FROM 4C(054) TO 4C(055), 28 JUNE 85:
  895.  
  896. ckudia.c (all changes by Dan Schullman, DEC):
  897. . Add support for US Robotics modem (untested) from Joe Orost at Berkeley.
  898. . Reorganize MDMINF data structure to accommodate US Robotics (some char
  899.    fields had to become strings).
  900. . Allow interrupts (SIGINT, e.g. ^C) to cancel dialing in progress.
  901. . Ring bell when connection made successfully.
  902. . Close line on failures.
  903. . Allow stored numbers with DF100 and 200 modems.
  904.  
  905. ckudia.c now supports the following modems:
  906. . Cermetek Info-Mate 212 A
  907. . DEC DF03-AC
  908. . DEC DF100 Series
  909. . DEC DF200 Series
  910. . General Data Comm 212A/ED
  911. . Hayes Smartmodem 1200 & compatibles
  912. . Penril
  913. . Racal Vadic
  914. . US Robotics 212A
  915. . Ventel
  916. Plus "unknown" modems and direct (modemless) connections.
  917.  
  918.  
  919. C-KERMIT FOR UNIX, CHANGES FROM 4C(053) TO 4C(054), 25 JUNE 85:
  920.  
  921. ckuker.mak (makefile):
  922. . Add "make ft17" for Fortune 16:32 For:Pro 1.7.
  923. . Add "make uts24" for Amdahl UTS 2.4
  924. . Add "make valid" for Valid Scaldstar CAD system
  925. . Add "make c70" for BBN C/70 IOS 2.4
  926.  
  927. ckcmai.c:
  928. . Add call to sysinit()
  929.  
  930. ck[uvm]tio.c:
  931. . Add sysinit() function.  For VMS, open console.  For others, null for now.
  932.  
  933. ckutio.c, ckufio.c:
  934. . Add support for Fortune 16:32, mostly like 4.1bsd.
  935. . Ditto for Amdahl UTS 2.4, mostly like V7.
  936.  
  937. ckuus2.c:
  938. . Expand a couple tabs in hlp1 (-h help message) so things line up right.
  939.  
  940.  
  941. C-KERMIT FOR UNIX, CHANGES FROM 4C(052) TO 4C(053), 21 JUNE 85:
  942.  
  943. ckcfn2.c:
  944. . Change dopar() to be of type CHAR.
  945. . Fix dopar() to calculate odd parity correctly.
  946.  
  947. ckucon.c, ckuscr.c:
  948. . Add "extern CHAR dopar();" declarations.
  949.  
  950.  
  951. C-KERMIT FOR UNIX, CHANGES FROM 4C(050) TO 4C(052), 18 JUNE 85:
  952.  
  953. ckcfns.c:
  954. . Repair rpar() and spar() handling of 8th bit prefix negotiation.
  955. . In sinit(), when sending from stdin, allow "-a name" to work.
  956. . In rcvfil(), guard against receiving a null F packet.
  957.  
  958. ckcmai.c:
  959. . Change hlptxt[] to contain less than 256 characters (for Xenix)
  960.  
  961. ckcpro.c:
  962. . In proto() call ttopen() with a temp, x, rather than "local", then only
  963.   set local if x was set.
  964.  
  965. ckucmd.c:
  966. . In cmifi(), make y long rather than int.  This was making some 16-bit
  967.   machines erroneously report that files longer than 32K could not be found.
  968.  
  969. ckuker.mak (makefile): 
  970. . Change symbol 3BX to ATT3BX (has to start with letter)
  971. . Remove line continuations in the middle of strings
  972. . Add entry for sys3nid (System III/V on PDP-11 with no I&D space)
  973.  
  974. ckufio.c:
  975. . Add appropriate #ifdef for TOWER1 in zkself()
  976. . Add 2.9bsd identification string
  977.  
  978. ckutio.c: 
  979. . Move definition of CTTNAM from here to ckcdeb.h, so it can be shared.
  980. . In initrawq() (for V7 only) read the proc table again after fork().
  981. . Change symbol 3BX to ATT3BX.
  982. . Get rid of the (void) casts in strxxx() invocations -- the proliferation
  983.   of conditionals was getting ridiculous, and it was only to please lint.
  984. . In conbin() for Sys III/V, open terminal in 7-bit, parity-enabled mode rather
  985.   than 8-bit, no-parity mode (some sites actually use parity).
  986. . In conint(), trap and ignore QUIT signal, trap SIGHUP and handle like SIGINT.
  987.   This prevents lock files from being left behind after hangup or quit.
  988. . In connoi(), turn off traps for SIGQUIT, SIGHUP.
  989. . In ttopen(), add Sys III/V code using ctermid() to better determine remote/
  990.   local status when stdin redirected.  If not Sys III/V and stdin redirected,
  991.   assume local, rather than remote, so that "set speed" and other local-mode
  992.   only commands will work.
  993. . Add 2.9bsd identification string
  994. . Make new ANYBSD symbol to select 4.1, 4.2, and 2.9.  In some cases, all 3
  995.   work the same, in others, 2.9 and 4.2 are the same, 4.1 special.
  996.  
  997. ckuus*.c:
  998. . In command line invocation, base local/remote determination on CTTNAM.
  999. . In "set line" only ask ttopen() to set local/remote if not default tty.
  1000. . Ignore SIGQUIT and SIGINT signals while inferior shell active in XXSHE:.
  1001.   Previously, both Kermit and the inferior shell would catch them.
  1002. . In XYLINE: call ttopen() with a temp, x, rather than "local", then only
  1003.   set local if x was set.
  1004. . Change message "status report..." to "status report:" to avoid dot confusion.
  1005.  
  1006.  
  1007. C-KERMIT FOR UNIX, CHANGES FROM VERSION 4.2(030) TO 4C(050), 30 May 85:
  1008.  
  1009. All files except ckwart.* have been renamed according to a consistent
  1010. convention, see ckaaaa.hlp for an explanation.
  1011.  
  1012. Copyright notices added to every module, so we can't be enjoined from
  1013. distributing our own program if we give the right to other organizations,
  1014. like Berkeley, to distribute it.
  1015.  
  1016. ckwart.c
  1017.  
  1018. . Move the #define in the txt1 string to not start on a new line.
  1019. . Fix the comments printed by wart so they can't be construed as comments
  1020.   by the compiler that compiles wart.
  1021. . Include formfeed among the skipped-over whitespace characters.
  1022. . Add wart version information. 
  1023.  
  1024. ckcdeb.h (formerly ckdebu.h):
  1025.  
  1026. Forget about typedefing LONG to be unsigned long -- it causes too many
  1027. problems for PDP-11 C compilers, etc.  Just let LONG be long.
  1028.  
  1029. If symbols DEBUG and TLOG not defined (e.g. in Makefile), then define
  1030. null macros to replace calls to the debug() and tlog() functions, to save
  1031. space and execution time.  Program is too big for Macintosh with these
  1032. functions compiled in.
  1033.  
  1034. Establish a symbol NLCHAR.  If this symbol is defined, then text (ascii)
  1035. files are stored with a single character (such as lf or cr) terminating
  1036. each line, and this character is the value of NLCHAR.  If not defined,
  1037. then the system uses CRLF.  When NLCHAR is defined, C-Kermit maps between
  1038. that character and CRLF.
  1039.  
  1040. ckcfns.c, ckcfn2.c (formerly ckfns.c, ckfns2.c):
  1041.  
  1042. . change all calls to screen() to new form.
  1043. . fix bug in sfile() that sometimes prevented literal names from working.
  1044. . don't translate send-as names in sfile, always use them literally.
  1045. . change input() to always resend() after getting a NAK.
  1046. . change getpkt to clear leftovers when starting new file (next = -1),
  1047.   so that filenames in F pkt wouldn't have garbage after previous file
  1048.   was interrupted.
  1049. . Change call to zchin() to use new calling convention so bytes with
  1050.   hi bit on won't be confused with eof on some systems.
  1051. . Reset czseen in seof, not in clsif, so that remote ^X while C-Kermit
  1052.   sending will result in correct Z packet with D in data.
  1053. . In resend(), don't send any packet if packet buffer is empty.
  1054. . Un-hardwire getch() from Unix newline text file convention.
  1055. . Fix bug that sometimes resulted in contents of R or X packet
  1056.   having first character doubled.
  1057. . Fix bug in getpkt that prevented leftovers from being transmitted
  1058.   after end of file.
  1059. . Have tinit() clear c[xz]seen and filnam to prevent bad things happening
  1060.   after interruption or emergency protocol exit.
  1061. . Have syscmd() return 0 if called with null string.  This allows single
  1062.   process systems like the Macintosh to act as servers, even if they can't do
  1063.   commands like remote directory.
  1064. . Send out initial nak when doing receive, so that there will be something
  1065.   in the packet buffer to resend.
  1066. . Check for failure return code from zchout, to catch disk full errors, etc.
  1067. . When server getting input from a system function, call zopeni() on new
  1068.   ZSYSFN channel, rather than circumventing zopeni() by calling zopen().
  1069. . Clean up inlin() a little, use maxt vs MAXTRY consistently. 
  1070. . Change rpack,spack,rpar,spar,etc to use the new, separated send/receive
  1071.   packet parameters (padding,timeout,eol,soh,etc).
  1072.  
  1073. ckcker.h (formerly ckermi.h):
  1074.  
  1075. . Removed #include <stdio.h> and <ctype.h> from ckermi.h.  Macintosh does not
  1076.   need all that... (thanks, Bill)
  1077. . Remove include of ckdebu.h (now ckcdeb.h).
  1078. . Add defs for LF and NUL.
  1079. . Add def for new ZSYSFN file i/o channel.
  1080.  
  1081. ckcpro.w (formerly ckprot.w) Protocol Module:
  1082.  
  1083. . Add "a" state to cancel any transaction.
  1084. . Remove entries for input='N', since this is now handled by input().
  1085. . Fix "a" state to not cause "OK" message when files closed.
  1086.  
  1087. ckucmd.c (formerly ckcmd.c) Unix Command Package:
  1088.  
  1089. . Set global cmerrp (error prefix) to be same as prompt, but with '>' stripped.
  1090. . Allow interactive command continuation using trailing '\'.
  1091. . Change "*bp++ == NUL;" in getwd() to simply "bp++;".
  1092. . Test for CR as well as NL for line termination (for Apollo Aegis).
  1093. . In ckucmd.h, #define getchar specially for VMS and Aegis.
  1094. . In cmfld, return(0) from filling out default when ESC typed; this prevents
  1095.   "log trans <ESC>transact.log <ESC>transact.log <ESC>transact.log ..."
  1096. . In cmtxt, preserve pointers & counts across calls in case of reparse.
  1097. . In getwd, return -1, NOT -2, if ^U (line kill) is typed.
  1098.  
  1099. ckucon.c (formerly ckconu.c) Connect module:
  1100.  
  1101. . When writing to session log, make some minimal attempt to recover
  1102.   from disk full or other i/o errors (just turn off logging flag).
  1103. . Add baud and parity info to status display.
  1104.  
  1105. ckudia.c (formerly ckdial.c) Dial command:
  1106.  
  1107. . Support added for Racal-Vadic, Cermetek, Penril, General Datacomm.
  1108. . Use msleep() for higher precision timing.
  1109.  
  1110. ckufio.c (formerly ckzunx.c, and before that ckzbsd.c):
  1111.  
  1112. Started from Charles Brooks's 4.2 ckzunx.c, which is the original C-Kermit
  1113. release 4.2 version, to which he added 4.1bsd support.
  1114.  
  1115. . Fixed zltor() to only count dots after the last '/'.
  1116. . Declared malloc as "char *malloc()".
  1117. . Change fprintf(fp[n],s) to fputs(s, fp[n]) in zsout & zsoutl.
  1118. . Added zkself() function to log self out, for use by server "bye".
  1119. . Changed calling convention for zchin() to allow 68000's etc to return EOF.
  1120. . Make zopeno() chown the file to self, in case program set[ug]id'd.
  1121. . Changed znewn() to try not to construct a name that is too long.
  1122. . Merge in Gregg Wonderly's v7 support.
  1123. . Make various changes to v7 support to fit proc table stuff to other systems.
  1124.  
  1125. . (023) Changed zopeni(), when called with new ZSYSFN channel number,
  1126.   to invoke zxcmd() to start a fork and get its fd; also changed zclose()
  1127.   and chkfn() accordingly.
  1128.  
  1129. . (024) In zchki(), allowed 0 as well as S_IFREG as S_IFMT value for ordinary
  1130.   file; Sys V stat() can return either of these values for an ordinary file.
  1131.   Also, insert missing #else in zkself().
  1132.  
  1133. . (025) declare zchki() to be of type 'long', so that it can return valid
  1134.   file sizes for big files.  Also fix internal variables that hold size to
  1135.   also be long.  (Same change to ckvfio.c.)  Also, change ckcfns.c and ckucmd.c
  1136.   to declare 'long zchki();'.
  1137.  
  1138. ckutio.c (formerly ckxunx.c and ckxbsd.c):
  1139.  
  1140. Started from Charles Brooks's 4.2 ckxunx.c, which is the original C-Kermit
  1141. release 4.2 version, to which he added 4.1bsd support.
  1142.  
  1143. . Added the following for Pro/Venix Version 1:
  1144.    - Filled in msleep() using alarm(-clockticks).
  1145.    - Filled in conchk() and ttchk() using TIOCQCNT.
  1146.    - Changed default tty name (dftty) to be "/dev/com1.dout".
  1147.    - Added line locking via /usr/spool/uucp/LCK..devname and TIOCEXCL.
  1148. . Changed local variable c from int to CHAR in ttinl().
  1149. . Let CEB's code to hangup line upon close in 4.1bsd also work for 4.2bsd.
  1150. . Removed flock() from ttopen(), call ttlock() before trying to open tty.
  1151. . Corrected some places where alarms & signals were not turned off.
  1152.  
  1153. . Changed calling convention for ttopen() to allow it to set the "local"
  1154.   variable, since ttopen can call the system to figure out whether a given
  1155.   device is the job's controlling tty.  Also had to change all modules that
  1156.   call ttopen() to pass this variable by reference instead of by value.
  1157.  
  1158. . In ttopen, copy ttname string into a static ttnmsv string global to ckutio
  1159.   module, rather than just copying the pointer (which is pointing at a moving
  1160.   target).  Should fix PC/IX tthang() problem.
  1161.  
  1162. . Add support for AT&T 3B-series under 3BX conditional; initially, it just
  1163.   follows UXIII conditional, but uses special uucp lock file name.
  1164.  
  1165. ckuusr.c, ckuus2.c, ckuus3.c (formerly ckuser.c, ckusr2.c, ckusr3.c):
  1166.  
  1167. . all occurrences of printf(s) replaced by printf("%s",s) or puts(s).
  1168. . shortening of remaining long strings.
  1169. . continuation lines now allowed in commands if line ends with "\".
  1170. . make "dir" command arg default to ".", not "*", to prevent recursive listing.
  1171. . make "!" command with no args do system("$SHELL").
  1172. . removed redundant definitions of ncmd, nrmt, nprm.
  1173. . totally redefined and rewrote screen() function.
  1174. . Change send-as to use cmtxt, not cmfld; remove cmcfm.
  1175. . Fix send command to wait for confirmation after wild filespec (this was
  1176.   broken by send-as change above, few people saw it).
  1177. . Put 'log debug' command in #ifdef DEBUG
  1178. . Put 'log transaction' command in #ifdef TLOG
  1179. . Use 'transact.log' as default name for transaction log, rather than
  1180.   'transaction.log', which is too long for all but 4.2bsd Unixes.
  1181. . Use symbols for exit() & doexit() return codes, not hardwired 0 and 1.
  1182. . Use symbol for name of init file.
  1183. . Put Unix-specific messages in #ifdef's
  1184. . In 'set line', put speed back to -1 if not local.
  1185. . Change "*xargv++;" in cmdlin() to simply "xargv++;".
  1186. . Change all "if (x = (cmcfm()) < 0)" to "if ((x = cmcfm()) < 0)".
  1187. . In ckuus3, change "turnch == y" to "turnch = y"; this bug prevented
  1188.   "set handshake" from working.
  1189. . Add code in shopar() to look up and display modem type correctly.
  1190. . Change "set line" code to have ttopen() figure out local/remote mode.
  1191. . Fix "set line" not to erroneously set ttname if it ttopen fails.
  1192. . In remote cwd parsing, accept CR as well as NL as password terminator.
  1193. . In local directory command, use DIRCMD rather than "ls -l ".
  1194. . In screen() function SCR_QE, print long argument with %ld so the ^A
  1195.   status report doesn't show all 0's on systems where ints and longs
  1196.   are different length (%ld was already used in the other screen functions).
  1197. . Fix multiline 'get' parsing to allow editing (required fixes to ckucmd.c).
  1198. . Add conditionals for init file name for various systems.
  1199. . Phase out the following set commands:
  1200.   set end-of-packet, set start-of-packet, set timeout, set padding & pad-ch.
  1201.   Replace by set send (each of these) and set receive (each of these), to
  1202.   allow inbound & outbound packet parameters to be set separately.
  1203. . Put new set send/receive params in show command display.
  1204. . Add version info for ckudia and ckuscr to 'sho ver'.
  1205. . Add init file name to 'sho param'.
  1206. . Replace system("pwd") in XXCWD code with system(PWDCMD), defined in ckufio.
  1207.