ckccfg.txt
资源名称:cku197.tar.Z [点击查看]
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:61k
源码类别:
通讯/手机编程
开发平台:
Windows_Unix
- C-KERMIT CONFIGURATION INFORMATION -*-text-*-
- As of C-Kermit version: 7.0.197
- This file last updated: 8 February 2000
- Frank da Cruz, Columbia University
- Copyright (C) 1985, 2000,
- Trustees of Columbia University in the City of New York.
- All rights reserved. See the C-Kermit COPYING.TXT file or the
- copyright text in the ckcmai.c module for disclaimer and permissions.
- DOCUMENTATION
- Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Second Edition,
- 1997, Digital Press / Butterworth-Heinemann, Woburn, MA, ISBN 1-55558-164-1
- US single-copy price: $44.95; quantity discounts available. Available in
- computer bookstores or directly from Columbia University:
- The Kermit Project
- Columbia University
- 612 West 115th Street
- New York NY 10025-7799 USA
- Telephone: +1 (212) 854-3703
- Email: kermit-orders@columbia.edu
- Web: http://www.columbia.edu/kermit/
- The CKERMIT2.TXT file contains supplementary info for C-Kermit 7.0 to be
- used until the 3rd edition of the manual is ready.
- WHAT IS IN THIS FILE
- This file is for C-Kermit developers. It explains compilation options,
- feature selection, and compilation problem-solving, as they (should) apply to
- all versions of C-Kermit: UNIX, VMS, OS/2, and the rest.
- CONTENTS
- 0. OVERVIEW
- 1. FILE TRANSFER
- 2. SERIAL COMMUNICATION SPEEDS
- 3. FULLSCREEN FILE TRANSFER DISPLAY
- 4. CHARACTER SETS
- 5. APC EXECUTION
- 6. PROGRAM SIZE
- 6.1. When Memory Is Not a Problem
- 6.2. Removing Features
- 6.3. Changing Buffer Sizes
- 6.4. Other Size-Related Items
- 6.5. Space/Time Tradeoffs
- 7. DIALER SUPPORT
- 8. NETWORK SUPPORT
- 8.1. TCP/IP
- 8.1.1. Firewalls
- 8.1.2. Solving Compilation and Linking Problems
- 8.1.3. Enabling Host Address Lists
- 8.1.4. Enabling Telnet NAWS
- 8.1.5. Enabling Incoming TCP/IP Connections
- 8.2. X.25
- 8.3. Other Networks
- 9. EXCEPTION HANDLING
- 10. SECURITY FEATURES
- 11. ENABLING SELECT()
- 12. I/O REDIRECTION
- 13. FLOATING-POINT TIMERS
- 14. SPECIAL CONFIGURATIONS
- APPENDIX I: SUMMARY OF COMPILE-TIME OPTIONS
- 0. OVERVIEW
- This file gives more-or-less system-independent configuration information 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 modem
- and network support, and a list of C-Kermit's compile-time options.
- For details about your particular operating system, consult the system-specific
- installation instructions file:
- CK?INS.TXT
- (? = U for UNIX, V for VMS, etc, for example, CKUINS.TXT for UNIX, CKVINS.TXT
- for VAX/VMS, CKDINS.TXT for Data General AOS/VS, etc). Also consult the
- following files (use lowercase on UNIX):
- CKAAAA.TXT Explanation of file naming conventions
- CKCPLM.TXT C-Kermit "program logic manual"
- CK?KER.HLP System-specific help file, if any
- CK?KER.MAK System-specific build procedure
- CKCBWR.TXT "Beware file": C-Kermit bugs, limitations, workarounds
- CK?BWR.TXT System-specific "beware file"
- CKERMIT2.TXT User-level documentation for new features since "Using
- C-Kermit", 2nd Edition, was published.
- CKCnnn.TXT Program edit history for edit nnn, e.g. CKC195.TXT.
- 1. FILE TRANSFER
- 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 for UNIX and VMS. To
- override these at compile time, include:
- -DNOFAST
- in the C compiler CFLAGS. Even with the fast defaults, it will drop 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. To build with
- fast defaults for other platforms, add:
- -DCK_FAST
- to CFLAGS.
- 2. SERIAL COMMUNICATION SPEEDS
- 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 ckutio.c for an example.
- . TTSPDLIST is automatically defined in 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. See (e.g.) ckubwr.txt for examples.
- 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 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
- and maybe some others...
- The 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 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 ckutio.c.
- 3. FULLSCREEN FILE TRANSFER DISPLAY
- 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, usually "curses", perhaps also "termcap" or "termlib":
- "LIBS= -lcurses -ltermcap"
- "LIBS= -lcurses -ltermlib"
- "LIBS= -lcurses"
- "LIBS= -ltermlib"
- to pull in the required libraries. "man curses" for further information, and
- search through the makefile for "CK_CURSES" to see many examples.
- Plus maybe you'll have to replace "curses" above by "ncurses".
- 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 file transfer do not
- echo until you press the Return (Enter) key. If this happens to you, try
- adding
- -DCK_NEWTERM
- to your makefile entry (see comments in screenc() in ckuusx.c for an
- explanation).
- 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 support 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 entries have been added to take care of this
- (e.g. sys3upcshcc), but similar tricks might be necessary in other cases too.
- Also new to edit 190 is an ASCII-graphic percent-done "thermometer". This is
- not included unless you add:
- -DCK_PCT_BAR
- to your CFLAGS.
- Just below the bar 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 ckutio.c, ckuusx.c, ckufio.c, ckucmd.c,
- etc.
- To use the fullscreen display feature, SET FILE DISPLAY FULLSCREEN. Beware, it
- can slow the transfer down a bit (or a lot). The faster the connection speed,
- the more likely the fullscreen display will become the bottleneck. To test
- whether the fullscreen display is slowing your transfers down on a particular
- connection, transfer the same with it and without it, and compare the figures
- given in the STATISTICS command. The default file transfer display is still
- the old SERIAL ("dots") display, even if you build in curses support.
- A compromise between the two styles (new to edit 183), that can be used on any
- video display terminal, can be elected at runtime with the SET FILE DISPLAY
- CRT. It relies only on the ability of the terminal to write over the current
- line when it receives a bare carriage return. The same performance comments
- apply to this display option.
- 4. CHARACTER SETS
- By default, C-Kermit is built with support for translation 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), 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.
- Unicode support was added in version 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 Beta 11:
- 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.
- 5. APC EXECUTION
- The Kermit CONNECT module can be 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 coded into the OS/2, Windows, VMS, OS-9, and
- UNIX versions, for which the symbol:
- CK_APC
- is defined automatically in 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 ckuusr.h) can be overridden by including:
- -DNOAPC
- on the CC command line.
- The autodownload feature depends on the APC feature, so deconfiguring APC
- also disables autodownload.
- 6. PROGRAM SIZE
- (Also see Section 4: Character Sets)
- C-Kermit has become a large program, much larger than early versions because
- of all the new features, primarily the script programming language, sliding
- window packet protocol, and international character set translation. On some
- systems, the size of the program prevents it from being successfully linked
- and loaded. On some others, 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.
- 6.1. When Memory Is Not a Problem
- But first, also note that if "memory is no problem" on your system, you can
- easily INCREASE the sizes of many things (buffers, command length, macro
- length, maximum number of all sorts of things) simply by defining the
- following symbol at compile time:
- BIGBUFOK
- This symbol is defined for certain platforms by default in ckcdeb.h. If you
- want to override this, use:
- make xxxx KFLAGS=-DNOBIGBUF
- 6.2. Removing Features
- Features can be 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
- take command-line arguments, you can put the corresponding #define statements
- in the file CKCSYM.H, for example:
- #define NODEBUG
- (The #define statement must be on the left margin.) Here are C-Kermit's
- size-related compile-time options. The ones that take up the most space are
- marked by asterisk (*). If you are desperate to save space, remove debugging
- first, rather than some more useful feature. Remove built-in help only if
- absolutely necessary. The final resort is to remove the interactive command
- parser completely, leaving only a UNIX-style command-line interface
- ("kermit -s foo"). This cuts the program down to about 25% of its fully
- configured size.
- * -DNOUNICODE:Add this option to omit Unicode character-set support.
- * -DNOCSETS: Add this option to remove ALL character set support.
- * -DNODEBUG: Add this option to omit all debugging code.
- -DNOTLOG: Add this option to omit transaction logging.
- * -DNOHELP: Add this option to omit built-in help.
- -DNODISPLAY:Add this option to omit the file-transfer display.
- -DTCPSOCKET:Remove this option to omit TCP/IP support.
- -DSUNX25: Remove this option to omit SunLink X.25 support.
- * -DNONET: Add this to remove all network support.
- -DNOMSEND: Add this option to remove the MSEND command.
- * -DNOLOCAL: Add this option to remove all support for making connections.
- * -DNODIAL: Add this option to remove the DIAL command and modem support.
- * -DMINIDIAL: Add this option to support only standard &/or generic modem types
- * -DNOOLDMODEMS: Add this option to drop support for "old" modem types.
- * -DNOCHANNELIO: Add this option to remove the FILE command & related functions
- -DNOXMIT: Add this option to remove the TRANSMIT command.
- -DNOSCRIPT: Add this option to remove the UUCP-style SCRIPT command.
- -DNOCMDL: Add this option to remove the command-line option interface.
- * -DNOSPL: Add this option to remove the script programming language.
- * -DNOICP: Add this option to remove the entire interactive command parser.
- -DNOIKSD: Remove support for the Internet Kermit Service Daemon.
- -DDCMDBUF: Add this option to allocate command buffers dynamically.
- -DNOLATIN2 Add this option to remove ISO Latin-2 character-set translation.
- -DNOCYRIL: Add this option to remove Cyrillic character set translation.
- -DNOLATIN2: Add this option to remove Latin-2 character set translation.
- -DNOHEBREW: Add this option to remove Hebrew character set translation.
- -DKANJI: Omit this option to exclude Kanji character set translation.
- -DNOESCSEQ: Add this option to omit ANSI escape sequence recognition.
- -DNOSERVER: Add this option to remove server mode.
- -DNOSETKEY: Add this option to remove the SET KEY command.
- -DNOPUSH: Add this option to remove escapes to operating system.
- -DNOFRILLS: Add this option to remove "frills".
- * -DNOCURSES: Omit this option to keep the curses library out of Kermit.
- * -DNOBIGBUF: Override BIGBUFOK in case it is defined: force smaller buffers.
- * -DNOXFER: Add this option to omit all file-transfer protocols.
- -DSBSIZ=nnnn -DRBSIZ=nnnnn
- Change the overall size of the packet send and receive buffers.
- -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.
- The CK_CURSES option, at least on UNIX, requires C-Kermit be linked with a
- large external library (curses or ncurses). On certain small systems,
- C-Kermit programs built this way have been observed to cause swapping and/or
- performance problems. If you include -DNOCURSES, you might also have to edit
- the makefile entry to remove all references to "curses", "termcap", and/or
- "termlib", etc, from the LIBS clause.
- 6.3. Changing Buffer Sizes
- (This section is somewhat obsolete -- most modern C-Kermit versions are built
- with BIGBUFOK defined, which selects maximum-size packet buffers, plus big
- command and other buffers).
- There are options to control Kermit's packet buffer allocations. The
- following symbols are defined in ckcker.h in such a way that you can override
- them by redefining them in CFLAGS:
- -DMAXSP=xxxx - Maximum send-packet length, default 2048.
- -DMAXRP=xxxx - Maximum receive-packet length, 2048 for UNIX, 1920 for VMS.
- -DSBSIZ=xxxx - Total allocation for send-packet buffers, default 3008.
- -DRBSIZ=xxxx - Total allocation for receive-packet buffers, default 3008.
- The program size is affected by SBSIZ and RBSIZ (send and receive packet
- buffer size). These are static character arrays compiled into the program.
- If you wish, you can have Kermit allocate packet buffers dynamically at
- runtime using malloc() by including the CFLAGS switch:
- -DDYNAMIC
- In this case, the default packet and buffers sizes are changed to:
- -DMAXSP=9024 (for UNIX, 2048 for VMS)
- -DMAXRP=9024 (for UNIX, 1920 for VMS)
- -DSBSIZ=9050
- -DRBSIZ=9050
- but you can change the packet buffer sizes (not the maximum packet size) at
- runtime using the command:
- SET BUFFERS <sbsiz> <rbsiz>
- Using dynamic allocation (-DDYNAMIC) reduces storage requirements for the
- executable program on disk, and allows more and bigger packets at runtime.
- But dynamic allocation might not work on all systems. Try it. If it works
- for you, there is no reason not to use it. But if the program hangs or core
- dumps, then omit the -DDYNAMIC option from CFLAGS.
- 6.4. 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") model. This is particularly true
- for 16-bit PC-based UNIX versions. This is typically done with a -M
- and/or -F switch (see your cc manual or man page for details).
- b. Some 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.
- c. Similarly, some systems support "code mapping", which is similar to
- overlays. Again, see "man ld".
- 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), try them.
- b. If your UNIX system supports shared libraries, change the make entry to
- take advantage of this feature. The way to do this depends on your
- particular system. Some (like SunOS) do it automatically. See the NeXT
- entry for an example.
- 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.10 BSD entry
- for an example.
- 6.5. Space/Time Tradeoffs
- There are over 2000 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
- 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).
- 7. DIALER SUPPORT
- -DNODIAL removes automatic modem dialing completely, including the entire
- 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 code for 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
- 8. NETWORK SUPPORT
- C-Kermit supports not only RS-232 serial connections, direct and modem, but
- also TCP/IP and X.25 network connections. The OS/2 version supports DECnet
- (LAT) connections. If you define the following symbol:
- NONET
- then all network support will be compiled away.
- 8.1. TCP/IP
- TCP/IP support requires the Berkeley sockets library, and is generally
- available on any UNIX system. It is also available in OS/2, VMS, AOS/VS, VOS,
- etc. The TCP/IP support includes built-in TELNET negotiation handling. To
- select TCP/IP support, include -DTCPSOCKET in your makefile entry's CFLAGS, or
- the appropriate variant (e.g. -DWOLLONGONG, -DMULTINET, -DEXCELAN, -DWINTCP,
- etc).
- Reportedly, even some of these are not consistent within themselves. For
- example, Wollongong reportedly puts 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 system it is in /usr/include/netinet. Do this
- (as root, or get the system manager 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 CKCNET.H and
- CKCNET.C, with miscellaneous SHOW commands, etc, in the various CKUUS*.C
- modules, plus code in the CK*CON.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 user documentation for descriptions of these commands.
- 8.1.1. Firewalls
- There exist various types of firewalls, set up allow separate users of an
- internal TCP/IP network from the great wide Internet. Of course, this could
- be accomplished most easily and safely by simply not connecting the internal
- network to the Internet, but in many cases some restricted forms of access are
- needed. Thus a "firewall" is set up to allow only authorized accesses.
- 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 (in systems where linking is not dynamic)
- 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 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 will negotiate the firewall transparently.
- 8.1.2. Solving Compilation and Linking Problems
- The main() routine is in ckcmai.c. If you get complaints about "main: return
- type is not blah", define MAINTYPE on the CC command line, e.g.
- make xxx "KFLAGS=-DMAINTYPE=blah" (where "blah" is int, long, or whatever).
- If the complaint is "Attempt to return a value from a function of type void"
- then add -DMAINISVOID:
- make xxx "KFLAGS=-DMAINISVOID"
- If you get a compilation error in 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 entry, 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
- TELNET Negotiation About Window Size (NAWS) support 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 will include 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 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 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 any
- time the 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 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), just include 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, or else Stratus VOS and the
- appropriate X.25 development tools. Support for IBM AIXlink X.25 was added
- in C-Kermit 6.1.
- In UNIX, special makefile entries 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.
- 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 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 kermit@columbia.edu if you are
- interested in working on such a project.
- 9. EXCEPTION HANDLING
- The 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
- 10. SECURITY FEATURES
- 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
- CKUINS.TXT about set[ug]id installation. Additional restrictions can be
- enforced when in server mode; read about the DISABLE command.
- 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.
- 11. ENABLING SELECT()
- 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 (DR8 and earlier), 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)
- 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 6.1, 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 ckucns.c, and the fork-based
- one remains 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" (as is done, for example, in the SunOS 4.1
- make target). 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() version of ckucon.c MUST be used if encryption is to be
- done, since the fork() version 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.
- SHOW VERSIONS tells whether the CONNECT module uses fork() or select().
- 12. I/O REDIRECTION
- 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 6.1, 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).
- Version 6.1 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.
- 13. FLOATING-POINT TIMERS
- C-Kermit 6.1 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 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 ckcdeb.h for the
- section that handles this (search for "float").
- If it builds successfully, test the result carefully -- watch the time-related
- fields in the fullscreen file-transfer display and the numbers reported by the
- STATISTICS command. If the results are nonsense, then try switching from
- float to double or vice versa as noted in the previous paragraph. If that
- doesn't help, use -DNOFGTIMER.
- 14. SPECIAL CONFIGURATIONS
- 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.
- ----------------------------------------------------------------------
- APPENDIX I: SUMMARY OF COMPILE-TIME OPTIONS
- 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 ckcdeb.h and ckcnet.h for inference rules. For example SVR3
- implies ATTSV, MULTINET implies TCPSOCKET, and so on.
- The following options are not included in all makefile entries, but they are
- beneficial if they work. It is recommended that you add them to your makefile
- entry if they are lacking and test the result. If it's OK, let me know and
- I'll add them to the official makefile:
- DYNAMIC Dynamic packet buffer allocation, bigger packets allowed, etc.
- NOSETBUF Don't do unbuffered single-character writes to the console.
- This tends to speed up CONNECT mode.
- 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.
- CKLOGDIAL Enable connection log.
- CKMAXPATH Maximum length for a fully qualified filename.
- CKREGEX 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_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_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.
- 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.
- 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.
- 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=xxx Maximum receive-packet length.
- MAXSP=xxx 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.
- 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.
- 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>.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 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_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.
- (End of CKCCFG.TXT)