C-Kermit 7.0 Bug List

As of: 27 Oct 2000

The following bugs have been noted in C-Kermit 7.0 as of the date shown above. Workarounds or patches are given if available. Fixes will be included in subsequent releases.

  1. If you try:

      kermit -g 

    where file does not exist in the client directory it returns the error:

      FAILURE: No filespec given!

    instead of:

      FAILURE: file does not exist.

  2. (Not a bug) True ISO 8601 date-time format is not supported: yyyymmddThhmmss or yyyymmdd hhmmss. Kermit supports yyyymmdd_hh:mm:ss (as documented).

  3. Log into IKSD
    GET file1 newname
    Switch to the client's command prompt
    SEND file2
    file2 is stored on IKSD as newname

  4. The new built-in LOGIN command will conflict with any existing LOGIN macros. This is always the case with new commands, but LOGIN is an especially likely name for a macro. To work around, either rename your LOGIN macro to something else, or else invoke it with "do login args".

  5. If a Hayes-command-set modem has "reset on DTR loss" set (&D3) and the modem prints OK upon reset, even when the reset happened because of DTR loss, Kermit can become mighty confused, especially after a HANGUP command. Elsa MicroLink modems (a German brand) have this peculiarity. The Kermit bug is that the HANGUP command will drop DTR even if you SET MODEM HANGUP-METHOD MODEM-COMMAND, if the modem command fails. C-Kermit has always operated this way on the assumption that if the user says to HANGUP, the user means it. However, in this case, dropping DTR produces the unexpected OK response, and then all future dialog is out of sync. There is no way for the user to tell C-Kermit NOT to drop DTR under these circumstances. This will be fixed in the next release.

  6. (Not a bug.) All RENAME operations are performed using the underlying system services for renaming a file. If the underlying system service does not allow files to be renamed across disks, these operations fail. This includes the RENAME command and SEND, RECEIVE, or GET /MOVE-TO. This might not be clear enough in the documentation. Note that in UNIX, there is no obvious way for a user to tell whether two directories are on the same disk.

  7. Various typos and syntax errors in the makefile and source files. The most serious error prevented any and all SCO OSR5 builds from working. All these are fixed in C-Kermit 7.0.197, which simply allows builds to succeed that didn't in 7.0.196, but which makes no functional changes.

  8. Modem signal detection does not work in SCO OSR5 and Unixware 7 (it never did). Cause: POSIX definitions are required for high serial-port speeds, but prevent access to modem signals, since modem signal APIs are not defined in POSIX.

  9. The new SHIFT command does not decrement \v(argc) if it is used within an IF { } or ELSE { } block. Workaround: use a shadow variable and decrement it explicitly. To be fixed in the next release.

  10. When C-Kermit translates from (say) Latin-1 to UTF-8, it fails to convert the C1 control bytes. But text normally does not contain C1 characters so this but should have little or no impact.

  11. If you TAKE file arg1 arg2 -- i.e. specify args, then the same args remain in effect for the next TAKE command. This is not really a bug, since it's documented, but it's not optimal either, and probably will be changed in the next release, so don't depend on this behavior. In the meantime, work around by UNDEF'ing \%1, \%2, ... after any TAKE command that includes arguments.

  12. The HEBREW7 translation table has a typo preventing translation of the letter Tav. To be fixed in the next release.

  13. SET TRANSFER CHARACTER-SET TRANSPARENT sets up a garbage translation. Workaround: give a SET FILE CHARACTER-SET any-character-set command after SET TRANSFER CHARACTER-SET TRANSPARENT. To be fixed in the next release.

  14. Automatic text/binary mode switching via filename patterns should ignore pathname prefixes and backup suffixes, but does not. To be fixed in the next release.

  15. The MAIL command doesn't work at all due to an error in the command parser. Use the alternative form, SEND /MAIL:address filename, instead.

  16. The server side of the MAIL (SEND /MAIL) command doesn't work on HP-UX. It tries to deliver the mail with the "Mail" command, but in HP-UX the name of the command is "mailx". Similar problems might exist on other platforms. The only workaround is to put a symlink from Mail to mailx somewhere in your PATH: Mail -> /usr/bin/mailx.

  17. There are evidently some unguarded floating-point operations in the code, which cause the program to halt on certain platforms, such as COHERENT 4.2, if Kermit was not built with a special compiler-specific option (-f in this case) to enable these operations (the instance that was reported occurs only when the debug log is activated).

  18. The sequence:

      SET HOST /PTY command,
      INPUT timeout string

    fails immediately on just about every UNIX platform that supports the new PTY feature except SunOS. PTY command (which enters CONNECT mode), however, works OK. In other words, PTY connections on these platforms can't be scripted even though they work interactively. There is no runtime workaround, but the following source-level patch can be used. In source file ckupty.c, at about line 226, change:

      #ifndef O_NDELAY
      #ifdef O_NONBLOCK
      #define O_NDELAY O_NONBLOCK
      #endif /* O_NONBLOCK */
      #endif /* O_NDELAY */


      #ifdef PTYNOBLOCK
      #ifndef O_NDELAY
      #ifdef O_NONBLOCK
      #define O_NDELAY O_NONBLOCK
      #endif /* O_NONBLOCK */
      #endif /* O_NDELAY */
      #else /* PTYNOBLOCK */
      #ifdef O_NDELAY
      #undef O_NDELAY
      #endif /* O_NDELAY */
      #define O_NDELAY 0
      #endif /* PTYNOBLOCK */

    (and leave PTYNOBLOCK undefined). This patch has been verified on Red Hat Linux 5.2, Debian Linux 2.1, HP-UX 10.20, AIX 4.1, FreeBSD 2.2.8, SunOS 4.1.3, Tru64 UNIX 4.0E, Solaris 2.5.1, SINIX 5.42, BSDI 4.0.1, IRIX 6.5, and DG/UX 5.4R4.11, and is probably safe everywhere. However, should this patch prevent PTY operations from working when they worked before, the previous behavior can be restored by adding -DPTYNOBLOCK to CFLAGS, recompiling ckupty.c, and relinking.

  19. If you declare a LOCAL variable whose name is a prefix of a global variable (or a higher-level local variable), then upon exiting the context in which the local variable was declared, the preexisting variable's name is changed to the name of the local variable.

  20. The AOS/VS version of C-Kermit might not handle post-millenium dates correctly, but it's doubtful whether AOS/VS itself does either.

  21. In 'kermit -s *' (in UNIX), if the '*' list includes one or more directory names, C-Kermit skips as many regular files as there are directories in the list. This bug has been in C-Kermit forever, but was discovered only in C-Kermit 7.0.

  22. In UNIX, the command "copy somefile ." might not work as expected, and on some platforms not at all. In VMS, this form of the COPY command works, but the filetype (extension) is lost (e.g. "copy sys$login:login.com ." creates a file "login.;"). Workaround: don't specify "." as the target; use a filename instead. There are no problems with this form of the COPY command in Windows.

  23. C-Kermit built from the 7.0.197 or earlier sources on FreeBSD 4.0 loses its terminal modes after returning to the command prompt from the fullscreen file-transfer display, apparently because of a bug in the ncurses library. Symptom: command characters don't echo until you press the Return or Enter key. Workaround: SET TRANSFER DISPLAY to anything other than FULLSCREEN.

  24. ANSWER 0 (wait forever for a call to come in to the modem) might not work right. Workaround: use a large positive number rather than 0, and/or put the ANSWER command in a loop.

  25. SET DIAL METHOD PULSE has no effect. Workaround: SET DIAL PREFIX P.

  26. C-Kermit for QNX-32 has restrictive limits on loop, macro, buffer sizes. Rebuild with KFLAGS=-DBIGBUFOK. A new binary (with large sizes) is available here.

  27. Hardware flow control in C-Kermit for Solaris 2.4 and later does not work. Rebuild with KFLAGS=-DPOSIX_CRTSCTS.

  28. "-M" command-line option doesn't work for setting rlogin user ID.

  29. GOTO into the middle of a block is allowed but shouldn't be. Results are unpredictable if you use it; don't.

  30. Giving a BYE command to C-Kermit when it's in remote mode might make your terminal emulator hang up the connection and/or exit. The BYE command should not be allowed in remote mode. Workaround: Put "disable bye remote" in your startup file.

  31. HELP FUNCTION functionname is broken for several functions; to be fixed in the next release.

  32. CP1252 (Microsoft Windows Code Page 1252) is erroneously treated as a synonym for ISO 8859-1 Latin Alphabet 1. While the two sets are identical in the G1 area, CP1252 uses the C1 area for graphics rather than controls. To be fixed in the next release.

  33. The COPY /SWAP-BYTES command does not work right on some platforms due to sign extension. To be fixed in the next release.

  34. FSEEK /LINE channel LAST does not work if the channel is already positioned at the or after the beginning of the last line. Workaround: FREWIND the channel first. To be fixed in the next release.

  35. The TRANSLATE command does not work correctly on computers with Little Endian architecture (the most prominent examples are PCs with Intel or compatible CPUs, and the DEC/Compaq Alpha CPU). Workaround:

      set file ucs byte-order big-endian
      translate infile charset1 charaset2 outfile
      set file ucs byte-order little-endian

  36. RENAME foo bar, where foo is the name of a directory that contains exactly one file, creates a regular file bar from that file, rather than renaming the foo directory to bar. To be fixed in the next release.

  37. COPY foo bar, where bar is the name of a directory, might erroneously truncate the last character from the directory name, thus copying regular file foo to regular file ba. To be fixed in the next release.

  38. COPY does not work if the target is a directory name and any of /APPEND, /SWAP, /FROMB64, or /TOB64 are given. To be fixed in the next release.

  39. COPY, when given the /APPEND, /SWAP, /FROMB64, or /TOB64 options, does not check if the source and destination files arere identical; if they are, the file is clobbered. To be fixed in the next release.

  40. SEND /COMMAND doesn't work. To be fixed in the next release.

  41. SET COMMAND WIDTH and HEIGHT don't work. To be fixed in the next release.

  42. The \feval() function erroneously returns "-1" as the result of any attempt to divide by 0. This also can happen in some (but not all) numeric function arguments. To be fixed in the next release.

  43. The \fn2hex() and \fn2oct() functions do not accept arithmetic expressions, only scalar numbers or variables with scalar number values. To be fixed in the next release.

  44. In SEND /COMMAND { command } and any other command that accepts either switches or "fields", you can't include an equal sign (=) or colon (:) in the nonswitch field. Workaround: prefix the = or : with backslash (\). To be fixed in the next release.

  45. When Kermit is told to translate text from a 7-bit character set (to any character set), it does not check for 8-bit characters in the source text, and converts any 8-bit characters that might (but shouldn't) be there to random bytes instead of to '?' as it should. To be fixed in the next release.

  46. Any macro that tries to return a value consisting of anything followed by an \fexec() invocation gives incorrect results, e.g. "return A\fexec(foo)Z". To be fixed in the next release.

  47. The Multitech modem init string contains "%E1", which is not acceptable to certain older Multitech models such as the 224E. The "error-correction off" command contains "#L0", which is also not acceptable to the 224E. These commands are not needed and will be removed in the next release. In the meantime, you can work around with:

    if equal \v(modem) multitech {
        set modem command init \freplace(\v(m_init),%E1,)
        set modem command error-correction off \freplace(\v(m_init),#L0,)

  48. In SunOS, and probably in other OS's where C-Kermit uses 4.2BSD APIs, repeated INPUT commands on a serial port can fail due to redundant serial driver mode switching. To be fixed in the next release.

  49. When C-Kermit 7.0 sends an I packet (as it does, for example, at the beginning of any REMOTE command) and the ACK from the server has an empty Data field, C-Kermit does not respond correctly to the next packet it receives. This happens (e.g.) with KEA!VT340. To be fixed in the next release.

  50. If C-Kermit is sending a group of files, but fails to open one of the files in the group, it stops rather than going on to the next file. This is not exactly a bug, but a design feature. However, it would make more sense to proceed to the next file as, for example, FTP does. The next release of C-Kermit will do it too.

  51. When SET PROTOCOL is used to select an external protocol, file transfers are not recorded in the transaction log. This makes sense, since Kermit writes the transaction log, but some other program is transferring the files. But Kermit could at least make a note of the command line with which it invokes the external protocol, and the external program's completion code. The next release will do that.

  52. It is not possible to refer to a file whose name contains literal metacharacters in C-Kermit 7.0. This is supposed to work if you prefix such characters with backslash (e.g. "send foo\*bar"), and in fact this did work in C-Kermit 6.0, but it's broken in C-Kermit 7.0. It will be fixed in the next release.

  53. Transparent printing doesn't work right. When the end-of-job escape sequence is received, C-Kermit fails to close the printer; thus the job might not be spooled to the printer until C-Kermit exits, or at all. Also, the printer on/off sequences are passed through to the screen in reverse order. Also, Telnet protocol NVT NULs were improperly passed through rather than discarded. To be fixed in the next release.

  54. In BSDI/OS, RTS/CTS hardware flow control works only in one direction, due to improper definition of CRTSCTS in BSDI/OS termios.h. To be fixed in the next release.

  55. There's no way to include a relative directory (such as ".") in a SERVER GET-PATH and have its expansion deferred until the server receives a GET command. To be fixed in the next release.

  56. If you use an external protocol such as X, Y, or ZMODEM over a Telnet connection, it is likely not to work since the external program (such as sz) probably does not follow Telnet protocol quoting rules. If the computer on the other end of the connection supports Kermit protocol, use it instead. If not, you can make the connection through the regular Telnet client using the PTY command, e.g.:

      define ztelnet pty telnet -8 \%*
      ztelnet xyzcorp.com

    then the intermediate Telnet program will supply the needed quoting (at some cost in performance).

  57. If you use C-Kermit's ADD SEND-LIST command to define a SEND list, then put C-Kermit into SERVER mode, and then tell the client to GET files from it, C-Kermit fails to send them with the complaint "Too many files match wildcard". To be fixed in the next release.

  58. The SET DIAL TIMEOUT command is ignored for any values less than 60 seconds. To be fixed in the next release.

  59. Cancellation of streaming file transfers doesn't work very well. To be fixed in the next release.

  60. The SHIFT command does not adjust the \%* variable. To be fixed in the next release.

  61. If you SET MODEM TYPE to some kind of modem, then use SET MODEM COMMAND to customize some of its command strings, then SET MODEM TYPE to a different kind of modem, some of the customized command strings persist instead of being replaced by those from the new modem type. To be fixed in the next release.

  62. The \fsplit() function does not recognize any kind of grouping in the source string (e.g. quoting or bracketing of items that contain spaces). Also its treatment of the target array is a bit confusing when called repeatedly. To be fixed in the next release.

  63. The TRANSLATE command can sometimes convert record format (LF/CRLF) in addition to translating character sets. It should only translate character sets. To be fixed in the next release.

  64. The CRECEIVE command cannot be parsed. Workaround: Use RECEIVE /COMMAND instead. To be fixed in the next release.

  65. "LOCAL foo" did not make "foo" local if "foo" was not already defined at a higher level. To be fixed in the next release.

  66. \m(name) and \fdefinition(name) did not require an exact match. To be fixed in the next release.

  67. The IF VERSION command documented on p.372 of the book was never actually implemented. To be fixed in the next release. Workaround: use "if >= \v(version) number"

  68. The PTY and SET HOST PTY commands do allow for grouping of arguments. To be fixed in the next release.

  69. SHOW COMMUNICATIONS in HP-UX (at least in HP-UX 10.20) does not report the true state of the RTS signal. This seems to be an HP-UX bug.

  70. Passing \fexec() as an argument to a macro doesn't work. To be fixed in the next release. Workaround: assign the \fexec() result to a variable first, then pass the variable as the argument to the macro.

C-Kermit 7.0 Bug List / Columbia University / kermit@kermitproject.org / 27 Oct 2000