home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
old
/
ckermit80
/
edit206
/
ckc201.txt
< prev
next >
Wrap
Text File
|
2020-01-01
|
36KB
|
728 lines
C-KERMIT CHANGE LOG (Changes since 8.0.200 of 12 Dec 2001)
---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.
***********************