ckcbwr.txt
资源名称:cku197.tar.Z [点击查看]
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:55k
源码类别:
通讯/手机编程
开发平台:
Windows_Unix
- CKCBWR.TXT "Beware File" for C-Kermit Version 7.0 -*- text -*-
- As of C-Kermit version: 7.0.197
- This file last updated: 8 February 2000
- Authors: Frank da Cruz and Christine M. Gianone, Columbia University.
- Copyright (C) 1985, 2000,
- Trustees of Columbia University in the City of New York.
- All rights reserved. See the C-Kermit COPYING.TXT file or the
- copyright text in the ckcmai.c module for disclaimer and permissions.
- Report problems, suggestions, fixes, etc, to:
- The Kermit Project
- Columbia University
- 612 West 115th Street
- New York NY 10025-7799
- USA
- Email: kermit-support@columbia.edu
- Web: http://www.columbia.edu/kermit/
- News: comp.protocols.kermit.misc
- DOCUMENTATION
- Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Second Edition,
- 1997, Digital Press / Butterworth-Heinemann, Woburn, MA, ISBN 1-55558-164-1
- US single-copy price: $44.95; quantity discounts available. Available in
- computer bookstores or directly from Columbia University:
- The Kermit Project
- Columbia University
- 612 West 115th Street
- New York NY 10025-7799 USA
- Telephone: +1 (212) 854-3703
- Email: kermit-orders@columbia.edu
- Web: http://www.columbia.edu/kermit/
- The CKERMIT2.TXT file contains supplementary info for C-Kermit 7.0 to be
- used until the 3rd edition of the manual is ready.
- WHAT IS IN THIS FILE
- This is the "beware file" for C-Kermit. It contains hints and tips,
- frequently asked questions (and answers), troubleshooting advice, limitations
- and restrictions, known bugs, etc, that apply to all C-Kermit variations.
- This file is supplemented by a platform-specific "beware file" for each major
- system where C-Kermit runs:
- ckubwr.txt - All variations of UNIX: Linux, HP-UX, AIX, SCO, Solaris, etc.
- ckvbwr.txt - Compaq / Digital Equipment Corporation VMS and OpenVMS
- cklbwr.txt - Stratus VOS
- ckdbwr.txt - Data General AOS/VS
- ckmbwr.txt - Apple Macintosh
- ckibwr.txt - Commodore Amiga
- cksbwr.txt - Atari ST
- ck9bwr.txt - Microware OS-9
- ckpbwr.txt - Bell Labs Plan 9
- This file contains the following sections:
- (0) BUGS DISCOVERED SINCE C-KERMIT 7.0 WAS RELEASED
- (1) INCOMPATIBLE CHANGES
- (2) THE C-KERMIT COMMAND PARSER
- (3) MULTIPLE SESSIONS
- (4) NETWORK COMMUNICATION
- (5) THE SERVICES DIRECTORY
- (6) MODEMS AND DIALING
- (7) DIALING HINTS AND TIPS
- (8) TERMINAL SERVERS
- (9) TERMINAL EMULATION
- (10) KEY MAPPING
- (11) THE TRANSMIT COMMAND
- (12) FILE TRANSFER
- (13) SCRIPT PROGRAMMING
- (0) BUGS DISCOVERED SINCE C-KERMIT 7.0 WAS RELEASED
- The following bugs are known but not yet fixed:
- 1. If you try:
- kermit -g <file>
- 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. True ISO 8601 date-time format is not supported: yyyymmddThhmmss
- or yyyymmdd hhmmss. Kermit supports yyyymmdd_hh:mm:ss.
- 3. Log into IKSD
- GET file1 newname
- Switch to the client's command prompt
- SEND file2
- file2 will be 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) has 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 file. 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.
- 9. The new SHIFT command does not decrement v(argc) if it is used within
- an IF { } or ELSE { } block.
- 10. The -b command-line option has no effect if given before -l (the order
- of command-line options should not matter; however the current situation
- has always been the case).
- 11. When C-Kermit translates from (say) Latin-1 to UTF-8, it does not convert
- the C1 bytes.
- 12. 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.
- 13. The HEBREW7 translation table has a typo.
- 14. SET TRANSFER CHARACTER-SET TRANSPARENT sets up a garbage translation.
- Workaround: give a SET FILE CHARACTER-SET command afterwards.
- 15. Automatic text/binary mode switching via filename patterns should ignore
- pathname prefixes and backup suffixes, but does not.
- (1) INCOMPATIBLE CHANGES
- These are not necessarily exhaustive lists.
- The following incompatible changes were made in C-Kermit 6.0:
- . Unless you tell C-Kermit otherwise, if a serial or network connection
- seems to be open, and you attempt to EXIT or to SET LINE or SET HOST or
- TELNET, C-Kermit warns you that an active connection appears to be open
- and asks you if you really want to close it. If you do not want these
- warnings, add SET EXIT WARNING OFF to your customization file.
- . The default for SET { SEND, RECEIVE } PATHNAMES was changed from ON
- to OFF, to prevent unexpected creation of directories and depositing of
- incoming files in places you might not know to look.
- . The default for SET FILE INCOMPLETE was changed from DISCARD to KEEP to
- allow for file transfer recovery.
- . The default file-transfer block-check is now 3, rather than 1. If the
- other Kermit does not support this, the two will drop back to type 1
- automatically.
- . The default flow-control is now "auto" ("do the right thing"), not Xon/Xoff.
- . Backslash () is no longer a command continuation character. Only -
- (hyphen, dash) may be used for this in C-Kermit 6.0 and later.
- . Negative INPUT timeout now results in infinite wait, rather than 1 second.
- And in version 6.1:
- . The "multiline GET" command is gone. Now use:
- get <remote-name> <local-name>
- or:
- get /as-name:<local-name> <remote-name>
- If either name contains spaces, enclose it in braces.
- . To request list of files from the server, you must now use MGET rather
- than GET:
- mget file1 file2 file3 ...
- See ckermit2.txt Section 0 for additional items and further detail.
- (2) THE C-KERMIT COMMAND PARSER
- When using the command-line processor ("kermit -l /dev/tty00 -b 19200", etc),
- note that in some cases the order of the command-line options makes a
- difference, contrary to the expectation that order of command-line options
- should not matter. For example, the -b option must be given after the -l
- option if it is to have any effect.
- In the interactive command parser:
- . VMS-style command editing (arrow keys, etc) is not supported.
- . EMACS- or VI-style command line editing is not supported.
- . Editing keys are hardwired (Ctrl-U, Ctrl-W, etc).
- If you interrupt C-Kermit before it has issued its first prompt, it will exit.
- This means that you cannot interrupt execution of the initialization file, or
- of an "application file" (file whose name is given as the first command-line
- argument), or of an alternative initialization file ("-y filename"), and get
- to the prompt. There is, however, one exception to this rule: you *can*
- interrupt commands -- including TAKE commands -- given in the '-C "command
- list"' command-line argument and -- if there were no action commands among the
- command-line arguments -- you will be returned to the C-Kermit prompt. So,
- for example, if you want to start C-Kermit in such a way that it executes a
- command file before issuing its first prompt, and you also want to be able to
- interrupt the command file and get to the prompt, include a TAKE command for
- the desired command in the -C argument, for example:
- kermit -C "take dial.scr"
- If you use the backslash () prefix to enter a control character, space, or
- question mark into a command literally, the backslash disappears and is
- replaced by the quoted character. If it was a control character, it is shown
- as a circumflex (^). This allows editing (backspace, delete, Ctrl-W) to work
- correctly even for control characters.
- The only way to include a comma literally in a macro definition -- as opposed
- to having it separate commands within the definition -- is to enter its ASCII
- value (44) in backslash notation, e.g.:
- DEFINE ROWS MODE CO80{44}%1
- If you quote special characters in a filename (e.g. in the SEND command),
- filename completion may seem to work incorrectly. For example, if you have a
- file whose name is a*b (the name really contains an asterisk), and you type
- "send a\*<ESC>", the "b" will not appear, nor will Ctrl-R redisplay the
- completed name correctly. But internally the file name is recognized anyway.
- Question-mark help does not work during execution of an ASKQ command. The
- question marks are simply accepted as text.
- The maximum length for a variable name is between 256 and 4096 characters,
- depending on the platform; for array declarations and references, that
- includes the subscript.
- Sample
- Some other maximums to watch out for: Symbol Value Defined in
- Nesting level for command files: MAXTAKE 30 ckuusr.h
- Nesting level for macros: MACLEVEL 50 ckuusr.h
- Nesting level for FOR / WHILE loops: FORDEPTH 10 ckuusr.h
- Number of macros: MAC_MAX 256 ckuusr.h
- Size of INPUT buffer: INPBUFSIZ 256 ckuusr.h
- Maximum files to match a wildcard: MAXWLD varies ck?fio.c
- Filespecs in MSEND command: MSENDMAX 100 ckuusr.h
- Length of MSEND or GET string: FSPECL 300 ckuusr.h
- Length for GOTO target label: LBLSIZ 50 ckuusr.h
- Number of characters in a command: CMDBL 1024 ckucmd.h
- Number of chars in a field of a command: ATMBL 256 ckucmd.h
- fexecute() recursion depth limit: CMDDEP 20 ckucmd.h
- The actual values of most of these items can vary with version and
- configuration, and are listed by SHOW FEATURES.
- ASK and ASKQ strip leading and trailing spaces from what the user types. This
- happens way down deep in the command parser -- it's nothing special about ASK
- and friends. The only way around this that works in both C-Kermit and MS-DOS
- Kermit is for the user (the one who is responding to the ASK prompt) to type
- (the first) leading space as "32" and the (final) trailing space as "32".
- In this example, the password begins with 2 leading blanks and ends with two
- trailing blanks, and "Passwd:" is the ASK prompt:
- Passwd:32 secret 32
- Of course, the user could also type *all* blanks as 32.
- In OUTPUT commands only, B and \B send a BREAK signal, and L and \L send a
- Long BREAK signal, and N and \N send a NUL (ASCII 0). BREAK and Long BREAK
- are special signals, not characters, and NUL is a character that normally
- cannot be included in a C string, since it is the C string terminator.
- If you really want to output a backslash followed by a B, an L, or an N (as is
- needed to configure certain modems, etc), use "output \B".
- In C-Kermit 6.1 or later, you can disarm and re-arm the special OUTPUT-command
- escapes (B, L, and N) with SET OUTPUT SPECIAL-ESCAPES { OFF, ON }.
- (3) MULTIPLE SESSIONS
- C-Kermit does not support multiple sessions. When you SET LINE (or SET PORT,
- same thing) to a new device, or SET HOST to a new host, the previous SET LINE
- device or network host connection is closed, resulting in hangup of the modem
- or termination of the network connection. In windowing environments like
- HP-VUE, NeXTSTEP, OS/2, etc, you can run separate copies of Kermit in different
- windows to achieve multiple sessions.
- To achieve multiple sessions through a single serial port (e.g. when dialing
- up), you can install SLIP or PPP on your computer and then use C-Kermit's
- TCP/IP support over the SLIP or PPP connection, assuming you also have
- TCP/IP networking installed on your computer.
- On UNIX systems that support the "term" program, you can establish a
- connection to another UNIX system with C-Kermit and then achieve multiple
- sessions using "term" client programs like trsh (see ckubwr.txt and the term
- documentation for details).
- (4) NETWORK COMMUNICATION
- The most frequently asked question in many newsgroups is "Why does it take
- such a loooong time to make a telnet connection to (or from) my (e.g.) Linux
- PC?" (this applies to C-Kermit or to regular Telnet). This question has
- two answers, one of them specific to C-Kermit 7.0:
- 1. Most telnet servers nowadays perform reverse DNS lookups on the client
- (for security and/or logging reasons). If the Telnet client cannot be
- found by the local DNS server, the DNS request goes out to the Internet at
- large, and this can take quite some time. The solution to this problem is
- to make sure that both client and host are registered in DNS.
- 2. C-Kermit 7.0 strictly enforces Telnet protocol rules. One such rule is
- that all negotiations must be responded to. If C-Kermit sends a
- negotiation and the host does not respond, C-Kermit will wait a long time
- for the reply (in case the network is congested or the host is slow), but
- eventually will time out. To eliminate the waits (and therefore risk
- possible protocol mismatches -- or worse -- between Telnet client and
- server), tell C-Kermit to SET TELNET WAIT OFF (or include the /NOWAIT
- switch with the TELNET command).
- C-Kermit itself performs reverse DNS lookups unless you tell it not to. This
- is to allow C-Kermit to let you know which host it is actually connected to
- in case you have made a connection to a "host pool" (multihomed host). You
- can disable C-Kermit's reverse DNS lookup with SET TCP REVERSE-DNS-LOOKUP OFF.
- In multiuser operating systems such as UNIX and VMS, TCP/IP RLOGIN connections
- are available only to privileged users, since "login" is a privileged socket.
- And assuming you are allowed to use it in the first place, it is likely to
- behave differently depending on what type of host you are rlogging in to, due
- to technical reasons having to do with conflicting interpretations of RFC793
- (Out-Of-Band Data) and Rlogin (RFC1122)... "Specifically, the TCP urgent
- pointer in BSD points to the byte after the urgent data byte, and an
- RFC-compliant TCP urgent pointer points to the urgent data byte. As a result,
- if an application sends urgent data from a BSD-compatible implementation to an
- RFC-1122 compatible implementation then the receiver will read the wrong
- urgent data byte (it will read the byte located after the correct byte in the
- data stream as the urgent data byte)." Rlogin requires the use of OOB data
- while Telnet does not. Therefore, it is possible for Telnet to work between
- all systems while BSD and System V TCP/IP implementation are almost always a
- bad mix.
- On a TCP/IP TELNET connection, you should normally have PARITY set to NONE and
- (except in VMS C-Kermit) FLOW-CONTROL also set to NONE. If file transfer does
- not work with these settings (for example, because the remote TELNET server
- only gives a 7-bit data path), use SET PARITY SPACE. Do not use SET PARITY
- MARK, EVEN, or ODD on a TELNET connection -- it interferes with TELNET
- protocol.
- If echoing does not work right after connecting to a network host or after
- dialing through a TCP/IP modem server, it probably means that the TELNET
- server on the far end of the connection is executing the TELNET protocol
- incorrectly. After initially connecting and discovering incorrect echoing
- (characters are echoed twice, or not at all), escape back, give the
- appropriate SET DUPLEX command (FULL or HALF), and then CONNECT again.
- For a consistently misbehaving connection, you can automate this process in
- a macro or TAKE file.
- TELNET sessions are treated just like serial communications sessions as far as
- "terminal bytesize" and "command bytesize" are concerned. If you need to view
- and/or enter 8-bit characters during a TELNET session, you must tell C-Kermit
- to SET TERMINAL BYTESIZE 8, SET COMMAND BYTESIZE 8, and SET PARITY NONE.
- If you SET TERMINAL DEBUG ON or SET DEBUG SESSION (same thing), TELNET
- protocol negotiations will be displayed on your screen. But most of the
- interesting negotiations happen at the time the SET HOST or TELNET command
- is given, before CONNECT mode is entered, so you won't see them on your
- screen. However, you can still capture them in the debug log ("log debug").
- C-Kermit version 6.0 has a new set of SET TCP commands, to control TCP-level
- parameters, such as "keepalive" protocol (that allows C-Kermit to detect
- more quickly and reliably when a connection is broken). Use SHOW NET to see
- their values and SET TCP to change them.
- (5) THE SERVICES DIRECTORY
- Is explained fully in "Using C-Kermit", 2nd Edition, Chapter 7.
- (6) MODEMS AND DIALING
- Warning: Some phone companies are eliminating the busy signal. Instead,
- they issue a voice message such as "press 1 to automatically redial until
- the number answers, or...". Obviously this is a disaster for modem calls.
- If your service has this feature, there's nothing Kermit can do about it.
- Your modem will respond with NO CARRIER rather than BUSY, and Kermit will
- declare the call a failure, rather than trying to redial the same number.
- The list of modem types supported by C-Kermit is obtained by typing:
- set modem type ?
- at the C-Kermit> prompt. Note that the ITU-T (V.25bis) modem type is
- supported only in asynchronous mode, not synchronous (HDLC) mode -- there is
- no support in C-Kermit for synchronous communication (except for SET NET X.25,
- which is only available on certain platforms).
- If a built-in modem type doesn't work for you, and the modem is a modern
- high-speed (data compressing, error correcting) modem that uses the Hayes AT
- command set, try:
- SET MODEM TYPE GENERIC-HIGH-SPEED
- Modems can be used by C-Kermit only when they are visible as or through a
- regular serial port device. Note that certain modems can not be used in this
- normal way on many kinds of computers: Winmodems, RPI modems, Controllerless
- modems, the IBM Mwave, etc; all of these require special drivers that perform
- some, most, or all of the modem's functions in software. Such drivers are
- generally NOT available in UNIX or other non-Windows (or non-OS/2, in the case
- of the Mwave) platforms.
- An important change in C-Kermit 6.0 is that when you give a SET MODEM TYPE
- command to tell Kermit what kind of modem you have, Kermit also sets a number
- of other modem-related parameters automatically from its internal modem
- database. Thus, the order in which you give modem-related commands is
- significant, whereas in prior releases they could be given in any order.
- In particular, MODEM SPEED-MATCHING is set according to whether the modem
- is known to be capable of speed buffering. SET MODEM TYPE HAYES-2400
- automatically turns SPEED-MATCHING ON, because when the Hayes 2400 reports
- a particular speed in its CONNECT message, that means its interface speed
- has changed to that speed, and C-Kermit's must change accordingly if it is
- to continue communicating. This might cause some confusion if you use
- "set modem type hayes" for dialing a more advanced type of modem.
- The new default for flow control is "auto", meaning "do the right thing".
- So (for example) if your version of C-Kermit supports SET FLOW RTS/CTS and
- your modem also supports RTS/CTS, then Kermit will automatically set its
- flow control to RTS/CTS *and* set modem's flow control to RTS/CTS too before
- attempting to use the modem.
- For this reason, don't assume that "set modem type hayes" should be used for
- any modem that uses the Hayes AT command set. "set modem type hayes" really
- does mean Hayes 1200 or 2400, which in turn means no hardware flow control,
- and no speed buffering. This choice will rarely work with a modern high-speed
- modem.
- (7) DIALING HINTS AND TIPS
- If you want to dial a number that starts with #, you'll need to quote the
- "#" character (as # or {35}), since it is also a comment introducer:
- C-Kermit>dial #98765421-1-212-5551212 ; Looks like a comment
- ?You must specify a number to dial
- C-Kermit>dial #98765421-1-212-5551212 ; Works OK
- When using a dialing directory, remember what happens if a name is not found:
- C-Kermit>dial xyzcorp
- Lookup: "xyzcorp" - not found - dialing as given
- This normally does no harm, but some modems might behave strangely when given
- dial strings that contain certain letters. For example, a certain German
- modem treats any dial string that contains the letter "s" as a command to
- fetch a number from its internal list, and replies OK to the ATD command,
- which is normally not a valid response except for partial dialing. To avoid
- this situation, use:
- lookup xyzcorp
- if success dial
- Remember: In many C-Kermit implementations (depending on the underlying
- operating system -- mostly Windows, OS/2, and System-V-based UNIX versions,
- and in C-Kermit 6.1, also VMS), you can't CONNECT to a modem and type the
- modem's dialing command (like "ATDT7654321") manually, unless you first tell
- C-Kermit to:
- SET CARRIER-WATCH OFF
- This is because (in these implementations), the CONNECT command requires the
- modem's Carrier Detect (CD) signal to be on, but the CD signal doesn't come on
- until after dialing is complete. This requirement is what allows C-Kermit to
- pop back to its prompt automatically when the connection is hung up. See the
- description of SET CARRIER-WATCH in "Using C-Kermit".
- Similarly, if your dialed connection drops when CARRIER-WATCH is set to AUTO
- or ON, you can't CONNECT back to the (now disconnected) screen to see what
- might have happened unless you first SET CARRIER-WATCH OFF.
- Don't SET FLOW RTS/CTS if your modem is turned off, or if it is not presenting
- the CTS signal. Otherwise, the serial device driver might get stuck waiting
- for this signal to appear.
- The HANGUP command has no effect when C-Kermit is in remote mode. This is
- on purpose. If C-Kermit could hang up its own controlling terminal, this
- would (a) most likely leave behind zombie processes, and (b) pose a security
- risk.
- If you have a high-speed, error-correcting, data-compressing, speed-buffering
- modem, you should fix the modem's interface speed as high as possible,
- preferably (at least) four times higher than its maximum connection
- (modulation) speed to allow compression to work at full advantage. In this
- type of setup, you must also have an effective means of flow control enabled
- between C-Kermit and the modem, preferably hardware (RTS/CTS) flow control.
- On platforms that do not support hardware flow control, it is usually possible
- to select software flow control (Xon/Xoff), and C-Kermit will do its best to
- set the modem for local Xon/Xoff flow control too (but then, of course,
- Ctrl-S and Ctrl-Q characters can not be transmitted on the connection).
- C-Kermit knows about a large number of modems, depending on how it was built
- (type "set modem type ?" and "show features" for further info). This
- knowledge is imbedded in the SET MODEM and DIAL commands. If you are having
- trouble dialing your modem, SET DIAL DISPLAY ON to watch the dialing
- interactions between C-Kermit and your modem. Consult Chapters 3-4 of "Using
- C-Kermit" (2nd Ed) for modem-dialing troubleshooting instructions.
- If it takes your call longer to be completed than the timeout interval that
- C-Kermit calculates, you can use the SET DIAL TIMEOUT command to override
- C-Kermit's value. But beware: the modem has its own timeout for completing
- the call. If it is a Hayes-like modem, C-Kermit adjusts the modem's value
- too by setting register S7. But the maximum value for S7 might be smaller
- than the time you need! In that case, C-Kermit sets S7 to 0, 255, or other
- (modem-specific) value to signify "no timeout".
- WARNING: Certain modems might have a maximum dial timeout shorter than what
- Kermit expects it to be. If Kermit attempts to set register S7 to a value
- higher than your modem's maximum, the modem will say "ERROR" and you will get
- a "Failure to initialize modem" error. In that case, use SET DIAL TIMEOUT to
- override C-Kermit's calculation of the timeout value with the highest value
- that is legal for your modem, e.g. 60.
- If you DIAL a modem, disconnect, then SET HOST or TELNET, and then HANGUP,
- Kermit sends the modem's hangup command, such as "+++ATHO". There is no good
- way to avoid this, because this case can't reliably be distinguished from the
- case in which the user does SET HOST <terminal-server>, SET MODEM TYPE <name>,
- DIAL. In both cases we have a valid modem type selected and we have a network
- connection. If you want to DIAL and then later make a regular network
- connection, you will have to SET MODEM TYPE NONE or SET MODEM HANGUP RS232 to
- avoid this phenomenon.
- The SET MODEM KERMIT-SPOOF command works only for Telebit and US Robotics
- modem types; it is OFF by default. You may wish to experiment with large
- packets (1K or greater) and various window sizes with spoofing disabled in the
- modem. In most situations the transfer rates achieved by Kermit with sliding
- windows and long packets are better than with protocol spoofing turned on.
- Also, attribute (A) packets are not passed by Telebit modems with spoofing
- enabled so if they are desired spoofing must be turned off.
- Some modems have a feature called adaptive dialing. When they are told to
- dial a number using Tone dialing, they check to make sure that dialtone has
- gone away after dialing the first digit. If it has not, the modem assumes the
- phone line does not accept Tone dialing and so switches to Pulse. When
- dialing out from a PBX, there is almost always a secondary dialtone.
- Typically you take the phone off-hook, get the PBX dialtone, dial "9" to get
- an outside line, and then get the phone company's dialtone. In a situation
- like this, you need to tell the modem to expect the secondary dialtone. On
- Hayes and compatible modems, this is done by putting a "W" in the dial string
- at the appropriate place. For example, to dial 9 for an outside line, and
- then 7654321, use ATDT9W7654321. In Kermit 95, this is accomplished with:
- SET PBX-OUTSIDE-PREFIX 9W
- (replace "9" with whatever your PBX's outside-line prefix is).
- DEC modems... Reportedly, these don't work right when connected to a DEC
- terminal server -- result codes are never reported (on the other hand, this
- might be a modem configuration problem). Dialing "by hand", "blind" still
- works. Also, reportedly "For people who do have DEC modems directly connected
- to DEC computers the DF03, DF100-series, and DF200-series modem dialers should
- work. The only thing that is not straightforward is that the DF124-CA,
- DF124-CM modems must use the DF200-series since they speak Digital Modem
- Command Language (DMCL) and AT commands. The Digital Scholar Plus is a DF242
- so it uses the DF200-series."
- If C-Kermit's dialing methods are insufficient for your purposes, you can
- write a C-Kermit script program to do the dialing.
- (7.1) DIALING AND FLOW CONTROL
- Most modern modems support RTS/CTS (if they support any hardware flow control
- at all), but some computers use different RS-232 circuits for the same
- purposes, e.g. DTR and CD, or DTR and CTS. In such cases, you might be able
- to make your computer work with your modem by appropriately cross-wiring the
- circuits in the cable connector, for example the computer's DTR to the modem's
- RTS, and modem's CD to the computer's CTS. HOWEVER, C-Kermit does not know
- you have done this. So if you have (say) SET FLOW DTR/CD, C-Kermit will make
- no attempt to tell the modem to use RTS/CTS. You probably did this yourself
- when you configured the modem.
- (7.2) ESCAPE SEQUENCE GUARD TIME
- A "TIES" (Time-Independent Escape Sequence) modem does not require any guard
- time around its escape sequence. The following text:
- +++ATH0
- if sent through a TIES modem, for example because you were uploading this
- file through it, could pop the modem back into command mode and make it hang
- up the connection. Newer versions of the Telebit T1600 and T3000 (version
- LA3.01E firmware and later), and all WorldBlazers, use TIES.
- Although the probability of "+++" appearing in a Kermit packet is markedly
- lower than with most other protocols (see the File Transfer section below), it
- can still happen under certain circumstances. It can also happen when using
- C-Kermit's TRANSMIT command. If you are using a Telebit TIES modem, you can
- change the modem's escape sequence to an otherwise little-used control
- character such as Ctrl-_ (Control-Underscore):
- AT S2=31
- A sequence of three consecutive Ctrl-_ characters will not appear in a
- Kermit packet unless you go to extraordinary lengths to defeat more than a few
- of Kermit's built-in safety mechanisms. And if you do this, then you should
- also turn off the modem's escape-sequence recognition altogether:
- AT S48=0 S2=255
- But when escape sequence recognition is turned off, "modem hangup"
- (<pause>+++<pause>ATH0<CR>) will not work, so you should also be sure to SET
- DIAL MODEM-HANGUP OFF.
- (8) TERMINAL SERVERS
- How to DIAL from a TCP/IP reverse terminal server (modem server):
- 1. (only if necessary) SET TELNET ECHO REMOTE
- 2. SET HOST <terminal-server-ip-name-or-address> [ <port> ]
- 3. SET MODEM <modem-type>
- 4. (only if necessary) SET DIAL HANGUP OFF
- 5. DIAL <phone-number>
- The order is important.
- Watch out for terminal server's escape character -- usually a control
- character such as Ctrl-Circumflex (Ctrl-^). Don't unprefix it in Kermit !
- Ciscos -- must often be told to "terminal download"... Cisco ASM models don't
- have hardware flow control in both directions.
- Many terminal servers only give you a 7-bit connection, so if you can't make
- it 8-bit, tell Kermit to "set parity space".
- The following story, regarding trouble transferring 8-bit files through a
- reverse terminal server, was contributed by an Annex terminal server user
- (begin quote):
- Using C-Kermit on an HP 9000 712/80 running the HP-UX 10.0 operating system.
- The HP was connected to a Xylogics Annex MICRO-ELS-UX R7.1 8 port terminal
- server via ethernet. On the second port of the terminal server is an AT&T
- Paradyne 3810 modem, which is connected to a telephone line. There is a
- program which runs on the HP to establish a Telnet connection between a serial
- line on the Annex and a character special file on the HP (/dev file). This is
- an Annex specific program called rtelnet (reverse telnet) and is provided with
- the terminal server software. The rtelnet utility runs on top of the
- pseudo-terminal facility provided by UNIX. It creates host-originiated
- connections to devices attached ot Annex serial ports. There are several
- command line arguments to be specified with this program: the IP address of
- the terminal server, the number of the port to attach to, and the name of the
- pseudo-device to create. In addition to these there are options to tell
- rtelnet how to operate on the connect: -b requests negotiation for Telnet
- binary mode, -d turns on socket-leve debugging, -f enables "connect on the
- fly" mode, -r removes the device-name if it already exists, etc. The most
- important of these to be specified when using 8 data bits and no parity, as we
- found out, was the -t option. This creates a transparent TCP connection to
- the terminal server. Again, what we assumed to be happening was that the
- rtelnet program encountered a character sequence special to itself and then
- "eating" those kermit packets. I think this is all of the information I can
- give you on the configuration, short of the values associated with the port on
- the terminal server. If I can provide any other details, just let me know.
- Thanks again for your help.
- (end quote)
- (9) TERMINAL EMULATION
- Except for the Windows, OS/2, and Macintosh versions, C-Kermit does not
- emulate any kind of terminal. Rather, it acts more or less as a "transparent
- pipe", passing the characters you type during a CONNECT session to the remote
- host, and sending the characters received from the remote host to your screen.
- Whatever is controlling your keyboard and screen provides the specific
- terminal emulation: a real terminal, a PC running a terminal emulator, etc, or
- (in the case of a self-contained workstation) your console driver, a terminal
- window, xterm, etc.
- There are several exceptions to the "transparent pipe" rule:
- - During a TELNET ("set host") session, C-Kermit itself executes the
- TELNET protocol and performs TELNET negotiations. (But it does not
- perform TN3270 protocol or any other type of 3270 terminal emulation.)
- - If you have changed your keyboard mapping using SET KEY, C-Kermit replaces
- the characters you type with the characters or strings they are mapped to.
- - If you SET your TERMINAL CHARACTER-SET to anything but TRANSPARENT,
- C-Kermit translates your keystrokes (after applying any SET KEY
- definitions) before transmitting them, and translates received characters
- before showing them on your screen.
- - If your remote and/or local TERMINAL CHARACTER-SET is an ISO 646 7-bit
- national character set, such as German, French, Italian, Swedish, etc, or
- Short KOI used for Cyrillic, C-Kermit's CONNECT command automatically skips
- over ANSI escape sequences to avoid translating their characters. Only
- ANSI/ISO standard (VT100/200/300-like) 7-bit escape sequence formats are
- supported for this purpose, no proprietary schemes like H-P, Televideo,
- Tektronix, etc.
- - If your version of C-Kermit includes SET TERMINAL APC command, then
- C-Kermit's CONNECT command will handle APC escape sequences if TERMINAL
- APC is not set to OFF (which is the default).
- If you are running C-Kermit under a console driver, or in a terminal window,
- that emulates the VT100, and use C-Kermit to log in to a VMS system, the
- console driver or terminal window (not Kermit) is supposed to reply to the
- "what are you?" query (ESC Z) from the VAX. If it doesn't, and you can't make
- it do so, then you can (a) live with the "unknown terminal" problem; (b) tell
- VMS to SET TERMINAL/DEVICE=VT100; (c) program a key using SET KEY to send the
- appropriate sequence and then punch the key at the right time; or (d) use the
- VMSLOGIN macro that is defined in CKERMIT.INI to do this for you
- automatically.
- SET SESSION-LOG { TEXT, BINARY }, which is effective in UNIX and AOS/VS but
- not other C-Kermit versions, removes CR, DEL, NUL, XON, and XOFF characters
- ("Using C-Kermit" neglects to mention that XON and XOFF are removed). The
- TEXT-mode setting is ineffective during SCRIPT command execution, as well as
- on X.25 connections.
- (10) KEY MAPPING
- Except in the terminal-emulating versions, C-Kermit's key mapping facilities
- are limited to normal "ASCII" keys, and cannot be used with function keys,
- arrow keys, arcane key combinations, etc. Since C-Kermit runs on such a wide
- variety of hardware platforms (including, for example, more than 360 different
- UNIX platforms), it is not possible for C-Kermit to support every conceivable
- keyboard under every release of every UNIX (or VMS, or ...) product on every
- different kind of computer possibly under all manner of different console
- drivers.
- In technical terms, C-Kermit uses the read() function to read keystrokes, and
- read() returns a single byte (value 0 through 255). C-Kermit's SET KEY
- function applies to these single-byte codes. "Extended function" keys, such
- as F-keys, arrow keys, etc, usually return either a 2-byte "scan code" or else
- a character string (such as an escape sequence like "ESC O p"). In both
- cases, C-Kermit has no way to tell the difference between such multibyte key
- values, and the corresponding series of single-byte key values. This could
- only be done by accessing the keyboard at a much lower level in a highly
- system-dependent manner, probably requiring tens of thousands of lines of code
- to support even a sampling of the most popular workstation / OS combinations.
- However, most workstation console drivers (terminal emulation windows, etc)
- include their own key-mapping facility. For example, on an IBM RS/6000, the
- AIXterm program (in whose window you would run C-Kermit) allows rebinding of
- the F1-F12 keys to arbitrary strings. The same might or might not be true of
- DECterm windows, Sun "vttool" or "crttool" windows, etc. Consult the
- technical documentation for your workstation or emulator.
- The SET KEY command (except in OS/2) does not allow a key definition to be
- (or contain) the NUL ( ) character.
- (11) THE TRANSMIT COMMAND
- Session logging is inactive during the TRANSMIT command, even if you have
- given a LOG SESSION command.
- (12) FILE TRANSFER
- C-Kermit 7.0 is the first release of C-Kermit to use fast (rather than robust
- and therefore slow) protocol defaults: long packets, sliding windows,
- control-character unprefixing, and streaming where possible. This makes most
- transfers (partner willing) dramatically faster "out of the box" but might
- break some combinations that worked before. If transfers with C-Kermit 7.0
- fail where transfers worked with earlier C-Kermit versions, try the following:
- a. ROBUST: this command reverts to the most conservative protocol settings.
- b. CAUTIOUS: Selects medium but cautious protocol settings.
- c. SET PREFIXING ALL: Disables control-character unprefixing.
- d. SET STREAMING OFF: Disables streaming.
- File transfer failures can occur for all sorts of reasons, many of them listed
- in Chapter 10 of the manual. Another one came up recently when using Kermit
- on a certain laptop with its built-in modem: the modem's "auto timeout delay"
- was hanging up the connection in the middle of a file transfer. Most modems,
- even if they have this feature, do not have it enabled by default. But if you
- experience otherwise inexplicable disconnections in the midst of your Kermit
- sessions, check the modem manual for such things as "idle timeout", "auto
- timeout", etc, and add the command to disable this feature to Kermit's init
- string for this modem.
- If you have a multihop connection, with the interior nodes in CONNECT
- mode (Kermit, Telnet, Rlogin, or any other), you can expect (a) file transfer
- to be slower, and (b) the connection to be less transparent (to control
- characters, perhaps to the 8th bit) than a more direct connection. C-Kermit
- 7.0 has a "-0" (dash-zero) command-line option to make it 100% transparent
- in cases where it is to be used in the middle.
- The recovery feature (RESEND command) that was added in edit 190 works only
- for binary-mode transfers. In order for this feature to be useful at all, the
- default for SET FILE INCOMPLETE was changed from DISCARD to KEEP. Otherwise
- an interrupted transfer would leave no partial file behind unless you had
- remembered to change the default. But now you have to pay closer attention to
- Kermit's messages to know whether a transfer succeeded or failed --
- previously, if it failed, the file would not show up on the receiving end at
- all; in edit 190 and later, you'll get a partial file which could easily be
- mistaken for the complete file unless you change the default back to DISCARD
- or read the screen messages, or keep a transaction log.
- Watch out for SET FILE COLLISION RENAME, especially when used in conjunction
- with recovery. Recall that this option (which is NOT the default) renames
- the incoming file if a file already exists with the same name (the default is
- to rename the previously existing file, and store the incoming file with its
- own name). It is strongly recommended that you do not use SET FILE COLLISION
- RENAME if you ever intend to use the recovery feature:
- . When the file is first received by C-Kermit, its name will be changed if
- another file already has the same name. When you RESEND the same file
- after a failure, C-Kermit will probably try to append the re-sent portion
- to the wrong file.
- . Assuming that you get RESEND to work with FILE COLLISION RENAME, C-Kermit,
- when receiving the remainder of the file during a RESEND operation, will
- report back the wrong name. Nothing can be done about this because the
- name is reported back before the receiving Kermit program finds out that
- it is a recovery operation.
- Also watch out for DISABLE DELETE, since this implicitly sets FILE COLLISION
- RENAME. And note tht DELETE is DISABLEd automatically any time you Kermit
- is in local mode (i.e. it makes a connection). Also note that for purposes
- of DISABLE and ENABLE, "set host *" connections do not count as local mode
- even though, strictly speaking, they are.
- When using ADD SEND-LIST and entering a wildcard in the list, there is no way
- to specify "automatic switching" -- the file type still must be text or
- binary. To work around, use regular expressions to create separate wildcards
- for the text and binary files.
- Automatic directory creation for received files does not work for pathnames
- given in the "-a" command-line argument.
- There are no command-line arguments for "set file names { literal, converted }"
- or "set { send, receive } pathnames { on, off }", but you can include these
- (or any other) commands on the command line in the -C option string.
- When referring to MS-DOS, Windows, Atari ST, OS/2, or other file
- specifications that contain backslash characters in a C-Kermit command, you
- might have to double each backslash, for example:
- C-Kermit>get c:\directory\foo.txt
- This is because backslash is used in C-Kermit commands for introducing special
- character codes, variables, functions, etc. If you are sending this GET
- command to another copy of C-Kermit running as a server, for example on OS/2
- or the Atari ST, it too treats backslashes as prefix characters, so you will
- need 4 (yes, 4) copies of each backslash:
- C-Kermit>get c:\\directory\\foo.txt
- But read about SET COMMAND QUOTING OFF in the manual.
- ANOTHER NOTE: In Kermit 95, this restriction is lifted as far as referring
- to files on the local PC. You can now refer to these files using natural PC
- notation, e.g.
- C-Kermit>send c:lettersoofa.txt
- in any command field that knowingly parses a filename.
- Attempting to cancel local-mode file reception at a very early stage (i.e.
- before data packets are exchanged) with X or Z does not work. Workarounds:
- Use E or Ctrl-C instead, or wait until the first data packets are sent.
- If you cancel a transfer that is underway using X or Z, and a lot of window
- slots are in use, it might take a long time for the cancellation to take
- effect, especially if you do this on the receiving end; that's because a lot
- of packets might already be on their way to you. In that case, just be
- patient and let Kermit "drain" them.
- If C-Kermit is sending a file, remote-mode packet-mode breakout (Ctrl-C Ctrl-C
- by default) is not effective until after C-Kermit sends its first packet. If
- C-Kermit is receiving a file or is in server mode, it will be effective right
- away. In the former case, the SET DELAY value determines the earliest time at
- which you can break out of packet mode.
- Some communication programs have errors in their implementation of Kermit
- attribute packets. If you get an error message from your communication
- program like "Attribute error", tell C-Kermit to SET ATTRIBUTES OFF. Better
- yet, switch to a real Kermit program, such as MS-DOS Kermit.
- When using C-Kermit to transfer files with the HP48SX calculator, you must
- SET FLOW NONE. The HP48SX does not support flow control, and evidently also
- becomes confused if you attempt to use it. You might also need to use
- SET SEND PAUSE 100 (or other number).
- The fullscreen file transfer display will not work right if your terminal type
- is set incorrectly, or is not known to the host operating system. Even when
- it does work, it might slow down your file transfers a bit, especially on
- high-speed network connections. On certain small computers, it has been
- reported to cause increased disk activity due to swapping or paging. The
- fullscreen display is not particularly useful with speaking or Braille devices.
- In these cases, use SET FILE DISPLAY CRT or SET FILE DISPLAY SERIAL.
- If you have trouble transferring files over a TCP/IP connection, give the
- command:
- SET PARITY SPACE
- and try again. If that doesn't work, also try a shorter packet length.
- On the other hand, if file transfers through a TCP/IP connection work, but are
- very slow, use a longer packet length, 2000 or more, and also try increasing
- the window size. Also, make sure FLOW is NONE since TCP/IP handles flow
- control itself, and XON/XOFF processing only slows things down.
- Some communication software claims to implement sliding windows, but does so
- incorrectly. If sliding window transfers fail, set C-Kermit's window size to
- the smallest one that works, for example:
- SET WINDOW 1
- The UNIX version of C-Kermit discards carriage returns when receiving files
- in text mode. Thus, "bare" carriage returns (sometimes used to achieve
- overstriking) are lost.
- SET FILE COLLISION BACKUP is the default. This means:
- - If you send the same file lots of times, there will be many backup files.
- There is no automatic mechanism within Kermit to delete them, no notion of
- a "version retention count", etc, but you can use the PURGE command to
- clean them up.
- - If a file arrives that has the same name as a directory, the file transfer
- fails because Kermit will not rename a directory. Send the file with
- another name, or use SET FILE COLLISION RENAME.
- - If the directory lacks write permission, the file transfer fails even if
- you have write access to the file that is being backed up; in that case,
- switch to SET FILE COLLISION OVERWRITE or APPEND, or send to a different
- directory.
- SET FILE COLLISION UPDATE depends on the date/time stamp in the attribute
- packet. However, this is recorded in local time, not Universal Time (GMT),
- and there is no indication of time zone. The time is expressed to the
- precision of 1 second, but some file systems do not record with this precision
- -- for example, MS-DOS records the file date/time only to the nearest 2
- seconds. This might cause update operations to send more files than
- necessary.
- (This paragraph does NOT apply to UNIX, where, as of C-Kermit 6.1, C-Kermit
- pipes incoming mail and print material directly the mail or print program):
- When C-Kermit is receiving files from another Kermit program that has been
- given the MAIL or REMOTE PRINT command, C-Kermit follows the current filename
- collision action. This can be disconcerting if the action was (for example)
- BACKUP, because the existing file will be renamed, and the new file will be
- mailed (or printed) and then deleted. Kermit cannot temporarily change to
- RENAME because the file collision action occurs when the filename packet is
- received, and the PRINT or MAIL disposition only comes later, in the Attribute
- packet.
- Execution of multiple file transfers by C-Kermit from a command file when
- in remote mode might exhibit long delays between each transfer. To avoid
- this, just include the command "SET DELAY 0" in your command file before any
- of the file-transfer commands.
- (13) SCRIPT PROGRAMMING
- 13.1. Comments Versus the SCRIPT Command
- Remember that ";" and "#" introduce comments when (a) they are the first
- character on the line, or (b) they are preceded by at least one blank or
- tab within a line. Thus constructions like:
- INPUT 5 ;
- SCRIPT ~0 #--#--#
- must be coded using backslash notation to keep the data from being ignored:
- INPUT 5 59 ; 59 is the decimal ASCII code for ";"
- SCRIPT ~0 35--#--# ; 43 is the decimal ASCII code for "#"
- or, more simply:
- INPUT 5 ; ; Just quote the semicolon
- SCRIPT ~0 #--#--# ; Just quote the "#"
- 13.2. Alphabetic Case and the INPUT Command
- INPUT and REINPUT caseless string comparisons do not work for non-ASCII
- (international) characters. Workaround: SET INPUT CASE OBSERVE. Even then,
- the "lexically less than" and "lexically greater than" operations (IF LLT, IF
- LGT) probably won't work as expected. The same is true for the
- case-conversion functions Flower() and Fupper(). C-Kermit does not know the
- collating sequence for different character sets and languages. (On the other
- hand, it might work depending on such items as how Kermit was linked, whether
- your operating supports "locales", etc)
- 13.3. NUL (0) Characters in C-Kermit Commands
- You can't include a NUL character ( ) in C-Kermit command text without
- terminating the character string in which it appears. For example:
- echo In these brackets [ ] is a NUL
- will echo "In these brackets [". This applies to ECHO, INPUT, OUTPUT, and all
- other commands (but you can represent NUL by "N" in an OUTPUT string). This
- is because C-language strings are terminated internally by the NUL character,
- and it allows all of C-Kermit's string comparison and manipulation functions
- to work in the normal "C" way.
- To illustrate:
- INPUT 5