📄 ckccfg.txt
字号:
C-Kermit Configuration Options Frank da Cruz [1]The Kermit Project [2]Columbia University As of: C-Kermit 8.0.211, 10 April 2004 This page last updated: Sun Apr 11 16:45:55 2004 (New York USA Time) IF YOU ARE READING A PLAIN-TEXT version of this document, note that this file is a plain-text dump of a Web page. You can visit the original (and possibly more up-to-date) Web page here: [3]http://www.columbia.edu/kermit/ckccfg.html [ [4]C-Kermit Home ] [ [5]Kermit Home ] ________________________________________________________________________ CONTENTS 1. [6]FILE TRANSFER 2. [7]SERIAL COMMUNICATION SPEEDS 3. [8]FULLSCREEN FILE TRANSFER DISPLAY 4. [9]CHARACTER SETS 5. [10]APC EXECUTION 6. [11]PROGRAM SIZE 7. [12]MODEM DIALING 8. [13]NETWORK SUPPORT 9. [14]EXCEPTION HANDLING 10. [15]SECURITY FEATURES 11. [16]ENABLING SELECT() 12. [17]I/O REDIRECTION 13. [18]FLOATING-POINT NUMBERS, TIMERS, AND ARITHMETIC 14. [19]SPECIAL CONFIGURATIONS I. [20]SUMMARY OF COMPILE-TIME OPTIONS ________________________________________________________________________ OVERVIEW This document describes configuration options for C-Kermit (5A and later). The major topics covered include program size (and how to reduce it), how to include or exclude particular features, notes on serial-port, modem, and network support, and a list of C-Kermit's compile-time options. For details about your particular operating system, also see the system-specific installation instructions file, such as the [21]C-Kermit Installation Instructions for Unix. [ [22]C-Kermit Home ] [ [23]Kermit Home ] ________________________________________________________________________ 1. FILE TRANSFER [ [24]Top ] [ [25]Contents ] [ [26]Next ] [ [27]Previous ] Prior to version 7.0, C-Kermit was always built with the most conservative Kermit file-transfer protocol defaults on every platform: no control-character prefixing, 94-byte packets, and a window size of 1. Starting in version 7.0, fast settings are the default. To override these at compile time, include: -DNOFAST in the C compiler CFLAGS. Even with the fast defaults, C-Kermit automatically drops down to whatever window and packet sizes requested by the other Kermit, if these are smaller, when sending files (except for control-character unprefixing, which is not negotiated, and which is now set to CAUTIOUS rather than NONE at startup). C-Kermit's settings prevail when it is receiving. [ [28]C-Kermit Home ] [ [29]Kermit Home ] ________________________________________________________________________ 2. SERIAL COMMUNICATION SPEEDS [ [30]Top ] [ [31]Contents ] [ [32]Next ] [ [33]Previous ] As of 6 September 1997, a new simplified mechanism for obtaining the list of legal serial interface speeds is in place: * If the symbol TTSPDLIST is defined, the system-dependent routine ttspdlist() is called at program initialization to obtain the list. * This symbol should be defined only for C-Kermit implementations that have implemented the ttspdlist() function, typically in the ck?tio.c module. See [34]ckutio.c for an example. * TTSPDLIST is automatically defined in [35]ckcdeb.h for UNIX. Add the appropriate #ifdefs for other platforms when the corresponding ttspdlist() functions are filled in. * If TTSPDLIST is (or normally would be) defined, the old code (described below) can still be selected by defining NOTTSPDLIST. The ttspdlist() function can obtain the speeds in any way that works. For example, based simply on #ifdef Bnnnn..#endif (in UNIX). Although it might be better to actually check each speed against the currently selected hardware interface before allowing it in the array, there is usually no passive and/or reliable and safe way to do this, and so it's better to let some speeds into the array that might not work, than it is to erroneously exclude others. Speeds that don't work are caught when the SET SPEED command is actually given. Note that this scheme does not necessarily rule out split speed operation, but effectively it does in C-Kermit as presently constituted since there are no commands to set input and output speed separately (except the special case "set speed 75/1200"). Note that some platforms, notably AIX 4.2 and 4.3, implement high serial speeds transparently to the application, e.g. by mapping 50 bps to 57600 bps, and so on. That's the whole deal. When TTSPDLIST is not defined, the following applies: Speeds are defined in two places: the SET SPEED keyword list in the command parser (as of this writing, in the [36]ckuus3.c source file), and in the system- dependent communications i/o module, ck?tio.c, functions ttsspd() (set speed) and ttgspd() (get speed). The following speeds are assumed to be available in all versions: 0, 110, 300, 600, 1200, 2400, 4800, 9600 If one or more of these speeds is not supported by your system, you'll need to change the source code (this has never happened so far). Other speeds that are not common to all systems have Kermit-specific symbols: Symbol Symbol Speed (bps) to enable to disable 50 BPS_50 NOB_50 75 BPS_75 NOB_75 75/1200 BPS_7512 NOB_7512 134.5 BPS_134 NOB_134 150 BPS_150 NOB_150 200 BPS_200 NOB_200 1800 BPS_1800 NOB_1800 3600 BPS_3600 NOB_3600 7200 BPS_7200 NOB_7200 14400 BPS_14K NOB_14K 19200 BPS_19K NOB_19K 28800 BPS_28K NOB_28K 38400 BPS_38K NOB_38K 57600 BPS_57K NOB_57K 76800 BPS_76K NOB_76K 115200 BPS_115K NOB_155K 230400 BPS_230K NOB_230K 460800 BPS_460K NOB_460K 921600 BPS_921K NOB_921K The [37]ckcdeb.h header file contains default speed configurations for the many systems that C-Kermit supports. You can override these defaults by (a) editing ckcdeb.h, or (b) defining the appropriate enabling and/or disabling symbols on the CC command line, for example: -DBPS_14400 -DNOB_115200 or the "make" command line, e.g.: make blah "KFLAGS=-DBPS_14400 -DNOB_115200" Note: some speeds have no symbols defined for them, because they have never been needed: 12.5bps, 45.5bps, 20000bps, etc. These can easily be added if required (but they will work only if the OS supports them). IMPORTANT: Adding one of these flags at compile time does not necessarily mean that you will be able to use that speed. A particular speed is usable only if your underlying operating system supports it. In particular, it needs to be defined in the appropriate system header file (e.g. in UNIX, cd to /usr/include and grep for B9600 in *.h and sys/*.h to find the header file that contains the definitions for the supported speeds), and supported by the serial device driver, and of course by the physical device itself. ALSO IMPORTANT: The list of available speeds is independent of how they are set. The many UNIXes, for example, offer a wide variety of APIs that are BSD-based, SYSV-based, POSIX-based, and purely made up. See the ttsspd(), ttgspd(), and ttspdlist() routines in [38]ckutio.c for illustrations. The latest entries in this horserace are the tcgetspeed() and ttsetspeed() routines found in UnixWare 7. Unlike other methods, they accept the entire range of integers (longs really) as speed values, rather than certain codes, and return an error if the number is not, in fact, a legal speed for the device/driver in question. In this case, there is no way to build a list of legal speeds at compile time, since no Bnnnn symbols are defined (except for "depracated, legacy" interfaces like ioctl()) and so the legal speed list must be enumerated in the code -- see ttspdlist() in [39]ckutio.c. [ [40]C-Kermit Home ] [ [41]Kermit Home ] ________________________________________________________________________ 3. FULLSCREEN FILE TRANSFER DISPLAY [ [42]Top ] [ [43]Contents ] [ [44]Next ] [ [45]Previous ] New to edit 180 is support for an MS-DOS-Kermit-like local-mode full screen file transfer display, accomplished using the curses library, or something equivalent (for example, the Screen Manager on DEC VMS). To enable this feature, include the following in your CFLAGS: -DCK_CURSES and then change your build procedure (if necessary) to include the necessary libraries. For example, in Unix these are usually "curses" or "ncurses" (and more recenlty, "ncursesw" and "slang"), perhaps also "termcap", "termlib", or "tinfo": "LIBS= -lcurses -ltermcap" "LIBS= -lcurses -ltermlib" "LIBS= -lncurses" "LIBS= -ltermlib" "LIBS= -ltinfo" "man curses" for further information, and search through the Unix [46]makefile for "CK_CURSES" to see many examples, and also see the relevant sections of the [47]Unix C-Kermit Installation Instructions, particularly Sections [48]4 and [49]9.2. There might still be a complication. Some implementations of curses reserve the right to alter the buffering on the output file without restoring it afterwards, which can leave Kermit's command processing in a mess when the prompt comes back after a fullscreen file transfer display. The typical symptom is that characters you type at the prompt after a local-mode file transfer (i.e. after seeing the curses file-transfer display) do not echo until you press the Return (Enter) key. If this happens to you, try adding -DCK_NEWTERM to your makefile target (see comments in screenc() in [50]ckuusx.c for an explanation). If that doesn't fix the problem, then use a bigger hammer and replace -DCK_NEWTERM with: -DNONOSETBUF which tells Kermit to force stdout to be unbuffered so CBREAK mode can work. In SCO Xenix and SCO UNIX, there are two separate curses libraries, one based on termcap and the other based on terminfo. The default library, usually terminfo, is established when the development system is installed. To manually select terminfo (at compile time): compile -DM_TERMINFO and link -ltinfo and to manually select termcap: compile -DM_TERMCAP and link -ltcap -ltermlib <curses.h> looks at M_TERMINFO and M_TERMCAP to decide which header files to use. /usr/lib/libcurses.a is a link to either libtinfo.a or libtcap.a. The C-Kermit compilation options must agree with the version of the curses library that is actually installed. NOTE: If you are doing an ANSI-C compilation and you get compile time warnings like the following: Warning: function not declared in ckuusx.c: wmove, printw, wclrtoeol, wclear, wrefresh, endwin, etc... it means that your <curses.h> file does not contain prototypes for these functions. The warnings should be harmless. New to edit 190 is the ability to refresh a messed-up full-screen display, e.g. after receiving a broadcast message. This depends on the curses package including the wrefresh() and clearok() functions and the curscr variable. If your version has these, or has code to simulate them, then add: -DCK_WREFRESH The curses and termcap libraries add considerable size to the program image (e.g. about 20K on a SUN-4, 40K on a 386). On some small systems, such as the AT&T 6300 PLUS, curses can push Kermit over the edge... even though it compiles, loads, and runs correctly, its increased size apparently makes it swap constantly, slowing it down to a crawl, even when the curses display is not in use. Some new makefile targets have been added to take care of this (e.g. sys3upcshcc), but similar tricks might be necessary in other cases too. On the curses file-transfer display, just below the "thermometer", is a running display of the transfer rate, as a flat quotient of file characters per elapsed seconds so far. You can change this to an average that gives greater weight to recent history (0.25 * instantaneous cps + 0.75 * historical cps) by adding -DCPS_WEIGHTED to your CFLAGS (sorry folks, this one is not worth a SET command). You can choose a second type of weighted average in which the weighting smooths out progressively as the transfer progresses by adding -DCPS_VINCE to -DCPS_WEIGHTED.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -