+++ /dev/null
-
- 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.
-
- 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 ]
-
- -DNODIAL removes automatic modem dialing completely, including the
- entire [91]ckudia.c module, plus all commands that refer to dialing in
- the various ckuus*.c modules.
-
- -DMINIDIAL leaves the DIAL and related commands (SET/SHOW MODEM,
- SET/SHOW DIAL) intact, but removes support for all types of modems
- except CCITT, Hayes, Unknown, User-defined, Generic-high-speed, and
- None (= Direct). The MINIDIAL option cuts the size of the dial module
- approximately in half. Use this option if you have only Hayes or CCITT
- modems and don't want to carry the baggage for the other types.
-
- A compromise between full dialer support and MINIDIAL is obtained by
- removing support for "old" modems -- all the strange non-Hayes
- compatible 1200 and 2400 bps modems that C-Kermit has been carrying
- around since 1985 or so. To remove support for these modems, add
- -DNOOLDMODEMS to CFLAGS at compilation time.
-
- Finally, if you keep support for old modems, you will notice that
- their names appear on the "set modem ?" menu. That's because their
- names are, by default, "visible". But the list is confusing to the
- younger generation, who have only heard of modems from the
- V.32bis-and-later era. If you want to be able to use old modems, but
- don't want their names cluttering up menus, add this to CFLAGS:
-
- -DM_OLD=1
-
- [ [92]C-Kermit Home ] [ [93]Kermit Home ]
- ________________________________________________________________________
-
- 8. NETWORK SUPPORT
-
- [ [94]Top ] [ [95]Contents ] [ [96]Next ] [ [97]Previous ]
-
- SECTION CONTENTS
-
- 8.1. [98]TCP/IP
- 8.2. [99]X.25
- 8.3. [100]Other Networks
-
- C-Kermit supports not only serial-port and modem connections, but also
- TCP/IP and X.25 network connections. Some versions support other
- network types too like DECnet, LAT, NETBIOS, etc. If you define the
- following symbol:
-
- NONET
-
- then all network support is compiled away.
-
- 8.1. TCP/IP
-
- SUBSECTION CONTENTS
-
- 8.1.1. [101]Firewalls
- 8.1.2. [102]Compilation and Linking Problems
- 8.1.3. [103]Enabling Host Address Lists
- 8.1.4. [104]Enabling Telnet NAWS
- 8.1.5. [105]Enabling Incoming TCP/IP Connections
- 8.1.6. [106]Disabling SET TCP Options
-
- C-Kermit's TCP/IP features require the Berkeley sockets library or
- equivalent, generally available on any Unix system, as well as in
- Windows 9x/NT, OS/2, VMS, AOS/VS, VOS, etc. The TCP/IP support
- includes built-in TELNET, FTP, and HTTP protocol. To select TCP/IP
- support, include -DTCPSOCKET in your makefile target's CFLAGS, or (in
- VMS) the appropriate variant (e.g. -DWOLLONGONG, -DMULTINET,
- -DEXCELAN, -DWINTCP, etc).
-
- The VMS and/or early Unix third-party TCP/IP products are often
- incompatible with each other, and sometimes with different versions of
- themselves. For example, Wollongong reportedly put header files in
- different directories for different UNIX versions:
-
- * in.h can be in either /usr/include/sys or /user/include/netinet.
- * telnet.h can be in either /usr/include/arpa or
- /user/include/netinet.
- * inet.h can be in either /usr/include/arpa or /user/include/sys.
-
- In cases like this, use the -I cc command-line option when possible;
- otherwise it's better to make links in the file system than it is to
- hack up the C-Kermit source code. Suppose, for example, Kermit is
- looking for telnet.h in /usr/include/arpa, but on your computer it is
- in /usr/include/netinet. Do this (as root, or get the system
- administrator to do it):
-
- cd /usr/include/arpa
- ln /usr/include/netinet/telnet.h telnet.h
-
- ("man ln" for details about links.)
-
- The network support for TCP/IP and X.25 is in the source files
- [107]ckcnet.h, [108]ckctel.c, [109]ckctel.c, [110]ckctel.h,
- [111]ckcftp.c, with miscellaneous SHOW commands, etc, in the various
- ckuus*.c modules, plus code in the ck*con.c or ckucns.c (CONNECT
- command) and several other modules to detect TELNET negotiations, etc.
-
- Within the TCPSOCKET code, some socket-level controls are included if
- TCPSOCKET is defined in the C-Kermit CFLAGS and SOL_SOCKET is defined
- in in the system's TCP-related header files, such as <sys/socket.h>.
- These are:
-
- SET TCP KEEPALIVE
- SET TCP LINGER
- SET TCP RECVBUF
- SET TCP SENDBUF
-
- In addition, if TCP_NODELAY is defined, the following command is also
- enabled:
-
- SET TCP NODELAY (Nagle algorithm)
-
- See the [112]C-Kermit user documentation for descriptions of these
- commands.
-
- 8.1.1. Firewalls
-
- There exist various types of firewalls, set up to separate users of an
- internal TCP/IP network ("Intranet") from the great wide Internet, but
- then to let selected users or services get through after all.
-
- One firewall method is called SOCKS, in which a proxy server allows
- users inside a firewall to access the outside world, based on a
- permission list generally stored in a file. SOCKS is enabled in one of
- two ways. First, the standard sockets library is modified to handle
- the firewall, and then all the client applications are relinked (if
- necessary, i.e. if the libraries are not dynamically loaded) with the
- modified sockets library. The APIs are all the same, so the
- applications do not need to be recoded or recompiled.
-
- In the other method, the applications must be modified to call
- replacement routines, such as Raccept() instead of accept(), Rbind()
- instead of bind(), etc, and then linked with a separate SOCKS library.
- This second method is accomplished (for SOCKS4) in C-Kermit by
- including -DCK_SOCKS in your CFLAGS, and also adding:
-
- -lsocks
-
- to LIBS, or replacing -lsockets with -lsocks (depending on whether the
- socks library also includes all the sockets entry points).
-
- For SOCKS5, use -DCK_SOCKS5.
-
- Explicit firewall support can, in general, not be a standard feature
- or a feature that is selected at runtime, because the SOCKS library
- tends to be different at each site -- local modifications abound.
-
- The ideal situation occurs when firewalls are supported by the first
- method, using dynamically linked sockets-replacement libraries; in
- this case, all your TCP/IP client applications negotiate the firewall
- transparently.
-
- 8.1.2. Compilation and Linking Problems
-
- If you get a compilation error in [113]ckcnet.c, with a complaint like
- "incompatible types in assignment", it probably has something to do
- with the data type your system uses for the inet_addr() function,
- which is declared (usually) in <arpa/inet.h>. Kermit uses "unsigned
- long" unless the symbol INADDRX is defined, in which case "struct
- inaddr" is used instead. Try adding -DINADDRX to CFLAGS in your make
- entry, and if that fixes the problem, please send a report to
- kermit@columbia.edu.
-
- Compilation errors might also have to do with the data type used for
- getsockopt() and setsockopt() option-length field. This is normally an
- int, but sometimes it's a short, a long, or an unsigned any of those,
- or a size_t. To fix the compilation problem, add -DSOCKOPT_T=xxx to
- the CFLAGS in your makefile target, where xxx is the appropriate type
- (use "man getsockopt" or grep through your system/network header files
- to find the needed type).
-
- 8.1.3. Enabling Host Address Lists
-
- When you give Kermit an IP host name, it calls the socket routine
- gethostbyname() to resolve it. gethostbyname() returns a hostent
- struct, which might or might not not include a list of addresses; if
- it does, then if the first one fails, Kermit can try the second one,
- and so on. However, this will only work if the symbol "h_addr" is a
- macro defined as "h_addr_list[0]", usually in netdb.h. If it is, then
- you can activate this feature by defining the following symbol in
- CFLAGS:
-
- HADDRLIST
-
- 8.1.4. Enabling Telnet NAWS
-
- The Telnet Negotiation About Window Size (NAWS) option requires the
- ability to find out the terminal screen's dimensions. E.g. in Unix, we
- need something like ioctl(0, TIOCGWINSZ, ...). If your version of
- Kermit was built with NAWS capability, SHOW VERSIONS includes CK_NAWS
- among the compiler options. If it doesn't, you can add it by defining
- CK_NAWS at compile time. Then, if the compiler or linker complain
- about undefined or missing symbols, or there is no complaint but SHOW
- TERMINAL fails to show reasonable "Rows =, Columns =" values, then
- take a look at (or write) the appropriate ttgwsiz() routine. On the
- other hand, if CK_NAWS is defined by default for your system (in
- [114]ckcnet.h), but causes trouble, you can override this definition
- by including the -DNONAWS switch on your CC command line, thus
- disabling the NAWS feature.
-
- This appears to be needed at least on the AT&T 3B2, where in
- [115]ckutio.c, the routine ttgwsiz() finds that the TIOCGWINSZ symbol
- is defined but lacks definitions for the corresponding winsize struct
- and its members ws_col and ws_row.
-
- The UNIX version of C-Kermit also traps SIGWINCH, so it can send a
- NAWS to the Telnet server any time the local console terminal window
- size changes, e.g. when you stretch it with a mouse. The
- SIGWINCH-trapping code is enabled if SIGWINCH is defined (i.e. in
- signal.h). If this code should cause problems, you can disable it
- without disabling the NAWS feature altogether, by defining NOSIGWINCH
- at compile time.
-
- 8.1.5. Enabling Incoming TCP/IP Connections
-
- This feature lets you "set host * port" and wait for an incoming
- connection on the given port. This feature is enabled automatically at
- compile if TCPSOCKET is defined and SELECT is also defined. But watch
- out, simply defining SELECT on the cc command line does not guarantee
- successful compilation or linking (see [116]Section 11).
-
- If you want to disable incoming TCP/IP connections, then build
- C-Kermit with:
-
- -DNOLISTEN
-
- 8.1.6. Disabling SET TCP Options
-
- The main reason for this is because of header file / prototype
- conflicts at compile time regardting get- / setsockopt(). If you can't
- fix them (without breaking other builds), add the following in CFLAGS:
-
- -DNOTCPOPTS
-
- 8.2. X.25
-
- X.25 support requires (a) a Sun, (b) the SunLink product (libraries
- and header files), and (c) an X.25 connection into your Sun. Similarly
- (in C-Kermit 7.0 or later) Stratus VOS and IBM AIX.
-
- In UNIX, special makefile targets sunos4x25 and sunos41x25 (for SUNOS
- 4.0 and 4.1, respectively), or aix41x25, are provided to build in this
- feature, but they only work if conditions (a)-(c) are met. To request
- this feature, include -DSUNX25 (or -DIBMX25) in CFLAGS.
-
- SUNX25 (or -DIBMX25) and TCPSOCKET can be freely mixed and matched,
- and selected by the user at runtime with the SET NETWORK TYPE command
- or SET HOST switches.
-
- 8.3. Other Networks
-
- Support for other networking methods -- NETBIOS, LAT, Named Pipes, etc
- -- is included in ck*net.h and ck*net.c for implementations (such as
- Windows or OS/2) where these methods are supported.
-
- Provision is made in the organization of the modules, header files,
- commands, etc, for addition of new network types such as DECnet, X.25
- for other systems (HP-UX, VMS, etc), and so on. Send email to
- [117]kermit@columbia.edu if you are willing and able to work on such a
- project.
-
- [ [118]C-Kermit Home ] [ [119]Kermit Home ]
- ________________________________________________________________________
-
- 9. EXCEPTION HANDLING
-
- [ [120]Top ] [ [121]Contents ] [ [122]Next ] [ [123]Previous ]
-
- The C language setjmp/longjmp mechanism is used for handling
- exceptions. The jump buffer is of type jmp_buf, which almost
- everywhere is typedef'd as an array, in which case you should have no
- trouble compiling the exception-handling code. However, if you are
- building C-Kermit in/for an environment where jmp_buf is something
- other than an array (e.g. a struct), then you'll have to define the
- following symbol:
-
- JBNOTARRAY
-
- [ [124]C-Kermit Home ] [ [125]Kermit Home ]
- ________________________________________________________________________
-
- 10. SECURITY FEATURES
-
- [ [126]Top ] [ [127]Contents ] [ [128]Next ] [ [129]Previous ]
-
- Security, in the sense of secure authentication and strong encryption,
- can be built into versionf of C-Kermit for which the appropriate
- libraries and header files are available (Kerberos IV, Kerberos V,
- OpenSSL, SRP), as explained in great detail in the Kermit Security
- Reference
- . The following symbols govern C-Kermit's security features at build
- time:
-
- NO_AUTHENTICATION
- Means do not configure any TELNET AUTHENTICATION support. It
- implies NO_ENCRYPTION and undefines any of the auth and encrypt
- types. It does not undefine CK_SSL even though builds with
- CK_SSL cannot succeed without CK_AUTHENTICATION. (This will be
- supported in a future release. It will be needed to allow
- C-Kermit to be built only as an FTP client.)
-
- NO_KERBEROS
- Means do not compile in any KERBEROS support when
- CK_AUTHENTICATION has been defined.
-
- NO_SRP
- Do not compile in any SRP support when CK_AUTHENTICATION has
- been defined.
-
- NO_SSL
- Do not compile in any SSL/TLS support
-
- NO_ENCRYPTION
- Do not compile in any Telnet encryption support. It does not
- affect the use of SSL/TLS
-
- NOSSH
- Do not compile in any SSH support whether internal or external
-
- CK_AUTHENTICATION
- Telnet AUTHENTICATION support. (Also, required if SSL/TLS
- support is desired.) On most platforms this does not autodefine
- any authentication mechanisms such as Kerberos V, Kerberos IV,
- SRP, ... Those need to be defined separately.
-
- CK_KERBEROS
- Defined automatically when KRB4, KRB5, or KRB524 are defined.
- Implies that some version of Kerberos is in use.
-
- KRB4
- Should be defined when Kerberos IV support is desired.
-
- KRB5
- Should be defined when Kerberos V support is desired.
-
- KRB524
- Should be defined if both Kerberos V and Kerberos IV are used
- and the Kerberos IV support is provided by the MIT Kerberos IV
- compatibility library in the current Kerberos 5 distribution.
-
- KRB5_U2U
- Should be defined if KRB5 is defined and Kerberos 5 User to
- User mode is desired.
-
- HEIMDAL
- Should be defined if Kerberos V support is provided by HEIMDAL.
- Support for this option is not complete in C-Kermit 8.0. Anyone
- interested in working on this should contact kermit-support.
-
- CK_SRP
- Should be defined if SRP support is desired.
-
- CK_ENCRYPTION
- Should be defined if TELNET ENCRYPTION option support is
- desired. This option does not define any particular encryption
- types. That should be done by defining CK_DES or CK_CAST.
-
- CK_DES
- Should be defined if either DES or 3DES Telnet Encryption
- option support is desired.
-
- LIBDES
- If CK_DES is defined and DES support is being provided by
- either Eric Young's libdes.a or OpenSSL 0.9.6x or earlier, this
- option must be defined. If it is not defined, it will be
- assumed that DES support is provided by the MIT Kerberos IV
- libraries.
-
- CK_CAST
- Should be defined if CAST Telnet Encryption option support is
- desired
-
- CK_SSL
- Should be defined if SSL/TLS support (OpenSSL) is desired.
-
- SSL_KRB5
- If KRB5 is defined, and OpenSSL is built to support the
- Kerberos 5 ciphers, then you should define SSL_KRB5
-
- NOSSLKRB5
- If you are using OpenSSL 0.9.7 or higher and do not wish to
- build with support for Kerberos 5 TLS ciphers, this option must
- be defined.
-
- ZLIB
- If you are using OpenSSL 0.9.6 or higher and it has been
- compiled with support for ZLIB compression, this option should
- be defined to enable Kermit to properly enable the use of
- compression.
-
- SSHCMD
- Defined for C-Kermit to enable the use of external SSH clients
- from the Kermit command language
-
- SSHBUILTIN
- Defined for Kermit implementations that have integrated SSH
- support. Currently only Windows.
-
- ANYSSH
- Defined if either SSHCMD or SSHBUILTIN are defined.
-
- CK_SNDLOC
- Telnet Send Location support.
-
- NOSNDLOC
- Do not include Telnet Send Location support.
-
- CK_XDISPLOC
- Telnet X-Display Location support. Determines if the X-Display
- location information is sent to the Telnet server either via
- Telnet XDISPLOC or NEW-ENV options.
-
- NOXDISPLOC
- Do not include Telnet X-Display Location support.
-
- CK_FORWARD_X
- Telnet Forward X Windows Session Data option. Used to protect
- the privacy and integrity of X Windows Sessions when secure
- telnet sessions are in use.
-
- NOFORWARDX
- Do not include Telnet Forward X Windows Session Data option.
-
- Besides the strong forms of security listed above, C-Kermit also
- embodies various internal security features, including:
-
- NOPUSH
- Compiling with the NOPUSH symbol defined removes all the "shell
- escape" features from the program, including the PUSH, RUN, and
- SPAWN commands, the "!" and "@" command prefixes, OPEN !READ,
- OPEN !WRITE, job control (including the SUSPEND command), the
- REDIRECT command, shell/DCL escape from CONNECT mode, as well
- as the server's execution of REMOTE HOST commands (and, of
- course, the ENABLE HOST command). Add NODISPO to also prevent
- acceptance of incoming MAIL or REMOTE PRINT files. For UNIX,
- also be sure to read [130]Section 11 of the [131]Unix C-Kermit
- Installation Instructions. about set[ug]id configuration.
- Additional restrictions can be enforced when in server mode;
- read about the DISABLE command in the user manual.
-
- NOCCTRAP
- Compiling with NOCCTRAP prevents the trapping of SIGINT by
- Kermit. Thus if the user generates a SIGINT signal (e.g. by
- typing the system's interrupt character), Kermit will exit
- immediately, rather than returning to its prompt.
-
- NOPUSH and NOCCTRAP together allow Kermit to be run from restricted
- shells, preventing access to system functions.
-
- [ [132]C-Kermit Home ] [ [133]Kermit Home ]
- ________________________________________________________________________
-
- 11. ENABLING SELECT()
-
- [ [134]Top ] [ [135]Contents ] [ [136]Next ] [ [137]Previous ]
-
- Kermit works best if it can do nonblocking reads, nondestructive input
- buffer checking, and millisecond sleeps. All of these functions can be
- accomplished by the select() function, which, unfortunately, is not
- universally available. Furthermore, select() is required if incoming
- TCP/IP connections are to be supported.
-
- select() was introduced with Berkeley UNIX, rejected by AT&T for
- System V, but is gradually creeping in to all UNIX versions (and other
- operating systems too) by virtue of its presence in the sockets
- library, which is needed for TCP/IP. AT&T SVID for System V R4
- includes select(), but that does not mean that all SVR4
- implementations have it.
-
- Furthermore, even when select() is available, it might work only on
- socket file descriptors, but not on others like serial ports, pipes,
- etc. For example, in AOS/VS and BeOS, it works only with file
- descriptors that were created by socket() and opened by connect() or
- accept().
-
- Other alternatives include poll() and rdchk(). Only one of these three
- functions should be included. The following symbols govern this:
-
- SELECT Use select() (BSD, or systems with sockets libraries)
- CK_POLL Use poll() (System V)
- RDCHK Use rdchk() (SCO XENIX and UNIX)
-
- If your system supports the select() function, but your version of
- C-Kermit does not, try adding:
-
- -DSELECT
-
- to the CFLAGS, and removing -DRDCHK or -DCK_POLL if it is there. If
- you get compilation errors, some adjustments to ck*tio.c and/or
- ck*net.c might be needed; search for SELECT (uppercase) in these files
- (note that there are several variations on the calling conventions for
- select()).
-
- Various macros and data types need to be defined in order to use
- select(). Usually these are picked up from <types.h> or <sys/types.h>.
- But on some systems, they are in <sys/select.h>. In that case, add the
- following:
-
- -DSELECT_H
-
- to the CFLAGS to tell C-Kermit to #include <sys/select.h>. A good
- indication that you need to do this would be if you get compile-time
- complaints about "fd_set" or "FD_SET" not being declared or defined.
-
- In UNIX, the use of select() vs fork() in the CONNECT command is
- independent of the above considerations, and is governed by choosing a
- particular makefile target.
-
- As of C-Kermit 7.0, select() is also the preferred control mechanism
- for the CONNECT command. Unfortunately, the structures used by the
- original UNIX CONNECT command, based on fork(), and those used by
- select(), are so different, it was not practical to implement them
- both in one module. So the select()-based CONNECT command module for
- UNIX is [138]ckucns.c, and the fork-based one remains [139]ckucon.c.
- To choose the fork-based one, which is more portable (but slower and
- more fragile), use "wermit" as the make target. To choose the
- select-based one, use "xermit". Only do this if you can verify that
- the CONNECT command works on serial connections and PIPE connections
- as well as TCP connections.
-
- The select()-based Unix CONNECT module, ckucns.c, must be used if
- encryption is to be done, since the fork() version (ckucon.c) loses
- its ability to share vital state information between the two forks.
- Also note that the select() version is superior in many other ways
- too. For example, it recovers better from exterior killing, forced
- disconnections, etc, plus it goes faster.
-
- SHOW VERSIONS tells whether the CONNECT module uses fork() or
- select().
-
- C-Kermit 8.0 adds learned script capability, which depends on
- select(). All the "wermit" based targets (as opposed to "xermit") had
- NOLEARN added to them. Whenever changing a target over from wermit to
- xermit, also remember to remove NOLEARN.
-
- [ [140]C-Kermit Home ] [ [141]Kermit Home ]
- ________________________________________________________________________
-
- 12. I/O REDIRECTION
-
- [ [142]Top ] [ [143]Contents ] [ [144]Next ] [ [145]Previous ]
-
- The REDIRECT command allows a local program to be run with its i/o
- redirected over the communications connection. Your version of
- C-Kermit has a REDIRECT command if it was built with the following
- CFLAG:
-
- -DCK_REDIR
-
- This, in turn, is possible only if the underlying API is there. In the
- case of UNIX this is just the wait() system call, so all UNIX versions
- get this feature as of 6.0.192 (earlier versions needed a <sys/wait.h>
- header file defining the symbols WIFEXITED and WEXITSTATUS).
-
- As of version 7.0, file transfer can be done using pipes and filters.
- To enable this feature, #define PIPESEND (and fill in the code). To
- disable on systems where it is normally enabled, define NOPIPESEND.
- This feature is, of course, also disabled by building with NOPUSH (or
- giving the "nopush" command at runtime).
-
- C-Kermit 7.0 also adds the PIPE and SET HOST /COMMAND commands, which
- provide another form of redirection. This feature is selected with
- -DNETCMD. CK_RDIR must also be defined, since the same mechanisms are
- used internally.
-
- [ [146]C-Kermit Home ] [ [147]Kermit Home ]
- ________________________________________________________________________
-
- 13. FLOATING-POINT NUMBERS, TIMERS, AND ARITHMETIC
-
- [ [148]Top ] [ [149]Contents ] [ [150]Next ] [ [151]Previous ]
-
- Floating-point support was added in C-Kermit 7.0.
-
- Floating-point numbers are enabled internally, at least for use in
- high-precision file-transfer timers and statistics, unless the
- following symbol is defined at compile time:
-
- -DNOFLOAT
-
- This might be necessary on old PCs that do not have built-in
- floating-point hardware.
-
- When NOFLOAT is not defined, the following symbol tells which
- floating-point type to use:
-
- -DCKFLOAT=xxxx
-
- The value is either "double" (normal for 32- and 16-bit architectures)
- or "float" (normal for 64-bit architectures).
-
- C-Kermit can be configured to use high-precision file-transfer timers
- for more accurate statistics. This feature is enabled with:
-
- -DGFTIMER
-
- and disabled with:
-
- -DNOGFTIMER
-
- If you try to build with -DGFTIMER but you get compilation errors,
- either fix them (and send email to kermit@columbia.edu telling what
- you did), or else give up and use -DNOGFTIMER (or -DNOFLOAT) instead.
- Hint: depending on your machine architecture, you might have better
- luck using double than float as the data type for floating-point
- numbers, or vice versa. Look in [152]ckcdeb.h for the CKFLOAT
- definition.
-
- Floating-point arithmetic is also supported in the script programming
- language. First via the \fpp...() functions, such as \fppadd(), which
- adds two floating-point numbers, second in S-Expressions. Addition,
- subtraction, multiplication, and division are always available. But
- other functions such as logs, raising to powers, sines and cosines,
- etc, require the C Math library. To include user-level floating-point
- math you must put:
-
- -DFNFLOAT
-
- and in Unix you must link with the Math library:
-
- LIBS=".... -lm"
-
- In K95 and VMS, FNFLOAT is defined automatically if CKFLOAT is
- defined. In Unix, however, FNFLOAT must be added to each makefile
- target individually, because of the special linking instructions that
- must also be added to each target.
-
- Note: S-Expressions require FNFLOAT.
-
- [ [153]C-Kermit Home ] [ [154]Kermit Home ]
- ________________________________________________________________________
-
- 14. SPECIAL CONFIGURATIONS
-
- [ [155]Top ] [ [156]Contents ] [ [157]Previous ]
-
- As of C-Kermit 7.0, if you build C-Kermit normally, but with -DNOICP
- (No Interactive Command Parser), you get a program capable of making
- serial connections (but not dialing) and network connections (if
- TCPSOCKET or other network option included), and can also transfer
- files using Kermit protocol, but only via autodownload/upload.
- Furthermore, if you call the executable "telnet", it will act like
- Telnet -- using the command-line options. However, in this case there
- is nothing to escape back to, so if you type Ctrl-\c, it just prints a
- message to this effect.
-
- You can also build C-Kermit with -DNOXFER, meaning omit all the
- file-transfer features. This leaves you with a scriptable
- communications program that is considerably smaller than the full
- C-Kermit.
-
- [ [158]C-Kermit Home ] [ [159]Kermit Home ]
- ________________________________________________________________________
-
- APPENDIX I: SUMMARY OF COMPILE-TIME OPTIONS
-
- [ [160]Top ] [ [161]Contents ]
-
- These are the symbols that can be specified on the cc command line,
- listed alphabetically. Others are used internally, including those
- taken from header files, those defined by the compiler itself, and
- those inferred from the ones given below. Kermit's SHOW VERSIONS
- command attempts to display most of these. See [162]ckcdeb.h and
- [163]ckcnet.h for inference rules. For example SVR3 implies ATTSV,
- MULTINET implies TCPSOCKET, and so on.
-
- Here is the complete list of the Kermit-specific compile-time
- switches:
-
- ACUCNTRL Select BSD 4.3-style acucntrl() bidirectional tty control.
- aegis Build for Apollo Aegis (predefined on Apollo systems).
- AIX370 Build for IBM AIX/370 for IBM mainframes.
- AIXESA Build for IBM AIX/ESA for IBM mainframes.
- AIXPS2 Build for IBM AIX 3.0 for PS/2 series (never formally
- released).
- AIXRS Build for IBM AIX 3.x on RS/6000.
- AIX41 Build for IBM AIX 4.x on RS/6000.
- AMIGA Build for Commodore Amiga with Intuition OS.
- ATT6300 Build for AT&T 6300 PLUS.
- ATT7300 Build for AT&T 7300 UNIX PC (3B1).
- ATTSV Build for AT&T System III or V UNIX.
- AUX Build for Apple A/UX for the Macintosh.
- BIGBUFOK OK to use big buffers - "memory is not a problem"
- BPS_xxxx Enable SET SPEED xxxx
- BSD29 Build for BSD 2.9 or 2.10.
- BSD4 Build for BSD 4.2.
- BSD41 Build for BSD 4.1.
- BSD43 Build for BSD 4.3.
- BSD44 Build for BSD 4.4.
- C70 Build for BBN C/70.
- CIE Build for CIE Systems 680/20.
- CKCONINTB4CB Work around prompt-disappears after escape back from
- CONNECT.
- CKLEARN Build with support for learned scripts.
- CKLOGDIAL Enable connection log.
- CKMAXPATH Maximum length for a fully qualified filename.
- CKREGEX (misnomer) Include [...] or {xxx,xxx,xxx} matching in
- ckmatch().
- CKSYSLOG Enable syslogging.
- CK_ANSIC Enable ANSI C constructs - prototypes, etc.
- CK_ANSILIBS Use header files for ANSI C libraries.
- CK_APC Enable APC execution by CONNECT module.
- CK_CURSES Enable fullscreen file transfer display.
- CK_DSYSINI Use system-wide init file, with name supplied by Kermit.
- CK_DTRCD DTR/CD flow control is available.
- CK_FAST Build with fast Kermit protocol defaults.
- CK_FORK_SIG UNIX only: signal() number for CONNECT module forks.
- CK_IFRO IF REMOTE command is available (and can run in remote mode).
- CK_INI_A System-wide init file takes precedence over user's.
- CK_INI_B User's init file takes precedence over the system-wide one.
- CK_LABELED Include support for SET FILE TYPE LABELED.
- CK_LBRK This version can send Long BREAK.
- CK_LINGER Add code to turn of TCP socket "linger" parameter.
- CK_MKDIR This version has a zmkdir() command to create directories.
- CK_NAWS Include TELNET Negotiate About Window Size support.
- CK_NEWTERM Use newterm() rather than initscr() to initialize curses.
- CK_PAM Include PAM authentication (might also require -lpam).
- CK_PCT_BAR Fullscreen file transfer display should include
- "thermometer".
- CK_POLL System-V or POSIX based UNIX has poll() function.
- CK_POSIX_SIG Use POSIX signal handing: sigjmp_buf, sigsetjmp,
- siglongjmp.
- CK_READ0 read(fd,&x,0) can be used to test TCP/IP connections.
- CK_REDIR Enable the REDIRECT command.
- CK_RESEND Include the RESEND command (needs zfseek() + append).
- CK_RTSCTS RTS/CTS flow control is available.
- CK_SHADOW Include support for shadow passwords (e.g. for IKSD
- authentication).
- CK_SOCKBUF Enable TCP socket-buffer-size-increasing code.
- CK_SOCKS UNIX only: Build with socks library rather than regular
- sockets
- CK_SOCKS5 UNIX only: Build with socks 5 lib rather than regular
- sockets
- CK_SPEED Enable control-character unprefixing.
- CK_SYSINI="xxxxx" Quoted string to be used as system-wide init file
- name.
- CK_TIMERS Build with support for dynamically calculated packet
- timeouts.
- CK_TMPDIR This version of Kermit has an isdir() function.
- CK_TTYFD Defined on systems where the communications connection file
- descriptor (ttyfd) can be passed to other processes as a command-line
- argument via \v(ttyfd).
- CK_URL Parse URLs as well as hostnames, etc.
- CK_XONXOFF Xon/Xoff flow control available.
- CK_XYZ Include support for XYZMODEM protocols.
- CK_WREFRESH Curses package includes wrefresh(),clearok() for screen
- refresh.
- CKFLOAT=type Floating-point data type, "double" or "float".
- CKTYP_H=xxx Force include of xxx as <types.h> file.
- CLSOPN When hanging up a tty device, also close and reopen it.
- CMDDEP Maximum recursion depth for self-referential user-defined fn's.
- COHERENT Build for Mark Williams Coherent UNIX
- CONGSPD Define if this version has congspd() routine in ck?tio.c
- datageneral Build for Data General AOS/VS or AOS/VS II
- DCLPOPEN popen() is available but needs to be declared
- DEC_TCPIP Build with support for DEC TCP/IP (UCX) for (Open)VMS
- DGUX430 Build for DG/UX 4.30
- DGUX540 Build for DG/UX 5.40
- DEFPAR=x Default parity, 0, 'e', 'o', 'm', or 's'.
- DFTTY=xxx Default communications device name.
- DIRENT UNIX directory structure to be taken from <dirent.h>.
- DIRPWDRP Prompt for password in REMOTE CWD command.
- DTILDE Include UNIX ~ notation for username/home-directory
- DYNAMIC Allocate file transfer packet buffers dynamically with malloc.
- ENCORE Build for Encore Multimax computers.
- EXCELAN Build with excelan TCP/IP.
- FNFLOAT Include floating-point math functions (logs, sin, cos, exp,
- etc)
- FT18 Build for Fortune For:Pro 1.8.
- FT21 Build for Fortune For:Pro 2.1.
- GEMDOS Build for Atari ST GEMDOS.
- GFTIMER Use high-precision floating-point file-transfer timers.
- GID_T=xxx Group IDs are of type xxx (usually int, short, or gid_t).
- HADDRLIST If gethostbyname() hostent struct contains a list of
- addresses.
- HDBUUCP Build with support for Honey DanBer UUCP.
- HPUX Build for Hewlett Packard HP-UX.
- HPUX9 Build for Hewlett Packard HP-UX 9.x.
- HPUX10 Build for Hewlett Packard HP-UX 10.x.
- HWPARITY Define if this version can SET PARITY HARDWARE { EVEN,
- ODD...}
- I386IX Build for Interactive System V R3.
- IFDEBUG Add IF stmts "if (deblog)" before "debug()" calls.
- INADDRX TCP/IP inet_addr() type is struct inaddr, not unsigned long.
- INTERLAN Build with support for Racal/Interlan TCP/IP.
- ISDIRBUG System defs of S_ISDIR and S_ISREG have bug, define
- ourselves.
- ISIII Build for Interactive System III.
- IX370 Build for IBM IX/370.
- KANJI Build with Kanji character-set translation support.
- LCKDIR UUCP lock directory is /usr/spool/uucp/LCK/.
- LFDEVNO UUCP lockfile name uses device numbers, as in SVR4.
- LINUXFSSTND For Linux, use FSSTND UUCP lockfile conventions (default).
- LOCK_DIR=xxx UUCP lock directory is xxx (quoted string).
- LOCKF Use lockf() (in addition to lockfiles) on serial lines
- LONGFN BSD long filenames supported using <dir.h> and opendir().
- LYNXOS Build for Lynx OS 2.2 or later (POSIX-based).
- MAC Build for Apple Macintosh with Mac OS.
- MATCHDOT Make wildcards match filenames that start with period (.)
- MAXRP=number Maximum receive-packet length.
- MAXSP=number Maximum send-packet length.
- MDEBUG Malloc-debugging requested.
- MINIDIAL Minimum modem dialer support: CCITT, Hayes, Unkown, and None.
- MINIX Build for MINIX.
- MIPS Build for MIPS workstation.
- MULTINET Build with support for TGV MultiNet TCP/IP (VAX/VMS).
- M_UNIX Defined by SCO.
- NAP The nap() is available (conflicts with SELECT and USLEEP)
- NAPHACK The nap() call is available but only as syscall(3112,...)
- NDIR BSD long filenames supported using <ndir.h> and opendir().
- NDGPWNAM Don't declare getpwnam().
- NDSYSERRLIST Don't declare sys_errlist[].
- NEEDSELECTDEFS select() is avaible but we need to define FD_blah
- ourselves.
- NETCMD Build with support for SET HOST /COMMAND and PIPE commands.
- NEXT Build for NeXT Mach 1.x or 2.x or 3.0, 3.1, or 3.2.
- NEXT33 Build for NeXT Mach 3.3.
- NOANSI Disable ANSI C function prototyping.
- NOAPC Do not include CK_APC code.
- NOARROWKEYS Exclude code to parse ANSI arrow-key sequences.
- NOB_xxxx Disable SET SPEED xxxx
- NOBIGBUF Override BIGBUFOK when it is the default
- NOBRKC Don't try to refer to t_brkc or t_eof tchars structure members.
- NOCKFQHOSTNAME Exclude code to get fully qualified hostname in case it
- causes core dumps.
- NOCCTRAP Disable Control-C (SIGINT) trapping.
- NOCKSPEED Disable control-prefix removal feature (SET CONTROL).
- NOCKTIMERS Build without support for dynamic timers.
- NOCKXYZ Overrides CK_XYZ.
- NOCKREGEX Do not include [...] or {xxx,xxx,xxx} matching in ckmatch().
- NOCMDL Build with no command-line option processing.
- NOCOTFMC No Close(Open()) To Force Mode Change (UNIX version).
- NOCSETS Build with no support for character set translation.
- NOCYRIL Build with no support for Cyrillic character set translation.
- NOCYRILLIC Ditto.
- NODEBUG Build with no debug logging capability.
- NODIAL Build with no DIAL or SET DIAL commands.
- NODISPO Build to always refuse incoming MAIL or REMOTE PRINT files.
- DNODISPLAY Build with no file-transfer display.
- NOESCSEQ Build with no support for ANSI escape sequence recognition.
- NOFAST Do not make FAST Kermit protocol settings the default.
- NOFDZERO Do not use file descriptor 0 for remote-mode file transfer.
- NOFILEH Do not #include <sys/file.h>.
- NOFLOAT Don't include any floating-point data types or operations.
- NOFRILLS Build with "no frills" (this should be phased out...)
- NOFTRUNCATE Include this on UNIXes that don't have ftruncate().
- NOGETUSERSHELL Include this on UNIXes that don't have getusershell().
- NOGFTIMER Don't use high-precision floating-point file-transfer
- timers.
- NOHEBREW Build with no support for Hebrew character sets.
- NOHELP Build with no built-in help.
- NOIKSD Build with IKSD support excluded.
- NOINITGROUPS Include this on UNIXes that don't have initgroups().
- NOICP Build with no interactive command parser.
- NOJC Build with no support for job control (suspend).
- NOKANJI Build with no support for Japanese Kanji character sets.
- NOKVERBS Build with no support for keyboard verbs (\Kverbs).
- NOLATIN2 Build with no ISO Latin-2 character-set translation support.
- NOLEARN Build with no support for learned scripts.
- NOLINKBITS Use of S_ISLNK and _IFLNK untrustworthy; use readlink()
- instead.
- NOLOCAL Build without any local-mode features: No Making Connections.
- NOLOGDIAL Disable connection log.
- NOLOGIN Build without IKSD (network login) support.
- NOLSTAT Not OK to use lstat().
- NOMDMHUP Build without "modem-specific hangup" (e.g. ATH0) feature.
- NOMHHOST Exclude the multihomed-host TCP/IP code (if compilcation
- errors)
- NOMINPUT Build without MINPUT command.
- NOMSEND Build with no MSEND command.
- NONAWS Do not include TELNET Negotiate About Window Size support.
- NONET Do not include any network support.
- NONOSETBUF (See NOSETBUF)
- NOPARSEN Build without automatic parity detection.
- NOPIPESEND Disable file transfer using pipes and filters.
- NOPOLL Override CK_POLL definition.
- NOPOPEN The popen() library call is not available.
- NOPURGE Build with no PURGE command.
- NOPUSH Build with no escapes to operating system.
- NOREALPATH In UNIX, realpath() function is not available.
- NORECALL Disable the command-recall feature.
- NOREDIRECT Disable REDIRECT command.
- NORENAME Don't use rename() system call, use link()/unlink() (UNIX).
- NORESEND Build with no RESEND command.
- NORETRY Build with no command-retry feature.
- NOSCRIPT Build with no SCRIPT command.
- NOSELECT Don't try to use select().
- NOSERVER Build with no SERVER mode and no server-related commands.
- NOSETBUF Don't make console writes unbuffered.
- NONOSETBUF DO make console writes unbuffered.
- NOSETREU setreuid() and/or setregid() not available.
- NOSHOW Build with no SHOW command (not recommended!).
- NOSIGWINCH Disable SIGWINCH signal trapping.
- NOSPL Build with no script programming language.
- NOSTAT Don't call stat() from mainline code.
- NOSYMLINK Include this for UNIXes that don't have readlink().
- NOSYSIOCTLH Do not #include <sys/ioctl.h>.
- NOSYSTIMEH Co not include <sys/time.h>.
- NOSYSLOG Disable syslogging code.
- NOTCPOPTS Build with no SET TCP options or underlying support.
- NOTLOG Build with no support for transaction logging.
- NOTM_ISDST Struct tm has no tm_isdst member.
- NOUNICODE Build with no support for Unicode character-set translation.
- NOURL Don't parse URLs
- NOUUCP Build with no UUCP lockfile support (dangerous!).
- NOWARN Make EXIT WARNING be OFF by default (otherwise it's ON).
- NOWREFRESH Override built-in definition of CK_WREFRESH (q.v.).
- NOXFER Build with no Kermit or other file-transfer protocols.
- NOXMIT Build with no TRANSMIT command.
- NOXPRINT Disables transparent print code.
- OLDMSG Use old "entering server mode" message (see [164]ckcmai.c).
- OLINUXHISPEED Build in old Linux hi-serial-speed code (for Linux <=
- 1.0).
- OPENBSD Build for OpenBSD.
- OS2 Build for OS/2.
- OSF Build for OSF/1.
- OSFPC Build for OSF/1 on a PC.
- OSF32 Digital UNIX 3.2 or later.
- OSF40 Build for Digital UNIX 4.0.
- OSF50 Build for Digital UNIX 5.0.
- OSK Build for OS-9.
- OXOS Build for Olivetti X/OS 2.3.
- PCIX Build for PC/IX
- PID_T=xxx Type for pids is xxx (normally int or pid_t).
- POSIX Build for POSIX: use POSIX header files, functions, etc.
- _POSIX_SOURCE Disable non-POSIX features.
- PROVX1 Build for Venix 1.0 on DEC Professional 3xx.
- PTX Build for Dynix/PTX
- PWID_T=xxx getpwid() type is xxx.
- RBSIZ=xxx Define overall size of receive-packet buffer (with DYNAMIC).
- RDCHK rdchk() system call is available.
- RENAME rename() system call is available (UNIX).
- RTAIX Build for AIX 2.2.1 on IBM RT PC.
- RTU Build for Masscomp / Concurrent RTU.
- SAVEDUID BSD or other non-AT&T UNIX has saved-setuid feature.
- SBSIZ=xxx Define overall size of send-packet buffer (use with
- DYNAMIC).
- SDIRENT Directory structure specified in <sys/dirent.h>.
- SELECT select() function available (conflicts with RDCHK and CK_POLL)
- SELECT_H Include <sys/select.h> for select()-releated definitions.
- SETEUID BSD 4.4-style seteXid() functions available.
- SIG_V Type for signal() is void. Used to override normal assumption.
- SIG_I Type for signal() is int. Used to override normal assumption.
- SOCKOPT_T Override default data type for get/setsockopt() option
- length.
- SOLARIS Build for Solaris.
- SOLARIS25 Build for Solaris 2.5 or later.
- SONYNEWS Build for Sony NEWS-OS.
- STERMIOX <sys/termiox.h> is available.
- STRATUS Build for Stratus VOS.
- STRATUSX25 Include Stratus VOS X.25 support.
- SUN4S5 Build for SUNOS 4.x in the System V R3 environment.
- SUNOS4 Build for SUNOS 4.0 in the BSD environment.
- SUNOS41 Build for SUNOS 4.1 in the BSD environment.
- SUNX25 Build with support for SunLink X.25.
- SVR3 Build for AT&T System V Release 3.
- SVR3JC Allow job control support on System V Release 3 UNIX versions.
- SVR4 Build for AT&T System V Release 4.
- SW_ACC_ID UNIX only -- swap real & effective ids around access()
- calls.
- sxaE50 Build for PFU Compact A Series SX/A TISP.
- SYSLOGLEVEL=n Force syslogging at given level.
- SYSTIMEH Include <sys/time.h>.
- SYSUTIMEH Include <sys/utime.h> for setting file dates (88OPEN)
- TCPSOCKET Build with support for TCP/IP via Berkeley sockets library.
- TERMIOX <termiox.h> header file is available (mostly SVR4).
- TNCODE Include TELNET-specific code.
- TOWER1 Build for NCR Tower 1632 with OS 1.02.
- TRS16 Build for Tandy 16/6000.
- UID_T=xxx Type for uids is xxx (normally int or uid_t).
- UNIX Must be defined for all UNIX versions.
- UNIX351M AT&T UNIX 3.51m on the AT&T 7300 UNIX PC.
- USE_ARROWKEYS Include code to parse ANSI arrow-key sequences.
- USE_LSTAT OK to use lstat().
- USE_MEMCPY Define this if memcpy()/memset()/memmove() available.
- USE_STRERROR Define this if strerror() is available.
- USLEEP usleep() system call available (conflicts with NAP & SELECT).
- UTEK Build for Tektronix workstations with UTEK OS.
- UTIMEH Include <utime.h> for setting file dates (SVR4, POSIX)
- UTS24 Build for Amdahl UTS 2.4.
- V7 Build for Version 7 UNIX.
- VMS Build for VAX/VMS.
- VOID=xxx VOID type for functions (int or void).
- VXVE Build for CDC VX/VE 5.2.1.
- WAIT_T=xxx Type of argument passed to wait().
- WINTCP Build with Wollongong VAX/VMS TCP/IP (implies TCPSOCKET)
- WOLLONGONG Build with Wollongong UNIX TCP/IP (implies TCPSOCKET)
- XENIX Build for Xenix (SCO, Tandy, others).
- XNDIR Support for BSD long filenames via <sys/ndir.h>.
- XYZ_INTERNAL Support for XYZMODEM protocols is internal, not external.
- ZFCDAT Define this if zfcdat() function is available in Kermit.
- ZILOG Build for Zilog ZEUS.
- ZJDATE Has zjdate() function that converts date to Julian format.
- XPRINT Transparent print code included in CONNECT module.
-
- [ [165]Top ] [ [166]Contents ] [ [167]C-Kermit Home ] [ [168]Kermit
- Home ]
- _________________________________________________________________
-
-
- C-Kermit Configuration Options / [169]The Kermit Project /
- [170]Columbia University / [171]kermit@columbia.edu / 14 March 2003
-
-References
-
- 1. http://www.columbia.edu/kermit/
- 2. http://www.columbia.edu/
- 3. http://www.columbia.edu/kermit/ckccfg.html
- 4. http://www.columbia.edu/kermit/ckermit.html
- 5. http://www.columbia.edu/kermit/index.html
- 6. http://www.columbia.edu/kermit/ckccfg.html#x1
- 7. http://www.columbia.edu/kermit/ckccfg.html#x2
- 8. http://www.columbia.edu/kermit/ckccfg.html#x3
- 9. http://www.columbia.edu/kermit/ckccfg.html#x4
- 10. http://www.columbia.edu/kermit/ckccfg.html#x5
- 11. http://www.columbia.edu/kermit/ckccfg.html#x6
- 12. http://www.columbia.edu/kermit/ckccfg.html#x7
- 13. http://www.columbia.edu/kermit/ckccfg.html#x8
- 14. http://www.columbia.edu/kermit/ckccfg.html#x9
- 15. http://www.columbia.edu/kermit/ckccfg.html#x10
- 16. http://www.columbia.edu/kermit/ckccfg.html#x11
- 17. http://www.columbia.edu/kermit/ckccfg.html#x12
- 18. http://www.columbia.edu/kermit/ckccfg.html#x13
- 19. http://www.columbia.edu/kermit/ckccfg.html#x14
- 20. http://www.columbia.edu/kermit/ckccfg.html#xa1
- 21. http://www.columbia.edu/kermit/ckuins.html
- 22. http://www.columbia.edu/kermit/ckermit.html
- 23. http://www.columbia.edu/kermit/index.html
- 24. http://www.columbia.edu/kermit/ckccfg.html#top
- 25. http://www.columbia.edu/kermit/ckccfg.html#contents
- 26. http://www.columbia.edu/kermit/ckccfg.html#x2
- 27. http://www.columbia.edu/kermit/ckccfg.html#x0
- 28. http://www.columbia.edu/kermit/ckermit.html
- 29. http://www.columbia.edu/kermit/index.html
- 30. http://www.columbia.edu/kermit/ckccfg.html#top
- 31. http://www.columbia.edu/kermit/ckccfg.html#contents
- 32. http://www.columbia.edu/kermit/ckccfg.html#x3
- 33. http://www.columbia.edu/kermit/ckccfg.html#x1
- 34. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 35. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
- 36. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus3.c
- 37. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
- 38. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 39. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 40. http://www.columbia.edu/kermit/ckermit.html
- 41. http://www.columbia.edu/kermit/index.html
- 42. http://www.columbia.edu/kermit/ckccfg.html#top
- 43. http://www.columbia.edu/kermit/ckccfg.html#contents
- 44. http://www.columbia.edu/kermit/ckccfg.html#x4
- 45. http://www.columbia.edu/kermit/ckccfg.html#x2
- 46. ftp://kermit.columbia.edu/kermit/c-kermit/makefile
- 47. http://www.columbia.edu/kermit/ckuins.html
- 48. http://www.columbia.edu/kermit/ckuins.html#x4
- 49. http://www.columbia.edu/kermit/ckuins.html#x9.2
- 50. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
- 51. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 52. ftp://kermit.columbia.edu/kermit/c-kermit/ckufio.c
- 53. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
- 54. ftp://kermit.columbia.edu/kermit/c-kermit/ckucmd.c
- 55. http://www.columbia.edu/kermit/ckermit.html
- 56. http://www.columbia.edu/kermit/index.html
- 57. http://www.columbia.edu/kermit/ckccfg.html#top
- 58. http://www.columbia.edu/kermit/ckccfg.html#contents
- 59. http://www.columbia.edu/kermit/ckccfg.html#x5
- 60. http://www.columbia.edu/kermit/ckccfg.html#x3
- 61. http://www.columbia.edu/kermit/unicode.html
- 62. http://www.columbia.edu/kermit/ckermit.html
- 63. http://www.columbia.edu/kermit/index.html
- 64. http://www.columbia.edu/kermit/ckccfg.html#top
- 65. http://www.columbia.edu/kermit/ckccfg.html#contents
- 66. http://www.columbia.edu/kermit/ckccfg.html#x6
- 67. http://www.columbia.edu/kermit/ckccfg.html#x4
- 68. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
- 69. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
- 70. http://www.columbia.edu/kermit/ckermit.html
- 71. http://www.columbia.edu/kermit/index.html
- 72. http://www.columbia.edu/kermit/ckccfg.html#top
- 73. http://www.columbia.edu/kermit/ckccfg.html#contents
- 74. http://www.columbia.edu/kermit/ckccfg.html#x7
- 75. http://www.columbia.edu/kermit/ckccfg.html#x5
- 76. http://www.columbia.edu/kermit/ckccfg.html#x6.1
- 77. http://www.columbia.edu/kermit/ckccfg.html#x6.2
- 78. http://www.columbia.edu/kermit/ckccfg.html#x6.3
- 79. http://www.columbia.edu/kermit/ckccfg.html#x6.4
- 80. http://www.columbia.edu/kermit/ckccfg.html#x4
- 81. http://www.columbia.edu/kermit/gkermit.html
- 82. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
- 83. ftp://kermit.columbia.edu/kermit/c-kermit/ckcker.h
- 84. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
- 85. http://www.columbia.edu/kermit/ckermit.html
- 86. http://www.columbia.edu/kermit/index.html
- 87. http://www.columbia.edu/kermit/ckccfg.html#top
- 88. http://www.columbia.edu/kermit/ckccfg.html#contents
- 89. http://www.columbia.edu/kermit/ckccfg.html#x8
- 90. http://www.columbia.edu/kermit/ckccfg.html#x6
- 91. ftp://kermit.columbia.edu/kermit/c-kermit/ckudia.c
- 92. http://www.columbia.edu/kermit/ckermit.html
- 93. http://www.columbia.edu/kermit/index.html
- 94. http://www.columbia.edu/kermit/ckccfg.html#top
- 95. http://www.columbia.edu/kermit/ckccfg.html#contents
- 96. http://www.columbia.edu/kermit/ckccfg.html#x9
- 97. http://www.columbia.edu/kermit/ckccfg.html#x7
- 98. http://www.columbia.edu/kermit/ckccfg.html#x8.1
- 99. http://www.columbia.edu/kermit/ckccfg.html#x8.2
- 100. http://www.columbia.edu/kermit/ckccfg.html#x8.3
- 101. http://www.columbia.edu/kermit/ckccfg.html#x8.1.1
- 102. http://www.columbia.edu/kermit/ckccfg.html#x8.1.2
- 103. http://www.columbia.edu/kermit/ckccfg.html#x8.1.3
- 104. http://www.columbia.edu/kermit/ckccfg.html#x8.1.4
- 105. http://www.columbia.edu/kermit/ckccfg.html#x8.1.5
- 106. http://www.columbia.edu/kermit/ckccfg.html#x8.1.6
- 107. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
- 108. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.c
- 109. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.c
- 110. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.h
- 111. ftp://kermit.columbia.edu/kermit/c-kermit/ckcftp.c
- 112. http://www.columbia.edu/kermit/ckermit.html
- 113. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.c
- 114. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
- 115. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 116. http://www.columbia.edu/kermit/ckccfg.html#x11
- 117. mailto:kermit@columbia.edu
- 118. http://www.columbia.edu/kermit/ckermit.html
- 119. http://www.columbia.edu/kermit/index.html
- 120. http://www.columbia.edu/kermit/ckccfg.html#top
- 121. http://www.columbia.edu/kermit/ckccfg.html#contents
- 122. http://www.columbia.edu/kermit/ckccfg.html#x10
- 123. http://www.columbia.edu/kermit/ckccfg.html#x8
- 124. http://www.columbia.edu/kermit/ckermit.html
- 125. http://www.columbia.edu/kermit/index.html
- 126. http://www.columbia.edu/kermit/ckccfg.html#top
- 127. http://www.columbia.edu/kermit/ckccfg.html#contents
- 128. http://www.columbia.edu/kermit/ckccfg.html#x11
- 129. http://www.columbia.edu/kermit/ckccfg.html#x9
- 130. http://www.columbia.edu/kermit/ckuins.html#x11
- 131. http://www.columbia.edu/kermit/ckuins.html
- 132. http://www.columbia.edu/kermit/ckermit.html
- 133. http://www.columbia.edu/kermit/index.html
- 134. http://www.columbia.edu/kermit/ckccfg.html#top
- 135. http://www.columbia.edu/kermit/ckccfg.html#contents
- 136. http://www.columbia.edu/kermit/ckccfg.html#x12
- 137. http://www.columbia.edu/kermit/ckccfg.html#x10
- 138. ftp://kermit.columbia.edu/kermit/c-kermit/ckucns.c
- 139. ftp://kermit.columbia.edu/kermit/c-kermit/ckucon.c
- 140. http://www.columbia.edu/kermit/ckermit.html
- 141. http://www.columbia.edu/kermit/index.html
- 142. http://www.columbia.edu/kermit/ckccfg.html#top
- 143. http://www.columbia.edu/kermit/ckccfg.html#contents
- 144. http://www.columbia.edu/kermit/ckccfg.html#x13
- 145. http://www.columbia.edu/kermit/ckccfg.html#x11
- 146. http://www.columbia.edu/kermit/ckermit.html
- 147. http://www.columbia.edu/kermit/index.html
- 148. http://www.columbia.edu/kermit/ckccfg.html#top
- 149. http://www.columbia.edu/kermit/ckccfg.html#contents
- 150. http://www.columbia.edu/kermit/ckccfg.html#x14
- 151. http://www.columbia.edu/kermit/ckccfg.html#x12
- 152. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
- 153. http://www.columbia.edu/kermit/ckermit.html
- 154. http://www.columbia.edu/kermit/index.html
- 155. http://www.columbia.edu/kermit/ckccfg.html#top
- 156. http://www.columbia.edu/kermit/ckccfg.html#contents
- 157. http://www.columbia.edu/kermit/ckccfg.html#x13
- 158. http://www.columbia.edu/kermit/ckermit.html
- 159. http://www.columbia.edu/kermit/index.html
- 160. http://www.columbia.edu/kermit/ckccfg.html#top
- 161. http://www.columbia.edu/kermit/ckccfg.html#contents
- 162. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
- 163. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
- 164. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
- 165. http://www.columbia.edu/kermit/ckccfg.html#top
- 166. http://www.columbia.edu/kermit/ckccfg.html#contents
- 167. http://www.columbia.edu/kermit/ckermit.html
- 168. http://www.columbia.edu/kermit/index.html
- 169. http://www.columbia.edu/kermit/index.html
- 170. http://www.columbia.edu/
- 171. mailto:kermit@columbia.edu