home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / old / ckermit80 / edit206 / ckc201.txt < prev    next >
Text File  |  2020-01-01  |  36KB  |  728 lines

  1. C-KERMIT CHANGE LOG (Changes since 8.0.200 of 12 Dec 2001)
  2.  
  3. ---8.0.200---
  4.  
  5. Known bugs (+ = fixed after release):
  6.  
  7.  + 1. tilde_expand() can call getcwd() with NULL arg.
  8.  + 2. getexedir() called too early (fatal in combination with (1)).
  9.  + 3. Kermit "get blah" where blah is a symlink; server refuses to send it.
  10.       Should not do this if GET not recursive.
  11.  ? 4. Dave Sneddon's report about VMS fore/background confusion.
  12.  + 5. FTP GET path/file doesn't work - path not stripped - but MGET works.
  13.  + 6. IRIX 5.3 compilation problems (have patches from Marcus Herbert)
  14.  X 7. Filename completion bug (see below) (deferred).
  15.  + 8. QNX6 herald and other problems.
  16.  
  17. -------------
  18.  
  19. Merged Jeff's changes, 20 Dec 2001:
  20.  
  21.  . Changed all occurrences of "ttnproto == NP_TELNET" to "IS_TELNET()" to
  22.    account for the difference between SSH and Telnet.  ckuscr.c,
  23.    ckuus[3457].c, ckcnet.h, ckcfns.c, ckudia.c, ckutio.c, ckucon.c, ckucns.c.
  24.  
  25.  . Moved SSH pty failure warnings.  ckuusr.c.
  26.  
  27.  . Security adjustments to FTP module, plus fix an error message.  ckcftp.c.
  28.  
  29.  . Adjustment of some security-related #ifdefs. ckcdeb.h, ckuus2.c, ckctel.c.
  30.  
  31.  . Guard against calling getpwnam() with a NULL arg in tilde_expand() ckufio.c.
  32.  
  33.  . Moved getexedir() call to later, where it's safe.  ckcmai.c.
  34.  
  35. Added SSH ADD and many SSH SET commands from Jeff's spec.  Fixed SHOW SSH
  36. to not dump core if variables weren't set.  ckcker.h, ckuus[r3].c, 20 Dec 2001.
  37.  
  38. C-Kermit in server mode, client says "get foo" where foo is a symlink.
  39. Server says "no files meet selection criteria" instead of sending the file.
  40. It should only refuse to follow symlinks if it's a recursive get.  Fixed
  41. in sgetinit(): ckcpro.w, 21 Dec 2001.
  42.  
  43. More work on SSH and SET/SHOW SSH commands.  ckuus[r3].c, 21 Dec 2001.
  44.  
  45. Undid Jeff's replacement of the SSH pseudoterminal allocation failure
  46. message, because now it comes out any time an SSH command has to be
  47. reparsed (in the non-SSHBUILTIN case).  ckuusr.c, 21 Dec 2001.
  48.  
  49. More SSH and SET SSH command work back & forth with Jeff, plus Jeff added
  50. SET HOST /NET:SSH.  ckcmai.c, ckuus[r37].c, ckcdeb.h, ckuusr.h, 22 Dec 2001.
  51.  
  52. Added SSH OPEN switches.  ckuusr.c, 22 Dec 2001.
  53.  
  54. Added SSH CLEAR, HELP SSH, and HELP SET SSH.  ckuus[r2].c, 23 Dec 2001.
  55.  
  56. From Jeff:
  57.  . SET TCP commands now apply to SSH
  58.  . SSH V2 REKEY and FORWRD-{LOCAL,REMOTE}-PORT  commands now implemented
  59.  . Missing DLLs automatically disable appropriate authentication mechanisms.
  60. ckuusr.c ckcnet.c ckuus3.c ckcmai.c ckcnet.h ckuus4.c, 26 Dec 2001.
  61.  
  62. From Jeff:
  63.  . Remove SET SSH KEEPALIVES.
  64.  . Add help text for SSH AGENT { ADD, DELETE, LIST }.
  65. ckuus[23].c, 28 Dec 2001.
  66.  
  67. Added parsing for SSH AGENT { ADD, DELETE, LIST }.  ckuusr.c, 28 Dec 2001.
  68.  
  69. From Jeff:
  70.  . Fixed a crash that can happen when making an SSH connection.
  71.  . Filled in SSH AGENT actions.
  72.  . Changed default for strict host key check (to ASK) and help text.
  73.  . uploaded new binaries include ~kermit/os2test/beta/ssh-agent.exe
  74.  . Read man ssh-agent on ftp.kermit.columbia.edu for details on what it does.
  75. ckuus[r23].c, 28 Dec 2001.
  76.  
  77. "ftp get path/filename" didn't work; the FTP client did not strip the path
  78. from the local copy of the filename when doing a GET, even though it did
  79. for MGET.  Diagnosis: in doftpget(), the "if (!getone && !skipthis)" statement
  80. lacked an "else" part for the getone case.  ckcftp.c, 28 Dec 2001.
  81.  
  82. A while back Jeff reported that in FTP MGET, if you cancel a file with 'x',
  83. all the rest of the files arrive truncated to 0 bytes.  I tried this on both
  84. Unix and Windows and couldn't reproduce it.
  85.  
  86. In the last-minute flurry to release C-Kermit 8.0, I thought I noticed the FTP
  87. client failing to update the fullscreen file-transfer display.  But it seems
  88. to work right, at least in Unix.  When downloading a big file with FTP, all
  89. the display fields are updated as expected.  But smaller files might go by too
  90. fast for the display to do anything.  HOWEVER, in K95 the file transfer
  91. display does not update itself until the end of the file, even if the file
  92. takes a long time to transfer.  This happens in both the Console and GUI
  93. versions.  A thread thing?  (Jeff says no.)  Yet the same display works fine
  94. on Telnet connections.
  95.  
  96. In IRIX 5.3, the select()-based CONNECT module had to include <sys/time.h>
  97. or else it blew up with "struct timeval" unknown.  Since there already was
  98. a SYSTIMEH CFLAG, I added the #include within #ifdef SYSTIMEH..#endif and
  99. rebuilt with KFLAGS=-DSYSTIMEH, only to discover that the irix5* targets
  100. didn't bother to propogate KFLAGS.  Fixed in ckucns.c, makefile, 30 Dec 2001.
  101.  
  102. Increased IRIX5x Olimit from 2400 to 3000 because of ckuus[34].c.  Added
  103. -ansi, since (Marcus Herbert reported) we were not actually getting ANSI-C
  104. compilation even though CK_ANSIC was defined.  But now that we are, we get
  105. warnings in <netinet/tcp.h>, which is included by ckcnet.h:
  106.  
  107.   bit-field 'th_off' type required to be int, unsigned int, or signed int.
  108.   (3.5.2.1(30))
  109.       u_char  th_off:4,
  110.       ------  ^
  111. Tough.  makefile, 30 Dec 2001.
  112.  
  113. But adding -ansi to the IRIX 5x targets also make compilation bomb whenever we
  114. referenced fdopen() or popen(), which evidently don't have prototypes in any
  115. of the header files.  Luckily we already have CFLAGS for this occasion too:
  116. DCLFDOPEN and DCLPOPEN.  Added these to the irix51 target.  Also had to copy
  117. the fdopen()-popen() prototype section to ckuusx.c, which has a new reference
  118. to fdopen() in a workaround for the curses console buffering bug.  makefile,
  119. ckuusx.c, 30 Dec 2001.
  120.  
  121. The QNX6 version did not receive a proper herald (it announced itself as
  122. "unknown version".  Reshuffled #ifdefs in ckuver.h, added display of QNX6
  123. and NEUTRINO symbols to ckuus5.c, 30 Dec 2001.
  124.  
  125. Lucas Hart sent in a patch for the VMS problem.  Apparently it was even worse
  126. than Dave Sneddon had reported: 8.0 couldn't run at all under Batch.  ckvtio.c,
  127. 31 Dec 2001.
  128.  
  129. A major obstacle to the usability of the FTP client is that certain commands
  130. don't behave as FTP users expect: CD, DIR, DELETE, MKDIR, etc, which are local
  131. rather remote, and there are no LCD (etc), USER, or ACCOUNT commands.  We
  132. could fix this by adding an FTP command-language personality, but file
  133. management commands can also be remote or local on connections to Kermit
  134. servers too.  So:
  135.  
  136. SET LOCUS { LOCAL, REMOTE, AUTO }
  137.   Sets the locus for unprefixed file management commands.
  138.   When LOCAL, a REMOTE (or R) prefix is required for
  139.   to send file management commands to a remote server (e.g. RCD, RDIR).
  140.   When REMOTE, an L prefix is required to issue local file management
  141.   commands (e.g. LCD, LDIR).  The word LOCAL can't be used as a prefix
  142.   since it is used for declaring local variables.
  143.  
  144. This applies to all types of connections, and thus is orthogonal to SET
  145. GET-PUT-REMOTE, which selects between Kermit and FTP for remote file-transfer
  146. and management commands.
  147.  
  148. The default LOCUS is AUTO, which means we switch to REMOTE whenever an FTP
  149. connection is made, and to LOCAL whenever a non-FTP connection is made,
  150. and switch back accordingly whenever a connnection is closed.
  151.  
  152. Implementation (31 Dec 2001):
  153.  . None of this is compiled if LOCUS is not defined.
  154.  . Added XYLOCUS (SET LOCUS) and LOCUS definitions: ckuusr.h.
  155.  . Override by defining NOLOCUS (which inhibits definition of LOCUS).
  156.  . Added LOCUS to SET keyword table: ckuusr.c.
  157.  . Added locus & autolocus variables: ckuusr.c.
  158.  . Added SET LOCUS parsing and variable setting: ckuus3.c.
  159.  . Added display of LOCUS setting to SHOW COMMAND: ckuus5.c.
  160.  . Added automatic locus setting to setlin(): ckuus7.c.
  161.  . Added automatic locus setting to ftpopen() and ftpclose(): ckcftp.c.
  162.  
  163. How to catch all the places where a Kermit connection is closed?  Turns out
  164. we've done this before, when we added the connection log.  So I made
  165. dologend() take care of locus switching.  But dologend() was not compiled in
  166. if certain symbols were defined, such as NOLOCAL, or not defined, such as
  167. CKLOGDIAL.  So I (a) rearranged the #ifdefs so that even if these would
  168. otherwise have obliviated dologend(), now they leave a piece of it for
  169. locus-setting; (b) moved the prototype out of #ifdefs; and (c) took all calls
  170. to it out of #ifdefs.  ckcker.h, ckcfn2.c, ckcmai.c, ckucns.c, ckucon.c,
  171. ckuus[r347x].c, 31 Dec 2001.
  172.  
  173. Added locus checking to the following commands: DIRECTORY, CD/CWD, CDUP,
  174. DELETE, PWD, MKDIR, RMDIR, RENAME.  ckuusr.c, 31 Dec 2001.
  175.  
  176. Added LDIRECTORY, LCD/LCWD, LCDUP, LDELETE, LPWD, LMKDIR, LRMDIR,
  177. LRENAME.  ckuusr.[ch], 31 Dec 2001.
  178.  
  179. Added USER and ACCOUNT commands, which are the same as FTP USER and FTP
  180. ACCOUNT.  ckuusr.[ch], ckcftp.c, 31 Dec 2001.
  181.  
  182. Since automatic locus switching could be a big surprise for most people, I
  183. printed message any time it changed.  ckcftp.c, ckuus[37].c, 31 Dec 2001.
  184.  
  185. Added help text for the new L commands and filled in missing HELP text for
  186. SET GET-PUT-REMOTE, CDUP, MKDIR, and RMDIR.  ckuus2.c, 31 Dec 2001.
  187.  
  188. Changed help text of CD, DIR, etc, for LOCUS.  Changed the help text for
  189. RCD, RPWD, RDEL, RDIR, etc, to mention that they also work with FTP servers.
  190. Updated HELP REMOTE for this too.  ckuus2.c, 31 Dec 2001.
  191.  
  192. Made sure code builds with NOLOCAL, NOLOGDIAL, and NOLOCUS (it does).
  193.  
  194. The IKSD command, when given with a /USER: switch, sends the user ID to the
  195. IKSD.  But the SET HOST /USER: command does not, when making a connection to a
  196. Kermit service.  This makes it impossible to script IKSD interactions using
  197. only client commands.  Furthermore, even if you include a /PASSWORD switch
  198. with the IKSD command, it does not send the password.  I added code near the
  199. bottom of setlin() to do this.  If we have a connection to a Kermit service
  200. and a /USER: switch was given, then we attempt a REMOTE LOGIN.  If a
  201. /PASSWORD: switch was not given then if the username is "ftp" or "anonymous",
  202. we automatically supply a password of user@host; otherwise we prompt for a
  203. password.  If a /USER: switch was not given, it acts like before.  It all
  204. works, but it might not be the best way (or place) to do it.  setlin():
  205. ckuus7.c, 31 Dec 2001.
  206.  
  207.   NOTE: The above change doesn't help with IKSD /USER:anonymous,
  208.   the server prompts for password anyway, not sure why.
  209.  
  210.   NOTE 2: What about secure authentication?  We have to test to see
  211.   if user was already authenticated before sending the login packet.
  212.  
  213. Added /opt/kermit and /opt/kermit/doc to info_dir[] list (for Solaris).
  214. ckuus5.c, 31 Dec 2001.
  215.  
  216. From Jeff: new Help text for SET TERM FONT (K95 GUI).  ckuus2.c, 1 Jan 2002.
  217.  
  218. More work on help text for file management commands -- e.g. we can't lump
  219. the L-commands together with the unprefixed ones; they need separate entries.
  220. Also: added missing HELP REMOTE PWD, improved the default case (in which
  221. help text had been omitted for a valid command).  ckuus2.c, 1 Jan 2002.
  222.  
  223. It seems VMS C-Kermit was pretty much ignoring the -B (force background) and
  224. -z (force foreground) command-line options.  Fixed in congm(): ckvtio.c,
  225. 1 Jan 2002.
  226.  
  227. Tested the SET LOCUS business with VMS C-Kermit, which does not have a
  228. built-in FTP client.  Of course in this case there is no automatic locus
  229. switching, but SET LOCUS REMOTE works nicely on IKSD connections.
  230.  
  231. From Jeff:
  232.  . #ifdef adjustments for LOCUS changes.
  233.  . SSH KEY CREATE /TYPE:SRP.
  234.  . Fix \v(serial) to not be 8N2 by default if speed is 0.
  235.  . Don't let doexit() run if sysinit() hasn't been called first.
  236. ckuus[r247x].c, 2 Jan 2002.
  237.  
  238. Made SET BACKGROUND { ON, OFF } do exactly the same as -B and -z options.
  239. ckuus3.c, 2 Jan 2002.
  240.  
  241. Updated user-visible copyright dates to 2002 (but still need to do all the
  242. source-module comments).  ckcmai.c, ckuus[25].c, 2 Jan 2002.
  243.  
  244. Rearranged #include <sys/time.h> in ckucns.c that was done for IRIX 5.3,
  245. to avoid conflicts in SV/68 R3v6.  3 Jan 2002.
  246.  
  247. From Dave Sneddon: Code changes in VMS sysinit() and congm() to work around
  248. problems in batch, SPAWN'd, etc, and change CTTNAM from TT: to SYS$INPUT:.
  249. ckcdeb.h, ckvtio.c, 3 Jan 2002.
  250.  
  251. From Jeff:
  252.  . Fixed typo in definition of CTTNAM for VMS.  ckcdeb.h
  253.  . Moved macro definitions for SSHBUILTIN from ckuus3.c to ckuusr.h
  254.    so they can be referenced in ckuus7.c
  255.  . Added SSH functionality to SET HOST:
  256.      SET HOST /NET:SSH /CONNECT hostname [port] /switches
  257.  . Fixed SET NET TYPE so it won't reject SSH if SSH is installed.
  258.  . Changes to allow IKSD to continue functioning.  Somehow this minor change
  259.    to ckcmai.c got lost in one of the back and forth exchanges.
  260.  . HELP TEXT for UCS2 kverb
  261.  . Fix a problem in K95 where multiple threads could be attempting to
  262.    send a telnet negotiation simultaneously.
  263. ckcmai.c ckcdeb.h ckuus2.c ckuus3.c ckuusr.c ckuusr.h ckuus7.c ckctel.c
  264. ck_crp.c ckuat2.h ckuath.c, 4 Jan 2002.
  265.  
  266. From Jeff:
  267.  
  268.   Peter Runestig complaining that the Telnet Forward X code was corrupting
  269.   data.  This resulted in a very thorough examination of the telnet module
  270.   code and a discovery of some rather significant problems.  The root of the
  271.   problems is the lack of thread safety.  To correct this problem the
  272.   following was done.
  273.  
  274.   All code (regardless of module) which outputs telnet commands is placed
  275.   into a mutex region to ensure that competing output threads do not result
  276.   in interleaving their output.  This could happen for instance when the
  277.   forward-x thread is forwarding data and the user changes the window size
  278.   or sends an AYT or BREAK.  Next the buffer used for input and output
  279.   processing were identical.  This means that output data could be treated
  280.   as input or vice versa.  Ugh....
  281.  
  282.   I also spent some more time cleaning up setlin().  Mostly reorganizing the
  283.   code into single if (...) blocks so that breaking it up will be easier.
  284.  
  285. ckctel.c ckuus7.c, 4 Jan 2002.
  286.  
  287. Updated internal copyright notices.  All modules, 5 Jan 2002.
  288.  
  289. From Jeff:
  290.   More of same, plus new makefile target and changes from Spike Gronim
  291.   for freebsd44+srp+openssl.
  292. ckcdeb.h ckcnet.c ckctel.c ckuus7.c ck_ssl.c makefile, 5 Jan 2002.
  293.  
  294. Some minor updates and fixes to SSH and SET SSH help text.
  295. ckuus2.c, 6 Jan 2002.
  296.  
  297. Added SET RGB-COLORS for GUI.  ckuusr.[ch], ckuus3.c, 6 Jan 2002.
  298.  
  299. From Jeff: More Telnet changes, Debug semaphores for K95, etc: ckcdeb.h,
  300. ckuusr.h, ckuus[r35x].c, ckctel.[ch], ckuath.c, 7 Jan 2002.
  301.  
  302. Added --xpos:n --ypos:n, SET GUI WINDOW POSITION x y, and changed SET
  303. RGB-COLORS to SET GUI RGBCOLOR.  Action needs to be filled in (in setguiwin()
  304. in ckuus3.c), and gui_xpos and gui_ypos need to be defined in cko???.c.
  305. ckuusr.h, ckuus[r3y].c, 7 Jan 2002.
  306.  
  307. Added --fontname:name --fontsize:name (and facename as synonym for fontname).
  308. ckuusr.h, ckuus[7y].c, 7 Jan 2002.
  309.  
  310. Moved GUI (not OS/2) SET TERM FONT code in ckuus7.c to its own routine,
  311. setguifont(), in ckuus3.c, and made GUI SET TERM FONT call this routine,
  312. and also made SET GUI FONT call the same routine.  ckuus[37].c, 7 Jan 2002.
  313.  
  314. Added --termtype:, --height:, --width:, --user:.  Also added symbols for
  315. --telnet:, --ssh:, --ftp:, --[remote-]charset, and --password:, but didn't
  316. fill them in.  --password: is probably not a good idea (but we allow it for
  317. FTP); the others involve a lot of code-shuffling and reconciliation, which
  318. I'll try to do when I get a chance (especially the connection ones, which
  319. can be done as part of the setlin() restructuring).  ckuusr.h, ckuusy.c,
  320. 8 Jan 2002.
  321.  
  322. Also I tried commenting out the #ifndef KUI..#endif's around SET TERMINAL
  323. CHARACTER-SET (easier said than done because a crucial #endif was mislabeled).
  324. Let's see if it compiles & works...  ckuus7.c, 8 Jan 2002
  325.  
  326. Added FTP [ OPEN ] /NOINIT, meaning don't send REST, STRU, and MODE commands
  327. upon making an FTP connection.  This allows connection to servers that close
  328. the connection (or worse) when given these commands (e.g. Linux 2.4 TUX 2.0
  329. FTP server).  ckcftp.c, 8 Jan 2002.
  330.  
  331. Looked at adding caller ID support for the ANSWER command:
  332.  
  333.  . SET ANSWER CALLER-ID { ON, OFF }
  334.  . SET ANSWER RINGS <number>
  335.  . \v(callid_xxx) xxx = { date, time, name, nmbr, mesg }
  336.  . CKD_CID modem capability
  337.  . Set CKD_CID for modems that have it.
  338.  . A quick survey shows:
  339.    - USR V.90:      No (but Jeff says some USRs have it).
  340.    - V.250:         No
  341.    - Lucent Venus:  No
  342.    - USR:           #CID=1 (the ones that have it -- X2?)
  343.    - Diamond Supra: #CID=1
  344.    - Rockwell 56K:  #CID=1
  345.    - PCTEL:         #CID=1
  346.    - Zoltrix:       +VCID=1
  347.    - Conexant:      +VCID=1
  348.  . Since there are different commands to enable caller ID reporting,
  349.    we need a new field in struct MDMINF.
  350.  . SHOW MODEM and SHOW DIAL would need updating.
  351.  . etc etc...
  352.  
  353. This is all way too much for now so I just did the setting of the \v(callid_*)
  354. variables.  These are reset at the beginning of an ANSWER command, and then
  355. set by the ANSWER command if they come in; thus they persist from the time
  356. they are collected until another ANSWER command is given.  To take advantage
  357. of autoanswer, the user has to enable it in the modem (all the modems I found
  358. that support it have it disabled by default), and also has to set the number
  359. of rings to at least 2.  This can be done with (depending on the modem):
  360.  
  361.   set modem command autoanswer on ATS0=2#CID=1\{13}
  362.   set modem command autoanswer on ATS0=2+VCID=1\{13}
  363.  
  364. and undone with:
  365.  
  366.   set modem command autoanswer on ATS0=1#CID=0\{13}
  367.   set modem command autoanswer on ATS0=1+VCID=0\{13}
  368.  
  369. The variables can be accessed only after the call is answered.  Therefore the
  370. only way to refuse a call is to answer it, inspect the variables, and then
  371. hang it up if desired.  Future Kermit releases can do this more nicely (as
  372. sketched out above.)  Also while I was in the dialing code, I added result
  373. code VCON (= VOICE), used by several of the newer modems.  These changes are
  374. untested.  The SET ANSWER command is written but commented out.  ckuusr.h,
  375. ckcker.h, ckuus[r3].c, ckudia.c, 8 Jan 2002.
  376.  
  377. From Jeff: fixes to --termtype:, --height:, --width:, --user:, and filling in
  378. of --rcharset:, which required extracting code from settrm() into a separate
  379. parse-method-independent remote character-set setting routine.  ckuus[7y].c,
  380. 8 Jan 2002.
  381.  
  382. From Jeff: More work on TERMINAL CHARACTER-SET code reorganization, and
  383. reinstatement of SET TERMINAL CHARACTER-SET in K95G.  Also, fix char/CHAR
  384. warnings in Telnet module.  ckuus7.c, ckctel.c, 9 Jan 2002.
  385.  
  386. Made SET TERM CHARACTER-SET visible for all builds, including K95G, and filled
  387. in HELP text for it.  ckuus[27].c, 9 Jan 2002.
  388.  
  389. Added help text for new extended options.  ckuusy.c, 9 Jan 2002.
  390.  
  391. Commented out the return(-2) statement at the end of xgnbyte() to make the
  392. "Statement not reached" errors go away, after checking to make sure that there
  393. was no path that could fall through to the end.  I'm 99.99% sure there isn't,
  394. but that doesn't mean that some compilers might not still complain.  ckcfns.c,
  395. 9 Jan 2002.
  396.  
  397. From Jeff: fix typo in the K95 extended-option help text; add more
  398. semaphores to network i/o.  ckuusy.c, ckcnet.c, 10 Jan 2002.
  399.  
  400. Undid ansiisms in set{lcl,rem}charset() declarations.  ckuus7.c, 10 Jan 2002.
  401.  
  402. Removed a duplicated clause from the install target.  makefile, 10 Jan 2002.
  403.  
  404. From Jeff: more semaphores.  ckcnet.c, 11 Jan 2002.
  405.  
  406. Moved references to tmpusrid and tmpstring out of NOSPL #ifdefs -- they can
  407. be used with NOSPL.  setlin(): ckuus7.c, 13 Jan 2002.
  408.  
  409. Made a dummy dologend() routine outside of #ifndef NOICP, so we don't have
  410. to enclose every reference to dologend in #ifdefs.  (I had added a bunch of
  411. calls to dologend() throughout the code to handle automatic LOCUS switching.)
  412. ckuus3.c, 13 Jan 2002.
  413.  
  414. Moved "extern int nettype" outside of NOICP #ifdefs in ckuus4.c for NOICP
  415. builds.  13 Jan 2002.
  416.  
  417. Moved a misplaced #ifdef in the VERSION command.  ckuusr.c, 13 Jan 2002.
  418.  
  419. Did 81 different feature-selection builds on Linux (RH 7.0), all OK after the
  420. changes listed above for today.  13 Jan 2002.
  421.  
  422. Added prototypes for set{rem,lcl}charset().  ckcxla.h, 13 Jan 2002.
  423.  
  424. Added ckcxla.h to dependencies for ckuusy.c.  ckvker.com, 13 Jan 2002.
  425.  
  426. Made a correction to the HELP SET LOCUS text and supplied a missing comma
  427. for HELP REMOTE.  ckuus2.c, 13 Jan 2002.
  428.  
  429. Built OK on HP-UX 11.11 (K&R and ANSI), Solaris 8 (cc), Solaris 2.5.1 (gcc),
  430. SunOS 4.1.3 (cc and gcc), VMS 7.1 (DEC C, net and nonet), Unixware 7.1.1,
  431. Tru64 4.0G, HP-UX 10.20 (K&R), AIX 4.3.3, FreeBSD 2.2.8, Slackware 8.0, IRIX
  432. 6.5.13f, IRIX 5.3 (??? Can't tell -- the computer ran out of swap space -- but
  433. it was OK a few days ago), VMS 5.5-2 (VAX C, UCX + nonet)...  HP-UX 9.05, ...
  434.  
  435. Some corrections to comments in HP targets from PeterE.  makefile, 14 Jan 2002.
  436.  
  437. Corrections to prototypes for set{rem,lcl}charset() (VOID, not void) from Jeff.
  438. ckcxla.h, 14 Jan 2002.
  439.  
  440. Builds, cont'd...  SINIX 5.42, Red Hat Linux 5.2 on i386, SuSE 7.0 on S/390, 
  441. Red Hat 7.1 on IA64, QNX 4.25, HP-UX 5.21/WinTCP, ..., 
  442.  
  443. Dell Coleman <dell@aleph.tum.com> noticed that in AIX, the COPY command always
  444. says "Source and destination are the same file" when the destination file
  445. doesn't exist.  This is because in AIX, realpath() fails with ENOENT (errno
  446. 2).  The zfnqfp() code already accounts for this, but evidently not well
  447. enough.  So I did what I should have done long ago.  zfnqfp() was originally
  448. accomplished with do-it-yourself code.  Later I added support for realpath(),
  449. and partitioned the routine into mutually exclusive compile-time sections:
  450. #ifdef CKREALPATH realpath()... #else do-it-yourself... #endif.  But if
  451. realpath() failed, there was no recourse to the do-it-yourself code.  Today I
  452. replaced the #else with the #endif, so the do-it-yourself part is always
  453. included and is executed if the realpath() call fails.  Built and tested on
  454. AIX 4.3.3 and Solaris 2.5.1, as well as on Linux with and without the
  455. realpath() code included.  zfnqfp(): ckufio.c, 16 Jan 2002.
  456.  
  457. Separated K95 and C-Kermit test version numbers, so C-Kermit can be RC.02
  458. while K95 is Beta.01.  ckcmai.c, 16 Jan 2002.
  459.  
  460. Inhibited 0-length writes by conol() and conoll(), since they cause big
  461. trouble with the AIX 4.3.3 pty driver, e.g. when you have an SSH connection
  462. into AIX and run C-Kermit there.  ckutio.c, 16 Jan 2002.
  463.  
  464. Suppressed "Switching LOCUS..." messages from FTP client when it was invoked
  465. from the command line.  ckcfns.c, 17 Jan 2002.
  466.  
  467. Dave Sneddon noticed that FOPEN /APPEND gets "?Write access denied" in VMS
  468. if the file exists.  This is apparently because VMS zchko() does the wrong
  469. thing.  Commenting out the call zchko() in the VMS case gets past this but
  470. then the appended part of the file has different attributes than the orignal
  471. part, e.g.:
  472.  
  473.   abc  <- original line (horizontal, normal)
  474.   d    <- appended line (vertical)
  475.   e
  476.   f
  477.  
  478. VMS fopen() takes an optional 4th argument: a series of RMS keyword=value
  479. pairs.  Kermit doesn't give any.  Experimentation shows that appending to
  480. a Stream_LF works fine.  That'll be a restriction for now, until somebody
  481. sends in code to get the RMS attributes of the original file and feed them
  482. to fopen().  Also need code to fix VMS zhcko() to say whether it's OK to
  483. append to a file.  ckuus7.c, 17 Jan 2002.
  484.  
  485. Somebody suggested I could get a working Kermit for Neutrino 2+ by doing the
  486. QNX6 build on Neutrino itself.  I verified that this can't be done -- at least
  487. not by me -- since Netutrino 2+ doesn't have a compiler, and we already know
  488. the version cross-built for it on QNX4 doesn't work.  17 Jan 2002.
  489.  
  490. From Jeff: SET SSH GSSAPI KEY-EXCHANGE { ON, OFF } parsing, SHOW SSH.
  491. ckuus3.c, 18 Jan 2002.
  492.  
  493. PeterE suggested that SET ESCAPE allow 8-bit escape characters because of the
  494. difficulty in entering Ctrl-\ on European keyboards and the hardship (e.g. to
  495. EMACS and VI users) of sacrificing another C0 control character.  Like
  496. everything these days, this turns out to be rather a bigger deal than it would
  497. seem.  The SET ESCAPE parser calls setcc(), which accepts control characters
  498. in various formats (literal, ^X notation, or numbers), and gives an error
  499. return if the value is not 0-31 or 127.  This is changed easily enough to also
  500. allow numbers between 128 and 255.  But who else calls setcc()?  The commands
  501. for setting Kermit packet start and end characters.  No big deal, this gives
  502. people a bit more flexibility in case they need it, but it won't be
  503. documented.  setcc(): ckuus7.c, 18 Jan 2002.
  504.  
  505. Since code to display the escape character is scattered all over the place,
  506. and some of it indexes into an array based on the character value (which would
  507. now dump core if the escape character was > 128), I put the code in one place,
  508. a new shoesc() routine in ckuusx.c (which needs to be outside #ifndef NOICP,
  509. since the CONNECT modules use it even in command-line only builds).  Also
  510. discovered that this code was indexing into the nm[] array with tt_escape to
  511. get "enabled" or "disabled", which is no longer appropriate, so fixed this
  512. too.  ckuusr.h, ckuus[5x].c, 18 Jan 2002.
  513.  
  514. Made SHOW ESCAPE, SHOW TERM, and the various CONNECT modules call shoesc(),
  515. and updated HELP SET ESC.  ckuus[25].c, ckucns.c, ck[cuvd9]con.c, 18 Jan 2002.
  516.  
  517. After all that, it occurred to me that this is a really bad idea for K95,
  518. with all the confusion about Console code pages, OEM code pages, Windows
  519. code pages, and Unicode.  But I tried "echo \161" at the K95 prompt and got
  520. the expected 8-bit character in both the Console version and the GUI, so
  521. maybe it's OK after all.
  522.  
  523. Removed the automatic IKSD login code from setlin() since it complicates
  524. interactive anonymous login.  ckuus7.c, 20 Jan 2002.
  525.  
  526. An #ifdef clause from Matthew Clarke to avoid "redeclaration of free" error
  527. when building a curses version of C-Kermit for AIX 2.2.1 on RT PC.  ckuusx.c,
  528. 22 Jan 2002.
  529.  
  530. Took care of one detail I omitted when adding the 8-bit escape character:
  531. not stripping the 8th bit before comparing the keyboard char with the escape
  532. char.  ck[uv]con.c, ckucns.c, 24 Jan 2002.
  533.  
  534. Started to go through Jeff's changes of the last week but he had run trim -t
  535. on them, which untabifies, so the diffs were huge.  Retabifying Jeff's files
  536. only makes matters worse.  So instead of comparing each old and new source
  537. file in EMACS windows with M-X Compare-Windows like I usually do (which can't
  538. be told to ignore whitespace), I had to work from the diff -c -b listings.
  539. In ascending order of size of diffs:
  540.  
  541. ckcker.h: Add I_AM_SSHSUB definition.
  542. ckuusr.h: XXLINK and VN_PERSONAL, etc, definitions.
  543. ckuusy.c: Support for "I Am SSHSUB" invocation.
  544. ckuus5.c: Support for new K95 directory structure.
  545. ckcmai.c: Init endianness earlier (K95 TYPE was broken), "I Am SSHSUB" support.
  546. ckuus7.c: Security #ifdefs, SSH OPEN /PASSWORD, SSHSUB support
  547. ckcftp.c: <-- SAVE TIL LAST
  548. ckuus6.c: Add LINK command for K95 on NT.
  549. ckuus4.c: Support for new K95 directory structure; SSHSUB support
  550. ckuus3.c: Support for new K95 directory structure; some SSH changes
  551. ckuus2.c: Changes to SSH related help text, add HELP LINK text
  552. ckuusr.c: LINK command, SSH OPEN /PASSWORD: /SUBSYSTEM: switches,
  553.   Pattern-management fixes.
  554. ckctel.c, ck_ssl.c, ckuath.c, ckcnet.c:
  555.  Took Jeff's without looking.
  556. ckuusx.c, ckucns.c, ckucon.c, ckwart.c:
  557.   My changes from weeks ago that were never picked up.
  558.  
  559. Built OK on Solaris with gcc and on SunOS with (K&R non-ANSI) cc.
  560. 31 Jan 2002.
  561.  
  562. Meanwhile, Jeff had made various changes in response to Jaya Natarajan at IBM,
  563. whose basic complaint was that numerous failure conditions were not being
  564. detected if the fullscreen file-transfer display was active.  Jeff found that
  565. this was because big blocks of code were skipped in that case and changed the
  566. code not to do that, which fixed the reported problems.  But later Jaya said
  567. that "ftp mget file1 file2" acted like "ftp mget *", so it seemed that Jeff's
  568. fixes broke file selection.  After taking Jeff's fixes for ckcftp.c, however,
  569. I still could not reproduce the problem.  ckcftp.c, 31 Jan 2002.  <-- Later,
  570. it turned out the problem was with IBM's custom FTP server.
  571.  
  572. Fixed updates that I missed yesterday in ckcftp.c, ckuusr.c.  Moved misplaced
  573. #ifdef in ckuusy.c breaking nonet builds.  Added #ifdefs to sysinit() for
  574. nonet builds in ckutio.c.  Ran through build-in-many-configurations script
  575. in Linux, all builds OK.  1 Feb 2002.
  576.  
  577. Moved shoesc() definition outside of NOXFER to fix NOXFER builds.
  578. ckuusx.c, 1 Feb 2002.
  579.  
  580. Added MYCUSTOM definition alongside KERMRC and changed KERMCL to be the
  581. same as CKMAXPATH, instead of some random hardwired number.  ckuusr.h,
  582. 1 Feb 2002.
  583.  
  584. Changed ckcdeb.h to define DIRSEP and ISDIRSEP(), and put #ifndef
  585. [IS]DIRSEP..#endif around all [IS]DIRSEP definitions in ck[udso]fio.c, so we
  586. can finally put away the many repeated #ifdef chains when we get around to it.
  587. 1 Feb 2002.
  588.  
  589. Make VMS zkermini() return 1 on success, 0 on failure, rather than 0 always.
  590. ckvfio.c, 1 Feb 2002.
  591.  
  592. Added code to doinit(), just before it goes to execute the init file.  If the
  593. init file name we are about to open is empty or fails zchki(), substitute the
  594. customization filename.  For now this code is in #ifdef USE_CUSTOM..#endif,
  595. which is not defined by default.  It does the trick in Unix and VMS.  Also
  596. included code from Jeff for K95, but this needs verification and testing.
  597. Also used DIRSEP and ISDIRSEP() throughout doinit() instead of the long #ifdef
  598. chains.  ckuus5.c, 1 Feb 2002.
  599.  
  600. Moved shoesc() prototype from ckuusr.h to ckcker.h so modules that need it
  601. don't have to include ckuusr.h just for this one thing (example: ckvcon.c).
  602. 1 Feb 2002.
  603.  
  604. Defined USE_CUSTOM by default, except if NOCUSTOM is defined.  ckuusr.h,
  605. 1 Feb 2002.
  606.  
  607. Fixed kermit-sshsub code to really enter server mode, and to print
  608. "KERMIT READY TO SERVE..." so scripts can wait for it.  Also bumped the
  609. C-Kermit test ID to RC.03 and the K95 one to Beta.02.  ckcpro.w, ckcmai.c,
  610. 2 Feb 2002.
  611.  
  612. I was thinking about adding SET COMMAND BUFFER-SIZE to let people allocate
  613. as big a buffer as they wanted at runtime, mainly for defining huge macros.
  614. Moved the SCMD_blah definitions from ckuusr.h to ckuus3.c, since they aren't
  615. used anywhere else.  But stopped there since the rest turns out to be a rather
  616. big deal.  ckuusr.h, ckuus3.c, 2 Feb 2002.
  617.  
  618. From Jeff, 3 Feb 2002:
  619.  . Fix an out-of-order modem name in the SET MODEM TYPE table: ckudia.c.
  620.  . Use SET LOGIN USER and PASSWORD if present. ckcftp.c.
  621.  
  622. Cody Gould noticed that array declarations had become case sensitive, and
  623. upper case didn't work.  Diagnosis: misplaced case conversion in xarray().
  624. Fixed in ckuus5.c, 4 Feb 2002.
  625.  
  626. SHOW VAR dumps core on \v(sexpression) or \v(svalue) -- failure to check for
  627. NULL pointer.  I wonder why this didn't happen before (answer: because I was
  628. doing it on SunOS; now I'm doing it on Solaris).  ckuus4.c, 6 Feb 2002.
  629.  
  630. I've had several requests for "show var name name name...".  I added this to
  631. doshow(), such that SHOW VAR works exactly as it did before (if you don't give
  632. it an arg, it lists all variables; if you give it an arg, it appends "*" to it
  633. and lists all matching variables) but now you can also give more than one arg
  634. and it works the same way with each one as it did before if you gave it a
  635. single item (i.e., "*" is appended, so "show var os cmd" shows all variables
  636. whose names begin with "os" or "cmd".  You can also freely use pattern
  637. notation, including anchors.  Hmmm, no, actually it's different in that now
  638. each includes an implied * before AND after, so "show var version" shows all
  639. variables whose name contain "version" rather than all variables whose names
  640. start with it.  ckuus5.c, 6 Feb 2002.
  641.  
  642. Cody Gould reported that WRITE FILE blah blah \fexec(anything) ... got a
  643. spurious "File or Log not open" error.  This turns out to be a rather
  644. pervasive problem -- whenever you use \fexec() it calls the parser recursively
  645. and this can run roughshod over global variables, such as our innocent little
  646. x, y, and s.  The fix in this case was to put x and y on the stack.  The same
  647. thing probably needs doing in about 10,000 other places.  Too bad C isn't
  648. Algol.  ckuusr.c, 6 Feb 2002.
  649.  
  650. Minor fix to SHO VAR -- the "^" anchor wasn't working (e.g. "show var ^os").
  651. ckuus5.c, 6 Feb 2002.
  652.  
  653. Fixes from Jeff for FTP file-transfer character-set translation in K95 and
  654. in WIKSD, plus updated K95 SSH help text.  ckcftp.c, ckcfns.c, ckuus2.c,
  655. 7 Feb 2002.
  656.  
  657. Server has its date set in the past.  Client says "remote dir".  Server sends
  658. A packet containing old date.  If client has FILE COLLISION UPDATE, it
  659. rejects the directory listing.  Changed gattr() to only reject real files
  660. (introduced by F packet), not X-packet material like directory listings.
  661. ckcfn3.c, 7 Feb 2002.
  662.  
  663. Up-down arrow keys for command recall.  People have been asking for it for
  664. years but now it's actually important because of PDAs that don't have Ctrl
  665. keys.  Would have been trivial except that we use getchar() rather than
  666. coninc() for reading from the keyboard in Unix so conchk() doesn't help.  In
  667. fact there are lots of other places where conchk() is used this way and works
  668. only by accident.  The only reason we never noticed a problem before is that
  669. characters don't usually arrive from the keyboard that fast.  But when an
  670. arrow key sends "ESC [ A" all once, the stdin buffer gets some extra stuff in
  671. it, which getchar() will return next time, but which coninc()/conchk() will
  672. never see.  So I added a new cmdconchk() routine which, if the keyboard is
  673. being read with getchar() rather than coninc(), looks at the stdin buffer.
  674. Unfortunately, however, there is no API for this, nor is there any standard
  675. way to access the stdin buffer directly.  So first I did it for Solaris.  Then
  676. to make it portable requires a survey of the headers for every platform.  I
  677. found four major variations:
  678.  
  679.   stdin->_r:
  680.     {Free,Open,Net}BSD, BSDI
  681.   stdin->_cnt:
  682.     SunOS, Solaris, HP-UX 5-6, AIX, VMS, SINIX, IRIX 5.3-6.5, DGUX
  683.     4.2BSD, 4.3BSD, OSF/1..Tru64, QNX4, Unixware 1.0-2.1.0
  684.   stdin->__cnt:
  685.     HP-UX 7-11, SCO: OSR5.0.6a, Unixware 2.1.3-7.x, OU8, UNIX 3.2v4.x
  686.   Subtract read from end pointer (_IO_file_flags defined):
  687.     Linux (tested on RH 5.2 thru 7.1)
  688.  
  689. The Linux method is new and different to account for multibyte characters.
  690. All the others assume character == byte.
  691.  
  692. For docs: ANSI only, 7-bit only; both application and cursor modes are
  693. accepted.  Only up and down arrow are handled; left and right arrows cause
  694. a beep.  ckucmd.c, 8 Feb 2002.
  695.  
  696. Build-all: Discovered that changing CTTNAM from TT: to SYS$INPUT: in VMS
  697. (which was done on 3 Jan 2002 to work around problems starting Kermit in
  698. batch, spawn'd, etc) breaks Kermit on VMS 5.5/VAX (concb() fails with "lacks
  699. sufficient privilege"; if you enable all privs Kermit starts but then spews
  700. out a constant stream of BEL characters).  If you put dftty back to "TT:",
  701. everything is fine -- I have no idea why, so I used #ifdef VMSV70 to decide,
  702. which is totally crude.  Next I had to find where the boundary really is: VAX
  703. vs Alpha?  VAX C vs DEC C?  Or between VMS releases?  Built on:
  704.  . VMS 6.2 Alpha (DEC C) - OK with TT:
  705.  . VMS 6.2 Alpha (DEC C) - OK with SYS$INPUT: <-- keep this one
  706.  . VMS 7.1 VAX   (DEC C)
  707. So the final condition is #ifdef VMSV60.  ckvker.com, ckvtio.c, ckuus5.c.
  708.  
  709. QNX 6 needed some attention too:
  710.  . Whoever did the makefile target made the default port "/dev/ser1".
  711.  . Arrow keys...
  712. But I gave up on getting arrow keys to work -- it should be just like *BSD,
  713. but for some reason gcc complains that struct FILE has no _r member, even
  714. though it does (getchar uses it).
  715.  
  716. Checked stdio.h on Mac OS X and it looks like the *BSDs.
  717.  
  718. --- C-Kermit 8.0.201 ---
  719.  
  720. Removed -g from solaris2xg+krb5+krb4+openssl+shadow makefile target -- it
  721. was producing a 15MB binary!  makefile, 14 Feb 2002.
  722.  
  723. Fixed a couple thinkos in "make install": $(DESTDIR) should not have been
  724. included in the tests for whether INFODIR or SRCDIR were desired.  makefile,
  725. 14 Feb 2002.
  726.  
  727. ***********************
  728.