📄 ckccfg.txt
字号:
An alternative to curses is also available at compile time, but should be selected if your version of Kermit is to be run in local mode only in an ANSI terminal environment, for example on a desktop workstation that has an ANSI console driver. To select this option in place of curses, define the symbol MYCURSES: -DMYCURSES instead of CK_CURSES. The MYCURSES option uses built-in ANSI (VT100) escape sequences, and depends upon your terminal or console driver to interpret them correctly. In some C-Kermit builds, we replace printf() via #define printf... However, this can cause conflicts with the [n]curses header files. Various hacks are required to get around this -- see [51]ckutio.c, [52]ckufio.c, [53]ckuusx.c, [54]ckucmd.c, etc. [ [55]C-Kermit Home ] [ [56]Kermit Home ] ________________________________________________________________________ 4. CHARACTER SETS [ [57]Top ] [ [58]Contents ] [ [59]Next ] [ [60]Previous ] Since version 5A, C-Kermit has included support for conversion of character sets for Western European languages (i.e. languages that originated in Western Europe, but are now also spoken in the Western Hemisphere and other parts of the world), via ISO 8859-1 Latin Alphabet 1, for Eastern European languages (ISO Latin-2), Hebrew (and Yiddish), Greek, and Cyrillic-alphabet languages (ISO Latin/Cyrillic). Many file (local) character sets are supported: ISO 646 7-bit national sets, IBM code pages, Apple, DEC, DG, NeXT, etc. To build Kermit with no character-set translation at all, include -DNOCSETS in the CFLAGS. To build with no Latin-2, add -DNOLATIN2. To build with no Cyrillic, add -DNOCYRIL. To omit Hebrew, add -DNOHEBREW. If -DNOCSETS is *not* included, you'll always get LATIN1. To build with no KANJI include -DNOKANJI. There is presently no way to include Latin-2, Cyrillic, Hebrew, or Kanji without also including Latin-1. [61]Unicode support was added in C-Kermit 7.0, and it adds a fair amount of tables and code (and this is only a "Level 1" implementation -- a higher level would also require building in the entire Unicode database). On a PC with RH 5.2 Linux, building C-Kermit 7.0, we get the following sizes: NOCSETS NOUNICODE NOKANJI Before After [ ] [ ] [ ] 1329014 (Full) [ ] [ ] [ X ] 1325686 (Unicode but no Kanji) [ ] [ X ] [ ] 1158837 (All charsets except Unicode) [ X ] [ x ] [ x ] 1090845 (NOCSETS implies the other two) Note, by the way, that NOKANJI without NOUNICODE only removes the non-Unicode Kanji sets (Shift-JIS, EUC-JP, JIS-7, etc). Kanji is still representable in UCS-2 and UTF-8. [ [62]C-Kermit Home ] [ [63]Kermit Home ] ________________________________________________________________________ 5. APC EXECUTION [ [64]Top ] [ [65]Contents ] [ [66]Next ] [ [67]Previous ] The Kermit CONNECT and INPUT commands are coded to execute Application Program Command escape sequences from the host: <ESC>_<text><ESC>\ where <text> is a C-Kermit command, or a list of C-Kermit commands separated by commas, up to about 1K in length. To date, this feature has been included in the OS/2, Windows, VMS, OS-9, and Unix versions, for which the symbol: CK_APC is defined automatically in [68]ckuusr.h. For OS/2, APC is enabled at runtime by default, for UNIX it is disabled. It is controlled by the SET TERMINAL APC command. Configuring APC capability into a version that gets it by default (because CK_APC is defined in [69]ckuusr.h) can be overridden by including: -DNOAPC on the CC command line. C-Kermit's autodownload feature depends on the APC feature, so deconfiguring APC also disables autodownload (it doesn't use APC escape sequences, but uses the APC switching mechanism internally). [ [70]C-Kermit Home ] [ [71]Kermit Home ] ________________________________________________________________________ 6. PROGRAM SIZE [ [72]Top ] [ [73]Contents ] [ [74]Next ] [ [75]Previous ] SECTION CONTENTS 6.1. [76]Feature Selection 6.2. [77]Changing Buffer Sizes 6.3. [78]Other Size-Related Items 6.4. [79]Space/Time Tradeoffs (Also see [80]Section 4) Each release of C-Kermit is larger than the last. On some computers (usually old ones) the size of the program prevents it from being successfully linked and loaded. On some others (also usually old ones), it occupies so much memory that it is constantly swapping or paging. In such cases, you can reduce C-Kermit's size in various ways, outlined in this section. The following options can cut down on the program's size at compile time by removing features or changing the size of storage areas. If you are reading this section because all you want is a small, fast, quick-to-load Kermit file-transfer application for the remote end of your connection, and the remote end is Unix based, take a look at G-Kermit: [81]http://www.columbia.edu/kermit/gkermit.html 6.1. Feature Selection Features can be added or removed by defining symbols on the CC (C compiler) command line. "-D" is the normal CC directive to define a symbol so, for example, "-DNODEBUG" defines the symbol NODEBUG. Some C compilers might use different syntax, e.g. "-d NODEBUG" or "/DEFINE=NODEBUG". For C compilers that do not accept command-line definitions, you can put the corresponding #define statements in the file ckcsym.h, for example: #define NODEBUG The following table shows the savings achieved when building C-Kermit 8.0 (Beta.04) with selected feature-deselection switches on an Intel-based PC with Red Hat Linux 7.0 and gcc 2.96. The sizes are for non-security builds. The fully configured non-security build is 2127408 bytes. Option Size Savings Effect NOICP 545330 74.4% No Interactive Command Parser (command-line only) NOLOCAL 1539994 27.6% No making connections. NOXFER 1551108 27.1% No file transfer. IKSDONLY 1566608 26.4% Internet Kermit Server only. NOCSETS 1750097 17.7% No character-set conversion. NOSPL 1800293 15.4% No Script Programming Language. NONET 1808575 15.0% No making network connections. NOUNICODE 1834426 13.8% No Unicode character-set conversion. NOHELP 1837877 13.6% No built-in help text. NODEBUG 1891669 11.1% No debug log. NOFRILLS 1918966 9.8% No "frills". NOFTP 1972496 7.3% No FTP client. NODIAL 1984488 6.7% No automatic modem dialing. NOPUSH 2070184 2.7% No shell access, running external programs, etc. NOIKSD 2074129 2.5% No Internet Kermit Server capability. NOHTTP 2082610 2.1% No HTTP client. NOFLOAT 2091332 1.7% No floating-point arithmetic. NOCHANNELIO 2095978 1.5% No FOPEN/FREAD/FWRITE/FCLOSE, etc. MINIDIAL 2098035 1.4% No built-in support for many kinds of modems. NOSERVER 2098987 1.3% No server mode. NOSEXP 2105898 1.0% No S-Expressions. NOPTY 2117743 0.5% No pseudoterminal support. NORLOGIN 2121089 0.3% No RLOGIN connections. NOOLDMODEMS 2124038 0.2% No built-in support for old kinds of modems. NOSSH 2125696 0.1% No SSH command. And here are a few combinations Options Size Savings Effect NODEBUG NOICP NOCSETS NOLOCAL 281641 86.7% No debug log, parser, character sets, or making connections. NOICP NOCSETS NOLOCAL 376468 82.3% No parser, character sets, or making connections. NOICP NOCSETS NONET 427510 79.9% No parser, character sets, or network connections. NOSPL NOCSETS 1423784 33.1% No script language, or character sets. -DNOFRILLS removes various command synonyms; the following top-level commands: CLEAR, DELETE, DISABLE, ENABLE, GETOK, MAIL, RENAME, TYPE, WHO; and the following REMOTE commands: KERMIT, LOGIN, LOGOUT, PRINT, TYPE, WHO. 6.2. Changing Buffer Sizes Most modern computers have so much memory that (a) there is no need to scrimp and save, and (b) C-Kermit, even when fully configured, is relatively small by today's standards. Two major factors affect Kermit's size: feature selection and buffer sizes. Buffer sizes affect such things as the maximum length for a Kermit packet, the maximum length for a command, for a macro, for the name of a macro, etc. Big buffer sizes are used when the following symbol is defined: BIGBUFOK as it is by default for most modern platforms (Linux, AIX 4 and 5, HP-UX 10 and 11, Solaris, etc) in [82]ckuusr.h. If your build does not get big buffers automatically (SHOW FEATURES tells you), you can include them by rebuilding with BIGBUFOK defined; e.g. in Unix: make xxxx KFLAGS=-DBIGBUFOK where xxxx is the makefile target. On the other hand, if you want to build without big buffers when they normally would be selected, use: make xxxx KFLAGS=-DNOBIGBUF There are options to control Kermit's packet buffer allocations. The following symbols are defined in [83]ckcker.h in such a way that you can override them by redefining them in CFLAGS: -DMAXSP=xxxx - Maximum send-packet length. -DMAXRP=xxxx - Maximum receive-packet length. -DSBSIZ=xxxx - Total allocation for send-packet buffers. -DRBSIZ=xxxx - Total allocation for receive-packet buffers. The defaults depend on the platform. Using dynamic allocation (-DDYNAMIC) reduces storage requirements for the executable program on disk, and allows more and bigger packets at runtime. This has proven safe over the years, and now most builds (e.g. all Unix, VMS, Windows, and OS/2 ones) use dynamic memory allocation by default. If it causes trouble, however, then omit the -DDYNAMIC option from CFLAGS, or add -DNODYNAMIC. 6.3. Other Size-Related Items To make Kermit compile and load successfully, you might have to change your build procedure to: a. Request a larger ("large" or "huge") compilation / code-generation model. This is needed for 16-bit PC-based UNIX versions (most or all of which fail to build C-Kermit 7.0 and later anyway). This is typically done with a -M and/or -F switch (see your cc manual or man page for details). b. Some development systems support overlays. If the program is too big to be built as is, check your loader manual ("man ld") to see if an overlay feature is available. See the 2.10/2.11 BSD example in the UNIX makefile. (Actually, as of version 7.0, C-Kermit is too big to build, period, even with overlays, on 2.xx BSD). c. Similarly, some small and/or segment-based architectures support "code mapping", which is similar to overlays (PDP11-based VENIX 1.0, circa 1984, was an example). See the linker documentation on the affected platform. It is also possible to reduce the size of the executable program file in several other ways: a. Include the -O (optimize) compiler switch if it isn't already included in your "make" entry (and if it works!). If your compiler supports higher levels of optimization (e.g. -O2 or higher number, -Onolimit (HP-UX), etc), try them; the greater the level of optimization, the longer the compilation and more likely the compiler will run out of memory. The the latter eventuality, some compilers also provide command-line options to allocate more memory for the optimizer, like "-Olimit number" in Ultrix. b. If your platofrm supports shared libraries, change the make entry to take advantage of this feature. The way to do this is, of course, platform dependent; see the NeXT makefile target for an example. some platforms (like Solaris) do it automatically and give you no choice. But watch out: executables linked with shared libraries are less portable than statically linked executables. c. Strip the program image after building ("man strip" for further info), or add -s to the LNKFLAGS (UNIX only). This strips the program of its symbol table and relocation information. d. Move character strings into a separate file. See the 2.11 BSD target for an example. 6.4. Space/Time Tradeoffs There are more than 6000 debug() statements in the program. If you want to save both space (program size) and time (program execution time), include -DNODEBUG in the compilation. If you want to include debugging for tracking down problems, omit -DNODEBUG from the make entry. But when you include debugging, you have two choices for how it's done. One definition defines debug() to be a function call; this is cheap in space but expensive in execution. The other defines debug as "if (deblog)" and then the function call, to omit the function call overhead when the debug log is not active. But this adds a lot of space to the program. Both methods work, take your choice; IFDEBUG is preferred if memory is not a constraint but the computer is likely to be slow. The first method is the default, i.e. if nothing is done to the CFLAGS or in [84]ckcdeb.h (but in some cases, e.g. VMS, it is). To select the second method, include -DIFDEBUG in the compilation (and don't include -DNODEBUG). [ [85]C-Kermit Home ] [ [86]Kermit Home ] ________________________________________________________________________ 7. MODEM DIALING [ [87]Top ] [ [88]Contents ] [ [89]Next ] [ [90]Previous ]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -