| C-KERMIT CHANGE LOG (Changes since 8.0.200 of 12 Dec 2001) |
| |
| Chronological order: Go to the bottom to find the newest edits. |
| |
| ---8.0.200--- |
| |
| Known bugs (+ = fixed after release): |
| |
| + 1. tilde_expand() can call getcwd() with NULL arg. |
| + 2. getexedir() called too early (fatal in combination with (1)). |
| + 3. Kermit "get blah" where blah is a symlink; server refuses to send it. |
| Should not do this if GET not recursive. |
| ? 4. Dave Sneddon's report about VMS fore/background confusion. |
| + 5. FTP GET path/file doesn't work - path not stripped - but MGET works. |
| + 6. IRIX 5.3 compilation problems (have patches from Marcus Herbert) |
| X 7. Filename completion bug (see below) (deferred). |
| + 8. QNX6 herald and other problems. |
| |
| ------------- |
| |
| Merged Jeff's changes, 20 Dec 2001: |
| |
| . Changed all occurrences of "ttnproto == NP_TELNET" to "IS_TELNET()" to |
| account for the difference between SSH and Telnet. ckuscr.c, |
| ckuus[3457].c, ckcnet.h, ckcfns.c, ckudia.c, ckutio.c, ckucon.c, ckucns.c. |
| |
| . Moved SSH pty failure warnings. ckuusr.c. |
| |
| . Security adjustments to FTP module, plus fix an error message. ckcftp.c. |
| |
| . Adjustment of some security-related #ifdefs. ckcdeb.h, ckuus2.c, ckctel.c. |
| |
| . Guard against calling getpwnam() with a NULL arg in tilde_expand() ckufio.c. |
| |
| . Moved getexedir() call to later, where it's safe. ckcmai.c. |
| |
| Added SSH ADD and many SSH SET commands from Jeff's spec. Fixed SHOW SSH |
| to not dump core if variables weren't set. ckcker.h, ckuus[r3].c, 20 Dec 2001. |
| |
| C-Kermit in server mode, client says "get foo" where foo is a symlink. |
| Server says "no files meet selection criteria" instead of sending the file. |
| It should only refuse to follow symlinks if it's a recursive get. Fixed |
| in sgetinit(): ckcpro.w, 21 Dec 2001. |
| |
| More work on SSH and SET/SHOW SSH commands. ckuus[r3].c, 21 Dec 2001. |
| |
| Undid Jeff's replacement of the SSH pseudoterminal allocation failure |
| message, because now it comes out any time an SSH command has to be |
| reparsed (in the non-SSHBUILTIN case). ckuusr.c, 21 Dec 2001. |
| |
| More SSH and SET SSH command work back & forth with Jeff, plus Jeff added |
| SET HOST /NET:SSH. ckcmai.c, ckuus[r37].c, ckcdeb.h, ckuusr.h, 22 Dec 2001. |
| |
| Added SSH OPEN switches. ckuusr.c, 22 Dec 2001. |
| |
| Added SSH CLEAR, HELP SSH, and HELP SET SSH. ckuus[r2].c, 23 Dec 2001. |
| |
| From Jeff: |
| . SET TCP commands now apply to SSH |
| . SSH V2 REKEY and FORWRD-{LOCAL,REMOTE}-PORT commands now implemented |
| . Missing DLLs automatically disable appropriate authentication mechanisms. |
| ckuusr.c ckcnet.c ckuus3.c ckcmai.c ckcnet.h ckuus4.c, 26 Dec 2001. |
| |
| From Jeff: |
| . Remove SET SSH KEEPALIVES. |
| . Add help text for SSH AGENT { ADD, DELETE, LIST }. |
| ckuus[23].c, 28 Dec 2001. |
| |
| Added parsing for SSH AGENT { ADD, DELETE, LIST }. ckuusr.c, 28 Dec 2001. |
| |
| From Jeff: |
| . Fixed a crash that can happen when making an SSH connection. |
| . Filled in SSH AGENT actions. |
| . Changed default for strict host key check (to ASK) and help text. |
| . uploaded new binaries include ~kermit/os2test/beta/ssh-agent.exe |
| . Read man ssh-agent on ftp.kermit.columbia.edu for details on what it does. |
| ckuus[r23].c, 28 Dec 2001. |
| |
| "ftp get path/filename" didn't work; the FTP client did not strip the path |
| from the local copy of the filename when doing a GET, even though it did |
| for MGET. Diagnosis: in doftpget(), the "if (!getone && !skipthis)" statement |
| lacked an "else" part for the getone case. ckcftp.c, 28 Dec 2001. |
| |
| A while back Jeff reported that in FTP MGET, if you cancel a file with 'x', |
| all the rest of the files arrive truncated to 0 bytes. I tried this on both |
| Unix and Windows and couldn't reproduce it. |
| |
| In the last-minute flurry to release C-Kermit 8.0, I thought I noticed the FTP |
| client failing to update the fullscreen file-transfer display. But it seems |
| to work right, at least in Unix. When downloading a big file with FTP, all |
| the display fields are updated as expected. But smaller files might go by too |
| fast for the display to do anything. HOWEVER, in K95 the file transfer |
| display does not update itself until the end of the file, even if the file |
| takes a long time to transfer. This happens in both the Console and GUI |
| versions. A thread thing? (Jeff says no.) Yet the same display works fine |
| on Telnet connections. |
| |
| In IRIX 5.3, the select()-based CONNECT module had to include <sys/time.h> |
| or else it blew up with "struct timeval" unknown. Since there already was |
| a SYSTIMEH CFLAG, I added the #include within #ifdef SYSTIMEH..#endif and |
| rebuilt with KFLAGS=-DSYSTIMEH, only to discover that the irix5* targets |
| didn't bother to propogate KFLAGS. Fixed in ckucns.c, makefile, 30 Dec 2001. |
| |
| Increased IRIX5x Olimit from 2400 to 3000 because of ckuus[34].c. Added |
| -ansi, since (Marcus Herbert reported) we were not actually getting ANSI-C |
| compilation even though CK_ANSIC was defined. But now that we are, we get |
| warnings in <netinet/tcp.h>, which is included by ckcnet.h: |
| |
| bit-field 'th_off' type required to be int, unsigned int, or signed int. |
| (3.5.2.1(30)) |
| u_char th_off:4, |
| ------ ^ |
| Tough. makefile, 30 Dec 2001. |
| |
| But adding -ansi to the IRIX 5x targets also make compilation bomb whenever we |
| referenced fdopen() or popen(), which evidently don't have prototypes in any |
| of the header files. Luckily we already have CFLAGS for this occasion too: |
| DCLFDOPEN and DCLPOPEN. Added these to the irix51 target. Also had to copy |
| the fdopen()-popen() prototype section to ckuusx.c, which has a new reference |
| to fdopen() in a workaround for the curses console buffering bug. makefile, |
| ckuusx.c, 30 Dec 2001. |
| |
| The QNX6 version did not receive a proper herald (it announced itself as |
| "unknown version". Reshuffled #ifdefs in ckuver.h, added display of QNX6 |
| and NEUTRINO symbols to ckuus5.c, 30 Dec 2001. |
| |
| Lucas Hart sent in a patch for the VMS problem. Apparently it was even worse |
| than Dave Sneddon had reported: 8.0 couldn't run at all under Batch. ckvtio.c, |
| 31 Dec 2001. |
| |
| A major obstacle to the usability of the FTP client is that certain commands |
| don't behave as FTP users expect: CD, DIR, DELETE, MKDIR, etc, which are local |
| rather remote, and there are no LCD (etc), USER, or ACCOUNT commands. We |
| could fix this by adding an FTP command-language personality, but file |
| management commands can also be remote or local on connections to Kermit |
| servers too. So: |
| |
| SET LOCUS { LOCAL, REMOTE, AUTO } |
| Sets the locus for unprefixed file management commands. |
| When LOCAL, a REMOTE (or R) prefix is required for |
| to send file management commands to a remote server (e.g. RCD, RDIR). |
| When REMOTE, an L prefix is required to issue local file management |
| commands (e.g. LCD, LDIR). The word LOCAL can't be used as a prefix |
| since it is used for declaring local variables. |
| |
| This applies to all types of connections, and thus is orthogonal to SET |
| GET-PUT-REMOTE, which selects between Kermit and FTP for remote file-transfer |
| and management commands. |
| |
| The default LOCUS is AUTO, which means we switch to REMOTE whenever an FTP |
| connection is made, and to LOCAL whenever a non-FTP connection is made, |
| and switch back accordingly whenever a connnection is closed. |
| |
| Implementation (31 Dec 2001): |
| . None of this is compiled if LOCUS is not defined. |
| . Added XYLOCUS (SET LOCUS) and LOCUS definitions: ckuusr.h. |
| . Override by defining NOLOCUS (which inhibits definition of LOCUS). |
| . Added LOCUS to SET keyword table: ckuusr.c. |
| . Added locus & autolocus variables: ckuusr.c. |
| . Added SET LOCUS parsing and variable setting: ckuus3.c. |
| . Added display of LOCUS setting to SHOW COMMAND: ckuus5.c. |
| . Added automatic locus setting to setlin(): ckuus7.c. |
| . Added automatic locus setting to ftpopen() and ftpclose(): ckcftp.c. |
| |
| How to catch all the places where a Kermit connection is closed? Turns out |
| we've done this before, when we added the connection log. So I made |
| dologend() take care of locus switching. But dologend() was not compiled in |
| if certain symbols were defined, such as NOLOCAL, or not defined, such as |
| CKLOGDIAL. So I (a) rearranged the #ifdefs so that even if these would |
| otherwise have obliviated dologend(), now they leave a piece of it for |
| locus-setting; (b) moved the prototype out of #ifdefs; and (c) took all calls |
| to it out of #ifdefs. ckcker.h, ckcfn2.c, ckcmai.c, ckucns.c, ckucon.c, |
| ckuus[r347x].c, 31 Dec 2001. |
| |
| Added locus checking to the following commands: DIRECTORY, CD/CWD, CDUP, |
| DELETE, PWD, MKDIR, RMDIR, RENAME. ckuusr.c, 31 Dec 2001. |
| |
| Added LDIRECTORY, LCD/LCWD, LCDUP, LDELETE, LPWD, LMKDIR, LRMDIR, |
| LRENAME. ckuusr.[ch], 31 Dec 2001. |
| |
| Added USER and ACCOUNT commands, which are the same as FTP USER and FTP |
| ACCOUNT. ckuusr.[ch], ckcftp.c, 31 Dec 2001. |
| |
| Since automatic locus switching could be a big surprise for most people, I |
| printed message any time it changed. ckcftp.c, ckuus[37].c, 31 Dec 2001. |
| |
| Added help text for the new L commands and filled in missing HELP text for |
| SET GET-PUT-REMOTE, CDUP, MKDIR, and RMDIR. ckuus2.c, 31 Dec 2001. |
| |
| Changed help text of CD, DIR, etc, for LOCUS. Changed the help text for |
| RCD, RPWD, RDEL, RDIR, etc, to mention that they also work with FTP servers. |
| Updated HELP REMOTE for this too. ckuus2.c, 31 Dec 2001. |
| |
| Made sure code builds with NOLOCAL, NOLOGDIAL, and NOLOCUS (it does). |
| |
| The IKSD command, when given with a /USER: switch, sends the user ID to the |
| IKSD. But the SET HOST /USER: command does not, when making a connection to a |
| Kermit service. This makes it impossible to script IKSD interactions using |
| only client commands. Furthermore, even if you include a /PASSWORD switch |
| with the IKSD command, it does not send the password. I added code near the |
| bottom of setlin() to do this. If we have a connection to a Kermit service |
| and a /USER: switch was given, then we attempt a REMOTE LOGIN. If a |
| /PASSWORD: switch was not given then if the username is "ftp" or "anonymous", |
| we automatically supply a password of user@host; otherwise we prompt for a |
| password. If a /USER: switch was not given, it acts like before. It all |
| works, but it might not be the best way (or place) to do it. setlin(): |
| ckuus7.c, 31 Dec 2001. |
| |
| NOTE: The above change doesn't help with IKSD /USER:anonymous, |
| the server prompts for password anyway, not sure why. |
| |
| NOTE 2: What about secure authentication? We have to test to see |
| if user was already authenticated before sending the login packet. |
| |
| Added /opt/kermit and /opt/kermit/doc to info_dir[] list (for Solaris). |
| ckuus5.c, 31 Dec 2001. |
| |
| From Jeff: new Help text for SET TERM FONT (K95 GUI). ckuus2.c, 1 Jan 2002. |
| |
| More work on help text for file management commands -- e.g. we can't lump |
| the L-commands together with the unprefixed ones; they need separate entries. |
| Also: added missing HELP REMOTE PWD, improved the default case (in which |
| help text had been omitted for a valid command). ckuus2.c, 1 Jan 2002. |
| |
| It seems VMS C-Kermit was pretty much ignoring the -B (force background) and |
| -z (force foreground) command-line options. Fixed in congm(): ckvtio.c, |
| 1 Jan 2002. |
| |
| Tested the SET LOCUS business with VMS C-Kermit, which does not have a |
| built-in FTP client. Of course in this case there is no automatic locus |
| switching, but SET LOCUS REMOTE works nicely on IKSD connections. |
| |
| From Jeff: |
| . #ifdef adjustments for LOCUS changes. |
| . SSH KEY CREATE /TYPE:SRP. |
| . Fix \v(serial) to not be 8N2 by default if speed is 0. |
| . Don't let doexit() run if sysinit() hasn't been called first. |
| ckuus[r247x].c, 2 Jan 2002. |
| |
| Made SET BACKGROUND { ON, OFF } do exactly the same as -B and -z options. |
| ckuus3.c, 2 Jan 2002. |
| |
| Updated user-visible copyright dates to 2002 (but still need to do all the |
| source-module comments). ckcmai.c, ckuus[25].c, 2 Jan 2002. |
| |
| Rearranged #include <sys/time.h> in ckucns.c that was done for IRIX 5.3, |
| to avoid conflicts in SV/68 R3v6. 3 Jan 2002. |
| |
| From Dave Sneddon: Code changes in VMS sysinit() and congm() to work around |
| problems in batch, SPAWN'd, etc, and change CTTNAM from TT: to SYS$INPUT:. |
| ckcdeb.h, ckvtio.c, 3 Jan 2002. |
| |
| From Jeff: |
| . Fixed typo in definition of CTTNAM for VMS. ckcdeb.h |
| . Moved macro definitions for SSHBUILTIN from ckuus3.c to ckuusr.h |
| so they can be referenced in ckuus7.c |
| . Added SSH functionality to SET HOST: |
| SET HOST /NET:SSH /CONNECT hostname [port] /switches |
| . Fixed SET NET TYPE so it won't reject SSH if SSH is installed. |
| . Changes to allow IKSD to continue functioning. Somehow this minor change |
| to ckcmai.c got lost in one of the back and forth exchanges. |
| . HELP TEXT for UCS2 kverb |
| . Fix a problem in K95 where multiple threads could be attempting to |
| send a telnet negotiation simultaneously. |
| ckcmai.c ckcdeb.h ckuus2.c ckuus3.c ckuusr.c ckuusr.h ckuus7.c ckctel.c |
| ck_crp.c ckuat2.h ckuath.c, 4 Jan 2002. |
| |
| From Jeff: |
| |
| Peter Runestig complaining that the Telnet Forward X code was corrupting |
| data. This resulted in a very thorough examination of the telnet module |
| code and a discovery of some rather significant problems. The root of the |
| problems is the lack of thread safety. To correct this problem the |
| following was done. |
| |
| All code (regardless of module) which outputs telnet commands is placed |
| into a mutex region to ensure that competing output threads do not result |
| in interleaving their output. This could happen for instance when the |
| forward-x thread is forwarding data and the user changes the window size |
| or sends an AYT or BREAK. Next the buffer used for input and output |
| processing were identical. This means that output data could be treated |
| as input or vice versa. Ugh.... |
| |
| I also spent some more time cleaning up setlin(). Mostly reorganizing the |
| code into single if (...) blocks so that breaking it up will be easier. |
| |
| ckctel.c ckuus7.c, 4 Jan 2002. |
| |
| Updated internal copyright notices. All modules, 5 Jan 2002. |
| |
| From Jeff: |
| More of same, plus new makefile target and changes from Spike Gronim |
| for freebsd44+srp+openssl. |
| ckcdeb.h ckcnet.c ckctel.c ckuus7.c ck_ssl.c makefile, 5 Jan 2002. |
| |
| Some minor updates and fixes to SSH and SET SSH help text. |
| ckuus2.c, 6 Jan 2002. |
| |
| Added SET RGB-COLORS for GUI. ckuusr.[ch], ckuus3.c, 6 Jan 2002. |
| |
| From Jeff: More Telnet changes, Debug semaphores for K95, etc: ckcdeb.h, |
| ckuusr.h, ckuus[r35x].c, ckctel.[ch], ckuath.c, 7 Jan 2002. |
| |
| Added --xpos:n --ypos:n, SET GUI WINDOW POSITION x y, and changed SET |
| RGB-COLORS to SET GUI RGBCOLOR. Action needs to be filled in (in setguiwin() |
| in ckuus3.c), and gui_xpos and gui_ypos need to be defined in cko???.c. |
| ckuusr.h, ckuus[r3y].c, 7 Jan 2002. |
| |
| Added --fontname:name --fontsize:name (and facename as synonym for fontname). |
| ckuusr.h, ckuus[7y].c, 7 Jan 2002. |
| |
| Moved GUI (not OS/2) SET TERM FONT code in ckuus7.c to its own routine, |
| setguifont(), in ckuus3.c, and made GUI SET TERM FONT call this routine, |
| and also made SET GUI FONT call the same routine. ckuus[37].c, 7 Jan 2002. |
| |
| Added --termtype:, --height:, --width:, --user:. Also added symbols for |
| --telnet:, --ssh:, --ftp:, --[remote-]charset, and --password:, but didn't |
| fill them in. --password: is probably not a good idea (but we allow it for |
| FTP); the others involve a lot of code-shuffling and reconciliation, which |
| I'll try to do when I get a chance (especially the connection ones, which |
| can be done as part of the setlin() restructuring). ckuusr.h, ckuusy.c, |
| 8 Jan 2002. |
| |
| Also I tried commenting out the #ifndef KUI..#endif's around SET TERMINAL |
| CHARACTER-SET (easier said than done because a crucial #endif was mislabeled). |
| Let's see if it compiles & works... ckuus7.c, 8 Jan 2002 |
| |
| Added FTP [ OPEN ] /NOINIT, meaning don't send REST, STRU, and MODE commands |
| upon making an FTP connection. This allows connection to servers that close |
| the connection (or worse) when given these commands (e.g. Linux 2.4 TUX 2.0 |
| FTP server). ckcftp.c, 8 Jan 2002. |
| |
| Looked at adding caller ID support for the ANSWER command: |
| |
| . SET ANSWER CALLER-ID { ON, OFF } |
| . SET ANSWER RINGS <number> |
| . \v(callid_xxx) xxx = { date, time, name, nmbr, mesg } |
| . CKD_CID modem capability |
| . Set CKD_CID for modems that have it. |
| . A quick survey shows: |
| - USR V.90: No (but Jeff says some USRs have it). |
| - V.250: No |
| - Lucent Venus: No |
| - USR: #CID=1 (the ones that have it -- X2?) |
| - Diamond Supra: #CID=1 |
| - Rockwell 56K: #CID=1 |
| - PCTEL: #CID=1 |
| - Zoltrix: +VCID=1 |
| - Conexant: +VCID=1 |
| . Since there are different commands to enable caller ID reporting, |
| we need a new field in struct MDMINF. |
| . SHOW MODEM and SHOW DIAL would need updating. |
| . etc etc... |
| |
| This is all way too much for now so I just did the setting of the \v(callid_*) |
| variables. These are reset at the beginning of an ANSWER command, and then |
| set by the ANSWER command if they come in; thus they persist from the time |
| they are collected until another ANSWER command is given. To take advantage |
| of autoanswer, the user has to enable it in the modem (all the modems I found |
| that support it have it disabled by default), and also has to set the number |
| of rings to at least 2. This can be done with (depending on the modem): |
| |
| set modem command autoanswer on ATS0=2#CID=1\{13} |
| set modem command autoanswer on ATS0=2+VCID=1\{13} |
| |
| and undone with: |
| |
| set modem command autoanswer on ATS0=1#CID=0\{13} |
| set modem command autoanswer on ATS0=1+VCID=0\{13} |
| |
| The variables can be accessed only after the call is answered. Therefore the |
| only way to refuse a call is to answer it, inspect the variables, and then |
| hang it up if desired. Future Kermit releases can do this more nicely (as |
| sketched out above.) Also while I was in the dialing code, I added result |
| code VCON (= VOICE), used by several of the newer modems. These changes are |
| untested. The SET ANSWER command is written but commented out. ckuusr.h, |
| ckcker.h, ckuus[r3].c, ckudia.c, 8 Jan 2002. |
| |
| From Jeff: fixes to --termtype:, --height:, --width:, --user:, and filling in |
| of --rcharset:, which required extracting code from settrm() into a separate |
| parse-method-independent remote character-set setting routine. ckuus[7y].c, |
| 8 Jan 2002. |
| |
| From Jeff: More work on TERMINAL CHARACTER-SET code reorganization, and |
| reinstatement of SET TERMINAL CHARACTER-SET in K95G. Also, fix char/CHAR |
| warnings in Telnet module. ckuus7.c, ckctel.c, 9 Jan 2002. |
| |
| Made SET TERM CHARACTER-SET visible for all builds, including K95G, and filled |
| in HELP text for it. ckuus[27].c, 9 Jan 2002. |
| |
| Added help text for new extended options. ckuusy.c, 9 Jan 2002. |
| |
| Commented out the return(-2) statement at the end of xgnbyte() to make the |
| "Statement not reached" errors go away, after checking to make sure that there |
| was no path that could fall through to the end. I'm 99.99% sure there isn't, |
| but that doesn't mean that some compilers might not still complain. ckcfns.c, |
| 9 Jan 2002. |
| |
| From Jeff: fix typo in the K95 extended-option help text; add more |
| semaphores to network i/o. ckuusy.c, ckcnet.c, 10 Jan 2002. |
| |
| Undid ansiisms in set{lcl,rem}charset() declarations. ckuus7.c, 10 Jan 2002. |
| |
| Removed a duplicated clause from the install target. makefile, 10 Jan 2002. |
| |
| From Jeff: more semaphores. ckcnet.c, 11 Jan 2002. |
| |
| Moved references to tmpusrid and tmpstring out of NOSPL #ifdefs -- they can |
| be used with NOSPL. setlin(): ckuus7.c, 13 Jan 2002. |
| |
| Made a dummy dologend() routine outside of #ifndef NOICP, so we don't have |
| to enclose every reference to dologend in #ifdefs. (I had added a bunch of |
| calls to dologend() throughout the code to handle automatic LOCUS switching.) |
| ckuus3.c, 13 Jan 2002. |
| |
| Moved "extern int nettype" outside of NOICP #ifdefs in ckuus4.c for NOICP |
| builds. 13 Jan 2002. |
| |
| Moved a misplaced #ifdef in the VERSION command. ckuusr.c, 13 Jan 2002. |
| |
| Did 81 different feature-selection builds on Linux (RH 7.0), all OK after the |
| changes listed above for today. 13 Jan 2002. |
| |
| Added prototypes for set{rem,lcl}charset(). ckcxla.h, 13 Jan 2002. |
| |
| Added ckcxla.h to dependencies for ckuusy.c. ckvker.com, 13 Jan 2002. |
| |
| Made a correction to the HELP SET LOCUS text and supplied a missing comma |
| for HELP REMOTE. ckuus2.c, 13 Jan 2002. |
| |
| Built OK on HP-UX 11.11 (K&R and ANSI), Solaris 8 (cc), Solaris 2.5.1 (gcc), |
| SunOS 4.1.3 (cc and gcc), VMS 7.1 (DEC C, net and nonet), Unixware 7.1.1, |
| Tru64 4.0G, HP-UX 10.20 (K&R), AIX 4.3.3, FreeBSD 2.2.8, Slackware 8.0, IRIX |
| 6.5.13f, IRIX 5.3 (??? Can't tell -- the computer ran out of swap space -- but |
| it was OK a few days ago), VMS 5.5-2 (VAX C, UCX + nonet)... HP-UX 9.05, ... |
| |
| Some corrections to comments in HP targets from PeterE. makefile, 14 Jan 2002. |
| |
| Corrections to prototypes for set{rem,lcl}charset() (VOID, not void) from Jeff. |
| ckcxla.h, 14 Jan 2002. |
| |
| Builds, cont'd... SINIX 5.42, Red Hat Linux 5.2 on i386, SuSE 7.0 on S/390, |
| Red Hat 7.1 on IA64, QNX 4.25, HP-UX 5.21/WinTCP, ..., |
| |
| Dell Coleman <dell@aleph.tum.com> noticed that in AIX, the COPY command always |
| says "Source and destination are the same file" when the destination file |
| doesn't exist. This is because in AIX, realpath() fails with ENOENT (errno |
| 2). The zfnqfp() code already accounts for this, but evidently not well |
| enough. So I did what I should have done long ago. zfnqfp() was originally |
| accomplished with do-it-yourself code. Later I added support for realpath(), |
| and partitioned the routine into mutually exclusive compile-time sections: |
| #ifdef CKREALPATH realpath()... #else do-it-yourself... #endif. But if |
| realpath() failed, there was no recourse to the do-it-yourself code. Today I |
| replaced the #else with the #endif, so the do-it-yourself part is always |
| included and is executed if the realpath() call fails. Built and tested on |
| AIX 4.3.3 and Solaris 2.5.1, as well as on Linux with and without the |
| realpath() code included. zfnqfp(): ckufio.c, 16 Jan 2002. |
| |
| Separated K95 and C-Kermit test version numbers, so C-Kermit can be RC.02 |
| while K95 is Beta.01. ckcmai.c, 16 Jan 2002. |
| |
| Inhibited 0-length writes by conol() and conoll(), since they cause big |
| trouble with the AIX 4.3.3 pty driver, e.g. when you have an SSH connection |
| into AIX and run C-Kermit there. ckutio.c, 16 Jan 2002. |
| |
| Suppressed "Switching LOCUS..." messages from FTP client when it was invoked |
| from the command line. ckcfns.c, 17 Jan 2002. |
| |
| Dave Sneddon noticed that FOPEN /APPEND gets "?Write access denied" in VMS |
| if the file exists. This is apparently because VMS zchko() does the wrong |
| thing. Commenting out the call zchko() in the VMS case gets past this but |
| then the appended part of the file has different attributes than the orignal |
| part, e.g.: |
| |
| abc <- original line (horizontal, normal) |
| d <- appended line (vertical) |
| e |
| f |
| |
| VMS fopen() takes an optional 4th argument: a series of RMS keyword=value |
| pairs. Kermit doesn't give any. Experimentation shows that appending to |
| a Stream_LF works fine. That'll be a restriction for now, until somebody |
| sends in code to get the RMS attributes of the original file and feed them |
| to fopen(). Also need code to fix VMS zhcko() to say whether it's OK to |
| append to a file. ckuus7.c, 17 Jan 2002. |
| |
| Somebody suggested I could get a working Kermit for Neutrino 2+ by doing the |
| QNX6 build on Neutrino itself. I verified that this can't be done -- at least |
| not by me -- since Netutrino 2+ doesn't have a compiler, and we already know |
| the version cross-built for it on QNX4 doesn't work. 17 Jan 2002. |
| |
| From Jeff: SET SSH GSSAPI KEY-EXCHANGE { ON, OFF } parsing, SHOW SSH. |
| ckuus3.c, 18 Jan 2002. |
| |
| PeterE suggested that SET ESCAPE allow 8-bit escape characters because of the |
| difficulty in entering Ctrl-\ on European keyboards and the hardship (e.g. to |
| EMACS and VI users) of sacrificing another C0 control character. Like |
| everything these days, this turns out to be rather a bigger deal than it would |
| seem. The SET ESCAPE parser calls setcc(), which accepts control characters |
| in various formats (literal, ^X notation, or numbers), and gives an error |
| return if the value is not 0-31 or 127. This is changed easily enough to also |
| allow numbers between 128 and 255. But who else calls setcc()? The commands |
| for setting Kermit packet start and end characters. No big deal, this gives |
| people a bit more flexibility in case they need it, but it won't be |
| documented. setcc(): ckuus7.c, 18 Jan 2002. |
| |
| Since code to display the escape character is scattered all over the place, |
| and some of it indexes into an array based on the character value (which would |
| now dump core if the escape character was > 128), I put the code in one place, |
| a new shoesc() routine in ckuusx.c (which needs to be outside #ifndef NOICP, |
| since the CONNECT modules use it even in command-line only builds). Also |
| discovered that this code was indexing into the nm[] array with tt_escape to |
| get "enabled" or "disabled", which is no longer appropriate, so fixed this |
| too. ckuusr.h, ckuus[5x].c, 18 Jan 2002. |
| |
| Made SHOW ESCAPE, SHOW TERM, and the various CONNECT modules call shoesc(), |
| and updated HELP SET ESC. ckuus[25].c, ckucns.c, ck[cuvd9]con.c, 18 Jan 2002. |
| |
| After all that, it occurred to me that this is a really bad idea for K95, |
| with all the confusion about Console code pages, OEM code pages, Windows |
| code pages, and Unicode. But I tried "echo \161" at the K95 prompt and got |
| the expected 8-bit character in both the Console version and the GUI, so |
| maybe it's OK after all. |
| |
| Removed the automatic IKSD login code from setlin() since it complicates |
| interactive anonymous login. ckuus7.c, 20 Jan 2002. |
| |
| An #ifdef clause from Matthew Clarke to avoid "redeclaration of free" error |
| when building a curses version of C-Kermit for AIX 2.2.1 on RT PC. ckuusx.c, |
| 22 Jan 2002. |
| |
| Took care of one detail I omitted when adding the 8-bit escape character: |
| not stripping the 8th bit before comparing the keyboard char with the escape |
| char. ck[uv]con.c, ckucns.c, 24 Jan 2002. |
| |
| Started to go through Jeff's changes of the last week but he had run trim -t |
| on them, which untabifies, so the diffs were huge. Retabifying Jeff's files |
| only makes matters worse. So instead of comparing each old and new source |
| file in EMACS windows with M-X Compare-Windows like I usually do (which can't |
| be told to ignore whitespace), I had to work from the diff -c -b listings. |
| In ascending order of size of diffs: |
| |
| ckcker.h: Add I_AM_SSHSUB definition. |
| ckuusr.h: XXLINK and VN_PERSONAL, etc, definitions. |
| ckuusy.c: Support for "I Am SSHSUB" invocation. |
| ckuus5.c: Support for new K95 directory structure. |
| ckcmai.c: Init endianness earlier (K95 TYPE was broken), "I Am SSHSUB" support. |
| ckuus7.c: Security #ifdefs, SSH OPEN /PASSWORD, SSHSUB support |
| ckcftp.c: <-- SAVE TIL LAST |
| ckuus6.c: Add LINK command for K95 on NT. |
| ckuus4.c: Support for new K95 directory structure; SSHSUB support |
| ckuus3.c: Support for new K95 directory structure; some SSH changes |
| ckuus2.c: Changes to SSH related help text, add HELP LINK text |
| ckuusr.c: LINK command, SSH OPEN /PASSWORD: /SUBSYSTEM: switches, |
| Pattern-management fixes. |
| ckctel.c, ck_ssl.c, ckuath.c, ckcnet.c: |
| Took Jeff's without looking. |
| ckuusx.c, ckucns.c, ckucon.c, ckwart.c: |
| My changes from weeks ago that were never picked up. |
| |
| Built OK on Solaris with gcc and on SunOS with (K&R non-ANSI) cc. |
| 31 Jan 2002. |
| |
| Meanwhile, Jeff had made various changes in response to Jaya Natarajan at IBM, |
| whose basic complaint was that numerous failure conditions were not being |
| detected if the fullscreen file-transfer display was active. Jeff found that |
| this was because big blocks of code were skipped in that case and changed the |
| code not to do that, which fixed the reported problems. But later Jaya said |
| that "ftp mget file1 file2" acted like "ftp mget *", so it seemed that Jeff's |
| fixes broke file selection. After taking Jeff's fixes for ckcftp.c, however, |
| I still could not reproduce the problem. ckcftp.c, 31 Jan 2002. <-- Later, |
| it turned out the problem was with IBM's custom FTP server. |
| |
| Fixed updates that I missed yesterday in ckcftp.c, ckuusr.c. Moved misplaced |
| #ifdef in ckuusy.c breaking nonet builds. Added #ifdefs to sysinit() for |
| nonet builds in ckutio.c. Ran through build-in-many-configurations script |
| in Linux, all builds OK. 1 Feb 2002. |
| |
| Moved shoesc() definition outside of NOXFER to fix NOXFER builds. |
| ckuusx.c, 1 Feb 2002. |
| |
| Added MYCUSTOM definition alongside KERMRC and changed KERMCL to be the |
| same as CKMAXPATH, instead of some random hardwired number. ckuusr.h, |
| 1 Feb 2002. |
| |
| Changed ckcdeb.h to define DIRSEP and ISDIRSEP(), and put #ifndef |
| [IS]DIRSEP..#endif around all [IS]DIRSEP definitions in ck[udso]fio.c, so we |
| can finally put away the many repeated #ifdef chains when we get around to it. |
| 1 Feb 2002. |
| |
| Make VMS zkermini() return 1 on success, 0 on failure, rather than 0 always. |
| ckvfio.c, 1 Feb 2002. |
| |
| Added code to doinit(), just before it goes to execute the init file. If the |
| init file name we are about to open is empty or fails zchki(), substitute the |
| customization filename. For now this code is in #ifdef USE_CUSTOM..#endif, |
| which is not defined by default. It does the trick in Unix and VMS. Also |
| included code from Jeff for K95, but this needs verification and testing. |
| Also used DIRSEP and ISDIRSEP() throughout doinit() instead of the long #ifdef |
| chains. ckuus5.c, 1 Feb 2002. |
| |
| Moved shoesc() prototype from ckuusr.h to ckcker.h so modules that need it |
| don't have to include ckuusr.h just for this one thing (example: ckvcon.c). |
| 1 Feb 2002. |
| |
| Defined USE_CUSTOM by default, except if NOCUSTOM is defined. ckuusr.h, |
| 1 Feb 2002. |
| |
| Fixed kermit-sshsub code to really enter server mode, and to print |
| "KERMIT READY TO SERVE..." so scripts can wait for it. Also bumped the |
| C-Kermit test ID to RC.03 and the K95 one to Beta.02. ckcpro.w, ckcmai.c, |
| 2 Feb 2002. |
| |
| I was thinking about adding SET COMMAND BUFFER-SIZE to let people allocate |
| as big a buffer as they wanted at runtime, mainly for defining huge macros. |
| Moved the SCMD_blah definitions from ckuusr.h to ckuus3.c, since they aren't |
| used anywhere else. But stopped there since the rest turns out to be a rather |
| big deal. ckuusr.h, ckuus3.c, 2 Feb 2002. |
| |
| From Jeff, 3 Feb 2002: |
| . Fix an out-of-order modem name in the SET MODEM TYPE table: ckudia.c. |
| . Use SET LOGIN USER and PASSWORD if present. ckcftp.c. |
| |
| Cody Gould noticed that array declarations had become case sensitive, and |
| upper case didn't work. Diagnosis: misplaced case conversion in xarray(). |
| Fixed in ckuus5.c, 4 Feb 2002. |
| |
| SHOW VAR dumps core on \v(sexpression) or \v(svalue) -- failure to check for |
| NULL pointer. I wonder why this didn't happen before (answer: because I was |
| doing it on SunOS; now I'm doing it on Solaris). ckuus4.c, 6 Feb 2002. |
| |
| I've had several requests for "show var name name name...". I added this to |
| doshow(), such that SHOW VAR works exactly as it did before (if you don't give |
| it an arg, it lists all variables; if you give it an arg, it appends "*" to it |
| and lists all matching variables) but now you can also give more than one arg |
| and it works the same way with each one as it did before if you gave it a |
| single item (i.e., "*" is appended, so "show var os cmd" shows all variables |
| whose names begin with "os" or "cmd". You can also freely use pattern |
| notation, including anchors. Hmmm, no, actually it's different in that now |
| each includes an implied * before AND after, so "show var version" shows all |
| variables whose name contain "version" rather than all variables whose names |
| start with it. ckuus5.c, 6 Feb 2002. |
| |
| Cody Gould reported that WRITE FILE blah blah \fexec(anything) ... got a |
| spurious "File or Log not open" error. This turns out to be a rather |
| pervasive problem -- whenever you use \fexec() it calls the parser recursively |
| and this can run roughshod over global variables, such as our innocent little |
| x, y, and s. The fix in this case was to put x and y on the stack. The same |
| thing probably needs doing in about 10,000 other places. Too bad C isn't |
| Algol. ckuusr.c, 6 Feb 2002. |
| |
| Minor fix to SHO VAR -- the "^" anchor wasn't working (e.g. "show var ^os"). |
| ckuus5.c, 6 Feb 2002. |
| |
| Fixes from Jeff for FTP file-transfer character-set translation in K95 and |
| in WIKSD, plus updated K95 SSH help text. ckcftp.c, ckcfns.c, ckuus2.c, |
| 7 Feb 2002. |
| |
| Server has its date set in the past. Client says "remote dir". Server sends |
| A packet containing old date. If client has FILE COLLISION UPDATE, it |
| rejects the directory listing. Changed gattr() to only reject real files |
| (introduced by F packet), not X-packet material like directory listings. |
| ckcfn3.c, 7 Feb 2002. |
| |
| Up-down arrow keys for command recall. People have been asking for it for |
| years but now it's actually important because of PDAs that don't have Ctrl |
| keys. Would have been trivial except that we use getchar() rather than |
| coninc() for reading from the keyboard in Unix so conchk() doesn't help. In |
| fact there are lots of other places where conchk() is used this way and works |
| only by accident. The only reason we never noticed a problem before is that |
| characters don't usually arrive from the keyboard that fast. But when an |
| arrow key sends "ESC [ A" all once, the stdin buffer gets some extra stuff in |
| it, which getchar() will return next time, but which coninc()/conchk() will |
| never see. So I added a new cmdconchk() routine which, if the keyboard is |
| being read with getchar() rather than coninc(), looks at the stdin buffer. |
| Unfortunately, however, there is no API for this, nor is there any standard |
| way to access the stdin buffer directly. So first I did it for Solaris. Then |
| to make it portable requires a survey of the headers for every platform. I |
| found four major variations: |
| |
| stdin->_r: |
| {Free,Open,Net}BSD, BSDI |
| stdin->_cnt: |
| SunOS, Solaris, HP-UX 5-6, AIX, VMS, SINIX, IRIX 5.3-6.5, DGUX |
| 4.2BSD, 4.3BSD, OSF/1..Tru64, QNX4, Unixware 1.0-2.1.0 |
| stdin->__cnt: |
| HP-UX 7-11, SCO: OSR5.0.6a, Unixware 2.1.3-7.x, OU8, UNIX 3.2v4.x |
| Subtract read from end pointer (_IO_file_flags defined): |
| Linux (tested on RH 5.2 thru 7.1) |
| |
| The Linux method is new and different to account for multibyte characters. |
| All the others assume character == byte. |
| |
| For docs: ANSI only, 7-bit only; both application and cursor modes are |
| accepted. Only up and down arrow are handled; left and right arrows cause |
| a beep. ckucmd.c, 8 Feb 2002. |
| |
| Build-all: Discovered that changing CTTNAM from TT: to SYS$INPUT: in VMS |
| (which was done on 3 Jan 2002 to work around problems starting Kermit in |
| batch, spawn'd, etc) breaks Kermit on VMS 5.5/VAX (concb() fails with "lacks |
| sufficient privilege"; if you enable all privs Kermit starts but then spews |
| out a constant stream of BEL characters). If you put dftty back to "TT:", |
| everything is fine -- I have no idea why, so I used #ifdef VMSV70 to decide, |
| which is totally crude. Next I had to find where the boundary really is: VAX |
| vs Alpha? VAX C vs DEC C? Or between VMS releases? Built on: |
| . VMS 6.2 Alpha (DEC C) - OK with TT: |
| . VMS 6.2 Alpha (DEC C) - OK with SYS$INPUT: <-- keep this one |
| . VMS 7.1 VAX (DEC C) |
| So the final condition is #ifdef VMSV60. ckvker.com, ckvtio.c, ckuus5.c. |
| |
| QNX 6 needed some attention too: |
| . Whoever did the makefile target made the default port "/dev/ser1". |
| . Arrow keys... |
| But I gave up on getting arrow keys to work -- it should be just like *BSD, |
| but for some reason gcc complains that struct FILE has no _r member, even |
| though it does (getchar uses it). |
| |
| Checked stdio.h on Mac OS X and it looks like the *BSDs. |
| |
| --- C-Kermit 8.0.201 --- |
| |
| Removed -g from solaris2xg+krb5+krb4+openssl+shadow makefile target -- it |
| was producing a 15MB binary! makefile, 14 Feb 2002. |
| |
| Fixed a couple thinkos in "make install": $(DESTDIR) should not have been |
| included in the tests for whether INFODIR or SRCDIR were desired. makefile, |
| 14 Feb 2002. |
| |
| (tarball refreshed 16 Feb 2002) |
| |
| --- C-Kermit 8.0.201 --- |
| |
| From Jeff: Better seeding of \frandom(): ckcmai.c, ckuus4.c, 18 Feb 2002. |
| |
| From Jeff: Make arrow keys work in WIKSD, but now also unconditionally |
| compile arrow-key code in all versions. ckucmd.c, 18 Feb 2002. |
| |
| From Jeff: ckuath.c, ck_ssl.c, ckcnet.c (didn't look). 18 Feb 2002. |
| |
| Added ORIENTATION command, that lists the various important directories, and |
| \flongpathname() and \fshortpathname(), which do path format conversions in |
| Windows, and are just synonynyms for \fpathname() elsewhere. The new functions |
| need building and testing in Windows. ckuusr.h, ckuus[r24].c, 18 Feb 2002. |
| |
| Changed PWD for Windows only to show both short and long paths (but only if |
| they are different; otherwise it behaves as before). ckuusr.c, 18 Feb 2002. |
| |
| Changed default Windows prompt to show long pathname. ckuus5.c, 18 Feb 2002. |
| |
| Updated INTRO command to mention FTP, HTTP, and SSH. ckuus2.c, 18 Feb 2002. |
| |
| From Jeff: fixes for typos in GetLongPathName() code: ckuus[r4].c, 22 Feb 2002. |
| |
| From Jeff: net/auth updates: ckcnet.c, ckuath.c, 22 Feb 2002. |
| |
| Added -DUSE_FILE__CNT to NCR MPRAS targets, George Gilmer: makefile, |
| 24 Feb 2002. |
| |
| From Jeff: Add support for GetLongPathName() in Win95 and NT: ckcdeb.h, |
| ckuus[r4].c, 24 Feb 2002. |
| |
| From Jeff: More fixes for FTP SIGINT, plus fix [M]PUT /MOVE. ckcftp.c, |
| 24 Feb 2002. |
| |
| Fixed an unguarded reference to inserver, gtword(): ckucmd.c, 24 Feb 2002. |
| |
| Adapted RETRIEVE for use with FTP connections; this one was missed when |
| adapting GET, REGET, MOVE, etc. ckuus6.c, ckcftp.c, 24 Feb 2002. |
| |
| Added special COPYRIGHT command text for the free version of WIKSD. |
| ckcmai.c, ckuusr.c, 24 Feb 2002. |
| |
| C-Kermit, when in CONNECT mode and given the <Esc-Char>U sequence, would |
| unconditionally close the connection if it was a network connection. This |
| is bad when Telnetting to a modem server. I added to code to prevent this |
| in the RFC2117 TELNET COMPORT case but I'm not sure how to exend this to the |
| general case (or whether it would be a good idea). ckucns.c, 24 Feb 2002. |
| |
| During file transfer, chktimo() calls ttgspd() for every packet, which clearly |
| doesn't make sense on network connections, especially since on Telnet COMPORT |
| connections it results in a network speed query for every packet. Rearranged |
| the code so this happens only on true serial-port connections. ckcfn2.c, |
| 24 Feb 2002. |
| |
| From Jeff: Fix reversed ANSI/non-ANSI function declarations clauses in |
| ckcftp.c, 26 Feb 2002. |
| |
| Changed Unix CONNECT module to call kstart() only when it has a chance of |
| doing anything (i.e. a Kermit packet has been partially detected, or the |
| packet start character just came in), rather than unconditionally on every |
| incoming character. ckucns.c, 8 Mar 2002. |
| |
| FTP PUT /SERVER-RENAME:, /RENAME-TO:, /MOVE-TO: were sticky. Patch: In |
| ckcftp.c, near the top of doftpput(), add the lines marked with "+": |
| |
| makestr(&filefile,NULL); /* No filename list file yet. */ |
| + makestr(&srv_renam,NULL); /* Clear /SERVER-RENAME: */ |
| + makestr(&snd_rename,NULL); /* PUT /RENAME */ |
| + makestr(&snd_move,NULL); /* PUT /MOVE */ |
| putpath[0] = NUL; /* Initialize for syncdir(). */ |
| |
| ckcftp.c, 26 Mar 2002. |
| |
| \fday() and \fnday() were broken for dates prior to 17 Nov 1858. Fixed in |
| fneval(): ckuus4.c, 28 Mar 2002. |
| |
| From Jeff: |
| . New calling convenion for demoscrn(): ckucmd.c, ckuusx.c |
| . Fix for host-initiated 80/132 col screen mode change. ckuus7.c. |
| . New \v(desktop) variable: K95 user desktop directory, ckuusr.h, ckuus4.c |
| . New \v(rfc2717_signature) var: Telnet Com Port, ckuusr.h, ckuus4.c |
| . Uncomment "not-reached" return(-2) in xgnbyte(): ckcfns.c |
| . New dates: ckcmai.c. |
| . Telnet Com Port fixes: ckutio.c |
| . SET PRINTER fixes for K95: ckuus3.c |
| . Session limit adjustments: ckuus3.c |
| . New directory layout for K95 (TAKE, ORIENT): ckuusr.c |
| . Fixes for Telnet Com Port, recycling SSH connections: ckuusr.c |
| |
| From me, not picked up by Jeff previously: |
| . kstart() speedup: ckucns.c. |
| |
| 1 Apr 2002. |
| |
| ---K95 1.1.21--- |
| |
| From Jeff, 4 Apr 2002: |
| . More fixes for Telnet Com Port: ckuus4.c, ckudia.c, ckutio.c, ckcnet.c: |
| . network connections will check for carrier detect if SET |
| CARRIER-WATCH is ON. This could have a potential conflict if |
| the option is negotiated and the carrier is off, but the site |
| requires login. |
| . modem hangup message generated since the dial module did not |
| believe that network modems could be reset with a DTR drop. |
| . Version number adjustments: 8.0.203, 1.1.99: ckcmai.c. |
| . Security: ck_ssl.[ch], ckuath.c. |
| |
| ---C-Kermit 8.0.203--- |
| |
| From Jeff, 6 Apr 2002: |
| . Fix typo in HELP REMOTE HOST: ckuus2.c. |
| . More Telnet Com Port fixes: ckctel.c, ckcnet.c, ckudia.c, ckutio.c |
| |
| From Jeff, 9 Apr 2002: |
| . Fix autodownload problem: ckcfn[2s].c. |
| |
| Chiaki Ishikawa reported that in Linux (two different kinds), if you choose |
| hardware parity, CONNECT, then escape back, the speed can change. I tracked |
| this down to the following statement in ttvt(): |
| |
| tttvt.c_cflag &= ~(IGNPAR); /* Don't discard incoming bytes */ |
| |
| Somehow execution of this statement corrupted the speed words of the termios |
| struct, which are entirely separate words that are nowhere near the c_cflag |
| member. Anyway, the statement is wrong; it should be: |
| |
| tttvt.c_cflag |= IGNPAR; /* Don't discard incoming bytes */ |
| |
| Fixing it cured the problem; don't ask me why. ckutio.c, 9 Apr 2002. |
| |
| From Jeff: |
| fixes the problem reported by robi@hastdeer.com.au. The request to |
| enter server mode was received while we were entering server mode. |
| But the server was waiting for the response to REQ_STOP sent to the |
| client. Therefore, we weren't quite in server mode yet and the |
| request to enter server mode was rejected. A check for the sstate |
| value solves the problem. ckctel.c, 10 Apr 2002. |
| |
| Chiaki Ishikawa (CI) discovered the real cause for the speed changing problem. |
| I was setting the IGNPAR bit in the wrong flag word: it should have been |
| c_iflag instead of c_oflag, silly me. Fixed in ttvt() and ttpkt(): ckutio.c. |
| I also did a thorough census of all the termio[s] flags to ensure each was |
| applied to the right flag word -- they were, IGNPAR in the HWPARITY case was |
| the only mistake. CI also discovered that the speed words in the Linux |
| termios struct are not used at all -- the speeds are encoded in an |
| undocumented field of c_cflag, which explains the problem. 10 Apr 2002. |
| |
| Any use of \{nnn} character notation in a macro definition, loop, or other |
| braced block caused an "unbalanced braces" parse error. The backslash in this |
| case is not quoting the open brace; it's introducing a balanced braced |
| quantity. Special-cased in getncm(): ckuus5.c, 12 Apr 2002. |
| |
| The semantics of "if defined \v(xxx)" were changed in 8.0 to avoid obnoxious |
| error messages when xxx was not a built-in variable (see notes of 19 Nov |
| 2000), such that "if defined \v(xxx)" would always succeed if there were such |
| a variable, even if it had no value. The behavior that is documented in the |
| book (and also in ckermit70.html) and that we had in versions 6 and 7, was |
| that IF DEFINED \v(xxx) would fail if \v(xxx) was defined but had an empty |
| value OR if it was not defined, and would succeed only if it was defined and |
| had a value. Fixed in boolexp(): ckuus6.c, 12 Apr 2002. |
| |
| What about \function()s? IF DEF \fblah() presently succeeds if the function |
| exists; you don't even have to give arguments. I think this behavior is more |
| useful than if I required valid arguments and then evaluated the function -- |
| you can do that anyway with 'if not eq "\fxxx(a,b)" "" ...' Of course this |
| argument applies to "if def \v(xxx)" too, except that the current behavior is |
| consistent with the 7.0 behavior, so there is no need for a change. |
| |
| Kent Martin discovered that if a macro contains a LOCAL statement for a |
| variable whose name is the same as, or a unique left substring of, the macro's |
| name, then undefining the local variable makes the macro disappear: |
| |
| define DateDiff { |
| echo {DateDiff(\%1) executing...} |
| } |
| define Kent { |
| do DateDiff {2} |
| local date |
| assign date {} |
| do DateDiff {3} <-- This fails (A) |
| } |
| do DateDiff {1} |
| do Kent |
| do DateDiff {4} <-- So does this (B) |
| |
| The first part of the problem is that "assign date {}" called delmac with |
| exact=0, so delmac evidently deleted first macro whose name started with |
| "date" -- and since the only one was DateDiff, that's the one that was |
| deleted. Fixing this (change "delmac(vnp,0)" to "delmac(vnp,1)" in dodef()) |
| got us past A. The second part was making the same fix to the delmac() |
| call in popclvl(). ckuus[56].c, 13 Apr 2002. |
| |
| The INPUT command ignored the parity setting, thus SET PARITY EVEN, |
| INPUT 10 "login:" didn't work. Fixed in doinput(): ckuus4.c. Also fixed a |
| bogus #ifdef COMMENT section that messed up the block structure of the module |
| and therefore EMACS's indenting. 18 Apr 2002. |
| |
| Added sco32v500net+ssl and Added sco32v505net+ssl targets, from Scott Rochford |
| at Dell (not sure yet if they work). Makefile, 19 Apr 2002. |
| |
| From Jeff, 22 Apr 2002: |
| . Added "darkgray" color and made "dgray" an invisible synonym: ckuus3.c. |
| . Fix carrier sense on Telnet Com Port immediately after dial: ckudia.c. |
| . Change krb5_des_blah() arg list: ckutio.c. |
| . Fix ttgmdm() for Telnet Com Port: ckutio.c. |
| . Fix tthang() return code: ckutio.c. |
| . Add aix43gcc+openssl target: makefile. |
| |
| From Jeff, 25 Apr 2002: |
| . Fix SET GUI keyword table: ckuus[37].c. |
| . A final fix to Telnet Com Port: ckctel.c, ckcnet.c. |
| |
| From Jeff, 26 Apr 2002: |
| . Another final fix to Telnet Com Port: ckctel.c, ckudia.c. |
| |
| From Jeff, 27 Apr 2002: |
| . separate the wait mechanism for TELNET SB COMPORT synchronous messages |
| from the asynchronous TELNET SB COMPORT MODEMSTATUS messages: ckctel.[ch] |
| . fix debug messages in Certificate verify functions: ck_ssl.c, ckcftp.c.a |
| |
| Frank, 27 Apr 2002: |
| . Fixed VMS zgetfs() to fail when file doesn't exist: ckvfio.c. |
| . Fixed UNIX zgetfs() to check for null or empty arg: ckufio.c. |
| . Added #include <time.h> for time() call: ckcmai.c. |
| . Add casts to args in tn_wait() calls: ckctel.c. |
| |
| SINIX-P 5.42 (Pyramid architecture) makefile target from Igor Sobrado. |
| makefile (no source-code changes), 1 May 2002. |
| |
| From Jeff, 5 May 2002, |
| . Fix some "unknown host" messages: ckcftp.c. |
| . Add more casts to tnc_wait() calls: ckudia.c. |
| . Improvements to SHOW SSH, SHOW GUI: ckuus3.c. |
| . Fixes to SET COMMAND { WIDTH, HEIGHT }: ckuus3.c. |
| . Updates to ck_ssl.[ch], ckctel.c, ckcnet.c. |
| |
| Fixed the erroneous setting of ssh_cas during switch parsing rather than |
| after cmcfm() in setlin(): ckuus7.c, 5 May 2002. |
| |
| setlin() decomposition (2300 lines), Part One: |
| |
| . Copied a big chunk from the end of setlin(), beginning with net directory |
| lookup, but only the network-specific and common parts, to a new routine, |
| cx_net(), 900 lines. |
| |
| . Extracted many repetitious lines of error-message code from cx_net() |
| to a new routine, cx_fail(). Error messages are stored in slmsg, and |
| also printed but only if we were not called from a GUI dialog (and |
| QUIET wasn't set, etc etc). Any adjutments in this policy can now be |
| made in one place. |
| |
| . I put a call to cx_net() in setlin() just before all the code it replaced. |
| It works for TELNET and SET HOST /TELNET. |
| |
| . Built with mkwatsol-k5k4ssl; after a couple fixes it builds OK and makes |
| Kerberized connections OK. |
| |
| . Copied the serial-port and common parts of the setlin() post-cmcfm() |
| code to another new routine, cx_serial(), about 275 lines. Fixed |
| messages not to come out when called from GUI dialog, etc. Inserted |
| a call to cx_serial() at the appropriate spot in setlin(). Tested |
| serial connections on watsun with "set line /dev/ttyh6", works OK. |
| |
| . Removed all the code from setlin() that was copied to cx_*(). This slims |
| setlin() down to 1120 lines. Tested regular Telnet, Kerberized Telnet, and |
| serial connections again, all OK. The Unix version of the SSH command is |
| OK too. |
| |
| setlin() deconstruction, Part Two: |
| |
| Now that we have the common network and serial connection pieces moved out of |
| setlin(), we still need to move out the little code snippets for each network |
| type that take place between command confirmation and the common code we just |
| replaced. As far as I can tell, this needs doing only for SSH. The code |
| labeled "Stash everything" copied to cx_ssh() but I didn't remove the original |
| code since I can't test this. I think I'm done -- maybe I'm overlooking |
| something but I don't know what... First we need to test the heck out of it |
| in all command-line versions (K95 and C-Kermit). Then to use this from |
| the GUI, see the calling sequences for cx_serial(), cx_net(), and cx_ssh(): |
| |
| . For serial or TAPI connections, the GUI should call cx_serial(). |
| . For SSH connections, it should call cx_ssh() and then cx_net(). |
| . For all other network connections, just calls cx_net(). |
| |
| ckuus7.c, Cinco de Mayo de 2002. |
| |
| New ckuus7.c from Jeff, 8 May 2002. Merge cx_ssh() into cx_net(). Also: I |
| had made line[] an automatic variable, since the global line[] buffer is used |
| by almost every parsing routine in C-Kermit to hold string fields between |
| parsing and execution but Jeff says he found that some code somewhere depended |
| on line[] containing the hostname after setlin() was finished. |
| |
| From Jeff, 10 May 2002: |
| . Fix SET SSH STRICT-HOST-CHECKING parse: ckuus3.c. |
| . Add prototypes for cx_net() and cx_serial(): ckuusr.h. |
| . Add ANSI versions of cx_net() and cx_serial() declarations and supply a |
| missing parameter in the cx_serial() invocation, change SSHCMD cx_net() |
| invocation to new form. |
| |
| From Jeff, 16 May 2002: |
| . ANSI strictness changes: ck_ssl.[ch] |
| . New DIALER command: ckuusr.[ch] |
| . Correction to how -0 turns off autodownload: ckuusy.c |
| . Prototypes for GUI menu action functions: ckuusr.h. |
| . Replace setting of GUI-action variables by function calls: ckuus[3457x].c |
| . Fix FTP -z switch parsing: ckcftp.c. |
| . Fix SET HOST testing of setlin() return code: ckuus3.c |
| |
| From Jeff, 18 May 2002: |
| . Allow half-size GUI fonts: ckuus[35y].c. |
| |
| Fixed setguifont() to parse fractional font sizes and round to nearest half |
| point. ckuus3.c, 18 May 2002. |
| |
| For GUI, wrote front ends for getyesno(), readtext(), and readpass(): |
| |
| . uq_ok() prints text and gets Yes/No, OK/Cancel, or just OK response. |
| This replaces getyesno() and can also be used for alert or help boxes. |
| |
| . uq_txt() prints text and gets a single text response. Replaces |
| readtext() and readpass(). |
| |
| . uq_mtxt() is like uq_txt() but allows multiple text fields. Replaces |
| any combination of readtext() and readpass(). |
| |
| Obviously the #ifdef KUI portions of the uq_blah() routines need filling in. |
| ckuusr.h, ckuus3.c, 18 May 2002. |
| |
| Converted selected getyesno() calls to uq_ok(): ckcftp.c, ckuus3.c, ckuus6.c. |
| Some were not converted because it was inappropriate, e.g. DELETE /ASK; others |
| because they're in Jeff's code. The most interesting conversions are in the |
| DIAL command when DIAL CONFIRMATION is ON. Here there is a dialog for each |
| phone number asking if it's OK (ug_ok()) and if not, asking for a replacement |
| (uq_txt()); seems to work fine in C-Kermit. All the candidates for uq_mtxt() |
| are in Jeff's code. 18 May 2002. |
| |
| From Jeff: Convert remaining getyesno/readtext/readpass calls to uq_blah() |
| so they can be GUI dialogs. ckuus[37].c, ckcftp.c, ckuath.c, ck_ssl.c, |
| 21 May 2002. |
| |
| Added KCD command = CD to symbolic directory name (EXEDIR, COMMON, APPDATA, |
| TMPDIR, etc etc). ckuusr.h, ckuus[r25].c, 21 May 2002. |
| |
| From Jeff, 28 May 2002: |
| . --title: commandline option: ckuusr.h, ckuusy.c |
| . Fix some #includes, move some declarations: ckcfns.c |
| . Change K95 version from Dev.00 to Beta.01 |
| . ASK[Q] /GUI: ckuus6.c. |
| . Various GUI screen updates and #ifdefs: ckuus7.c |
| . Add missing cx_net() calls to new setlin() for file SuperLAT..: ckuus7.c |
| . Updated uq_*() routines for GUI dialogs: ckuus3.c. |
| |
| Added GETOK switches (/TIMEOUT for all; /POPUP and /GUI for K95G): |
| ckuus6.c, 29 May 2002. |
| |
| Added HELP SET GUI text. ckuus2.c, 29 May 2002. |
| |
| From Jeff: |
| . Another K95-specific #include for ckcfns.c. |
| . More items for K95G Actions menu. |
| . Change K95G Locus switching to call setlocus() rather than set variable. |
| . Ditto for several other variables now settable from Actions menu. |
| . Fix SET HOST /NET:SSH status code so IF SUCCESS works. |
| . Fix SHOW SSH port-forwarding. |
| ckcfns.c, ckuus[r367].c, ckcftp.c, ckcmai.c, 30 May 2002. |
| |
| Changed SET LOCUS to have a new value, ASK, corresponding to new autolocus |
| value of 2, K95G only. Changed setlocus() to not do anything if the new and |
| old loci are the same, otherwise to invoke a GUI dialog in K95G if autolocus |
| is 2, and also to handle any text messages. Changed SHOW COMMAND to show ASK |
| value for SET LOCUS. Rewrote HELP SET LOCUS. ckuusr.[ch], ckuus[23].c, |
| ckcftp.c, 30 May 2002. |
| |
| Add a missing space to Locus popup, and fix Jeff's version of the code to |
| compile in C-Kermit. ckuusr.c, 31 May 2002. |
| |
| From Jeff, for K95 GUI, 6 June 2002: |
| . Force some GUI popups to be in foreground: ckuus3.c. |
| . Fix SHOW TERM font display: ckuus5.c. |
| . Update K95 version numbers and date (4 June 2002): ckcmai.c. |
| . Add note about encrypted private keys vs scripts to HELP SET AUTH: ckuus2.c. |
| . Fix SET HOST for DECnet: ckuus7.c. |
| |
| --- K95 2.0 --- |
| |
| From Jeff, 7 June 2002: |
| . Fix some #ifdefs for Unix builds (locus, dial, etc): ckuus7.c |
| . Add gui_resize_scale_font() prototype: ckuus3.c |
| . Add some missing SET GUI commands: ckuus3.c |
| . Update version numbers: ckcmai.c |
| |
| --- K95 2.0.1 --- |
| |
| From Jeff, 11 June 2002: |
| . Conditionalize Locus-switching popup text for GUI/Console: ckuusr.c. |
| . Fix the SRP_installed_as_server() function. The new API returns TRUE even |
| if the SRP config and password files cannot be found. Went back to the old |
| API. This bug affects C-Kermit 8 when built with SRP as well as 1.1.21 |
| through 2.0.1. Since iksdnt.exe has not been shipped yet I fixed it and |
| uploaded a new non-beta build of it. ckuath.c. |
| |
| From Jeff, 12 June 2002: |
| . Fix SSH AGENT ADD: ckuusr.c. |
| . Fix --facename: option to not fail if name unknown: ckuusy.c. |
| . Fixes for OpenSSL 0.9.7 and OpenBSD 3.1: ck_ssl.c. |
| . Fix SET AUTH TLS VERIFY NO to prevent a dialog but still a warning if |
| SET AUTH TLS VERBOSE ON is set: ck_ssl.c. |
| . Fix FTP code to verify the hostname as specified by the user and not |
| the hostname discovered by the reverse DNS lookup. For example, |
| FTP OPEN kermit.columbia.edu |
| should produce a dialog because that name is not in the certificate |
| even though ftp.kermit.columbia.edu (the reverse DNS name) is: ckcftp.c. |
| |
| Add support for Solaris 9 and NetBSD 1.6. makefile, ckuver.h, ckcdeb.h, |
| 13 Jun 2002. |
| |
| Discovered that Solaris 9 wants to hide the members of struct FILE, and |
| enforces this for 64-bit builds. They offer some functions like __fbufsize() |
| to get the info, but not the info we need for reading escape sequences (the |
| _cnt member). Let's hear it for political correctness. Created new solaris9g |
| (32-bit) and solaris9g64 (64-bit) targets. Sorry, no arrow keys in 64-bit |
| mode. Also no more direct access to sys_errlist[]; must use strerror(). |
| makefile, ckucmd.c, 13 Jun 2002. |
| |
| Added solaris9g+openssl+zlib+pam+shadow, which in turn required adding |
| solaris2xg32+openssl+zlib+pam+shadow, needed for gcc 3.1 in which you have |
| to specify 32-bit. Fails for some mysterious reason in link step |
| (can't find libssl.so.0.9.6 even though it's there). makefile, 13 Jun 2002. |
| |
| Solaris 8 empty socket problems again -- tthang() times out, subsequent |
| tcsetattr() calls do horrible things. Added a bandaid to ttclos(): don't |
| call tcsetattr() any more if hangup timed out. ckutio.c, 14 June 2002. |
| |
| Gerry B reported the bandaid got us bit farther but Kermit still disappears. |
| Added code to reassert the alarm signal handler, since it is likely that |
| Solaris has become stricter about this since last time I looked. (Later |
| Gerry reported back that this did the trick -- C-Kermit now exits normally |
| and releases the lockfile). ttclos(): ckutio.c, 17 Jun 2002. |
| |
| If you use Kermit to copy a file to a destination file that already exists and |
| is longer than the source file, the destination file is not truncated. I had |
| mistakenly assumed that setting O_CREAT in the open() call in zcopy() would |
| create a new copy of the file. Fixed by also setting O_TRUNC. ckufio.c, |
| 17 Jun 2002. |
| |
| Updated HELP INPUT and MINPUT text to explain 0 and -1 timeout values, and |
| HELP DIAL to explain about entering CONNECT mode automatically. ckuus2.c, |
| 17 Jun 2002. |
| |
| Got rid of client-side "Press the X or E key to cancel" message when giving |
| a REMOTE command if QUIET is set or if XFER DISPLAY is NONE. ckuus7.c, |
| 17 Jun 2002. |
| |
| From Jeff 25 Jun 2002: |
| . Add SUN terminal type: ckuusr.h, ckuus[57].c. |
| . Add GUI file transfer display: ckcker.h, ckuus[47x].c. |
| . Changes to allow C-Kermit to build with OpenSSL 0.9.7. Current |
| C-Kermit code is designed to compile with 0.9.6 and earlier. To |
| compile with 0.9.7 you must specify -DOPENSSL_097. This avoids |
| missing symbols in the DES library. The functions in OpenSSL were |
| renamed in 0.9.7 to avoid link time conflicts with Kerberos 4. |
| ckufio.c ck_crp.c ckuath.c ck_ssl.h ck_ssl.c, makefile. |
| |
| From Jeff 26 Jun 2002: |
| . apparently the SSL Passphrase Callback function was not converted |
| from readpass() to uq_txt() |
| . FTP Authentication failure errors were not being reported to the |
| user. So a failure would appear to be a successful completion |
| unless FTP DEBUG was ON. Now the message is reported unless |
| the QUIET flag is set. |
| ck_ssl.c, ckcftp.c. |
| |
| SET TRANSFER MODE MANUAL didn't work for FTP; fixed in putfile() and getfile(): |
| ckcftp.c, 1 Jul 2002. |
| |
| Changed debug log for FTP to log "FTP SENT" and "FTP RECD" for protocol |
| messages, just like we do for Telnet, to make it easy to grep them out of |
| the log. ckcftp.c, 1 Jul 2002. |
| |
| In FTP MGET /UPDATE, equal times spuriously caused download. doftpget() was |
| misinterpreting chkmodtime()'s return code. ckcftp.c, 3 Jul 2002. |
| |
| In FTP MGET /RECOVER, recovery is skipped if the local file is newer than |
| the remote. This would seem to make sense, but when a download is |
| interrupted, the partial file never gets the date of the remote file, so |
| the partial file is always newer, and recovery never works. Fixed in |
| recvrequest() by commenting out the date check. ckcftp.c, 3 Jul 2002. |
| |
| A better way to fix the previous problem is to always set the file date from |
| the server and then only allow /RECOVER to work when the dates are equal. |
| But that's not possible because MDTM is not implemented universally, and it |
| conflicts with how Kermit currently works, namely that FTP DATES are OFF by |
| default. Also, checking dates prevents [M]GET /RECOVER from working with |
| files that were incompletely downloaded by some other FTP client. |
| |
| In FTP MGET /RECOVER <wildcard> <wildcard> ..., the first file in each group |
| is always downloaded. Diagnosis: Kermit sends "TYPE A" prior to NLST (as it |
| must). Then when it sends its first SIZE command, it's still in ASCII mode, |
| so the server sends the "ASCII size" rather than the binary size, which does |
| not agree with the size of the local file (which was downloaded in binary |
| mode), so recovery is always attempted even when the files are identical. The |
| TYPE A command is sent by initconn(). After the remote_files() call, we have |
| to change the type back to the prevailing type before sending the first SIZE |
| command. Fixed in cmdlinget() and doftpget(): ckcftp.c, 3 Jul 2002. |
| |
| In FTP MGET /EXCEPT:<pattern> used with SET XFER DISPLAY brief, files that |
| are skipped just say ERROR instead of saying why they were skipped. Fixed |
| in doftpget(): ckcftp.c, 3 Jul 2002. |
| |
| Added EXIT to top-level HELP text. ckuus2.c, 13 Jul 2002. |
| |
| Strip braces in REINPUT n {string}. ckuusr.c, 13 Jul 2002. |
| |
| Added /QUIET switch to ASK-class commands. This means not to print any error |
| messages when an ASK-class command times out waiting for a response. Made |
| sure that when a timeout occurs, the command fails. Also made sure the |
| c-Kermit prompt doesn't write over the ASK prompt if ASK times out. Also |
| fixed ASK, when it times out, not to return -9, which it did in one case, |
| which causes a command-stack dump. ckuus[267].c, ckucmd.c, 13 Jul 2002. |
| |
| Fixed SET FILE INCOMPLETE help text, which said that both KEEP and AUTO were |
| the default. ckuus2.c, 13 Jul 2002. |
| |
| If you SET FTP DEB ON and then turn it OFF, the MGET temp file is still kept. |
| Fixed by getting rid of ftp_knf variable and using ftp_deb to control whether |
| temp file is deleted (ftp_knf was being set from ftp_deb anyway, but then |
| wasn't being reset by SET FTP DEB OFF). ckcftp.c, 13 Jul 2002. |
| |
| If an FTP transfer was in progress but the FTP connection drops and automatic |
| locus switching is enabled, the locus does not change; thus (for example) a |
| subsequent DELETE command makes Kermit send a REMOTE DELETE packet on stdout. |
| Fixed in lostpeer(): ckcftp.c, 13 Jul 2002. |
| |
| For docs: FTP CD with no arg might not be accepted by the server; e.g. the |
| Kermit FTP server says "501 Invalid number of arguments". |
| |
| The FTP module never handled SET INCOMPLETE. Fixed in doftprecv2(). ckcftp.c, |
| 13 Jul 2002. |
| |
| When FTP DATES is ON, we set an incoming file's date only if the file was |
| received successfully. Changed the code to set the file's date even if it was |
| received only partially (assuming we can get the date from server). ckcftp.c, |
| 13 Jul 2002. |
| |
| Suppose we were doing FTP MGET /UPDATE from a server directory of 100,000 |
| files. Kermit would send a SIZE command for every file unconditionally. On |
| some connections, e.g. to the Red Hat Rawhide server, each one could take up |
| to 30 seconds. That would be 3 million seconds = 34 days. Don't send a SIZE |
| command during the selection phase unless a /SMALLER or /LARGER selector was |
| given. Once the file is selected, send a SIZE command only if one hadn't been |
| sent for that file already. ckcftp.c, 13 Jul 2002. |
| |
| Made [M]GET and [M]PUT /UPDATE switch imply FTP DATES ON, since they didn't |
| work unless it was. ckcftp.c, 13 Jul 2002. |
| |
| Added FTP [M]GET /DATES-DIFFER, which is like /UPDATE except it selects files |
| that are newer or older, rather than only newer. This allows updates from |
| sources where files might be rolled back to earlier versions. It's a bit |
| dangerous if you use it without knowing what it's for, since it allows older |
| files to overwrite newer ones. (Code is also in place for [M]PUT |
| /DATES-DIFFER, and it works, but I commented it out because it's either |
| useless or dangerous since when uploading, you can't set the the file dates |
| when they are arrive on the server.) ckcftp.c, 13 Jul 2002. |
| |
| Changed chkmodtime() to remember if MDTM fails on a particular connection |
| because it's an unknown command (500, 502, or 202), and if so, not to ask |
| again. ckcftp.c, 13 Jul 2002. |
| |
| With this last change, I think it's safe to change the default for FTP DATES |
| from OFF to ON. ckcftp.c, 13 Jul 2002. |
| |
| Increased max number of /EXCEPT: patterns from 8 to 64 for file transfer (not |
| necessarily for other things). This is now a compile-time symbol NSNDEXCEPT. |
| ckcker.h, ckcmai.c, ckclib.c, ckcfns.c, ckcftp.c, ckuus[rx].c. 13 Jul 2002. |
| |
| Fixed FTP MGET to not send SIZE command when there is a name collision and |
| FILE COLLISION is DISCARD, even if /SMALLER or /LARGER were also specified. |
| ckcftp.c, 15 Jul 2002. |
| |
| MGET fails if no files were transferred, even if the reason is that no files |
| met the selection critieria: /COLLISION:DISCARD, /UPDATE, /SMALLER, etc. |
| Changed MGET to succeed in that case. domget(): ckcftp.c, 16 Jul 2002. |
| |
| Big problems with canceling MGET; Ctrl-C cancels the current file, but we |
| don't break out of the file loop, we just go on to the next file. Worse, if |
| we're executing a command file that has a series of MGETs, Ctrl-C doesn't |
| break us out of the command file. Fixed by making failftprecv() and |
| failftprecv2() "chain" to the main SIGINT handler, trap(). This is fine in |
| Unix, but I'd be really surprised if it works in K95 so I put it in #ifndef |
| OS2. Ditto for MPUT: Added the same treatment to failftpsend() and |
| failftpsend2(). Ditto for cmdcancel(). To adapt to K95, search for "TEST ME |
| IN K95" (5 places). ckcftp.c, 16 Jul 2002. |
| |
| Fixed previous fix to account for the fact that failftpblah() can be called |
| not only upon Ctrl-C, but also if transfer interrupted with X or Z. |
| ckcftp.c, 16 Jul 2002. |
| |
| Yesterday's fixes revealed another problem: Interrupt MGET with Ctrl-C, start |
| another MGET, and the file list is total garbage. Diagnosis: secure_getc() |
| and secure_getbyte() use internal static buffer pointers. The only way they |
| ever get reset is when the data connection is closed by the server, so if you |
| interrupt a GET, the pointers are not reset and the next network read (e.g. of |
| an NLST response) returns whatever junk was lying around in the old buffer. |
| ckcftp.c, 17 Jul 2002. |
| |
| FTP MGET temp file is kept only if FTP DEBUG is ON. Changed FTP module to |
| also keep it if the regular debug log is active. ckcftp.c, 17 Jul 2002. |
| |
| Fixed version test in ckermit.ini: should be 6 digits, not 5. 17 Jul 2002. |
| |
| Changed C-Kermit version number to 8.0.205 so scripts can test for the |
| recent changes. ckcmai.c, 18 Jul 2002. |
| |
| ---8.0.205--- |
| |
| SET FILE COLLISION UPDATE would unset FTP DATES due to a typo in the recent |
| changes. ckcftp.c, 21 Jul 2002. |
| |
| FTP [M]GET /DATES-DIFFER really should have been a collision option. Added |
| this option (implemented for FTP only) to both SET FTP COLLISION and the |
| FTP [M]GET /COLLISION: table, so this way if you have lots of [M]GETs, you |
| don't have to put /DATES-DIFFER on each one. ckcker.h, ckcftp.c, 21 Jul 2002. |
| |
| "FTP MGET a* b* c*" would fail to get any c*'s if no b*'s existed. |
| ckcftp.c, 21 Jul 2002. |
| |
| From Jeff, 22 Jul 2002: |
| . Beginnings of Ann Arbor Ambassador terminal emulation for K95; |
| ckuus[57].c, ckuusr.h. |
| . Bump K95 version number to 2.0.2: ckcmai.c |
| |
| Added -DCK_PAM -DCK_SHADOW to all Solaris targets, 2.6 and above. makefile, |
| 23 Jul 2002. |
| |
| Discovered that CK_SCRIPTS path search for TAKE files was #ifdef'd out |
| except for K95. Fixed in ckuusr.c, 25 Jul 2002. |
| |
| From Jeff: changes to support K95 italics: ckuus[57].c, 25 Jul 2002. |
| |
| Fixed path search for TAKE to not search the CK_SCRIPTS path if the filespec |
| contains any directory or path parts. Added a new function to check for |
| this: int hasnopath(filespec) in ckucmd.c: 26 Jul 2002. |
| |
| Update HP-UX build instructions from PeterE: makefile, 26 Jul 2002. |
| |
| Commented out "const" from struct pam_message declarations because it |
| causes "initialization type mismatch" warnings. ckufio.c, 26 Jul 2002. |
| |
| Suppose you have a network directory containing a listing for host "foo": |
| |
| foo tcp/ip foo.bar.com |
| |
| Then in K95 you give a command "set host /network-type:ssh foo". This |
| results in the directory lookup replacing the "ssh" network type with TCP/IP, |
| and making a Telnet connection. Fix attempted at about line 8625 of ckuus7.c |
| in cx_net(); needs testing in K95. 26 Jul 2002. |
| |
| FTP Password: prompt in Unix was not allowing editing. The code looked right; |
| I put in some debugging and suddenly it worked. Took out the debugging and |
| it still worked. Maybe I dreamed it. Anyway, I fixed the "FTP SENT" debug |
| log entry to not record the password, and removed a redundant section above |
| to log the same thing, but prior to any charset conversion. ckcftp.c, |
| 27 Jul 2002. |
| |
| From Jeff, 28 Jul 2002: |
| . Fix typo in initxlist(): ckcmai.c. |
| . Fix typo in Friday's set-host fix: ckuus7.c. |
| . Move parsing of --height/width command-line args after prescan(): ckuusy.c. |
| |
| Added invisible top-level SITE and PASSIVE commands for FTP as a convenience |
| for habituated FTP client users. ckuusr.[ch], ckcftp.c, 28 Jul 2002. |
| |
| A while back a user asked if it was possible to MGET a bunch of files from |
| an FTP server and have them all appended to each other upon arrival. The |
| obvious way to do this would have been: |
| |
| mget /collision:append /as-name:bigfile *.* |
| |
| But to make this work, I had to get rid of the "as-name must contain |
| variables" check in the MGET parser. doftpget(): ckcftp.c, 28 Jul 2002. |
| |
| Verified that it was possible to do the same thing (GET a bunch of files |
| and append them all into one result file) with Kermit protocol. It works |
| fine but in this case there is no /COLLISION switch; you have to SET FILE |
| COLLISION APPEND first. 30 Jul 2002. |
| |
| Changed COPY /APPEND to allow wild source to single destination file, e.g. |
| "copy /append *.* bigfile". ckuus6.c, 30 Jul 2002. |
| |
| From Mark Berryman: a replacement for zchkpath(), the VMS routine that checks |
| whether a file is in the current directory; the old one (that I wrote) was |
| a hack that only worked sometimes. Martin Vorlaender verified Mark's code in |
| the situation where mine was breaking (server running in captive account). |
| ckvfio.c, 30 Jul 2002. |
| |
| PeterE reported a problem with SWITCH case labels that start with '#': |
| The problem is that the SWITCH variable contents in this case happens to be |
| a comment, e.g.: |
| |
| CMD(M)[_forward # Stand: 24.07.2002<CR>] |
| |
| so the GOTO target is null. The solution would be for SWITCH to put the GOTO |
| (_FORWARD) target in quotes. But GOTO does not strip quotes or braces from |
| around its target. Fixed in ckuusr.c, 30 Jul 2002. |
| |
| Fixed the SWITCH macro definition to put the _FORWARD target in quotes. |
| ckuus5.c, 30 Jul 2002. |
| |
| PeterE also reported that an empty SWITCH case label did not work. There's no |
| particular reason why it should, but after a brief look, it wasn't that hard |
| so I did it. It required commenting out the check for empty labels and fixing |
| the comparison in dogoto(). Now it's possible to read lines from a file and |
| use each line as a SWITCH variable, with patterns as case labels, including an |
| empty label to match empty lines, #* labels to match comment lines, etc. |
| ckuus[r6].c, 30 Jul 2002. |
| |
| PeterE also reported the value of \%* acquiring a trailing blank when |
| referenced inside a SWITCH statment. This happens because \%* is formed using |
| \fjoin() on the \&_[] array based on its dimension, and at some point the |
| dimension is spuriously increased by one. As a workaround, I made \fjoin() |
| ignore trailing empty \&_[] array elements and oddly enough this also fixed |
| the growing dimensions problem. The many script torture tests reveal no ill |
| effects, so it seems like a keeper. ckuus4.c, 30 Jul 2002. |
| |
| Some of Peter's sample scripts made C-Kermit 8.0.201 dump core, but no more. |
| |
| Fixed "delete xxx" to print an error message and fail if if xxx does not exist. |
| Ditto for when xxx is a directory. ckuus6.c, 30 Jul 2002. |
| |
| Patches to SSL modules from Jeff based on yesterday's advisory. ck_ssl.[ch], |
| 31 Jul 2002. |
| |
| Fixed some typos affecting the filename collision action during command-line |
| FTP [M]GET. ckcftp.c, 31 Jul 2002. |
| |
| Fixed SHOW FTP to handle FTP COLLISION DATES-DIFFER. ckcftp.c, 31 Jul 2002. |
| |
| A while back someone pointed out that SET CONTROL UNPREFIX ALL and SET |
| PREFIXING NONE gave different results. Fixed them to use the same code. |
| Also made "set prefixing none" visible. ckuus3.c, 4 Aug 2002. |
| |
| Added SET CD HOME <path>, to let the user specify which directory is intended |
| when "CD" or "KCD" is given by itself. This is because in Windows, some |
| applications set up their own HOME environment variable that isn't necessarily |
| where the user wants "cd" to go, but redefining HOME can interfere with the |
| application (example: Windows EMACS). SET CD HOME was done by adding a myhome |
| variable, initially a NULL pointer, and then changing homepath() to use it if |
| it is set. zhome() is not affected. Also the homepath() prototype had been |
| missing from header files. ckcmai.c, ckuusr.h, ckuus[2345].c, 4 Aug 2002. |
| |
| PeterE got another core dump with his SWITCH statement. Found a place where |
| an out-of-bounds array reference could occur if the switch variable was |
| empty. ckuus6.c, 5 Aug 2002. |
| |
| PeterE noticed that if the switch variable contained a comma, spurious matches |
| could occur with the label pattern. The real problem turns out to be what |
| happens when the SWITCH variable doesn't match any of the case labels and |
| there is no DEFAULT label. Fixed by having dogoto() in the SWITCH (_FORWARD) |
| case pop the command stack before returning failure, i.e. by moving the |
| "if (stopflg) return(0);" statement down a few lines. ckuus6.c, 5 Aug 2002. |
| |
| PeterE noticed that a SWITCH case label of :* did not match an empty SWITCH |
| variable. Fixed in doswitch(): ckuus6.c, 6 Aug 2002. |
| |
| In testing the previous fix, I found it only worked sometimes. Inspection |
| of the debug log showed that a statement like: |
| |
| if (y == -3) s = "{}"; |
| |
| was assigning "{" rather than "{}" to s. Replacing the string constant by a |
| buffer containing the same string fixed it. The reason (guessed correctly by |
| PeterE) was the following sequence: |
| |
| y = cmfld("Variable name","",&s,xxstring); |
| if (y == -3) s = "{}"; |
| len = ckstrncpy(tmpbuf,brstrip(s),TMPBUFSIZ); |
| |
| brstrip() (by design and as documented) affects the string in place. But in |
| this case the string is a constant, not data in a buffer, so all further uses |
| of "{}" get the wrong string (at least in optimized builds). The only real |
| cure is to change brstrip() to make a copy of its argument if it has to do |
| anything to it. This will slow down some scripts, but it's too risky to |
| leave it as it was. ckclib.c, 6 Aug 2002. |
| |
| The previous change required an audit of the C-Kermit code to make sure that |
| no references to brstrip() depended the result buffer being persistent, or the |
| result pointer indicating a position in the source buffer. Oops, it turns out |
| that thousands of places rely on brstrip() working in place. Therefore the |
| change had to be undone. There's no good way to write a dummy-proof brstrip(); |
| programmers either have be sure they're not calling it with a pointer to a |
| string constant, or else they have to copy the result back to the right place |
| each time. Better to leave it as it was and audit the code to fix any calls |
| that refer to string constants (turns out there were only two). Restored the |
| original fix to doswitch() (replacing the string constant by a buffer holding |
| the same string), plus minor fixes to ckcftp.c, ckuus[r36].c, 6 Aug 2002. |
| |
| We need file dialogs in several situations in the K95 GUI. I added a "user |
| query" routine for this, uq_file(), in ckuus3.c, filling it in only for Unix. |
| Then I added code to call it from rcvfil() when (a) it's an autodownload, and |
| (b) SET TERM AUTODOWNLOAD is ASK (I just added this option; it needs to be set |
| to see it in action -- maybe it should be the default for KUI, in which case |
| initialize "int autodl = ?" to TAD_ASK in ckcmai.c). Works fine, except of |
| course it interferes with the file-transfer display, but that won't be a |
| problem in K95G. ckuusr.h, ckuus[37].c, ckcfns.c, ckucns.c, 6 Aug 2002. |
| |
| Another place we need a file dialog is when Kermit is a URL interpreter. The |
| problem is: how can we let the user decide whether Kermit should ask? There |
| really isn't any way. Either it always asks or it never does. In this case I |
| think it makes sense to always ask if it's KUI, otherwise never. I added the |
| code for ftp: URLs to to doftprecv2(), which I tested successfully in Unix |
| before putting it into #ifdef KUI..#endif. Also added code for http[s] to |
| ckuusy.c in #ifdef KUI..#endif, not tested. |
| |
| Still need this added for K95G Actions->Capture. The clearest example is the |
| FTP one. Just search for KUI in the FTP module. |
| |
| Some minor adjustments to yesterday's work, mainly just comments, plus |
| generate the full pathname for the default file. ckuus3.c, ckcftp.c, |
| 7 Aug 2002. |
| |
| Note: for some reason cmofi() is not supplying the default value if user |
| enters an empty name... (but that won't affect the Windows version). |
| |
| Added /USER: and /PASSWORD: switches to SET TCP { HTTP-PROXY, SOCKS-SERVER }. |
| ckuus3.c, 7 Aug 2002. |
| |
| New 'uninstall' target from PeterE, works by having the 'install' target |
| write an UNINSTALL shell script. makefile, 8 Aug 2002. |
| |
| Added some debugging statements to the VMS communications i/o module to try |
| to track down a problem that occurs when the controlling terminal is a LAT |
| device. ckvtio.c, 10 Aug 2002. |
| |
| Fixed the non-K95 uq_file() to respect the given default name, but still show |
| the fully qualified absolute pathname for the default in the dialog. The |
| reason to not use the fully qualifed name as the default in the cmxxx() calls |
| is that this can easily result in a whole directory tree being created due to |
| directory aliases, symlinks, etc. So when you get a file by referring to its |
| URL (e.g. ftp://kermit.columbia.edu/kermit/READ.ME), uq_file() converts the |
| READ.ME part to (e.g.) /home/fdc/tmp/READ.ME but gives just "READ.ME" as the |
| default when parsing the name. This way the user knows where it will go and |
| gets an opportunity to change it, and if the default is accepted, it goes into |
| the current directory. uq_file(): ckuus3.c, 10 Aug 2002. |
| |
| Found the spot for calling uq_file() for kermit:// URL downloads. Added |
| prefatory text to filename prompts for Kermit and FTP downloads. ckcfns.c, |
| ckcftp.c, 10 Aug 2002. |
| |
| Now with kermit:// or ftp:// URL downloads there's no way to disable the |
| prompting. I could easily make SET TERMINAL AUTODOWNLOAD ASK cover these |
| cases too (even though "terminal" has nothing to do with FTP or URL |
| downloads). OK, I did this, but now prompting is disabled by default. |
| ckcftp.c, ckcfns.c. 10 Aug 2002. |
| |
| Enabled file prompting (adl_ask) by default in K95G, disabled it by default |
| everywhere else. So now FTP and Kermit URL downloads as well as terminal-mode |
| Kermit (but not Zmodem) downloads are prompted for if TERMINAL AUTODOWNLOAD is |
| ASK, which is it by default only in K95G. But this will happen only if |
| uq_file() is filled in for K95G; otherwise everything should work as before. |
| ckcmai.c, 10 Aug 2002. |
| |
| Notes: |
| . Need a better command to control this. |
| . FTP URL downloads are almost instantaneous, whereas Kermit URL downloads |
| take a really long time to set up (logging in takes at least 10 seconds). |
| |
| From Jeff, 13 Aug 2002: |
| . Increase K95 version to 2.1.0: ckcmai.c. |
| . SET TCP { HTTP-PROXY, SOCKS-SERVER } /USER: /PASSWORD: actions: ckuus3.c. |
| |
| From PeterE: a new install target that's only about half as a big as the |
| previous one, yet still generates an UNINSTALL script. makefile, 13 Aug 2002. |
| |
| Vace wanted to be able to give the FTP client an offset for the server time, |
| in case the server's time (or timezone) is set incorrectly. I added this by |
| building on all the date/time parsing/arithmetic code -- notably delta times |
| -- that was done for C-Kermit 8.0. The new command is SET FTP |
| SERVER-TIME-OFFSET delta-time; shows up in SHOW FTP and HELP SET FTP. |
| ckcftp.c, 13 Aug 2002. |
| |
| Fixed HELP ASK and HELP GETOK text. ckuus2.c, 14 Aug 2002. |
| |
| Fixed GETOK to accept /GUI switch even in K95.EXE and C-Kermit, just like ASK |
| does (in which case, it just ignores it). ckuus6.c, 14 Aug 2002. |
| |
| SET XFER CHAR TRANSPARENT no longer disables character-set translation because |
| file-scanning turns it back on. The "new way" to disable character-set |
| translation is SET XFER TRANSLATION OFF. This needlessly confuses users who |
| expect the old way to still work. So I fixed SET XFER CHAR TRANSPARENT to set |
| XFER TRANSLATION OFF, and SET XFER CHAR anything-else to set it back ON. |
| ckuus3.c, 15 Aug 2002. |
| |
| Fixed SET TERM AUTODOWNLOAD { ON, OFF } to turn off the ASK flag (adl_ask). |
| ckuus7.c, 16 Aug 2002. |
| |
| Added FEAT query to FTP client from draft-ietf-ftpext-mlst-13.txt. FEAT is |
| sent along with REST 0, MODE S, and STRU F if /NOINIT is not included in the |
| FTP OPEN command. Parsing the FEAT result is handled by turning the "auth" |
| argument to getreply() into a function code: GRF_AUTH to parse AUTH reply; |
| GRF_FEAT to parse FEAT reply. For GRF_FEAT, getreply() fills in a flag array, |
| sfttab[] (server feature table); sfttab[0] > 0 means server responded to the |
| FEAT query, in which case individual elements are set > 0 for each supported |
| feature. ckcftp.c, 18 Aug 2002. |
| |
| If server sends a feature list, display it if FTP DEBUG is on, then set mdtmok |
| and sizeok (the flags that say whether it's OK to send MDTM and SIZE commands) |
| accordingly. If user gives an [M]PUT /RECOVER command and server has |
| announced it doesn't support REST, print a warning but try anyway (maybe |
| change this later). Responses about other features that we use such as AUTH |
| and PBSZ are ignored for now -- i.e. we try them anyway. And of course |
| responses for features we don't care about (LANG, TVFS, PROT) are ignored. |
| ckcftp.c, 18 Aug 2002. |
| |
| If the server says it supports MLST, use MLSD instead of NLST to get the file |
| list. This is done in remote_files() with some simple string-twiddling. Then |
| replace the relevant (but not all) SIZE commands with code to first check if |
| we already got the size from the MLSD response and use that instead rather |
| than asking again. Same deal for MDTM. ckcftp.c, 18 Aug 2002. |
| |
| Checked that this works when giving pathnames in the MGET filespec. Checked |
| to make sure everything works as before with servers that don't support FEAT |
| or MLSD. Checked to make sure FTP OPEN blah /NOINIT worked with servers that |
| do support FEAT and MLSD. Checked that FTP CHECK works. It's all OK. |
| |
| Tested only with Ipswitch server; need to find and test with others. |
| |
| The stack of temp files needed for MGET /RECURSIVE is annoying because what |
| if we run out of file descriptors... But the spec doesn't provide a way to |
| request a recursive listing. |
| |
| Supplied a missing comma in HELP SET CD text. ckuus2.c, 19 Aug 2002. |
| |
| Generalized parsing of MLST/MLSD file facts and values. Got file type from |
| server and had MGET skip non-regular files. ckcftp.c, 19 Aug 2002. |
| |
| Kirk Turner-Rustin <ktrustin@owu.edu> reported that if Unix C-Kermit has a SET |
| HOST PTY connection (e.g. SSH) open, local window size changes are not |
| propogated through the connection to the host. I imagine that must be because |
| the SIGWINCH signal is caught by Kermit and its children don't see it; maybe |
| if I pass it along to the child fork, all will be OK. Began by exporting |
| "slavepid" from the pty module and changing its name to pty_fork_pid. Moved |
| the SIGWINCH handler, winchh(), from ckctel.c to ckutio.c. Armed it from Unix |
| sysinit() so it's always armed. This way window changes affect Unix C-Kermit |
| no matter what mode it's in: tt_rows, tt_cols, cmd_rows, and cmd_cols are all |
| kept in sync. Then if we're not in remote mode (i.e. we have a ttyfd), we |
| call tn_snaws() and rlog_snaws() (which should be ok since they return right |
| away if the appropriate kind of connection is not open) and then if |
| (pty_fork_pid > -1), a SIGWINCH signal is sent to it. ckupty.c, ckctel.c, |
| ckutio.c, 20 Aug 2002. |
| |
| All this works fine except the PTY part; in other words, the original problem |
| is not fixed. The "kill(pty_fork_pid,SIGWINCH)" call executes without error |
| but has no effect because the size of the PTY never changed. To make this |
| work I had to add an ioctl() to change the size of the PTY before sending it |
| the SIGWINCH. Compiles and works ok on Linux and Solaris; Kirk also confirmed |
| it for AIX 4.3.3. ckutio.c, 20 Aug 2002. |
| |
| Fixed xlookup() to work for uppercase keywords. ckucmd.c, 20 Aug 2002. |
| |
| Fixed FTP parsefeat() and parsefacts() to use xlookup() instead of lookup(), |
| since abbreviated keywords are not allowed. ckcftp.c, 20 Aug 2002. |
| |
| Adjusted some lines from yesterday's window-size code for platforms I hadn't |
| tried yet. ckutio.c, 21 Aug 2002. |
| |
| EXIT from K95 when it has an FTP connection open and it pops up the |
| Locus dialog. Made it not do this if it knows it's in the act of EXITing. |
| ckuus[rx].c, 22 Aug 2002. |
| |
| In K95, FTP GET in ASCII mode results in a file with Unix line terminators |
| even though the protocol is correct: |
| |
| RETR smjulie.txt |
| 150 Opening ASCII mode data connection for smjulie.txt (1878 bytes). |
| |
| The source file is a regular Unix text file with LF at the end of each line. |
| It's incredible that nobody noticed this before. It only came to light when |
| somebody tried to open a downloaded text file with Notepad, which doesn't |
| handle Unix-format files (Wordpad and Emacs have no problems with them). The |
| problem was in doftprecv2() in the FTT_ASC section. There was no conditional |
| code for Unix vs Windows. In all cases, the code discarded incoming CR's in |
| ASCII mode. I put the CR-discarding code in #ifdef UNIX..#endif. ckcftp.c, |
| 22 Aug 2002. |
| |
| Removed super-verbose debugging from gtword(): ckucmd.c, 23 Aug 2002. |
| |
| Gregory Bond reported a problem with "if defined \$(BLAH) ..." inside of a |
| SWITCH statement. It wasn't really the SWITCH that was doing it, it was the |
| fact that he had enclosed the SWITCH case in braces, which made it an |
| "immediate macro" (XXMACRO). The XXMACRO code parsed the macro definition |
| (the part inside the braces) with cmtxt(...,xxstring), which should have been |
| cmtxt(...,NULL) to defer the evaluation of the interior of the macro until it |
| was executed. This is better illustrated with the following example: |
| |
| { echo START, for \%i 1 3 1 { echo \%i }, echo STOP } |
| |
| which totally fell on its face prior to the fix. Also fixed ?-help for |
| immediate macros, which was broken too. ckuusr.c, 23 Aug 2002. |
| |
| RFC959 says STOU does not take an argument. But every FTP server I've |
| encountered but one accepts the arg and constructs the unique name from it, |
| which is better than making up a totally random name for the file, which is |
| what RFC959 calls for. Especially because there is no way for the client to |
| find out the name chosen by the server (because RFC 959 and 1123 are |
| contradictory, plus no servers follow either one of them for this anyway). So |
| we try STOU with the argument first, which works with most servers, and if it |
| fails, we retry it without the arg, for the benefit of the one picky server |
| that is not "liberal in what it accepts" UNLESS the first STOU got a 502 code |
| ("not implemented") which means STOU is not accepted, period (which happens |
| with ProFTPD). ckcftp.c, 25 Aug 2002. |
| |
| Added SET FTP ANONYMOUS-PASSWORD (plus help text and show value). ckcftp.c, |
| 25 Aug 2002. |
| |
| Made FTP command "not available" if NOFTP is defined. ckuusr.c, 25 Aug 2002. |
| |
| Forced client to send a TYPE command upon initial connection, since given |
| the variable quality of FTP servers, it's not safe to assume the server is |
| in ASCII or any other particular mode. ckcftp.c, 25 Aug 2002. |
| |
| SET FTP CHARACTER-SET-TRANSLATION ON is completely broken in K95, although it |
| works fine in C-Kermit. Furthermore it is broken in both the GUI and Console |
| versions, so it's not a Unicode vs OEM console-character-set issue. |
| |
| Added Concurrent PowerMAX OS target from Tom Horsley. makefile, ckuver.h, |
| 27 Aug 2002. |
| |
| Minor fixes to FTP module from Jeff. ckcftp.c, 27 Aug 2002. |
| |
| New Makefile target for Mac OS X 10.2, needs -DNDSYSERRLIST added, from |
| William Bader. 2 Sep 2002. |
| |
| SET OPT DIR /DOTFILES didn't work for server listings. A few years ago when |
| I front-ended zxpand() with nzxpand(), I missed a couple places where |
| traverse() needed to refer to xmatchdot (nzxpand's argument flag) rather than |
| global matchdot. Fixed in traverse(): ckufio.c, 2 Sep 2002. |
| |
| From Jeff, 4 Sep 2002: |
| . setautodl(x) -> setautodl(x,y): ckuusr.h, ckuus[7y].c |
| . Add another parameter to popup_readblah(): ckuus6.c |
| . Sort out some confusion in scanfile() where a parameter was also used as a |
| local flag. ckuusx.c. |
| . Protect restoring of saved terminal idle parameters with a flag that says |
| they were actually saved. ckuusr.c. |
| . Rework uq_text() and uq_mtxt(). ckuus3.c. |
| . Fix FTP charset translation for little-endian hardware: ckcftp.c. |
| |
| The latter still doesn't work in Linux: |
| |
| (/home/fdc/kermit/) C-Kermit>set ftp server-character-set latin1-iso |
| (/home/fdc/kermit/) C-Kermit>set file character-set utf8 |
| (/home/fdc/kermit/) C-Kermit>get latin1.txt |
| |
| Results in "????????: file not found". But it works fine on the Sun. |
| |
| Jeff's patch removed a little-endian byte-swap (LEBS) from doftpsend2(). But |
| the real problem was that LEBS was not being done consistently throughout the |
| module. There were similar xgnbyte()/xpnbyte() loops elsewhere in the code, |
| and all of them needed to work the same way. Undoing Jeff's fix and then |
| adding the LEBS to the loop in getreply() makes downloads work right, but the |
| messages are still messed up (they come out in Chinese :-) Begin by moving all |
| byte-swapping operations that occur in ckcftp.c itself into a new function, |
| bytswap(). It's either right to do it all the time, or to do it never; this |
| way we can turn it on and off in one place. |
| |
| xp/gnbyte() include behavior that depends on what Kermit is doing: W_SEND, |
| etc. xpnbyte() tests W_KERMIT, which is a combination of W_SEND, W_RECV, etc. |
| Defined a new symbol W_XFER, which is like W_KERMIT but includes W_FTP. These |
| are all the "whats" in which character sets might need to be converted. |
| Changed the W_KERMIT reference in xpnbyte() to W_XFER. Fixed the inderminate |
| "what" state after an FTP command by moving "what = W_COMMAND;" from before |
| the main parse loop to inside it (this didn't matter before the addition of |
| FTP but now it does). ckcker.h, ckcftp.c, ckuus5.c, 6 Sep 2002. |
| |
| Finally I changed xlatec() to be consistent with all the other xgnbyte() / |
| xpnbyte() usage throughout the FTP module and, poof, everything worked in |
| Linux (and still works on the Sun). We still need some work in Windows (where |
| the file character-set is not necessarily the console character set for |
| messages) but we can tackle that next. ckcftp.c, 6 Sep 2002. |
| |
| Checking yesterday's work: |
| |
| Kermit file transfers with charset translation work fine in both directions. |
| |
| FTP GET with charset translation works fine on both BE and LE |
| |
| Fixed a typo in yesterday's changes that made FTP PUT with charset translation |
| always upload 0-length files. ckcftp.c, 7 Sep 2002. |
| |
| FTP PUT (after the typo was fixed) with charset translation works fine on BE, |
| but on LE the message comes out in Chinese and the resulting file gets ? or |
| nothing for all for the accented letters: |
| |
| FTP... Kermit |
| Up Dn Up Dn Term |
| BE OK OK OK OK xx |
| LE no OK OK OK xx |
| |
| xx = C-Kermit CONNECT mode with translation doesn't seem to do anything, not |
| only in today's code, but also in the 8.0 release version: "set term char |
| latin1 utf8" -- SHOW CHAR shows the right stuff, but no translation is done. |
| Ditto for the 7.0 release. That can't be right... |
| |
| But one problem at a time -- what's wrong with LE FTP uploads? Note that |
| XLATE works on the same machine, so it's obviously confusion in xgnbyte() |
| about "what". Suppose we make xgnbyte() ALWAYS return bytes in BE order. |
| This makes sense because xgnbyte() is almost always used to feed xpnbyte(), |
| and xpnbyte() requires its bytes to come in BE order. This means that all |
| code that uses xgnbyte()/xpnbyte() loops can be simplifed, which I did for |
| the FTP module. ckcfns.c, ckcftp.c, 7 Sep 2002. |
| |
| Of course Kermit protocol uses xgnbyte() too, but only for filling |
| packets, and packets never contain UCS2 and even if they did, it would have |
| to be big-endian, so no changes needed for getpkt(). Now we have: |
| |
| FTP... Kermit |
| Up Dn Up Dn |
| BE OK OK OK OK |
| LE OK OK OK OK |
| |
| Now let's look at the remaining xgnbyte() calls in the rest of the code: |
| |
| ckuus4.c: |
| xlate() uses it of course. I simplified the general-case loop. |
| Works OK on both Sun and Linux. |
| |
| ckuus6.c: |
| typegetline() uses it. I commented out the byte swap. Seems OK. |
| |
| Built and tested on Linux, Solaris, and SunOS. I'm sure I must have broken |
| something, but the main things are better than they were. Kermit and FTP |
| transfers need testing in K95, as well as the TYPE command (there's a bunch of |
| special K95 code in there). C-Kermit charset translation during CONNECT is |
| still broken, or else I forgot how to use it, but that's a separate issue |
| since xgnbyte()/xpnbyte() are not involved. And we still need to do something |
| in FTP getreply() for K95 to convert messages to the console character set for |
| display, rather than the file character set (should be trivial). Also there's |
| still a lot of extra debugging and commented-out junk in ckcftp.c to be |
| cleaned up after more testing. |
| |
| During yesterday's testing, I noticed that REMOTE SET { FILE, XFER } |
| CHARACTER-SET didn't work. The server accepted these commands but they didn't |
| seem to do anything. In fact, they did work, but they were undone later by |
| code in sfile() that restored the global settings in case they had been |
| temporarily overridden by autoswitching or whatever. The solution is to |
| "unsave" the saved values whenever a global setting is performed explicitly. |
| Tested successfully against Sun and Linux servers. Also the server end of |
| REMOTE SET needed updating for Unicode. ckcfn[s3].c, ckuus3.c, 8 Sep 2002. |
| |
| Cleaned commented-out cruft and extra debugging from ckcftp.c. 8 Sep 2002. |
| |
| Kermit autodownload with ASK file dialog: if user supplied an absolute |
| pathname, it was treated like a relative one. Fixed the invocation of |
| uq_file() in rcvfil() to temporarily override the RECEIVE PATHNAMES setting. |
| ckcfns.c, 10 Sep 2002. |
| |
| Added SET TERMINAL ROLL KEYSTROKES { SEND, RESTORE-AND-SEND, IGNORE }, parse |
| only. Needs implementation (search for tt_rkeys and rollkeytab in ckuus7.c). |
| ckuusr.h, ckuus[27].c, 10 Sep 2002. |
| |
| If FILE INCOMPLETE is DISCARD and a file is being received by IKSD but IKSD |
| gets a Telnet LOGOUT command, the partial file is not deleted. In fact this |
| happens any time doexit() is called for any reason during file reception, |
| e.g. because of SIGHUP. Added code to doclean() to check if a download |
| output file was open, and if so, to delete it after closing it if keep==0. |
| ckuusx.c, 10 Sep 2002. |
| |
| Added a brief one-line message after remote-mode file transfer saying |
| what (or how many) file(s) were transferred, where they went, and whether |
| the transfer was successful -- kind of an automatic WHERE command, useful |
| with autodownloads so you know what happened. ckcpro.w, 11 Sep 2002. |
| |
| The Unix and VMS C-Kermit CONNECT modules have botched remote-charset to |
| local-UTF8 translation ever since the Unicode was first added in v7.0. Fixed |
| in ckucns.c, ckucon.c, ckvcon.c, 11 Sep 2002. |
| |
| On to pattern-matching... The matchdot business should apply only for (Unix) |
| filename matching, not for general string matching. Fixed in ckmatch(): |
| ckclib.c, 11 Sep 2002. |
| |
| A bigger problem occurs in filename matching. Somehow the dirsep == fence |
| business interferes with matching {foo,bar,baz} segments. For example, I have |
| a filename "foo" and I want to match it with the pattern "{foo,bar}". Somehow |
| the segment pattern becomes "*/foo" and doesn't match the string. Where does |
| the '/' get tacked on? I don't even know how to explain this, but the short |
| story was that ckmatch(), under certain circumstances, would back up to before |
| the beginning of the filename string, which just happened to contain a "/" |
| (and before that a ".") because of who was calling it. Obviously this is not |
| how to write a pattern matching function... Ensuring that it never backs up |
| beyond the beginning of a string fixed the immediate problem and does not seem |
| to have broken any other matching scenarios (I have 150 of them in my test |
| script). ckclib.c, 11 Sep 2002. |
| |
| There's still a problem though. Suppose the a client sends "dir {{.*,*}}" to |
| a server. This asks for a directory listing of all files that begin with |
| dot as well as all files. Still doesn't work because we don't normally show |
| dot-files, but in this case it SHOULD work because ".*" was explicitly |
| requested. Staring at the ckmatch() code revealed how to fix this, and I did, |
| but that was only half the problem. The other half was that the list of |
| files being fed to ckmatch() did not include the dotfiles in the first place. |
| The cure here is to change nzxpand() to prescan the pattern to see if it |
| includes a leading dot, and if so to set the "xmatchdot" flag itself, even |
| if it wasn't set by the caller. ckclib.c, ckufio.c, 11 Sep 2002. |
| |
| Now that {foo,bar,...} patterns work better, I added a quick hack to the |
| DIRECTORY command to allow multiple filespecs to be given, in which case we |
| combine them into a {file1,file2,...} pattern before calling nzxpand(). Works |
| fine but it's a hack because you don't get file lists upon "?" in the second |
| and subsequent filespec fields, but I doubt anyone will notice. So now, |
| finally, people can do "dir .* *" like they do in Unix (except with ls) to get |
| a listing of all files in a directory without having to know about or use the |
| /DOTFILES switch. This was NOT done for the server end of RDIR because of |
| ambiguity of spaces as separators versus filename characters.) domydir(): |
| ckuus6.c, ckuus[r2].c, 11 Sep 2002. |
| |
| Added a CONTINUE command. In a script, this does whatever CONTINUE did before |
| (e.g. in a FOR or WHILE loop). At the prompt, it calls popclvl(), which gives |
| a more natural way to continue a script that has "shelled out" to the prompt. |
| ckuusr.[ch], 11 Sep 2002. |
| |
| Added help text for CONTINUE. ckuus2.c, 12 Sep 2002. |
| |
| From Jeff, 16 Sep 2002: |
| . SET TERM ROLL KEYSTROKES for K95: ckuusr.h, ckuus7.c |
| . Remove the doexit() call from the Telnet TELOPT_LOGOUT handler: ckctel.c |
| |
| Fixed an FTP debug message to be consistent with Kermit ones. |
| ckcftp.c, 16 Sep 2002. |
| |
| Added SET/SHOW TRANSFER REPORT to turn the post-transfer report off and on. |
| ckuusr.h, ckuus[234].c, 16 Sep 2002. |
| |
| Fixed Solaris (and maybe some other SVORPOSIX builds) to find out their full |
| hostname rather than just short form (e.g. watsol.cc.columbia.edu rather than |
| just watsol). ckhost(): ckuusx.c, 16 Sep 2002. |
| |
| "cat somefile | kermit -Ts -" is supposed to send stdin in text mode, but |
| K95's file transfer display reports BINARY. Looked at C-Kermit code; it seems |
| fine. Looked at packet and debug logs; C-Kermit was indeed sending in text |
| mode and announcing it correctly. K95 gattr() is doing the right thing: |
| |
| gattr file type[AMJ]=3 |
| gattr attribute A=text=0 |
| gattr sets tcharset TC_TRANSP[A] |
| |
| Same thing happens when C-Kermit is receiving. Yet when I send an actual |
| file, rather than stdin, it's received in text mode. The only difference is |
| that stdin does not have a Length attribute in its A-packet, so in this case |
| the receiver skips any calls to screen() that show the length or percent done. |
| Aha, so maybe it's just a display problem -- scrft() is not being called to |
| repaint the file type if the size was not known. Fixed in opena() by |
| removing the IF clause from "if (fsize > -1L) xxscreen(SCR_FS,0,fsize,"");". |
| ckcfn3.c, 18 Sep 2002. |
| |
| K95 user has a listfile containing some regular filenames and then some |
| filenames that include paths and has all kinds of problems with MGET /LISTFILE |
| (pieces of different names concatenated to each other, etc). Setting up the |
| same scenario here, I don't see the same problems but I do see "Refused: Name" |
| when we go to get a path/name file. This happens because (a) we had already |
| got a top-level file with a certain name, (b) a file in a subdirectory has the |
| same name, (c) we are stripping the path before calling zchki(), and (d) |
| FTP COLLISION is set to DISCARD. How do we make FTP not strip the path? |
| |
| This is an interesting question... The answer depends on where the user |
| wants the file to go. Normally if you tell an FTP client to "get foo/bar", |
| you want the file "bar" to be downloaded to the current directory. |
| |
| Anyway, it turns out the FTP module uses paths locally during MGET only if |
| /RECURSIVE was specified. So: |
| |
| mget /listfile:blah /recursive |
| |
| should have made this work, but it didn't because in the /LISTFILE case, |
| we have effectively turned an MGET into a series of GETs, where the code to |
| check whether to strip the path didn't check the recursive flag because how |
| could a GET (as opposed to an MGET) be recursive? Adding this exception to |
| the if-condition got us a bit farther but now when we try to open the output |
| file in doftprecv2(), zopeno() fails because the name contains a dirsep. |
| We have to call zmkdir() first but that wasn't happening because some other |
| flag wasn't set right in this case. Finally zmkdir was called, but with |
| the wrong string. After fixing that, it works. Now we should be able |
| to use /RECURSIVE to force the pathname to be used on the local end. |
| ckcftp.c, 19 Sep 2002. |
| |
| Checked FTP filename conversion issues. FTP FILENAMES AUTO is supposed to |
| mean LITERAL if "wearealike" OR server is UNIX or Windows, otherwise |
| CONVERTED, but there were places where this rule was not applied consistently, |
| fixed now. ckcftp.c, 21 Sep 2002. |
| |
| Added SET FTP DISPLAY, which is like SET TRANSFER DISPLAY but applies only to |
| FTP, mainly because I tended to type it all the time. Now if you have dual |
| sessions, each session can have its own transfer display style. ckcftp.c, |
| ckuusr.h, ckuus[347].c, 21 Sep 2002. |
| |
| Back to FTP MLSD. We're supposed to match the pattern locally, not rely on |
| the server to filter its list according to the client's pattern. Thus we must |
| also allow an empty argument to MGET and must not send a filespec with MLSD. |
| Actually this is tricky -- how is the client supposed to know whether to send |
| a filespec. For example, if the user's command is "mget foo*bar", and the |
| server supports MLSD, then what should the client do? The client does not |
| know the wildcard syntax on the server, so for all the client knows, this |
| might be a valid directory name, in which case it should be sent. On the |
| other hand, the user might intend it as a wildcard, in which case it should |
| NOT be sent. But the FTP client can't read the user's mind. This is another |
| serious flaw in the Elz/Hethmon draft. Anyway, I got the local matching |
| business working for MLSD as long as the user's MGET arg is really a pattern |
| and not a directory name. To be continued... ckcftp.c, 21 Sep 2002. |
| |
| Added FTP { ENABLE, DISABLE } { FEAT, MLST }. If we always send FEAT, we |
| usually get a complaint. If we send FEAT and MLST is negotiated, there is a |
| good chance it is misimplemented or will have undesirable side effects, such |
| as sending huge file lists. NOTE: /NOINIT on the FTP OPEN command also |
| disables both of these. ckcftp.c, 22 Sep 2002. |
| |
| Fixed mkstemp() code in FTP remote_files(). mktemp() does not open the file, |
| mkstemp() does open it; previously we had been opening it again and never |
| closing the first instance so every MGET would create another open file |
| descriptor. ckcftp.c, 22 Sep 2002. |
| |
| Added debug messages for temp-file creation and lines read from the temp file. |
| ckcftp.c, 22 Sep 2002. |
| |
| Eliminated sending of some extraneous TYPE commands, but there's still room |
| for improvement. ckcftp.c, 22 Sep 2002. |
| |
| Moved definition of build date to top of ckcmai.c. 22 Sep 2002. |
| |
| Added recursion to MGET with MLSD... It's all done in remote_files(). |
| Temp-file pointers are on a stack (max size 128). When parsing MLSD lines |
| from the temp file and we see "type=dir", we create the local directory by |
| calling zmkdir(), change to the remote by sending CWD, increment the depth, |
| and call ourselves. When reading from a temp file, upon EOF we close and |
| dispose of the temp file, return -3 if currently at top level, otherwise we |
| free the tmpfile name, decrement the depth, send CDUP to the server, "cd .." |
| locally, and go back and read the next line from the previous but now current |
| temp file. Conceptually simple but needed hours of debugging -- what must |
| be static, what must be on the stack... Seems OK now but still needs some |
| heavy testing. ckcftp.c, 22 Sep 2002. |
| |
| Added FTP { ENABLE, DISABLE } { SIZE, MDTM } and add help text for FTP |
| ENABLE and DISABLE. ckcftp.c, 23 Sep 2002. |
| |
| Don't allow restart if SIZE disabled. ckcftp.c, 23 Sep 2002. |
| |
| Make sure all implicit SIZE commands are surpressed if SIZE disabled. |
| ckcftp.c, 23 Sep 2002. |
| |
| If an explicit FTP MODTIME command is sent when MDTM is DISABLED, and it |
| succeeds, re-ENABLE MDTM. Ditto for SIZE. ckcftp.c, 23 Sep 2002. |
| |
| If an explicit FTP FEATURES command is sent during an FTP session, redo the |
| features database from it. ckcftp.c, 23 Sep 2002. |
| |
| After further discussion with Robert Elz, I realized I had to expose the |
| underlying MGET mechanisms to the user; the draft isn't going to change, and |
| the new spec will result in undesirable effects if the client tries to "do the |
| right thing" by magic in all situations; thus the user must have some new |
| controls: |
| |
| MGET [ /MLST, /NLST, /MATCH:xxx ] [ filespec [ filespec [ ... ] ] ] |
| |
| These switches let the user force the use of MLSD or NLST when there's a |
| choice, and to force local use of a pattern rather than sending it to the |
| server, and even to send a directory name to the server at the same time as |
| specifying a pattern for local matching, and of course by default we try to do |
| the right thing in all scenarios. Symbols only; not coded yet. ckuusr.h, |
| 23 Sep 2002. |
| |
| Added the three new switches to MGET, plus /MLST is an invisible synonym for |
| /MLSD. If /NLST or /MLSD is given it, it forces the corresponding FTP protocol |
| directive. ckcftp.c, 25 Sep 2002. |
| |
| Now for the tricky part: now we have two separate concepts for what to send to |
| the server: a filename or wildcard to be interpreted by the server (NLST only) |
| or a directory from which to get a list of all the files (NLST or MLSD), |
| possibly together with a pattern to be used by the client to match filenames |
| returned by the server. This required giving remote_files() an additional |
| argument. Now it uses "pattern" (if any) strictly for local pattern matching |
| (because now it is the /MATCH: switch argument, not the MGET filespec), and |
| "arg" (the MGET filespec) is what it sends to the server, maybe (see the |
| comments in the code for the actual details); either or both these can be |
| null. ckcftp.c, 25 Sep 2002. |
| |
| Discovered that "mget foo", where foo is a directory name, never worked. |
| Fixed in remote_files(): ckcftp.c, 25 Sep 2002. |
| |
| Going through every combination of NLST, MLSD, /MATCH:, and MGET arg and |
| debugging each case until OK... Then also with the panix.com NetBSD server |
| (lukemftpd 1.0) which also supports MLSD.... 11 test cases all debugged and |
| tested OK. ckcftp.c, 26 Sep 2002. |
| |
| Added /NODOTFILES switch to FTP MGET, to control what happens with dot-files |
| if the server includes their names in the list (as lukemftpd does). There's |
| no point in adding a /DOTFILES switch because what could it possibly do? |
| ckcftp.c, 26 Sep 2002. |
| |
| Changed a bunch of "skipthis++" to "continue" in doftpget(), to avoid |
| error messages when skipping files that user said she wanted to skip. |
| ckcftp.c, 26 Sep 2002. |
| |
| Added help text for the new MGET switches. ckcftp.c, 26 Sep 2002. |
| |
| Don't switch LOCUS when making an FTP connection until logged in. |
| ckcftp.c, 26 Sep 2002. |
| |
| Fixed LDIR to run Kermit's built-in DIRECTORY code rather than the external |
| directory program. ckuusr.c, 26 Sep 2002. |
| |
| Protect iswild() against NULL args. ckufio.c, 26 Sep 2002. |
| |
| From Jeff: SET GUI WINDOW RUN-MODE { MAXIMIZE, MINIMIZE, RESTORE }, |
| plus variables for GUI Window X position, GUI Window Y position, GUI |
| Window X resolution, GUI Window Y resolution, GUI Window Run mode. |
| ckuusr.h, ckuus[24].c, 27 Sep 2002. |
| |
| From Ronan Flood: updated FreeBSD 1.0 makefile entry, plus an #ifdef to protect |
| sysconf() calls. makefile, ckutio.c, 28 Sep 2002. |
| |
| Change ftp_auth() to return(0) if an AUTH command gets a 500 response, so it |
| doesn't keep sending other kinds of AUTH commands. ckcftp.c, 29 Sep 2002. |
| |
| Changes from Jeff to yesterday's changes. ckcftp.c, 30 Sep 2002. |
| |
| From Jeff: SSH command-line personality. Uses same command line as the Telnet |
| personality. ckcker.h, ckcmai.c, ckuus[4y].c, 3 Oct 2002. |
| |
| From Jeff, 7 Oct 2002: |
| . SET PRINTER CHARACTER-SET. ckuxla.c, ckuusr.h, ckuus[25].c |
| . Promotion of K95 to Beta.01. ckcmai.c |
| . Promotion of SET GUI { MENUBAR, TOOLBAR } to visible. ckuus3.c |
| |
| Changed the URL parser as follows: if the username and/or password fields are |
| present but empty, as in: |
| |
| ftp://@ftp.xyzcorp.com/somepath |
| or: ftp://:@ftp.xyzcorp.com/somepath |
| but not: ftp://:ftp.xyzcorp.com/somepath |
| |
| the pointer for these items becomes a pointer to an empty string, rather than |
| a NULL pointer. Then when we go to open the connection, if the username |
| string pointer points to an empty string, we prompt for the username (and/or |
| password). ckuusy.c 9 Oct 2002. |
| |
| Jason Heskett reported an interesting bug involving a core dump when an |
| ON_EXIT macro is defined that executes another macro. Sometimes. He was able |
| to send a short command file that always crashed. Diagnosis: ON_EXIT, when it |
| is called, pokes itself out of the macro table by setting its own entry in the |
| macro name list to an empty string. But this interferes with any macro |
| lookups that are done while executing ON_EXIT's body and also evidently some |
| code is not happy with empty macro names... To fix: replace "on_exit" with |
| "on_exxx", so the replacement keyword is (a) nonempty, and (b) doesn't wreck |
| the alphabetical sorting of the table. ckuusx.c, 9 Oct 2002. |
| |
| Added makefile targets for FreeBSD 4.6 and 5.0. Built and tested on 4.6; |
| don't know about 5.0. ckuver.h, makefile, 9 Oct 2002. |
| |
| Added targets for AIX 5.2 and 5.3; totally untested. ckuver.h, makefile, |
| 9 Oct 2002. |
| |
| Built current source on Unixware 7.1.3 (make uw7); it's fine. 9 Oct 2002. |
| |
| Promoted C-Kermit to 8.0.206 Beta.01 in hopes of a simultaneous release |
| with K95 2.1. ckcmai.c, 9 Oct 2002. |
| |
| From Jeff: Change KERMITFONT definitions to use the new (Unicode 3.1) code |
| points for the terminal graphics characters (such as VT100 horizontal scan |
| lines), rather than private-use codes. ckcuni.c, 10 Oct 2002. |
| |
| Jason Heskett also complained that REMOTE CD would print the name of the new |
| directory returned by the server even if he SET QUIET ON. This is a tricky |
| one. Which server replies should the QUIET settings apply to? If I give a |
| REMOTE DIRECTORY command, it means I want to see the directory listing, |
| period. But if I give a REMOTE CD command, I get an "unsolicited" response |
| message that SET QUIET ON should suppress. Adding message suppression to |
| rcv_shortreply() is close, but not totally right; for example, it also |
| suppresses the response to REMOTE PWD, which is not helpful. The only right |
| way to do this is to suppress for REMOTE CD only, which can be done only by |
| setting a (new) global flag, rcdactive. ckuus[r57].c, ckcpro.w, 10 Oct 2002. |
| |
| Ditto for REMOTE LOGIN response message ("Logged in"). ckuus7.c, 11 Oct 2002. |
| |
| From Jeff: SET GUI WINDOW FONT { NAME, SIZE }. ckuusr.h, ckuus4.c, 11 Oct 2002. |
| |
| Quick preliminary 8.0.206 build-all: |
| |
| OK SunOS 4.1.3 |
| OK Solaris 2.5.1 |
| OK Solaris 9 |
| OK AIX 4.3.3 |
| OK HP-UX 10.20 |
| OK VMS 7.1 Alpha + TCP/IP |
| OK VMS 7.1 Alpha nonet |
| OK VMS 5.5 VAX + TCP/IP |
| OK VMS 5.5 VAX nonet |
| OK Unixware 7.1.3 |
| OK FreeBSD 3.1 |
| OK FreeBSD 4.6 |
| OK NetBSD 1.5.2 MVME (Gerry B) |
| OK Sinix 5.42 |
| |
| Sinix build got stuck on ckuusr.c even though we're not optimizing on Sinix |
| any more. Rebooting the machine fixed it. |
| |
| Fixed some #ifdefs for VMS in new incomplete-file deletion code in doclean(). |
| ckuusx.c, 11 Oct 2002. |
| |
| Moved uq_blah() prototypes from ckuusr.h to ckcker.h because these routines |
| are called in modules that don't (and shouldn't have to) include ckuusr.h. |
| 11 Oct 2002. |
| |
| Jeff verified secure builds on Linux and Solaris. |
| |
| Custom-build workout: 80 different feature-selection combinations: |
| . Fixed yesterday's change for NOSPL: ckcfns.c. |
| . Fixed conflict between NORECALL and USE_ARROWKEYS: ckucmd.c. |
| . Moved setseslog() from ckuus5.c to ckuusx.c to avoid link-time foulups. |
| . Fixed an unguarded reference to zmkdir() in ckcftp.c. |
| . Protected rmsg() by #ifndef NOXFER: ckuus7.c. |
| . Protected initxlist() by #ifndef NOXFER: ckcmai.c. |
| . Fixed unguarded references to g_url struct in xx_ftp(): ckuusy.c. |
| . Fixed unguarded references to tt_snaws() in winchh(): ckutio.c. |
| |
| --- 8.0.206 Beta.01 11 Oct 2002 --- |
| |
| From Jeff, 16 Oct 2002: |
| . Fix K95 RMDIR: ckcfn3.c. |
| . Makefile targets for Red Hat 7.2, 7.3, 8.0: ckuver.h, makefile. |
| . Added \v(log_xxx) for each kind of log for PeterE: ckuusr.h, ckuus4.c. |
| . Added SET TERM ATTRIBUTE DIM { ON, OFF }: ckuus[27].c. |
| . Change "const" to "CONST" in some PAM declarations. ckufio.c. |
| |
| Added SET MATCH { DOTFILE, FIFO } { ON, OFF }. A FIFO special file is a named |
| pipe, used for interprocess communication. It must be opened at both ends, so |
| it's silly to match them by default; opening a FIFO and attempting to read |
| will block forever unless somebody is writing into the other end. Made the |
| MATCH FIFO default OFF in all cases. The dotfile default is the same as |
| always (OFF for UNIX, ON elsewhere); SET MATCH DOTFILE is simply a more |
| untuitive and findable command than SET WILD KERMIT /MATCH-DOT-FILES. Note |
| that SET MATCH DOTFILE undoes SET OPTIONS DIRECTORY /[NO]DOTFILES, and vice |
| versa. ckcmai.c, ckuusr.h, ckuus[23].c, ckufio.c. 17 Oct 2002. |
| |
| Added client and server end of REMOTE SET MATCH { DOTFILE, FIFO } { ON, OFF }. |
| The new protocol codes are 330 and 331, respectively. ckuus[367].c, ckcfns.c, |
| 17 Oct 2002. |
| |
| Adjusted the "match dot if pattern starts with dot" heuristic in nzxpand() |
| to not kick in if the filespec is "./foo". This probably needs more work. |
| ckufio.c, 17 Oct 2002. |
| |
| Fixed typo in transcribing Jeff's ckcfn3.c code from yesterday. 18 Oct 2002. |
| |
| Moved some help text out of #ifdef ANYSSH that had nothing to do with SSH. |
| (Idea for a new EMACS feature: M-X list-ifdef-environment.) |
| ckuus2.c, 18 Oct 2002. |
| |
| Removed "set file { permission, protection }" keywords, which led nowhere. |
| ckuus7.c, 18 Oct 2002. |
| |
| Added -DSV68 to all SV/68 targets. Make ckgetfqhostname() just return its |
| argument in SV/68; it dumps core otherwise. In case this happens anywhere |
| else, add -DNOCKGETFQHOST to CFLAGS. makefile, ckcnet.c, 18 Oct 2002. |
| |
| For PeterE, added SET { SEND, RECEIVE } PERMISSIONS { ON, OFF } so incoming and |
| outbound permission attributes can be set separately. ckuus[27].c, 18 Oct 2002. |
| |
| Changed SHOW ATTRIBUTES to show In and Out permissions separately. |
| ckuus5.c, 18 Oct 2002. |
| |
| Fixed REDO to display the command it's redoing and to add it to the bottom |
| of the recall buffer. ckuusr.c, 18 Oct 2002. |
| |
| Discovered that DATE SATURDAY dumps core... Apparently it always did; this |
| case was not included in the date-time torture test script. The crash happens |
| because the DATE parsing code doesn't check for a NULL date-converion |
| error-message pointer. Fixed in ckuusr.c, 18 Oct 2002. |
| |
| The reason DATE SATURDAY got a date-conversion error was that this path thru |
| the code left a result pointer unset. Fixed in cmcvtdate(): ckucmd.c, |
| 19 Oct 2002. |
| |
| DATE SUNDAY +1DAY returned incorrect results (for any day-of-week name, any |
| delta time), even though DATE TODAY +1DAY worked fine. Fixed in cmcvtdate(): |
| ckucmd.c, 19 Oct 2002. |
| |
| SET TAKE ECHO ON counted each line twice when GOTO was active. Fixed in |
| dogoto(): ckuus6.c, 19 Oct 2002. |
| |
| Jeff noticed: |
| "KERMIT READY TO GET... |
| RCVD: (2 files) Last: [/amd/prost/p/kd/jaltman/.src/ckonet.c] (OK) |
| the last file attempted may have been ckonet.c but it certainly was |
| not the last file received" (similarly for sending). Fixed by having two |
| pointers for each name; a preliminary pointer, which is set for each file at |
| the beginning of the transfer (when we have all the needed info), and a final |
| one that is set from the preliminary one only after the file was transferred |
| successfully. This corrects not only the automatic "wheremessage" at the end |
| of a remote-mode transfer, but also the WHERE and SHOW FILE command results. |
| ckuusx.c, ckcfn[s3].c, ckcpro.w, 19 Oct 2002. |
| |
| From Jeff: Improve ORIENTATION message for K95 to say which directories are |
| for which INI files. ckuusr.c, 23 Oct 2002. |
| |
| Removed Beta designation from herald. ckcmai.c, 23 Oct 2002. |
| |
| Put final dates and ID strings in Unix and VMS build procedures. |
| Makefile, ckvker.com, 23 Oct 2002. |
| |
| Build-all... #ifdef adjustments: ckcfns.c... 83 different feature-set |
| combinations build OK on Linux. 23 Oct 2002. |
| |
| From Jeff: SET WIN95 HORIZONTAL-SCAN-LINE-SUBSTITUTIONS. ckuusr.h, ckuus7.c, |
| 24 Oct 2002. |
| |
| Fixed Heath-19 graphic character-set table to use new Unicode 3.1 values |
| if WIN95 HORIZ OFF. ckcuni.c, 24 Oct 2002. |
| |
| Changed tx_usub() to return Unicode 3.1 values if WIN95 HORIZ OFF. |
| ckcuni.c, 24 Oct 2002. <-- No backed off on this. |
| |
| Some problems during build-all: |
| |
| . VMS 7.1 TGV 4.2: If I make a Telnet connection with it, then try to send |
| a file (itself. wermit.exe) over the connection, the connection drops |
| after about 20%, the thermometer zooms out to 100% and SUCCESS is reported. |
| This doesn't happen with UCX. |
| |
| . VMS 7.3 TGV 4.3: ckcmai.c won't compile because of a complaint about the |
| declaration of select() (which ckcmai.c doesn't use) in |
| SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB. Ditto in VMS 7.2 TGV 4.3. |
| Adding NOSELECT to CFLAGS doesn't help. I don't think the VMS version |
| even uses select(). But the TGV 4.3 builds were OK in 8.0.201, so what |
| changed? I don't see anything in ckcnet.h that would have done it. |
| |
| It builds OK with VMS 7.1 / TGV 4.2 but sending files on Telnet connections |
| fails in a strange way: the connection drops, but the thermomoter goes to 100% |
| and success is reported. I don't know why the connection is dropping (s_errno |
| is 32 == "broken pipe"), but the spurious success indication is because of |
| a double failure in sdata(): (1) The packet-sending loop index could go |
| negative without breaking the loop when streaming; (2) if spack() fails, |
| sdata() should return -2, not -1 (which means EOF). Also if any ttchk() in |
| sdata() returns < 0, sdata should return -2. I fixed this code (which has |
| been this way for YEARS) and now VMS C-Kermit properly fails when it gets |
| the spack() error, but ttchk() in this case still doesn't think the connection |
| is lost, but that must be our new problem with MultiNet. ckcfns.c, |
| 27 Oct 2002. |
| |
| The compilation failure in ckcmai.c is a clue... The problem was that I added |
| #ifdef VMS / #include <time.h> / #endif to shut up complaints about the time() |
| call. Evidently something in VMS <time.h> gives MultiNet a bad case of |
| indigestion; removing it fixes the compilation and the result works fine. The |
| transmission failures in the other case seem to be a coincidence -- something |
| to do with the U of Arizona (probably some obscure VMS quota on my IDs there, |
| or some kind of network connection throttling), since it doesn't happen |
| anywhere else. ckcmai.c, 27 Oct 2002. |
| |
| Changed four occurrences of "void" to "VOID" in ckcftp.c, 27 Oct 2002. |
| |
| Defined NOCKFQHOSTNAME for HPUXPRE65. Might also need this for HP-UX 7 |
| and maybe 8. ckcnet.c, 27 Oct 2002. |
| |
| From Jeff: PAM_CONST definition to clear up warnings caused by different |
| vendors' definitions of PAM structs. ckufio.c, 28 Oct 2002. |
| |
| Unixware 2.1.0 build bombs immediately with "UX:make: ERROR: line too long" |
| (which line?) Not worth chopping up the makefile to fix but in a pinch it |
| could be done. 2.1.3 builds OK. |
| |
| Did another 20-some platform builds, bringing the total to 83, plus a final |
| runthrough of the build-with-84-different-feature-set-combinations script on |
| Linux. Should be good to go! |
| |
| --- 8.0.206 24 Oct 2002 --- |
| |
| Finally got access to Linux on IA64 again. Builds OK but dumps core |
| immediately on startup. Adding -DNOCKGETFQHOST was necessary but not |
| sufficient. In this case, the very call to ckgetfqhostname() from ckhost() |
| (which is in ckuusx.c) was dumping core; thus I had to move the definition of |
| NOCKGETFQHOST from ckcnet.c to ckcdeb.h, add an #ifdef __ia64__ clause to it, |
| and protect the call to ckgetfqhostname() with it. Obviously there has to be |
| a better fix but this will have to for now. ckcnet.c, ckuusx.c, ckcdeb.h, |
| 31 Oct 2002. |
| |
| Link step fails in Mandrake 9.0 with undefined references to res_search, |
| dn_expand, and crypt. Turns out the linux makefile target tests for the |
| existence of libcrypt.a and libresolv.a, but in Mandrake 9.0 they exist |
| only as *.so. Changed linux target to look for both. makefile, 1 Nov 2002. |
| |
| Vace reported that "ftp mget a b c" would get ALL files from the server's |
| directory if c did not exist. Diagnosis: off-by-one error in counting MGET |
| args processed. Naturally fixing this bug revealed another (this time |
| cosmetic) one, which resulted in spurious error messages when hitting MGET |
| args that have no match on the server. Fixed in ckcftp.c, 1 Nov 2002. |
| |
| Rebuilt about 60 of the most important Unix binaries to pick up the fixes |
| 31 Oct - 1 Nov 2002, and refreshed the FTP site with new sources, tarballs, |
| ZIP files, etc. Sat Nov 2 19:11:30 2002 |
| |
| From Martin Vorlaender and Jeff, SSL/TLS support for VMS: |
| ckuusr.h, ckuath.h, ckcnet.c, ckctel.c, ckuath.c, 10 Nov 2002. |
| |
| Added PASV as invisible synonym for PASSIVE. ckcftp.c, 10 Nov 2002. |
| |
| --- 8.0.206 24 Oct 2002 #2 --- |
| |
| More work on SSL in VMS: Jeff + Martin Vorlaender: ck_ssl.c ckcmai.c ckcnet.c |
| ckctel.c ckuath.h ckvcon.c ckvtio.c ckvker.com 10-15 Nov 2002. |
| |
| Discovered that ckvfio.c would not compile on VMS 6.1 with UCX 4.1 because |
| <conv$routines.h> was missing, which is explicitly included. Enclosed the |
| #include in #ifdef NOCONVROUTINES..#endif and rebuilt with |
| @[users.fdc.src]ckvker.com "" "" "NOCONVROUTINES". 16 Nov 2002. |
| |
| Fixed the "ftp mget */data/*" problem with two small changes to doftpget(): |
| ckcftp.c, 16 Nov 2002. Placed a copy of ckcftp.patch in ~kermit/f. |
| |
| From Lucas Hart: Fixes for VAX C 2.x and CMU TCP/IP. "Can't guarantee that |
| the revised CKVOLD will work for all combinations of more recent |
| VMS/compiler/TCPIP releases, but I've tested it for compatibility on our AXP |
| VMS 6.2, UCX 4.0, DECC 5.6, your AXP VMS 7.1, DEC TCPIP 5.1, DECC 6.0 as well |
| as with VAX VMS 5.4, VAX C 3.2, CMU12 and VAX VMS 4.7, VAX C 2.4." ckvfio.c, |
| ckvtio.c, ckuus5.c, ckvker.com, ckvold.com, 17 Nov 2002. |
| |
| From Jeff: More work on VMS SSL. Now it actually works, even in CONNECT mode, |
| except it hangs when it gets an error alert or the remote closes the |
| connection. ckcnet.c. ckvtio.c, 17 Nov 2002. |
| |
| NOTE: Lucas's changes should go into the 8.0.206 source code but it's too |
| late since ckvtio.c (upon which he based his changes) is already full of |
| SSL code. |
| |
| MGET in K95 in totally broken FOR SOME PEOPLE (mainly me) if the TMP (or TEMP) |
| value is too long. It works fine if you set these to C:\TMP. Diagnosis: (1) |
| we were malloc'ing only 16 bytes for the temp file name (I think this was my |
| fault -- I was only looking at the "ckXXXXXX" part and forgetting that this |
| was appended to the TMP path); (2) the Windows version of mktemp() wants you |
| to use the value pointed to by the pointer it returns, rather than assuming |
| the mktemp() arg will be modified in place. The code was changed to malloc a |
| longer string and to use the return value from mktemp() (if any) rather than |
| assuming that mktemp() modified its argument string (in K95 only -- not sure |
| about Unix platforms; the man pages differ on this, but at least this way if |
| some mktemp() version does NOT alter its argument, we still have a usable |
| filename (like /tmp/ckXXXXXX)). Of course this won't be good for recursive |
| MLSD downloads, but we can always issue patches for the Unix version later if |
| needed. The Linux and BSD versions use mkstemp() anyway. There is, however, |
| a danger of a memory leak in the Unix version if the user has defined a TMPDIR |
| or CK_TMP environment variable whose value is longer than 9 bytes. All this |
| is highly unlikely so we should be OK. ckcftp.c, 17 Nov 2002. |
| |
| --- K95 2.1.1 and updated ck[uv]206.{tar,zip} but not C-Kermit binaries --- |
| |
| From Jeff: Fixes for Telnet Com Port Control, update to a newer release of |
| OpenSSL: ck_ssl.c ck_ssl.h ckcdeb.h ckcftp.c ckcmai.c ckcnet.c ckctel.c |
| ckuath.c ckuath.h ckucns.c ckuus4.c ckuus5.c ckuusr.c ckuusr.h ckvcon.c |
| ckvfio.c ckvker.com ckvtio.c ckvvms.h, 25 Nov 2002. |
| |
| --- K95 2.1.2 and C-Kermit 8.0 CDROM --- |
| |
| From Jeff, 28 Nov 2002: |
| . Updated SSL modules: ck_ssl.[ch]. |
| . Fixed cipher-list display in SHOW AUTH & FTP ssl_auth(): ckuus7.c. ckcftp.c |
| . Some minor tn_wait() fixes: ckctel.c. |
| . Preliminary SSL support for VMS CONNECT: ckvcon.c. |
| |
| Bumped C-Kermit edit number to 207. |
| |
| From Jeff, 29 Nov 2002: "[C-Kermit was dumping core on SCO OSR5 Telnet Com Port |
| connections because] the SCO compiler treats all characters as signed. This |
| was causing 'sprintf(buf,"02x ",ch);' to produce strings such as "ffffffc2" |
| instead of "c2" for values between 128 and 255. This wrote beyond the end of |
| a buffer and blew away the stack. Having fixed this I also noticed that |
| conect() did not properly check for carrier when TN CPC was negotiated. This |
| has now been fixed as well." ckucns.c, ckucon.c, ckctel.c, 29 Nov 2002. |
| |
| From Jeff, 30 Nov 2002: Fix SSL for VMS and also carry forward the CPC fixes |
| to VMS. ckcnet.c, ckvtio.c, ckvcon.c, 30 Nov 2002. |
| |
| Changed copyright dates that are displayed (but not yet all the internal |
| ones) from 2002 to 2003. ckcmai.c, 3 Jan 2003. |
| |
| Fixed the FTP module's brief-format transaction log, which had the status |
| inverted: OK for FAILED and v.v. ckcftp.c 3 Jan 2003. |
| |
| From Jeff, 4 Jan 2003: |
| . Make /MOVE-TO:xxx convert xxx to full pathname: ckuus[r67].c, |
| . Make SHOW OPTIONS ALL show both kinds of options: ckuus2.c. |
| . More command-line personalities: ckcmai.c, ckuusy.c. |
| . New NOSCROLL command for K95: ckuusr.[ch], ckuus2.c. |
| . New lockdown and other command-line options: ckuusr.h, ckuusy.c. |
| . SSL interface updated to OpenSSL 0.9.7: ck_ssl.c. |
| . SET TERM LINE-SPACING and CURSOR xxx NOBLINK: ckuus[27]c. |
| . Expanded SHOW GUI command: ckuus3.c |
| . New SHOW TABS code: ckuus5.c. |
| |
| Updated SUPPORT (BUG), NEWS, and INTRO texts. ckuus[26].c. 5 Jan 2003. |
| |
| Fixed FTP module to suppress "'FEAT': Command not understood" message |
| unless FTP DEBUG is ON. ckcftp.c, 6 Jan 2003. |
| |
| Got a report that C-Kermit dumps core on Solaris when executing a certain |
| script. Seems to be related to changing vnambuf[] in zzstring() from an |
| automatic array to a malloc'd buffer (see notes from 29 Jun 2000). Changed |
| it to an automatic buffer except for K95. ckuus4.c, 6 Jan 2003. |
| |
| Nope, that's not it. It evidently happens only after FTP PUT has been used. |
| Fixed solaris9g makefile target to include -funsigned-char and built a new |
| binary. Determined that building with gcc and -funsigned-char makes no |
| difference. makefile, 7 Jan 2003. |
| |
| I did a preliminary audit, looking at the items in the left column: if used in |
| a given routine, are there any obvious mistakes: |
| |
| 1 2 3 4 5 |
| doftpput->putfile->sendrequest->doftpsend2->secure_write |
| malloc OK OK OK OK OK |
| makestr OK OK OK OK OK |
| automatic arrays OK OK OK OK OK |
| [ck]str[n]cpy OK OK OK OK OK |
| [ck]str[n]cat OK OK OK OK OK |
| sprintf OK OK OK OK OK |
| nzltor OK OK OK OK OK |
| zfnqfp OK OK OK OK OK |
| memcpy OK OK OK OK OK |
| bcopy OK OK OK OK OK |
| |
| secure_write sends the data directly on clear-text connections. On secure |
| connections, it calls secure_putbuf(), which calls secure_putbyte(), but we |
| aren't using those, so secure_write() is the end of the call chain for FTP |
| PUT. doftpsend2 has buf[] as an automatic array, which it reads file data |
| into using zxin (binary mode only), but this looks OK. Still, I changed it |
| read 1 less than the buffer size (fread) just in case. Also there was one |
| debug() statement that referred to an automatic array (fullname[]) before it |
| was initialized (but not used in this case), which I fixed. ckcftp.c, |
| 7 Jan 2003. |
| |
| FTP GET /RECURSIVE somepath/somefile still didn't work, despite what the |
| notes of 19 Sep 2001 say. There are so many paths through the code, |
| depending on switch values, GET vs MGET, etc, that a crucial spot was missed. |
| Fixed in doftpget(): ckcftp.c, 7 Jan 2003. |
| |
| Back to the core dump... after two days of full-time debugging, I found the |
| culprit: the buffer-full test in the zzout() macro should have been ">=" |
| rather than just ">", thus Kermit wrote 1 byte past the end of the malloc'd |
| FTP PUT output buffer, ucbuf. Why did it never happen in K95? Because, since |
| it's a secure build, FUDGE_FACTOR is defined there. But it's not defined in |
| Solaris or other clear-text builds. Although the crash wouldn't happen in |
| secure builds, the 1-byte leak might have caused errors in the data transfer. |
| In non-Solaris clear-text builds, like Linux, I suspect that malloc() tends |
| add something for safety (especially given the man page statement that it |
| allocates "at least" what you asked for). Another reason the problem escaped |
| notice is that zzout() is used only for text-mode PUTs (and then only when |
| there is no character-set translation), but most transfers these days are |
| binary and/or downloads. Anyway, in the course of debugging, a lot of small |
| cleanups were done: sizeof(blah) for all arrays was replaced by the same |
| symbolic size that was used to allocate the array, numeric array sizes were |
| replaced with symbolic ones, etc. The real fix is one character long. |
| ckcftp.c, 9 Jan 2003. |
| |
| Got a report that "mget /recursive */somedir/*" downloaded the files into |
| the current directory, rather than re-creating the remote directory structure. |
| Fixed in doftpget(): ckcftp.c, 10 Jan 2003. |
| |
| Unix C-Kermit did not allow file transfer if started under inetd and accessed |
| via Internet raw socket (or whatever). Diagnosis: isatty() and friends would |
| fail causing ttopen() to fail. Fixed by adding escape clauses for "-l 0" |
| situations (i.e. Kermit invoked with an already-open file descriptor) at the |
| appropriate places. ckcmai.c, ckutio.c, 14 Jan 2003. |
| |
| From Jeff for K95 2.1.3 |
| . Add test for startflags & 128 to trap() for ignoring BREAK. |
| . Fix for SHOW TRANSMIT. |
| |
| --- K95 2.1.3 --- |
| |
| FTP USER, FTP ACCOUNT, plus the various prompts and switches for FTP username, |
| password, and account all neglected to strip quotes, and in most cases quotes |
| are necessary to specify a username that contains spaces. ckcftp.c, |
| 15 Jan 2003. |
| |
| FTP MPUT f1 f2 f3... gets a parse error if any of the fn's do not match an |
| existing file. This is bad for scripts. In doftpput(), cmfdb() looks for |
| keywords (switches) or CMIFI. When it hits CMIFI, it exits from the initial |
| parse loop and then does additional cmifi()s in a loop until done. The most |
| obvious fix is to parse each field with cmfdb(CMIFI,CMFLD), i.e. fall back to |
| CMFLD if CMIFI doesn't match anything. Then if CMFLD was used, we don't add |
| the filespec to the list. This is a rather big change but it seems to work. |
| No error messages or failures happen for non-matching fields, but an error |
| message is printed (and the MPUT command fails) if none of the fields match |
| any files. This fix got in too late for 2.1.3; workaround: use C-Shell |
| like wildcard list (ftp mput "{*.abc,foo.*}"). ckcftp.c, 16 Jan 2003. |
| |
| GREP did not pass its pattern through the expander, thus variables could |
| not be used for patterns. This must have been an oversight -- I can't find |
| anything in my notes about it. Fixed in dogrep(): ckuus6.c, 24 Jan 2003. |
| |
| New makefile target for HP-UX 11.xx with OpenSSL from Tapani Tarvainen. |
| makefile, 31 Jan 2003. |
| |
| From Jeff: |
| . Avoid core dump when dereferencing tnc_get_signature(): ckuus4.c. |
| . Bump version numbers to 8.0.208, 2.1.4: ckcmai.c. |
| |
| Added /NOLOGIN to FTP [OPEN]. ckcftp.c, 10 Feb 2003. |
| |
| Don't dump core if FTP DEBUG is ON and FTP OPEN does not include a service. |
| openftp(): ckcftp.c, 10 Feb 2003. |
| |
| HELP PATTERN text incorrectly identified commands and functions with |
| floating and anchored patterns. The corrected lists are: |
| Floating: GREP, TYPE /MATCH:, /EXCEPT: patterns, \farraylook(), |
| Anchored: IF MATCH, file-matching wildcards, \fsearch(), \frsearch() |
| ckuus2.c, 10 Feb 2003. |
| |
| INPUT n \fpattern(xxx) did not work for case-independent comparisons. |
| Fixed in doinput(): ckuus4.c, 10 Feb 2003. |
| |
| It seems \fpattern() didn't work with MINPUT at all. There was no code to |
| handle \fpattern() in the MINPUT parse loop, so it never worked. The code |
| had to be totally rewritten to use cmfld() in a loop, rather than cmtxt() |
| and then cksplit(). Furthermore, whenever any of the fields was an |
| \fjoin(), this had to be split. ckuusr.c, 10 Feb 2003. |
| |
| Macro replacement via \m() and \fdefinition() does not work as advertised |
| (i.e. case sensitively) for associative array elements; e.g. \m(xxx<abc>) is |
| treated the same as \m(xxx<ABC>), contrary to section 7.10.10 of the C-Kermit |
| 7.0 update notes, and to the fact that the two really do exist separately. |
| Fixed by adding a static function isaarray(s) which succeeds if s is an |
| associative array reference and fails otherwise, and then having \m() |
| and \fdef() call mxxlook() (case-sensitive lookup) if isaarray(), otherwise |
| (as before) mxlook()). ckuus4.c, 11 Feb 2003. |
| |
| Fixed FTP OPEN to allow the /USER switch to override SET FTP AUTOLOGIN OFF, |
| just as /NOLOGIN overrides SET FTP AUTOLOGIN ON. ckcftp.c, 11 Feb 2003. |
| |
| In K95, "set key \1234 \27H" (any SET KEY command in which the first char of |
| the definition was backslash, and the ONLY character after the backslash |
| quantity was an uppercase letter, that letter would be lowercased). Diagnosis: |
| xlookup() poking its argument (see notes from July 2000). Jeff sent a fix. |
| ckucmd.c, 15 Feb 2003. |
| |
| Ran my S-Expression torture test to make sure Sexps still worked. They do, |
| except the bitwise & and | operators were broken, e.g. (& 7 2) and (| 1 2 4) |
| get "Invalid operand" errors. Jeff's code had added an early failure return |
| from the lookup loop when when a single-byte keyword matched a keyword that |
| started with the same byte but was more than one byte long. So "&" would hit |
| "&&" and fail instead of continuing its search (xlookup tables aren't sorted |
| so there can be no early return). Fixed in xlookup(): ckucmd.c, 16 Feb 2003. |
| |
| Got rid of "krbmit" target from makefile. It's still there, but we don't |
| use it any more. All secure targets now use "xermit", and produce a binary |
| called wermit, just like the regular ones do (except the old ckucon.c ones). |
| Non-secure targets, since they don't define any of the security symbols, |
| wind up compiling and linking to (mostly) empty security modules. makefile, |
| 15 Feb 2003. |
| |
| Added \fcvtdate(xxx,3) to format its result in MDTM format (yyyymmddhhmmss, |
| all numeric, no spaces or punctuation). Of course these numeric strings |
| are too big to be 32-bit numbers and are useless for arithmetic, but they're |
| useful for lexical comparison, etc. ckuus[24].c, 16 Feb 2003. |
| |
| The following FTP commands did not set FAILURE when they failed: RMDIR, |
| CD, CDUP, Fixed in the corresponding doftpblah() routines. ckcftp.c, |
| 16 Feb 2003. |
| |
| RENAME would sometimes not print an error message when it failed, e.g. in K95 |
| when the destination file already existed. ckuus6.c, 17 Feb 2003. |
| |
| Fixed COPY error messages, which did not come out in standard format when |
| /LIST was not included. ckuus6.c, 17 Feb 2003. |
| |
| Fixed #ifdefs in ck_crp.c to allow nonsecure builds on old platforms like |
| System V/68 R3. 19 Feb 2003. |
| |
| Similar treatment for ck_ssl.c. 20 Feb 2003. |
| |
| From Jeff, 21 Feb 2003: |
| . AIX53 and AIX52 symbols for ckcdeb.h, makefile. |
| . New gcc targets for various AIX 4.x/5.x versions: makefile. |
| . Copyright date updates: ck_crp.c, ck_ssl.c. |
| . ENABLE/DISABLE QUERY broken because keyword table out of order: ckuusr.c. |
| . Fixed the use of HTTP proxies for HTTP [RE]OPEN for Unix: ckcnet.c. |
| |
| Also for K95 only: Allow file transfer when K95 is invoked on the remote end |
| of a connection to a Pragma Systems Terminal Server connection; automatically |
| SET EXIT HANGUP OFF when invoked with open port handle ("k95 -l nnnn"). |
| |
| "cd a*" failed even when "a*" matched only one directory. Fixed in cmifi(): |
| ckucmd.c, 21 Feb 2003. |
| |
| In the Unix version, replace "extern int errno;" with "#include <errno.h>" |
| if __GLIBC__ is defined, since glibc now defines a thread-specific errno. |
| ckcdeb.h, 26 Feb 2003. |
| |
| Added #ifdefs to skip compilation of ckuath.c in nonsecure builds. Tested |
| by building both secure and regular versions in Linux. ckuath.c, 26 Feb 2003. |
| |
| Ran the build-in-84-different-configurations script on Linux to make sure it |
| still builds with all different combinations of feature selection options. |
| All OK. 26 Feb 2003. |
| |
| Built on VMS. Needed to add a prototype for mxxlook*() to ckuusr.h; built |
| OK otherwise. 26 Feb 2003. |
| |
| From Jeff: More #ifdef shuffling for nonsecure builds: ckuath.c, ck_ssl.c, |
| 27 Feb 2003. |
| |
| Added code to ensure \v(download) ends in a directory separator in Unix, |
| Windows, and OS/2. ckuus7.c, 27 Feb 2003. |
| |
| Added code to K95 zfnqfp() to tack on directory separator when returning |
| a directory name. ckofio.c, 27 Feb 2003. |
| |
| Somehow an old copy of ckuath.c popped to replace the new one. Put the new |
| one back. 28 Feb 2003. |
| |
| From Jeff: Fix typo in my K95 zfnqfp() code from yesterday; fixes for handling |
| UNCs uniformly, no matter which way their slashes are leaning. ckofio.c, |
| 28 Feb 2003. |
| |
| At Jeff Mezei's suggestion, separate text and binary mode open sequences |
| for VMS session log. ckvfio.c, 28 Feb 2003. |
| |
| Added freebsd48 target for FreeBSD 4.8. makefile, 1 Mar 2003. |
| |
| Changed Mac OS X entries to include -DUSE_STRERROR. makefile, 2 Mar 2003. |
| |
| Fixed GETOK /GUI to evaluate its text argument. ckuus6.c, 3 Mar 2003. |
| |
| Jeff fixed the K95 Dialer QUICK dialog to (a) allow templates, and (b) have |
| a Save-As option. 3 Mar 2003. |
| |
| Jeff fixed a problem with the Xmodem-CRC checksum being crunched whenever |
| there was a retransmission. 7 Mar 2003. |
| |
| Added target/banner for Tru64 5.1B. makefile, ckuver.h, 5 Mar 2003. |
| |
| In Unix, the zcopy() routine (used by the COPY command) reset the user's umask |
| to 0 for the remainder of the Kermit process lifetime. The bug was in |
| ckufio.c 8.0.194, 24 Oct 2002, and is fixed in ckufio.c 8.0.195, 6 Mar 2003. |
| Of course this happened after building 155 C-Kermit 8.0.208 binaries. (But |
| before officially releasing 8.0.208.) |
| |
| In the VMS version, changed: |
| |
| while ((n--) && xx_inc(2) > -1) ; |
| to: |
| while ((n--) && xx_inc(2) >= 0) ; |
| |
| to suppress the "...is being compared with a relational operator to a constant |
| whose value is not greater than zero" warning. ckvtio.c, 7 Mar 2002. |
| |
| Added a debug call to dologend in hopes of catching overzealous Locus |
| switching, which seems to happen only in K95. ckuus3.c, 7 Mar 2002. |
| |
| Rebuilt binaries for some of the more current Unix releases: AIX 4.3.3-5.1, |
| Solaris 7-9 , Red Hat 7.0-8.0, Slackware 8.1, Freebsd 4.7-4.8, NetBSD 1.6, |
| OpenBSD 3.2, Unixware 7.1.3, Open Unix 8, OSR5.0.6a, etc. A Unix binary with |
| COPY umask fix shows a 6 Mar 2003 date for "UNIX File support" in SHOW |
| VERSIONS; a binary without the fix shows 24 Oct 2002. |
| |
| C-Kermit 8.0.208 dated 14 March 2003 released on 10 March 2003. |
| |
| ---8.0.208--- |
| |
| From Jeff 13 Mar 2003: |
| . Updated SSL module allows importation of tickets from host. |
| . freebsd50+openssl target: makefile. |
| . FTP PUT /PERMISSIONS error message for K95: ckcftp.c. |
| |
| Fixed MINPUT to strip quotes or braces from around targets (this was broken |
| on Feb 10th). Thanks to Jason Heskett for discovering and reporting this |
| (killer) bug. ckuusr.c, 14 Mar 2003. |
| |
| Changed version number to 209 Dev.00. ckcmai.c, 14 Mar 2003. |
| |
| While debugging the alphapage script, I found that the command "minput 8 \6\13 |
| \21\13 \13\27\4\13 \30\13" gets "?Not confirmed" in 8.0.208 and 8.0.209, but |
| not in 206 and earlier. This problem too was introduced on Feb 10th by |
| changing MINPUT parsing from cmtxt() followed by cksplit() to cmfld() in a |
| loop. cmfld() uses setatm() to return its result and of course setatm() |
| breaks on \13. Changing setatm() not to do this would break everything else. |
| But cmfld() has no arguments that let us tell it to do anything different in |
| this case. Changing the API would be a disaster. The only solution is to add |
| an "MINPUT ACTIVE" (minputactive) global variable that tells cmfld() to tell |
| setatm() not to break on CR. Now MINPUT with braced targets containing CR |
| and/or LF works in 209, 206, and 201 (but not 208). ckucmd.c, ckuusr.c, |
| ckuus5.c, 15 Mar 2003. |
| |
| MINPUT n \fjoin(&a) works OK if all the members of \&a[] are text strings, but |
| if they are strings of control chars (as above), they don't get separated by |
| the spaces. For example in: |
| |
| dcl \&a[] = "\4\5" "\6\7" xxx |
| minput 10 \fjoin(&a) |
| |
| MINPUT gets two targets: "aaa" and "\4\5 \6\7 xxx". The bug was in the |
| cksplit() call in the \fjoin() case of MINPUT: it needed to specify an |
| include set consisting of all the control characters except NUL. ckuusr.c, |
| 16 Mar 2003. |
| |
| But there's still a problem: |
| |
| dcl \&a[] = "\4\5\13\10" "\6\7" "xxx" |
| |
| creates an array whose first member is "^D^E (one doublequote included). But |
| if braces are used instead, there's no problem. Same deal as MINPUT: cmfld() |
| breaks on CR or LF, thus the end quote is lost. If I set minputactive for |
| DECLARE initializers too, that fixes it. Is there any reason not to do this? |
| Can't think of any (famous last words)... ckuusr.c, 16 Mar 2003. |
| |
| Since it has multiple applications, changed the flag's name from minputactive |
| to keepallchars. ckucmd.c, ckuus[r5].c, 16 Mar 2003. |
| |
| \v(exedir) wasn't being set correctly (it included the program name as well |
| as the directory). Fixed in getexedir(): ckuus4.c, 16 Mar 2003. |
| |
| SET CARRIER-WATCH <Esc> "auto matic" (spurious space in supplied keyword). |
| Cosmetic only; it still worked. Fixed in setdcd(): ckuus3.c, 16 Mar 2003. |
| |
| "directory a b c" listed too many files -- all files whose names END WITH a, |
| b, or c, rather than the files whose names WERE a, b, or c. Diagnosis: The |
| filespec is changed into a pattern: {a,b,c}, which is the correct form. It is |
| passed to nzxpand(), which goes through the directory getting filenames and |
| sending each one to ckmatch() with the given pattern. ckmatch() receives the |
| correct pattern but then prepends a "*" -- that's not right. It's not just |
| in filename matching either. The following succeeds when it shouldn't: |
| |
| if match xxxxc {{a,b,c}} <command> |
| |
| Changing ckmatch() to not prepend the "*" to each segment fixes the command |
| above but breaks lots of others. Running through the "match" torture-test |
| script shows the problem occurs only when the {a,b,c} list is the entire |
| pattern, and not embedded within a larger pattern. Testing for this case |
| fixed the problem. ckmatch(): ckclib.c, 16 Mar 2003. |
| |
| Fixed FTP MODTIME to not print anything if QUIET ON. ckcftp.c, 16 Mar 2003. |
| |
| Picked up a new ckuath.c from Jeff, not sure what the changes are. 16 Mar 2003. |
| |
| Did a few regular and secure builds to make sure I didn't wreck anything. |
| |
| Changed version number to 209 (final). ckcmai.c, 16 Mar 2003. |
| |
| Jason Heskett found another bug: if you define a macro FOO inside the |
| definition of another macro BAR, and FOO's definition includes an odd number |
| of doublequotes (such as 1), FOO's definition absorbs the rest of BAR's |
| definition. Example: |
| |
| def TEST { |
| .foo = {X"} |
| sho mac foo |
| } |
| do test |
| sho mac foo |
| |
| Results in: |
| |
| foo = {X"}, sho mac foo |
| |
| Diagnosis: the TEST definition becomes: |
| |
| def TEST .foo = {X"}, sho mac foo |
| |
| and the macro reader is erroneously treating the doublequote as an open |
| quote, and then automatically closes the quote at the end of the definition. |
| The error is that a doublequote should be significant only at the beginning of |
| a field. But the macro reader isn't a command parser; it doesn't know what |
| a field is -- it's just looking for commas and skipping over quoted ones. |
| First we have to fix an oversight: SET COMMAND DOUBLEQUOTING OFF should have |
| worked here, but it wasn't tested in this case. Fixed in getncm(): ckuus5.c, |
| 17 Mar 2003. |
| |
| There are only certain cases where it makes sense to treat doublequotes as |
| signicant: |
| |
| . An open quote must be at the beginning or preceded by a space. |
| . A close quote is only at the end or else followed by a space. |
| |
| This too was fixed in getncm(): ckuus5.c, 17 Mar 2003. |
| |
| A fix from Jeff SSL/TLS FTP data decoding. ckcftp.c, 18 Mar 2003. |
| |
| Tried building C-Kermit on a Cray Y-MP with UNICOS 9.0. "int suspend", |
| declared in ckcmai.c and used in many modules, conflicts with: |
| |
| unistd.h:extern int suspend __((int _Category, int _Id)); |
| |
| The "=Dsuspend=xsuspend" trick doesn't work for this; there is no way around |
| the conflict other than to rename the variable: ckcmai.c, ckutio.c, |
| ckuus[35xy].c. 26 Mar 2003. VMS and K95 not affected. |
| |
| OK that gets us past ckcmai.c... Then in ckutio.c I had to add a new #ifdef |
| around the LFDEVNO setting, because the Cray didn't have mkdev.h. Could not |
| find a Cray-specific manifest symbol, so I made a new makefile target (cray9) |
| that sets this symbol. Having done this I have no idea what kind of lockfile |
| would be created, but I also doubt if anybody dials out from a Cray. The |
| binary should run a C90, J90, or Y-MP. makefile, 26 Mar 2003. |
| |
| Added a target for SCO OSR5.0.7. makefile, ckuver.h, 30 Mar 2003. |
| |
| Changed since 208: |
| makefile ckuver.h ckcmai.c ckclib.c ckcftp.c ckucmd.c ckuus*.c ckutio.c. |
| |
| ---8.0.209--- |
| |
| From Mark Sapiro, a fix for the March 17th doubleqote fix, getncm(): ckuus5.c, |
| 4 Apr 2003. |
| |
| From Jeff, 29 Apr 2003: |
| . Corrected target for HP-UX 11.00 + OpenSSL: makefile, |
| . Do not allow WILL AUTH before WONT START_TLS: ckctel.h ckctel.c |
| . Add hooks for SFTP and SET/SHOW SFTP: ckcdeb.h ckuusr.h ckuusr.c ckuus3.c |
| . Add SKERMIT ckuusr.h ckuusr.c |
| . Add ADM-5 terminal emulation: ckuus7.c, ckuus5.c |
| . Uncomment and update HELP SET SSH V2 AUTO-REKEY: ckuus2.c |
| . Enable IF TERMINAL-MACRO and IF STARTED-FROM-DIALER for C-Kermit: ckuus6.c |
| . Fix conflicting NOSCROLL keyword definition: ckuusr.h |
| . Set ttname when I_AM_SSH: ckuusy.c |
| . Add extended arg parsing for SSH, Rlogin, Telnet: ckuusy.c, ckuus4.c |
| . Security updates: ckuath.c, ck_ssl.c |
| . Change K95 version number to 2.2.0: ckcmai.c |
| . Save K95 term i/o state before executing keyboard macro: ckuus4.c |
| . Add tests for SSH Subsystem active during INPUT/OUTPUT/CONNECT: ckuus[45].c |
| . Enable K95 SET SSH V2 AUTO-REKEY: ckuus3.c |
| |
| SFTP and SET SFTP subcommands are implemented up to the case statements. |
| |
| Files of mine that Jeff hadn't picked up: |
| ckuver.h ckcftp.c ckutio.c ckuusx.c (just minor changes for last build-all) |
| |
| On 4 Jan 2003, SET RECEIVE MOVE-TO was changed to convert is argument to an |
| absolute path, which made it impossible to specify a relative path, then |
| move to different directories and have it apply relatively to each directory. |
| Changed this as follows: |
| |
| . Parser uses cmtxt() rather than cmdir() so it won't fail at parse time. |
| . If path is absolute, we fail at parse time if directory doesn't exist. |
| . In reof() we run the the path through xxstring (again, in case deferred |
| evaluation of variables is desired) and then, if not null, use it. |
| . If the directory doesn't exist, rename() fails and reof() returns -4, |
| resulting in a protocol error (this is not a change). We do NOT create |
| the directory on the fly. |
| |
| I also fixed SET SEND/RECEIVE RENAME-TO to parse with cmtxt() rather than |
| cmdir(), since it's parsing a text template, not a directory name, e.g. |
| "set receive rename-to file-\v(time)-v(date)-\v(pid)". This was totally |
| broken, since when I don't know. We don't call xxstring() in this parse, so |
| evaluation is always deferred -- I'd better not change this. ckuus7.c, |
| ckcfns.c, 1 May 2003. |
| |
| From Jeff, Sat May 3 14:15:23 2003: |
| . Pick up the right isascii definition for K95: ckctel.c |
| . malloc... ckuath.c (new safe malloc routines for K95) |
| . Add author listing: ckuus5.c |
| . SSH Heartbeat support (K95 only): ckuus[23].c |
| . Prescan --height and --width to avoid window resizing at startup: ckuusy.c |
| . Add checks for fatal() or doexit() called from sysinit(): ckuusx.c |
| . Move some K95-specific definitions to ckoker.h: ckcdeb.h |
| . Add support for ON_CD macro in zchdir(): ckufio.c |
| . Add a command to let FTP client authenticate with SSLv2: ckcftp.c |
| . Fix parsing of FTP file facts like "UNIX.mode": ckcftp.c |
| |
| ON_CD will need some explaining (to be done). It's implemented for Unix, |
| VMS, WIndows, and OS/2. |
| |
| The FTP file facts fix came from first exposure to the new OpenBSD FTP |
| server: ftp://ftp7.usa.openbsd.org/pub/os/OpenBSD/3.3/i386/ |
| The period in "UNIX.mode" caused an erroneous word break, adding junk to |
| the filename. |
| |
| About the malloc changes, Jeff says "K95 is not behaving well in low memory |
| environments. I'm not sure that C-Kermit does much better. The program does |
| not crash but it certainly does not behave the way the user expects it to. |
| I'm beginning to think that any malloc() error should be treated as fatal." |
| |
| Not visible in these changes because it's in K95-specific modules: Jeff made |
| SET ATTRIBUTES OFF and SET ATTRIBUTES DATE OFF apply to XYZMODEM transfers. |
| |
| From Jeff, 11 May 2003: |
| . Add support for SSH Keepalive to relevant SET command (K95): ckuus3.c |
| . Reduce max overlapped i/o requests from 30 to 7 (K95): ckuus7.c |
| . Don't call sysinit() in fatal(): ckuusx.c. |
| . Some new conditionalizations for SSL module: ck_ssl.c |
| |
| The doublequote-parsing fixes from March and April broke the SWITCH statement, |
| which is implemented by internally defining, then executing, a macro. If I |
| drop back to the old dumb handling of doublequotes, everything is fixed except |
| the problem of March 17th. But can we really expect getncm() to pre-guess |
| what the parser is going to do? getncm()'s only job is to find command |
| boundaries, which are represented by commas. Commas, however, is needed IN |
| commands too. We take a comma literally if it is quoted with \, or is inside |
| a matched pair of braces, parens, or doublequotes. It is not unreasonable to |
| require a doublequote in a macro definition to be prefixed by \ when it is to |
| be taken literally. The proper response to Jason Heskett's complaint of March |
| 17th should have been to leave the code alone and recommand an appropriate |
| form of quoting: |
| |
| def TEST { |
| .foo = {X\"} |
| sho mac foo |
| } |
| |
| And this is what I have done. Another reason for sticking with the old method |
| is that it's explainable. The "improved" method, even if it worked, would be |
| be impossible to explain. Btw, in testing this I noticed that the switch-test |
| script made 8.0.201 dump core. Today's version is fine. The problem with |
| quoted strings inside of IF {...} clauses and FOR and WHILE loops is fixed |
| too. Perhaps "unbroken" would be a better word. ckuus5.c, 11 May 2003. |
| |
| Vace discovered that FTP MGET /EXCEPT:{... (with an unterminated /EXCEPT list) |
| could crash Kermit. Fixed in ckcftp.c, 11 May 2003. |
| |
| CONTINUE should not affect SUCCESS/FAILURE status. ckuusr.c, 11 May 2003. |
| |
| Fixed an oversight that goes back 15 years. While \{123} is allowed for |
| decimal codes, \x{12} and \o{123} were never handled. ckucmd.c, 11 May 2003. |
| |
| Added support for Red Hat <baudboy.h> and /usr/sbin/lockdev. Supposedly this |
| allows Kermit to be installed without setuid or setgid bits and still be able |
| to lock and use the serial device. Compiles and starts, but not tested. |
| ckcdeb.h, makefile, ckutio.c, ckuus5.c, 16 May 2003. |
| |
| From Jeff: FTP ASCII send data to host when FTP /SSL was in use was broken. |
| ftp_dpl is set to Clear when FTP /SSL is in use. This was causing the data to |
| be written to the socket with send() instead of the OpenSSL routines. |
| ckcftp.c, ckuath.c, 21 May 2003. |
| |
| From Jeff: Stuff for Kerberos 524: ckcdeb.h. Fixes for FTP; "FTP ASCII send |
| data did not properly compute the end of line translations. On Unix (and |
| similar platforms) the end of line was correct for no character sets but |
| incorrect when character sets were specified. On Windows/OS2, the end of line |
| was correct when character sets were specified and incorrect when they were |
| not. On MAC, both were broken. Also, FTP Send Byte counts were incorrect |
| when character sets were specified." ckcftp.c. 17 Jun 2003. |
| |
| From Jeff: fixes to HTTP /AGENT: and /USER: switch action: ckcnet.c ckuus3.c |
| ck_crp.c ckcftp.c ckuus2.c ckuusy.c ckuusr.c ckcnet.h, 21 Jun 2003. |
| |
| From Jeff: Fix SET DIALER BACKSPACE so it can override a previous SET KEY |
| (e.g. from INI file): ckuus7.c. Some SSL/TLS updates: ck_ssl.c. HTTP support |
| for VMS and other VMS improvements (e.g. a way to not have to hardwire the |
| C-Kerit version number into the build script) from Martin Vorlaender: |
| ckcnet.h, ckuus[r3].c, ckcdeb.h, ckvtio.c, ckcnet.c, ckvker.com. Built on |
| Solaris (gcc/ansi) and SunOS (cc/k&r). The new VMS script tests the VMS |
| version and includes HTTP support only for VMS 6.2 or later. 2 Jul 2003. |
| |
| Tried to build on our last VMS system but it seems to be dead. Looks like a |
| head crash (makes really loud noises, boot says DKA0 not recognized) (fooey, I |
| just paid good money to renew the VMS license). Tried building at another |
| site with: |
| |
| Process Software MultiNet V4.3 Rev A-X, |
| Compaq AlphaServer ES40, OpenVMS AXP V7.3 |
| Compaq C V6.4-008 on OpenVMS Alpha V7.3 |
| |
| Had to make a few corrections to ckvker.com. But still, compilation of |
| ckcnet.c bombs, indicating that the SELECT definition somehow got lost |
| somewhere since the 209 release (i.e. no SELECT type is defined so it falls |
| thru to "SELECT is required for this code"). But I don't see anything in |
| ckcdeb.h or ckcnet.[ch] that would explain this. Not ckvker.com either |
| (putting the old one back gives the same result). OK, I give up, maybe it's |
| just that I haven't tried building it on MultiNet recently. What about UCX? |
| Aha, builds fine there except for warnings about mlook, dodo, and parser in |
| ckvfio.c (because of ON_CD) -- I suppose I have #include <ckucmd.h>... (done) |
| Anyhow it builds OK and the HTTP code is active and almost works (HTTP OPEN |
| works; HTTP GET seems to succeed but creates an empty file every time). Tried |
| building under MultiNet at another installation; same bad result. |
| |
| OK so why won't it build for MultiNet? Comparing ckcnet.c with the 209 |
| version, not a single #ifdef or #include is changed. Tried building with |
| p3="NOHTTP" -- builds OK, aha. Where's the problem? Not ckcnet.h... |
| Not ckcdeb.h... OK I give up, will revisit this next time I get time to |
| do anything with the code. |
| |
| Later Jeff said "Martin did not implement VMS networking for the HTTP code. |
| All he did was activate the #define HTTP which happens to work because his |
| connections are using SSL/TLS connections. http_inc(), http_tol(), etc have |
| no support for VMS networking regardless of whether it is UCX or MULTINET. |
| The vast majority of HTTP connections are not secured by SSL/TLS. It makes no |
| sense to support HTTP on VMS until someone is willing to either do the work or |
| pay have the work done to implement VMS networking in that code base." So the |
| fix is to not enable HTTP for VMS after all. Removed the CKHTTP definition |
| for VMS from ckcdeb.h, 6 Jul 2003. |
| |
| Fixed ckvfio.c to #include <ckuusr.h> (instead of <ckucmd.h>) to pick up |
| missing prototypes. 6 Jul 2003. |
| |
| From Arthur Marsh: solaris2xg+openssl+zlib+srp+pam+shadow and the corresponding |
| Solaris 7 target. makefile, 6 Jul 2003. |
| |
| Remove duplicate #includes for <sys/stat.h>, <errno.h>, and <ctype.h> from |
| ckcftp.c. 6 Jul 2003. |
| |
| Add -DUSE_MEMCPY to Motorola SV/68 targets because of shuffled #includes in |
| ckcftp.c. 8 Jul 2003. |
| |
| From Jeff: Fix problems mixing SSL and SRP without Kerberos. Plus a few minor |
| #define comment changes and a reshuffling of #defines in ckcdeb.h to allow me |
| to build on X86 Windows without Kerberos. ckcdeb.h, ck_crp.c, ckuath.c, |
| 10 Jul 2003. |
| |
| From Jeff: updated ckuat2.h and ckuath.c, 29 Jul 2003. |
| |
| Mats Peterson noticed that a very small Latin-1 file would be incorrectly |
| identified as UCS-2 by scanfile(). Fixed in ckuusx.c, 29 Jul 2003. |
| |
| Fixed ACCESS macro definition to account for the fact that FIND is now a |
| built-in command. ckermit.ini, 30 Jul 2003. |
| |
| From Jeff: Fix for typo in urlparse() (svc/hos): ckuusy.c, 18 Aug 2003. |
| |
| From Jeff: Redhat9 makefile targets (needed for for OpenSSL 0.9.7): |
| makefile, 19 Aug 2003. |
| |
| GREP /NOLIST and /COUNT did too much magic, with some undesirable fallout: |
| "GREP /NOLIST /COUNT:x args" printed "file:count" for each file. "GREP |
| /COUNT:x /NOLIST args" did not print "file:count", but neither did it set the |
| count variable. Removed the magic. Also one of the GREP switches, |
| /LINENUMBERS, was out of order. Fixed in ckuus6.c, 20 Aug 2003. |
| |
| From Jeff: "Reorganizing code to enable building with different subsets of |
| options; a few typos corrected as well." ckcdeb.h, ckuver.h (for RH9), |
| ckcnet.c, ckuus7.c, ckuus3.c: 24 Aug 2003. |
| |
| Scanfile misidentified a big PDF file as text because the first 800K of it |
| *was* text (most other PDF files were correctly tagged as binary). Fixed |
| by adding a check for the PDF signature at the beginning of the file. |
| scanfile(): ckuusx.c, 25 Aug 2003. |
| |
| Ditto for PostScript files, but conservatively. Signature at beginning of |
| file must begin with "%!PS-Ado". If it's just "%!" (or something nonstandard |
| like "%%Creator: Windows PSCRIPT") we do a regular scan. Also added "*.ps" |
| to all binary filename patterns. ckuusx.c, 4 Sep 2003. |
| |
| Ditto (but within #ifndef NOPCLSCAN) for PCL (<ESC>E) and PJL (<ESC>%) files, |
| but no binpatterns (note: ".PCL" is the extension for TOPS-20 EXEC scripts). |
| ckuusx.c, 4 Sep 2003. |
| |
| Added comments about OpenSSL 0.9.7 to all linux+openssl targets. |
| makefile, 4 Sep 2003. |
| |
| From Jeff: Added - #define ALLOW_KRB_3DES_ENCRYPT. When this symbol is defined |
| at compilation Kermit will allow non-DES session keys to be used during Telnet |
| Auth. These session keys can then be used for Telnet Encrypt. The reason |
| this is not compiled on by default is that the MIT Kerberos Telnet does not |
| follow the RFC for constructing keys for ENCRYPT DES when the keys are longer |
| than 8 bytes in length. ckuath.c, ckuus5.c, 4 Sep 2003. |
| |
| "ftp mget a b c" succeeded if one or more of the files did not exist, even |
| with "set ftp error-action proceed". This is because the server's NLST file |
| list does not include any files that don't exist, so the client never even |
| tries to get them. Fortunately, the way the code is structured, this one was |
| easy to fix. ckcftp.c, 14 Sep 2003. |
| |
| From Jeff: Corrected code in ckcnet.c to ensure that Reverse DNS Lookups are |
| not performed if tcp_rdns is OFF. Fixed ck_krb5_getrealm() to actually return |
| the realm of the credentials cache and not the default realm specified in the |
| krb5.conf file. Previously krb5_cc_get_principal() was not being called. |
| Fixed ck_krb5_is_tgt_valid() to test the TGT in the current ccache and not the |
| TGT constructed from the default realm. ckcnet.c, ckuath.c, 14 Sep 2003. |
| |
| Marco Bernardi noticed that IF DIRECTORY could produce a false positive if |
| the argument directory had previously been referenced but then removed. This |
| is because of the clever isdir() cache that was added to speed up recursion |
| through big directory trees. Changed IF DIRECTORY to make a second check |
| (definitive but more expensive) if isdir() succeeds, and changed the |
| directory-deleting routine, ckmkdir(), to flush the directory cache (UNIX |
| only -- this also should be done in K95 but it's not critical). This was |
| done by adding a routine, clrdircache() to ckufio.c, which sets prevstat |
| to -1 and prevpath[0] to NUL. ckcfn3.c, ckuus6.c, ckufio.c, 18 Sep 2003. |
| |
| Marco reported the second fix still didn't work for him (even though it did |
| for me). Rather than try to figure out why, I concluded that the directory |
| cache is just not safe: a directory found a second ago might have been deleted |
| or renamed not only by Kermit but by some other process. Why did I add this |
| in the first place? The log says: |
| |
| Some debug logs showed that isdir() is often called twice in a row on the |
| same file. Rather than try to sort out clients, I added a 1-element cache |
| to Unix isdir(). ckufio.c, 24 Apr 2000. |
| |
| Experimentation with DIR and DIR /RECURSIVE does not show this happening at |
| all. So I #ifdef'd out the directory cache (see #ifdef ISDIRCACHE in ckufio.c; |
| ISDIRCACHE is not defined) and backed off the previous changes: ckufio.c, |
| ckcfn3.c, ckuus6.c, 28 Sep 2003. |
| |
| From Jeff: Replace the compile time ALLOW_KRB_3DES_ENCRYPT with a run-time |
| command SET TELNET BUG AUTH-KRB5-DES which defaults to ON: ckctel.[ch], |
| ckuus[234].c, ck_crp.c, ckuath.c. 4 Oct 2003. |
| |
| Allow DIAL RETRIES to be any positive number, and catch negative ones. |
| Also added code to check for atoi() errors (e.g. truncation). At least on |
| some platforms (e.g. Solaris) atoi() is supposed to set errno, but it |
| doesn't. ckuus3.c, ckucmd.c, 4 Oct 2003. |
| |
| Added /DEFAULT: to ASK-class commands (ASK, ASKQ, GETOK): |
| |
| . For popups: no way to send defaults to popup_readtext() or popup_readpass(). |
| . For GUI ASK[Q], pass default to gui_txt_dialog(). |
| . For GUI GETOK, convert "yes" "ok" or "no" default to number for uq_ok(). |
| . For Text GETOK, add default to cmkey(). |
| . For Text ASK[Q], add default to cmtxt(). |
| . For GETC, GETKEY, and READ: no changes. |
| |
| GETOK, ASK, and ASKQ with /TIMEOUT: no longer fail when the timer goes off |
| if a /DEFAULT was supplied. The GUI functions (uq_blah) don't seem to |
| support timeouts. Only the text version has been tested. ckuus[26].c, |
| 4 Oct 2003. |
| |
| From Jeff: add /DEFAULT: for popups. ckuus6.c. 6 Oct 2003. |
| |
| Change SET DIAL INTERVAL to be like SET DIAL RETRIES. ckuus[34].c, 6 Oct 2003. |
| |
| Added target for HP-UX 10/11 + OpenSSL built with gcc, from Chris Cheney. |
| Makefile, 12 Oct 2003. |
| |
| From Jeff, 6 Nov 2003: |
| . #ifdef adjustments: ckcftp.c, ckcdeb.h |
| . Fix spurious consumption of first byte(s) on Telnet connection: ckctel.c |
| . Another HP PJL test for scanfile: ckuusx.c. |
| . K95: Recognize DG4xx protected fields in DG2xx emulation: ckuus7.c. |
| . Add SSLeay version display to SHOW AUTH command: ckuus7.c |
| . Improved SET MOUSE CLEAR help text: ckuus2.c. |
| . Improved Kverbs help text: ckuus2.c (+ new IBM-3151 Kverbs). |
| . Some changes to ck_ssl.c, ckuath.c. |
| |
| From PeterE, 10 Nov 2003: |
| . Improved HP-UX 10/11 makefile targets for OpenSSL. |
| . #ifdef fix for OpenSSL on HP-UX: ck_ssl.c. |
| |
| Another new makefile from PeterE with improved and integrated HP-UX targets. |
| 12 Nov 2003. |
| |
| A couple fixes to the solaris9g+krb5+krb4+openssl+shadow+pam+zlib target |
| from Jeff. Added a solaris9g+openssl+shadow+pam+zlib target. makefile, |
| 21 Nov 2003. |
| |
| From Jeff, 30 Nov 2003: |
| . Fix SEND /MOVE-TO: ckuusr.c. |
| . Fix K95 SET TITLE to allow quotes/braces around text: ckuus7.c. |
| . Improved "set term autodownload ?" response: ckuus5.c. |
| . Fix SHOW FEATURES to specify the protocol for encryption: ckuus5.c |
| . Make {SEND, RECEIVE} {MOVE-TO, RENAME-TO} work for XYZMODEM (K95 only). |
| |
| From Jeff: 7 Jan 2004: |
| . At one point Frank started to add a timer parameter to the |
| uq_txt() function but he only did it for the non-ANSI |
| compilers. I added it for the ANSI compilers, fixed the |
| prototypes and provided a default value easily changed |
| DEFAULT_UQ_TIMEOUT: ckcker.h, ckuus[36].c, ck_ssl.c, ckcftp.c, ckuath.c. |
| . Fixed SET TERMINAL DEBUG ON (typo in variable name): ckuus7.c. |
| . Fixed BEEP INFORMATION; previously it made no sound, now uses |
| MB_ICONQUESTION. ckuusx.c. |
| |
| From Ian Beckwith <ian@nessie.mcc.ac.uk> (Debianization), 7 Jan 2004: |
| . Search dir/ckermit for docs, as well as dir/kermit in cmdini(): ckuus5.c. |
| . New linux+krb5+krb4+openssl+shadow+pam target (kitchen sink minus SRP, |
| which Debian does not distribute): makefile. |
| ? Mangles the DESTDIR support in makefile to install into a staging area: |
| makefile (I didn't take this one yet). |
| |
| Updated copyright notices for 2004, all modules. 7 Jan 2004. |
| |
| Added INPUT /NOMATCH, allowing INPUT to be used for a fixed amount of time |
| without attempting to match any text or patterns, so it's no longer |
| necessary to "input 600 STRING_THAT_WILL_NEVER_COME". If /NOMATCH is |
| included, INPUT succeeds if the timeout expires, with \v(instatus) = 1 |
| (meaning "timed out"); fails upon interruption or i/o error. ckuusr.h, |
| ckuus[r24].c, 7 Jan 2004. |
| |
| Added SET INPUT SCALE-FACTOR <float>. This scales all INPUT timeouts by the |
| given factor, allowing time-sensitive scripts to be adjusted to changing |
| conditions such as congested networks or different-speed modems without |
| having to change each INPUT-class command. This affects only those timeouts |
| that are given in seconds, not as wall-clock times. Although the scale |
| factor can have a fractional part, the INPUT timeout is still an integer. |
| Added this to SHOW INPUT, and added a \v(inscale) variable for it. |
| ckuusr.h, ckuus[r257].c, 7 Jan 2004. |
| |
| undef \%a, \fverify(abc,\%a) returns 0, which makes it look as if \%a is a |
| string composed of a's, b's, and/or c's, when in fact it contains nothing. |
| Changed \fverify() to return -1 in this case. ckuus4.c, 12 Jan 2004. |
| |
| \fcode(xxx) returned an empty string if its argument string was empty. This |
| makes it unsafe to use in arithmetic or boolean expressions. Changed it to |
| return 0 if its argument was missing, null, or empty. ckuus4.c, 12 Jan 2004. |
| |
| Updated \verify() and \fcode() help text. ckuus2.c, 12 Jan 2004. |
| |
| While setting up IKSD, Ian Beckwith noticed that including the --initfile: |
| option caused Kermit to start parsing its own Copyright string as if it were |
| the command line, and eventually crash. I couldn't reproduce on Solaris / |
| Sparc but I could in Linux / i386 (what Ian is using) -- a change from Jeff |
| on 28 Apr 2003 set the command-line arg pointer to a literal empty string in |
| prescan() about line 1740 of of ckuus4.c; the pointer is incremented next |
| time thru the loop, resulting in random memory being referenced. Fixed by |
| setting the pointer to NULL instead of "". ckuus4.c, 12 Jan 2004. |
| |
| declare \&a[999999999999999] would dump core on some platforms. atoi() |
| or whatever would truncate the dimension to maxint. When we add 1 to the |
| result, we get a negative number, which is used as an index, loop test, etc. |
| Fixed both dodcl() and dclarray() to check for (n+1 < 0). ckuus[r5].c, |
| 12 Jan 2004. |
| |
| Unix zchki() would fail on /dev/tty, which is unreasonable. This prevented |
| FOPEN /READ from reading from the terminal. zchki() already allowed for |
| /dev/null, so I added /dev/tty to the list of specials. Ditto for FOPEN |
| /WRITE and zchko(). ckufio.c 13 Jan 2004. |
| |
| Added untabify() routine to ckclib.[ch], 13 Jan 2004. |
| Added FREAD /TRIM and /UNTABIFY. ckuus[27].c, 13 Jan 2004. |
| Added \funtabify(). ckuusr.h, ckuus[24].c, 13 Jan 2004. |
| |
| Dat Nguyen noticed that (setq u 'p') followed by (u) dumped core. This was |
| caused by an over-clever optimization that skipped mallocs for short |
| literals, but then went on later to try to free one that hadn't been |
| malloc'd. Fixed in dosexp(): ckuus3.c, 14 Jan 2004. |
| |
| Catch another copyright date. ckuus5.c, 14 Jan 2004. |
| |
| Fixed SWITCH to work even when SET COMMAND DOUBLEQUOTE OFF (from Mark |
| Sapiro). ckuus5.c, 15 Jan 2004. |
| |
| Changed version to 8.0.211 so scripts can test for recently added features. |
| ckcmai.c, 15 Jan 2004. |
| |
| Fixed a glitch in K95 "help set port". ckuus2.c, 20 Jan 2004. |
| |
| Fix from Jeff: Connections to a TLS-aware protocol which require a reconnect |
| upon certificate verification failure could not reconnect if the connection |
| was initiated from the command line or via a URL. ckctel.c ckcmai.c |
| ckuusr.c ckuus7.c ckuusy.c, 20 Jan 2004. |
| |
| From Alex Lewin: makefile target and #ifdef for Mac OS X 10.3 (Panther): |
| makefile, ckcnet.c, 7 Feb 2004. |
| |
| Added KFLAGS to sco32v507 targets to make PTY and SSH commands work. The |
| same flags could probably also be added to earlier OSR5 targets but they |
| have not been tested there. makefile, 7 Feb 2004. |
| |
| Checked a complaint that "LOCAL &a" did not make array \&a[] local. Indeed |
| it did not, and can not. You have to use the full syntax in the LOCAL |
| command, "LOCAL \&a[]", or else it doesn't know it's not a macro named &a. |
| 7 Feb 2004. |
| |
| Fixed some confusion in creating IKSD database file and temp-file names. |
| I was calling zfnqfp() without remembering that the path member of the |
| returned struct included the filename, so to get just the directory name, |
| I needed to strip the filename from the right. ckuusy.c, 2 Mar 2004. |
| |
| New ckuath.c, ck_ssl.c from Jeff. 2 Mar 2004. |
| |
| Updated Jeff's affiliation in VERSION command text. ckuusr.c, 2 Mar 2004. |
| |
| Designation changed from Dev.00 to Beta.01. ckcmai.c, 2 Mar 2004. |
| |
| Fixed zrename() syslogging -- it had success and failure reversed. |
| Beta.02: ckufio.c, 4 Mar 2004. |
| |
| Problem: when accessing IKSD via a kermit:// or iksd:// URL, and a user ID |
| is given but no password, doxarg() set the password to "" instead of leaving |
| it NULL, but all the tests in dourl() are for NULL. Fixed in doxarg(): |
| ckuusy.c, 5 Mar 2004. |
| |
| The logic in dourl() about which macro to construct (login and connect, |
| login and get directory listing, or login and fetch a file) was a bit off, |
| so all three cases were not handled. ckcmai.c, 5 Mar 2004. |
| |
| Trial Beta builds: |
| . HP-UX B.11.11 PA-RISC |
| . HP-UX B.11.23 IA64 |
| . Tru64 4.0G Alpha |
| . Tru64 5.1B Alpha |
| . Debian 3.0 i386 |
| . Red Hat ES 2.1 i386 |
| . Slackware 9.1 i386 |
| . VMS 7.3-1 Alpha + UCX 5.3 |
| . VMS 7.3-1 Alpha no TCP/IP |
| . VMS 7.3 Alpha MultiNet 4.3 A-X |
| . SCO UnixWare 7.1.4 i386 |
| . SCO OSR5.0.7 i386 |
| . Solaris 9 Sparc |
| |
| Fixed compiler warning in doxarg() caused by typo (NULL instead of NUL) in |
| the 5 March doxarg() edit. ckuusy.c, 9 Mar 2004. |
| |
| IKSD (kermit://) command-line URLs did not work right if the client had |
| already preauthenticated with Kerberos or somesuch because they tried to log |
| in again with REMOTE LOGIN. The macros constructed in doxarg() needed to |
| check \v(authstate) before attempting REMOTE LOGIN. ckcmai.c, 10 Mar 2004. |
| |
| Added ckuker.nr to x.sh (ckdaily upload) and updated ckuker.nr with current |
| version number and dates. 10 Mar 2004. |
| |
| Replaced hardwired references to /usr/local in makefile with $(prefix) |
| (which defaults to /usr/local, but can be overridden on the command line), |
| suggested by Nelson Beebe for use with Configure. 10 Mar 2004. |
| |
| From Nelson Beebe: In the Kermit makefile in the install target commands, |
| line 981 reads: |
| |
| cp $(BINARY) $(DESTDIR)$(BINDIR)/kermit || exit 1;\ |
| |
| Could you please add this line before it: |
| |
| rm -f $(DESTDIR)$(BINDIR)/kermit;\ |
| |
| Some sites (mine included) keep multiple versions of software around, |
| with hard links between $(prefix)/progname and $(prefix)/progname-x.y.z. |
| Failure to remove the $(prefix)/progname at "make install" time then |
| replaces the old $(prefix)/progname-x.y.z with the new one, destroying |
| an old version that the site wanted to be preserved. makefile, 10 Mar 2004. |
| |
| Minor syntax and typo fixes (mostly prototypes): ckcdeb.h, ckcfns.c, |
| ckclib.c, ckufio.c, ckuusr.h, ckuusx.c, 10 Mar 2004. (I still have a few |
| more to do.) |
| |
| Added CC=$(CC) CC2=$(CC2) to many (but not all) makefile targets that |
| reference other makefile targets. On some platforms (notably AIX, Solaris, |
| SunOS) there are specific targets for different compilers, so I skipped |
| those. makefile, 10 Mar 2004. |
| |
| Added error checking to kermit:// URL macros, so they don't plow ahead |
| after the connection is closed. ckcmai.c, 11 Mar 2004. |
| |
| Added FreeBSD 4.9 and 5.1 targets (only the herald is affected). |
| makefile, ckuver.h, 11 Mar 2004. |
| |
| Added "LIBS=-lcrypt" to bsd44 targets since nowadays crypt is almost always |
| unbundled from libc. Also added explanatory notes. makefile, 11 Mar 2004. |
| |
| Changed MANDIR to default to $(manroot)/man/man1, and manroot to default |
| to $(prefix). More adding of CC=$(CC) clauses: {Free,Net,Open}BSD, 4.4BSD. |
| makefile, 11 Mar 2004. |
| |
| Miscellaneous cleanups: ckuusx.c, ckcnet.c, ckufio.c, 11 Mar 2004. |
| |
| Corrected the check in the linux target to see if /usr/include/crypt.h |
| exists, and if so to define HAVE_CRYPT_H, which is used in ckcdeb.h to |
| #include <crypt.h> to get the prototype for crypt() and prevent bogus |
| conversions on its return type on 64-bit platforms (the previous test wasn't |
| quite right and the resulting symbol wasn't spelled right). makefile, |
| 12 Mar 2004. |
| |
| From Jeff, 14 Mar 2004: |
| . Initialize localuidbuf[] in tn_snenv(): ckctel.c. |
| . Remove remote-mode checks in hupok() for K95G only (why?): ckuus3.c. |
| . Add help text for new K95-only TYPE /GUI switches: ckuus2.c. |
| . TYPE /GUI parsing, ...: ckuusr.c. |
| . TYPE /GUI action, dotype(): ckuus6.c |
| . Change Jeff's affiliation: most modules. |
| |
| 20 Mar 2004: Looked into adding long file support, i.e. handling files more |
| than 2GB (or 4GB) long. Discovered very quickly this would be a major |
| project. Each platform has a different API, or environment, or transition |
| plan, or whatever -- a nightmare to handle in portable code. At the very |
| least we'll need to convert a lot of Kermit variables from long or unsigned |
| long to some new Kermit type, which in turn is #defined or typedef'd |
| appropriately for each platform (to off_t or size_t or whatever). Then we |
| have to worry about the details of open() vs fopen(); printf() formats (%lld |
| vs %Ld vs %"PRId64"...), platforms like HP-UX where you might have to use |
| different APIs for different file systems on the same computer, etc. We'll |
| need to confront this soon, but let's get a good stable 8.0.211 release out |
| first! Meanwhile, for future reference, here are a few articles: |
| |
| General: http://freshmeat.net/articles/view/709/ |
| Linux: http://www.ece.utexas.edu/~luo/linux_lfs.html |
| HP-UX: http://devrsrc1.external.hp.com/STK/partner/lg_files.pdf |
| Solaris: http://wwws.sun.com/software/whitepapers/wp-largefiles/largefiles.pdf |
| |
| Looked into FTP timeouts. It appears I can just call empty() (which is |
| nothing more than a front end for select()) with the desired timeout before |
| any kind of network read. If it returns <= 0, we have a timeout. This is |
| not quite the same as using alarm() / signal() around a recv() (which could |
| get stuck) but alarm() / signal() are not not used in the FTP module and are |
| not naturally portable to Windows, but select() is already in use in the FTP |
| module for both Unix and Windows. This form of timeout could be used |
| portably for both command response and data reads. What about writes to the |
| command or data socket? They can get stuck for hours and hours without |
| returning too, but the select() approach won't help here -- we need the |
| actual send() or recv() to time out, or be wrapped in an alarm()/signal() |
| kind of mechanism. But if we can do that for sends, we can also do it for |
| receives. Better check with Jeff before I start programming anything. |
| 20 Mar 2004. |
| |
| Later: Decided to postpone the above two projects (ditto IPv6) until after |
| 8.0.211 is released because both will have major impacts on portability. |
| Grumble: all i/o APIs should have been designed from the beginning with a |
| timeout parameter. To this day, hardly any have this feature. |
| |
| 3-4 Apr 2004: More 8.0.211 Beta.02+ test builds: |
| |
| . FreeBSD 3.3 |
| . FreeBSD 4.4 |
| . Linux Debian 2.1 |
| . Linux RH 6.1 |
| . Linux RH 7.1 |
| . Linux RH 7.2 |
| . Linux RH 9 (with 84 different combinations of feature selection) |
| . Linux SuSE 6.4 |
| . Linux SuSE 7.0 |
| . NetBSD 1.4.1 |
| . NetBSD 1.5.2 |
| . OpenBSD 2.5 |
| . OpenBSD 3.0 |
| . QNX 4.25 |
| . SCO UnixWare 2.1.3 |
| . SCO UnixWare 7.1.4 |
| . SCO OpenServer 5.0.7 |
| . SCO XENIX 2.3.4 (no TCP) |
| |
| Changes needed: None. |
| |
| Problem: SCO XENIX 2.3.4 network build failed in the FTP module with |
| header-file syntax and conflicting-definitions trouble. I'm not going to |
| try to fix it; 8.0.209 built OK with FTP, so we'll just keep that one |
| available. |
| |
| Got access to VMS 8.1 on IA64. Building the nonet version of C-Kermit |
| required minor modifications to ckvvms.h, ckv[ft]io.c, and ckvcon.c, to |
| account for a third architecture. Also to SHOW FEATURES in ckuus5.c. Once |
| that was done, the UCX 5.5 version built OK too. Starts OK, makes Telnet |
| connection OK, sends files. Has some obvious glitches though -- "stat" |
| after a file transfer reports 0 elapsed time (in fact it was 00:09:48) and |
| 1219174400 cps (when in fact it was 10364). This doesn't happen on the |
| Alpha. Btw, the IA64 binary is twice as big as the Alpha one. Changed |
| to Beta.03. 5 Apr 2004. |
| |
| Fixed the ckdaily script to include the makefile and man page in the Zip |
| file (they were not included because the Zip file was intended mainly for |
| VMS users, but some Unix users prefer Zip to tar.gz). 6 Apr 2004. |
| |
| Traced problems in VMS/IA64 statistics report to rftimer()/gftimer() in |
| ckvtio.c, which use sys$ and lib$ calls to figure elapsed time. These work |
| on VAX and Alpha but not IA64. Sent a report to the chief engineer of the |
| IA64 VMS port; he says it's probably a bug in VMS 8.1 (which is not a real |
| release); he'll make sure it's fixed in 8.2. As an experiment, tried |
| swapping in the Unix versions of these routines (which call gettimeofday() |
| etc). They seem work just fine (it hung a couple times but I think that's |
| because the underlying system hung too; trying it later on a new connection, |
| it was fine; however I noticed a BIG discrepancy in throughput between |
| sending and receiving). Moved definitions for VMS64BIT and VMSI64 to |
| ckcdeb.h so all modules can use them and added them to the SHOW FEATURES |
| display. Added VMSV80 definition to build procedure. Beta.03+. ckcdeb.h, |
| ckcuus5.c, ckcvvms.h, ckvtio.c, ckvker.com, 6 Apr 2004. |
| |
| While doing the build-all, I noticed the VMS version did not build with |
| Multinet or older UCX versions, always with the same errors -- undeclared |
| variables, undefined symbols, all TCP/IP related. This didn't happen a |
| couple weeks ago... Somehow the order of #includes was messed up -- |
| ckuusr.h depended on symbols that are defined in ckcnet.h, but ckcnet.h |
| was being included after ckuusr.h... this was compounded by two missing |
| commas in ckvker.com. 11 Apr 2004. |
| |
| Removed Beta designation, released as 8.0.211, 10 Apr 2004. |
| |
| ---8.0.211--- |
| |
| I had somehow lost the edit to ckutio.c that changed the UUCP lockfile for |
| Mac OS X from /var/spool/uucp to /var/spool/lock. So I slipped it in and |
| re-uploaded version 8.0.211. You can tell the difference because SHOW |
| VERSIONS has a 17 Apr 2004 for the Communications I/O module. Also the 10.3 |
| executable now has a designer banner: "Mac OS X 10.3". makefile, ckuver.h, |
| ckutio.c, ckuus[45].c, 17 Apr 2004. |
| |
| *********************** |