applied 050_ck_patch.patch
[ckermit.git] / ckccfg.txt
1
2                         C-Kermit Configuration Options
3
4      Frank da Cruz
5      [1]The Kermit Project
6      [2]Columbia University
7
8    As of: C-Kermit 8.0.211, 10 April 2004
9    This page last updated: Sun Apr 11 16:45:55 2004 (New York USA Time)
10
11      IF YOU ARE READING A PLAIN-TEXT version of this document, note that
12      this file is a plain-text dump of a Web page. You can visit the
13      original (and possibly more up-to-date) Web page here:
14
15   [3]http://www.columbia.edu/kermit/ckccfg.html
16
17    [ [4]C-Kermit Home ] [ [5]Kermit Home ]
18     ________________________________________________________________________
19
20   CONTENTS
21
22   1. [6]FILE TRANSFER
23   2. [7]SERIAL COMMUNICATION SPEEDS
24   3. [8]FULLSCREEN FILE TRANSFER DISPLAY
25   4. [9]CHARACTER SETS
26   5. [10]APC EXECUTION
27   6. [11]PROGRAM SIZE
28   7. [12]MODEM DIALING
29   8. [13]NETWORK SUPPORT
30   9. [14]EXCEPTION HANDLING
31  10. [15]SECURITY FEATURES
32  11. [16]ENABLING SELECT()
33  12. [17]I/O REDIRECTION
34  13. [18]FLOATING-POINT NUMBERS, TIMERS, AND ARITHMETIC
35  14. [19]SPECIAL CONFIGURATIONS
36   I. [20]SUMMARY OF COMPILE-TIME OPTIONS
37     ________________________________________________________________________
38
39   OVERVIEW
40
41    This document describes configuration options for C-Kermit (5A and
42    later). The major topics covered include program size (and how to
43    reduce it), how to include or exclude particular features, notes on
44    serial-port, modem, and network support, and a list of C-Kermit's
45    compile-time options.
46
47    For details about your particular operating system, also see the
48    system-specific installation instructions file, such as the
49    [21]C-Kermit Installation Instructions for Unix.
50
51    [ [22]C-Kermit Home ] [ [23]Kermit Home ]
52     ________________________________________________________________________
53
54   1. FILE TRANSFER
55
56    [ [24]Top ] [ [25]Contents ] [ [26]Next ] [ [27]Previous ]
57
58    Prior to version 7.0, C-Kermit was always built with the most
59    conservative Kermit file-transfer protocol defaults on every platform:
60    no control-character prefixing, 94-byte packets, and a window size of
61    1.
62
63    Starting in version 7.0, fast settings are the default. To override
64    these at compile time, include:
65
66   -DNOFAST
67
68    in the C compiler CFLAGS. Even with the fast defaults, C-Kermit
69    automatically drops down to whatever window and packet sizes requested
70    by the other Kermit, if these are smaller, when sending files (except
71    for control-character unprefixing, which is not negotiated, and which
72    is now set to CAUTIOUS rather than NONE at startup). C-Kermit's
73    settings prevail when it is receiving.
74
75    [ [28]C-Kermit Home ] [ [29]Kermit Home ]
76     ________________________________________________________________________
77
78   2. SERIAL COMMUNICATION SPEEDS
79
80    [ [30]Top ] [ [31]Contents ] [ [32]Next ] [ [33]Previous ]
81
82    As of 6 September 1997, a new simplified mechanism for obtaining the
83    list of legal serial interface speeds is in place:
84
85      * If the symbol TTSPDLIST is defined, the system-dependent routine
86        ttspdlist() is called at program initialization to obtain the
87        list.
88      * This symbol should be defined only for C-Kermit implementations
89        that have implemented the ttspdlist() function, typically in the
90        ck?tio.c module. See [34]ckutio.c for an example.
91      * TTSPDLIST is automatically defined in [35]ckcdeb.h for UNIX. Add
92        the appropriate #ifdefs for other platforms when the corresponding
93        ttspdlist() functions are filled in.
94      * If TTSPDLIST is (or normally would be) defined, the old code
95        (described below) can still be selected by defining NOTTSPDLIST.
96
97    The ttspdlist() function can obtain the speeds in any way that works.
98    For example, based simply on #ifdef Bnnnn..#endif (in UNIX). Although
99    it might be better to actually check each speed against the currently
100    selected hardware interface before allowing it in the array, there is
101    usually no passive and/or reliable and safe way to do this, and so
102    it's better to let some speeds into the array that might not work,
103    than it is to erroneously exclude others. Speeds that don't work are
104    caught when the SET SPEED command is actually given.
105
106    Note that this scheme does not necessarily rule out split speed
107    operation, but effectively it does in C-Kermit as presently
108    constituted since there are no commands to set input and output speed
109    separately (except the special case "set speed 75/1200").
110
111    Note that some platforms, notably AIX 4.2 and 4.3, implement high
112    serial speeds transparently to the application, e.g. by mapping 50 bps
113    to 57600 bps, and so on.
114
115    That's the whole deal. When TTSPDLIST is not defined, the following
116    applies:
117
118    Speeds are defined in two places: the SET SPEED keyword list in the
119    command parser (as of this writing, in the [36]ckuus3.c source file),
120    and in the system- dependent communications i/o module, ck?tio.c,
121    functions ttsspd() (set speed) and ttgspd() (get speed). The following
122    speeds are assumed to be available in all versions:
123
124   0, 110, 300, 600, 1200, 2400, 4800, 9600
125
126    If one or more of these speeds is not supported by your system, you'll
127    need to change the source code (this has never happened so far). Other
128    speeds that are not common to all systems have Kermit-specific
129    symbols:
130
131                Symbol       Symbol
132   Speed (bps)  to enable    to disable
133        50       BPS_50       NOB_50
134        75       BPS_75       NOB_75
135        75/1200  BPS_7512     NOB_7512
136       134.5     BPS_134      NOB_134
137       150       BPS_150      NOB_150
138       200       BPS_200      NOB_200
139      1800       BPS_1800     NOB_1800
140      3600       BPS_3600     NOB_3600
141      7200       BPS_7200     NOB_7200
142     14400       BPS_14K      NOB_14K
143     19200       BPS_19K      NOB_19K
144     28800       BPS_28K      NOB_28K
145     38400       BPS_38K      NOB_38K
146     57600       BPS_57K      NOB_57K
147     76800       BPS_76K      NOB_76K
148    115200       BPS_115K     NOB_155K
149    230400       BPS_230K     NOB_230K
150    460800       BPS_460K     NOB_460K
151    921600       BPS_921K     NOB_921K
152
153    The [37]ckcdeb.h header file contains default speed configurations for
154    the many systems that C-Kermit supports. You can override these
155    defaults by (a) editing ckcdeb.h, or (b) defining the appropriate
156    enabling and/or disabling symbols on the CC command line, for example:
157
158   -DBPS_14400 -DNOB_115200
159
160    or the "make" command line, e.g.:
161
162   make blah "KFLAGS=-DBPS_14400 -DNOB_115200"
163
164    Note: some speeds have no symbols defined for them, because they have
165    never been needed: 12.5bps, 45.5bps, 20000bps, etc. These can easily
166    be added if required (but they will work only if the OS supports
167    them).
168
169    IMPORTANT: Adding one of these flags at compile time does not
170    necessarily mean that you will be able to use that speed. A particular
171    speed is usable only if your underlying operating system supports it.
172    In particular, it needs to be defined in the appropriate system header
173    file (e.g. in UNIX, cd to /usr/include and grep for B9600 in *.h and
174    sys/*.h to find the header file that contains the definitions for the
175    supported speeds), and supported by the serial device driver, and of
176    course by the physical device itself.
177
178    ALSO IMPORTANT: The list of available speeds is independent of how
179    they are set. The many UNIXes, for example, offer a wide variety of
180    APIs that are BSD-based, SYSV-based, POSIX-based, and purely made up.
181    See the ttsspd(), ttgspd(), and ttspdlist() routines in [38]ckutio.c
182    for illustrations.
183
184    The latest entries in this horserace are the tcgetspeed() and
185    ttsetspeed() routines found in UnixWare 7. Unlike other methods, they
186    accept the entire range of integers (longs really) as speed values,
187    rather than certain codes, and return an error if the number is not,
188    in fact, a legal speed for the device/driver in question. In this
189    case, there is no way to build a list of legal speeds at compile time,
190    since no Bnnnn symbols are defined (except for "depracated, legacy"
191    interfaces like ioctl()) and so the legal speed list must be
192    enumerated in the code -- see ttspdlist() in [39]ckutio.c.
193
194    [ [40]C-Kermit Home ] [ [41]Kermit Home ]
195     ________________________________________________________________________
196
197   3. FULLSCREEN FILE TRANSFER DISPLAY
198
199    [ [42]Top ] [ [43]Contents ] [ [44]Next ] [ [45]Previous ]
200
201    New to edit 180 is support for an MS-DOS-Kermit-like local-mode full
202    screen file transfer display, accomplished using the curses library,
203    or something equivalent (for example, the Screen Manager on DEC VMS).
204    To enable this feature, include the following in your CFLAGS:
205
206   -DCK_CURSES
207
208    and then change your build procedure (if necessary) to include the
209    necessary libraries. For example, in Unix these are usually "curses"
210    or "ncurses" (and more recenlty, "ncursesw" and "slang"), perhaps also
211    "termcap", "termlib", or "tinfo":
212
213   "LIBS= -lcurses -ltermcap"
214   "LIBS= -lcurses -ltermlib"
215   "LIBS= -lncurses"
216   "LIBS= -ltermlib"
217   "LIBS= -ltinfo"
218
219    "man curses" for further information, and search through the Unix
220    [46]makefile for "CK_CURSES" to see many examples, and also see the
221    relevant sections of the [47]Unix C-Kermit Installation Instructions,
222    particularly Sections [48]4 and [49]9.2.
223
224    There might still be a complication. Some implementations of curses
225    reserve the right to alter the buffering on the output file without
226    restoring it afterwards, which can leave Kermit's command processing
227    in a mess when the prompt comes back after a fullscreen file transfer
228    display. The typical symptom is that characters you type at the prompt
229    after a local-mode file transfer (i.e. after seeing the curses
230    file-transfer display) do not echo until you press the Return (Enter)
231    key. If this happens to you, try adding
232
233   -DCK_NEWTERM
234
235    to your makefile target (see comments in screenc() in [50]ckuusx.c for
236    an explanation).
237
238    If that doesn't fix the problem, then use a bigger hammer and replace
239    -DCK_NEWTERM with:
240
241   -DNONOSETBUF
242
243    which tells Kermit to force stdout to be unbuffered so CBREAK mode can
244    work.
245
246    In SCO Xenix and SCO UNIX, there are two separate curses libraries,
247    one based on termcap and the other based on terminfo. The default
248    library, usually terminfo, is established when the development system
249    is installed. To manually select terminfo (at compile time):
250
251   compile -DM_TERMINFO and link -ltinfo
252
253    and to manually select termcap:
254
255   compile -DM_TERMCAP and link -ltcap -ltermlib
256
257    <curses.h> looks at M_TERMINFO and M_TERMCAP to decide which header
258    files to use. /usr/lib/libcurses.a is a link to either libtinfo.a or
259    libtcap.a. The C-Kermit compilation options must agree with the
260    version of the curses library that is actually installed.
261
262    NOTE: If you are doing an ANSI-C compilation and you get compile time
263    warnings like the following:
264
265   Warning: function not declared in ckuusx.c: wmove, printw, wclrtoeol,
266   wclear, wrefresh, endwin, etc...
267
268    it means that your <curses.h> file does not contain prototypes for
269    these functions. The warnings should be harmless.
270
271    New to edit 190 is the ability to refresh a messed-up full-screen
272    display, e.g. after receiving a broadcast message. This depends on the
273    curses package including the wrefresh() and clearok() functions and
274    the curscr variable. If your version has these, or has code to
275    simulate them, then add:
276
277   -DCK_WREFRESH
278
279    The curses and termcap libraries add considerable size to the program
280    image (e.g. about 20K on a SUN-4, 40K on a 386). On some small
281    systems, such as the AT&T 6300 PLUS, curses can push Kermit over the
282    edge... even though it compiles, loads, and runs correctly, its
283    increased size apparently makes it swap constantly, slowing it down to
284    a crawl, even when the curses display is not in use. Some new makefile
285    targets have been added to take care of this (e.g. sys3upcshcc), but
286    similar tricks might be necessary in other cases too.
287
288    On the curses file-transfer display, just below the "thermometer", is
289    a running display of the transfer rate, as a flat quotient of file
290    characters per elapsed seconds so far. You can change this to an
291    average that gives greater weight to recent history (0.25 *
292    instantaneous cps + 0.75 * historical cps) by adding -DCPS_WEIGHTED to
293    your CFLAGS (sorry folks, this one is not worth a SET command). You
294    can choose a second type of weighted average in which the weighting
295    smooths out progressively as the transfer progresses by adding
296    -DCPS_VINCE to -DCPS_WEIGHTED.
297
298    An alternative to curses is also available at compile time, but should
299    be selected if your version of Kermit is to be run in local mode only
300    in an ANSI terminal environment, for example on a desktop workstation
301    that has an ANSI console driver. To select this option in place of
302    curses, define the symbol MYCURSES:
303
304   -DMYCURSES
305
306    instead of CK_CURSES. The MYCURSES option uses built-in ANSI (VT100)
307    escape sequences, and depends upon your terminal or console driver to
308    interpret them correctly.
309
310    In some C-Kermit builds, we replace printf() via #define printf...
311    However, this can cause conflicts with the [n]curses header files.
312    Various hacks are required to get around this -- see [51]ckutio.c,
313    [52]ckufio.c, [53]ckuusx.c, [54]ckucmd.c, etc.
314
315    [ [55]C-Kermit Home ] [ [56]Kermit Home ]
316     ________________________________________________________________________
317
318   4. CHARACTER SETS
319
320    [ [57]Top ] [ [58]Contents ] [ [59]Next ] [ [60]Previous ]
321
322    Since version 5A, C-Kermit has included support for conversion of
323    character sets for Western European languages (i.e. languages that
324    originated in Western Europe, but are now also spoken in the Western
325    Hemisphere and other parts of the world), via ISO 8859-1 Latin
326    Alphabet 1, for Eastern European languages (ISO Latin-2), Hebrew (and
327    Yiddish), Greek, and Cyrillic-alphabet languages (ISO Latin/Cyrillic).
328    Many file (local) character sets are supported: ISO 646 7-bit national
329    sets, IBM code pages, Apple, DEC, DG, NeXT, etc.
330
331    To build Kermit with no character-set translation at all, include
332    -DNOCSETS in the CFLAGS. To build with no Latin-2, add -DNOLATIN2. To
333    build with no Cyrillic, add -DNOCYRIL. To omit Hebrew, add -DNOHEBREW.
334    If -DNOCSETS is *not* included, you'll always get LATIN1. To build
335    with no KANJI include -DNOKANJI. There is presently no way to include
336    Latin-2, Cyrillic, Hebrew, or Kanji without also including Latin-1.
337
338    [61]Unicode support was added in C-Kermit 7.0, and it adds a fair
339    amount of tables and code (and this is only a "Level 1" implementation
340    -- a higher level would also require building in the entire Unicode
341    database). On a PC with RH 5.2 Linux, building C-Kermit 7.0, we get
342    the following sizes:
343
344   NOCSETS NOUNICODE NOKANJI   Before    After                  
345    [   ]    [   ]    [   ]    1329014   (Full)
346    [   ]    [   ]    [ X ]    1325686   (Unicode but no Kanji)
347    [   ]    [ X ]    [   ]    1158837   (All charsets except Unicode)
348    [ X ]    [ x ]    [ x ]    1090845   (NOCSETS implies the other two)
349
350    Note, by the way, that NOKANJI without NOUNICODE only removes the
351    non-Unicode Kanji sets (Shift-JIS, EUC-JP, JIS-7, etc). Kanji is still
352    representable in UCS-2 and UTF-8.
353
354    [ [62]C-Kermit Home ] [ [63]Kermit Home ]
355     ________________________________________________________________________
356
357   5. APC EXECUTION
358
359    [ [64]Top ] [ [65]Contents ] [ [66]Next ] [ [67]Previous ]
360
361    The Kermit CONNECT and INPUT commands are coded to execute Application
362    Program Command escape sequences from the host:
363
364   <ESC>_<text><ESC>\
365
366    where <text> is a C-Kermit command, or a list of C-Kermit commands
367    separated by commas, up to about 1K in length.
368
369    To date, this feature has been included in the OS/2, Windows, VMS,
370    OS-9, and Unix versions, for which the symbol:
371
372   CK_APC
373
374    is defined automatically in [68]ckuusr.h. For OS/2, APC is enabled at
375    runtime by default, for UNIX it is disabled. It is controlled by the
376    SET TERMINAL APC command. Configuring APC capability into a version
377    that gets it by default (because CK_APC is defined in [69]ckuusr.h)
378    can be overridden by including:
379
380   -DNOAPC
381
382    on the CC command line.
383
384    C-Kermit's autodownload feature depends on the APC feature, so
385    deconfiguring APC also disables autodownload (it doesn't use APC
386    escape sequences, but uses the APC switching mechanism internally).
387
388    [ [70]C-Kermit Home ] [ [71]Kermit Home ]
389     ________________________________________________________________________
390
391   6. PROGRAM SIZE
392
393    [ [72]Top ] [ [73]Contents ] [ [74]Next ] [ [75]Previous ]
394
395    SECTION CONTENTS
396
397   6.1. [76]Feature Selection
398   6.2. [77]Changing Buffer Sizes
399   6.3. [78]Other Size-Related Items
400   6.4. [79]Space/Time Tradeoffs
401
402    (Also see [80]Section 4)
403
404    Each release of C-Kermit is larger than the last. On some computers
405    (usually old ones) the size of the program prevents it from being
406    successfully linked and loaded. On some others (also usually old
407    ones), it occupies so much memory that it is constantly swapping or
408    paging. In such cases, you can reduce C-Kermit's size in various ways,
409    outlined in this section. The following options can cut down on the
410    program's size at compile time by removing features or changing the
411    size of storage areas.
412
413    If you are reading this section because all you want is a small, fast,
414    quick-to-load Kermit file-transfer application for the remote end of
415    your connection, and the remote end is Unix based, take a look at
416    G-Kermit:
417
418   [81]http://www.columbia.edu/kermit/gkermit.html
419
420   6.1. Feature Selection
421
422    Features can be added or removed by defining symbols on the CC (C
423    compiler) command line. "-D" is the normal CC directive to define a
424    symbol so, for example, "-DNODEBUG" defines the symbol NODEBUG. Some C
425    compilers might use different syntax, e.g. "-d NODEBUG" or
426    "/DEFINE=NODEBUG". For C compilers that do not accept command-line
427    definitions, you can put the corresponding #define statements in the
428    file ckcsym.h, for example:
429
430   #define NODEBUG
431
432    The following table shows the savings achieved when building C-Kermit
433    8.0 (Beta.04) with selected feature-deselection switches on an
434    Intel-based PC with Red Hat Linux 7.0 and gcc 2.96. The sizes are for
435    non-security builds. The fully configured non-security build is
436    2127408 bytes.
437
438   Option      Size    Savings Effect
439   NOICP        545330   74.4% No Interactive Command Parser (command-line only)
440   NOLOCAL     1539994   27.6% No making connections.
441   NOXFER      1551108   27.1% No file transfer.
442   IKSDONLY    1566608   26.4% Internet Kermit Server only.
443   NOCSETS     1750097   17.7% No character-set conversion.
444   NOSPL       1800293   15.4% No Script Programming Language.
445   NONET       1808575   15.0% No making network connections.
446   NOUNICODE   1834426   13.8% No Unicode character-set conversion.
447   NOHELP      1837877   13.6% No built-in help text.
448   NODEBUG     1891669   11.1% No debug log.
449   NOFRILLS    1918966    9.8% No "frills".
450   NOFTP       1972496    7.3% No FTP client.
451   NODIAL      1984488    6.7% No automatic modem dialing.
452   NOPUSH      2070184    2.7% No shell access, running external programs, etc.
453   NOIKSD      2074129    2.5% No Internet Kermit Server capability.
454   NOHTTP      2082610    2.1% No HTTP client.
455   NOFLOAT     2091332    1.7% No floating-point arithmetic.
456   NOCHANNELIO 2095978    1.5% No FOPEN/FREAD/FWRITE/FCLOSE, etc.
457   MINIDIAL    2098035    1.4% No built-in support for many kinds of modems.
458   NOSERVER    2098987    1.3% No server mode.
459   NOSEXP      2105898    1.0% No S-Expressions.
460   NOPTY       2117743    0.5% No pseudoterminal support.
461   NORLOGIN    2121089    0.3% No RLOGIN connections.
462   NOOLDMODEMS 2124038    0.2% No built-in support for old kinds of modems.
463   NOSSH       2125696    0.1% No SSH command.
464
465    And here are a few combinations
466
467    Options Size Savings Effect
468    NODEBUG NOICP NOCSETS NOLOCAL 281641 86.7% No debug log, parser,
469    character sets, or making connections.
470    NOICP NOCSETS NOLOCAL 376468 82.3% No parser, character sets, or
471    making connections.
472    NOICP NOCSETS NONET 427510 79.9% No parser, character sets, or network
473    connections.
474    NOSPL NOCSETS 1423784 33.1% No script language, or character sets.
475
476    -DNOFRILLS removes various command synonyms; the following top-level
477    commands: CLEAR, DELETE, DISABLE, ENABLE, GETOK, MAIL, RENAME, TYPE,
478    WHO; and the following REMOTE commands: KERMIT, LOGIN, LOGOUT, PRINT,
479    TYPE, WHO.
480
481   6.2. Changing Buffer Sizes
482
483    Most modern computers have so much memory that (a) there is no need to
484    scrimp and save, and (b) C-Kermit, even when fully configured, is
485    relatively small by today's standards.
486
487    Two major factors affect Kermit's size: feature selection and buffer
488    sizes. Buffer sizes affect such things as the maximum length for a
489    Kermit packet, the maximum length for a command, for a macro, for the
490    name of a macro, etc. Big buffer sizes are used when the following
491    symbol is defined:
492
493   BIGBUFOK
494
495    as it is by default for most modern platforms (Linux, AIX 4 and 5,
496    HP-UX 10 and 11, Solaris, etc) in [82]ckuusr.h. If your build does not
497    get big buffers automatically (SHOW FEATURES tells you), you can
498    include them by rebuilding with BIGBUFOK defined; e.g. in Unix:
499
500   make xxxx KFLAGS=-DBIGBUFOK
501
502    where xxxx is the makefile target. On the other hand, if you want to
503    build without big buffers when they normally would be selected, use:
504
505   make xxxx KFLAGS=-DNOBIGBUF
506
507    There are options to control Kermit's packet buffer allocations. The
508    following symbols are defined in [83]ckcker.h in such a way that you
509    can override them by redefining them in CFLAGS:
510
511   -DMAXSP=xxxx - Maximum send-packet length.
512   -DMAXRP=xxxx - Maximum receive-packet length.
513   -DSBSIZ=xxxx - Total allocation for send-packet buffers.
514   -DRBSIZ=xxxx - Total allocation for receive-packet buffers.
515
516    The defaults depend on the platform.
517
518    Using dynamic allocation (-DDYNAMIC) reduces storage requirements for
519    the executable program on disk, and allows more and bigger packets at
520    runtime. This has proven safe over the years, and now most builds
521    (e.g. all Unix, VMS, Windows, and OS/2 ones) use dynamic memory
522    allocation by default. If it causes trouble, however, then omit the
523    -DDYNAMIC option from CFLAGS, or add -DNODYNAMIC.
524
525   6.3. Other Size-Related Items
526
527    To make Kermit compile and load successfully, you might have to change
528    your build procedure to:
529
530     a. Request a larger ("large" or "huge") compilation / code-generation
531        model. This is needed for 16-bit PC-based UNIX versions (most or
532        all of which fail to build C-Kermit 7.0 and later anyway). This is
533        typically done with a -M and/or -F switch (see your cc manual or
534        man page for details).
535     b. Some development systems support overlays. If the program is too
536        big to be built as is, check your loader manual ("man ld") to see
537        if an overlay feature is available. See the 2.10/2.11 BSD example
538        in the UNIX makefile. (Actually, as of version 7.0, C-Kermit is
539        too big to build, period, even with overlays, on 2.xx BSD).
540     c. Similarly, some small and/or segment-based architectures support
541        "code mapping", which is similar to overlays (PDP11-based VENIX
542        1.0, circa 1984, was an example). See the linker documentation on
543        the affected platform.
544
545    It is also possible to reduce the size of the executable program file
546    in several other ways:
547
548     a. Include the -O (optimize) compiler switch if it isn't already
549        included in your "make" entry (and if it works!). If your compiler
550        supports higher levels of optimization (e.g. -O2 or higher number,
551        -Onolimit (HP-UX), etc), try them; the greater the level of
552        optimization, the longer the compilation and more likely the
553        compiler will run out of memory. The the latter eventuality, some
554        compilers also provide command-line options to allocate more
555        memory for the optimizer, like "-Olimit number" in Ultrix.
556     b. If your platofrm supports shared libraries, change the make entry
557        to take advantage of this feature. The way to do this is, of
558        course, platform dependent; see the NeXT makefile target for an
559        example. some platforms (like Solaris) do it automatically and
560        give you no choice. But watch out: executables linked with shared
561        libraries are less portable than statically linked executables.
562     c. Strip the program image after building ("man strip" for further
563        info), or add -s to the LNKFLAGS (UNIX only). This strips the
564        program of its symbol table and relocation information.
565     d. Move character strings into a separate file. See the 2.11 BSD
566        target for an example.
567
568   6.4. Space/Time Tradeoffs
569
570    There are more than 6000 debug() statements in the program. If you
571    want to save both space (program size) and time (program execution
572    time), include -DNODEBUG in the compilation. If you want to include
573    debugging for tracking down problems, omit -DNODEBUG from the make
574    entry. But when you include debugging, you have two choices for how
575    it's done. One definition defines debug() to be a function call; this
576    is cheap in space but expensive in execution. The other defines debug
577    as "if (deblog)" and then the function call, to omit the function call
578    overhead when the debug log is not active. But this adds a lot of
579    space to the program. Both methods work, take your choice; IFDEBUG is
580    preferred if memory is not a constraint but the computer is likely to
581    be slow. The first method is the default, i.e. if nothing is done to
582    the CFLAGS or in [84]ckcdeb.h (but in some cases, e.g. VMS, it is). To
583    select the second method, include -DIFDEBUG in the compilation (and
584    don't include -DNODEBUG).
585
586    [ [85]C-Kermit Home ] [ [86]Kermit Home ]
587     ________________________________________________________________________
588
589   7. MODEM DIALING
590
591    [ [87]Top ] [ [88]Contents ] [ [89]Next ] [ [90]Previous ]
592
593    -DNODIAL removes automatic modem dialing completely, including the
594    entire [91]ckudia.c module, plus all commands that refer to dialing in
595    the various ckuus*.c modules.
596
597    -DMINIDIAL leaves the DIAL and related commands (SET/SHOW MODEM,
598    SET/SHOW DIAL) intact, but removes support for all types of modems
599    except CCITT, Hayes, Unknown, User-defined, Generic-high-speed, and
600    None (= Direct). The MINIDIAL option cuts the size of the dial module
601    approximately in half. Use this option if you have only Hayes or CCITT
602    modems and don't want to carry the baggage for the other types.
603
604    A compromise between full dialer support and MINIDIAL is obtained by
605    removing support for "old" modems -- all the strange non-Hayes
606    compatible 1200 and 2400 bps modems that C-Kermit has been carrying
607    around since 1985 or so. To remove support for these modems, add
608    -DNOOLDMODEMS to CFLAGS at compilation time.
609
610    Finally, if you keep support for old modems, you will notice that
611    their names appear on the "set modem ?" menu. That's because their
612    names are, by default, "visible". But the list is confusing to the
613    younger generation, who have only heard of modems from the
614    V.32bis-and-later era. If you want to be able to use old modems, but
615    don't want their names cluttering up menus, add this to CFLAGS:
616
617   -DM_OLD=1
618
619    [ [92]C-Kermit Home ] [ [93]Kermit Home ]
620     ________________________________________________________________________
621
622   8. NETWORK SUPPORT
623
624    [ [94]Top ] [ [95]Contents ] [ [96]Next ] [ [97]Previous ]
625
626    SECTION CONTENTS
627
628   8.1. [98]TCP/IP
629   8.2. [99]X.25
630   8.3. [100]Other Networks
631
632    C-Kermit supports not only serial-port and modem connections, but also
633    TCP/IP and X.25 network connections. Some versions support other
634    network types too like DECnet, LAT, NETBIOS, etc. If you define the
635    following symbol:
636
637   NONET
638
639    then all network support is compiled away.
640
641   8.1. TCP/IP
642
643    SUBSECTION CONTENTS
644
645   8.1.1. [101]Firewalls
646   8.1.2. [102]Compilation and Linking Problems
647   8.1.3. [103]Enabling Host Address Lists
648   8.1.4. [104]Enabling Telnet NAWS
649   8.1.5. [105]Enabling Incoming TCP/IP Connections
650   8.1.6. [106]Disabling SET TCP Options
651
652    C-Kermit's TCP/IP features require the Berkeley sockets library or
653    equivalent, generally available on any Unix system, as well as in
654    Windows 9x/NT, OS/2, VMS, AOS/VS, VOS, etc. The TCP/IP support
655    includes built-in TELNET, FTP, and HTTP protocol. To select TCP/IP
656    support, include -DTCPSOCKET in your makefile target's CFLAGS, or (in
657    VMS) the appropriate variant (e.g. -DWOLLONGONG, -DMULTINET,
658    -DEXCELAN, -DWINTCP, etc).
659
660    The VMS and/or early Unix third-party TCP/IP products are often
661    incompatible with each other, and sometimes with different versions of
662    themselves. For example, Wollongong reportedly put header files in
663    different directories for different UNIX versions:
664
665      * in.h can be in either /usr/include/sys or /user/include/netinet.
666      * telnet.h can be in either /usr/include/arpa or
667        /user/include/netinet.
668      * inet.h can be in either /usr/include/arpa or /user/include/sys.
669
670    In cases like this, use the -I cc command-line option when possible;
671    otherwise it's better to make links in the file system than it is to
672    hack up the C-Kermit source code. Suppose, for example, Kermit is
673    looking for telnet.h in /usr/include/arpa, but on your computer it is
674    in /usr/include/netinet. Do this (as root, or get the system
675    administrator to do it):
676
677   cd /usr/include/arpa
678   ln /usr/include/netinet/telnet.h telnet.h
679
680    ("man ln" for details about links.)
681
682    The network support for TCP/IP and X.25 is in the source files
683    [107]ckcnet.h, [108]ckctel.c, [109]ckctel.c, [110]ckctel.h,
684    [111]ckcftp.c, with miscellaneous SHOW commands, etc, in the various
685    ckuus*.c modules, plus code in the ck*con.c or ckucns.c (CONNECT
686    command) and several other modules to detect TELNET negotiations, etc.
687
688    Within the TCPSOCKET code, some socket-level controls are included if
689    TCPSOCKET is defined in the C-Kermit CFLAGS and SOL_SOCKET is defined
690    in in the system's TCP-related header files, such as <sys/socket.h>.
691    These are:
692
693   SET TCP KEEPALIVE
694   SET TCP LINGER
695   SET TCP RECVBUF
696   SET TCP SENDBUF
697
698    In addition, if TCP_NODELAY is defined, the following command is also
699    enabled:
700
701   SET TCP NODELAY (Nagle algorithm)
702
703    See the [112]C-Kermit user documentation for descriptions of these
704    commands.
705
706   8.1.1. Firewalls
707
708    There exist various types of firewalls, set up to separate users of an
709    internal TCP/IP network ("Intranet") from the great wide Internet, but
710    then to let selected users or services get through after all.
711
712    One firewall method is called SOCKS, in which a proxy server allows
713    users inside a firewall to access the outside world, based on a
714    permission list generally stored in a file. SOCKS is enabled in one of
715    two ways. First, the standard sockets library is modified to handle
716    the firewall, and then all the client applications are relinked (if
717    necessary, i.e. if the libraries are not dynamically loaded) with the
718    modified sockets library. The APIs are all the same, so the
719    applications do not need to be recoded or recompiled.
720
721    In the other method, the applications must be modified to call
722    replacement routines, such as Raccept() instead of accept(), Rbind()
723    instead of bind(), etc, and then linked with a separate SOCKS library.
724    This second method is accomplished (for SOCKS4) in C-Kermit by
725    including -DCK_SOCKS in your CFLAGS, and also adding:
726
727   -lsocks
728
729    to LIBS, or replacing -lsockets with -lsocks (depending on whether the
730    socks library also includes all the sockets entry points).
731
732    For SOCKS5, use -DCK_SOCKS5.
733
734    Explicit firewall support can, in general, not be a standard feature
735    or a feature that is selected at runtime, because the SOCKS library
736    tends to be different at each site -- local modifications abound.
737
738    The ideal situation occurs when firewalls are supported by the first
739    method, using dynamically linked sockets-replacement libraries; in
740    this case, all your TCP/IP client applications negotiate the firewall
741    transparently.
742
743   8.1.2. Compilation and Linking Problems
744
745    If you get a compilation error in [113]ckcnet.c, with a complaint like
746    "incompatible types in assignment", it probably has something to do
747    with the data type your system uses for the inet_addr() function,
748    which is declared (usually) in <arpa/inet.h>. Kermit uses "unsigned
749    long" unless the symbol INADDRX is defined, in which case "struct
750    inaddr" is used instead. Try adding -DINADDRX to CFLAGS in your make
751    entry, and if that fixes the problem, please send a report to
752    kermit@columbia.edu.
753
754    Compilation errors might also have to do with the data type used for
755    getsockopt() and setsockopt() option-length field. This is normally an
756    int, but sometimes it's a short, a long, or an unsigned any of those,
757    or a size_t. To fix the compilation problem, add -DSOCKOPT_T=xxx to
758    the CFLAGS in your makefile target, where xxx is the appropriate type
759    (use "man getsockopt" or grep through your system/network header files
760    to find the needed type).
761
762   8.1.3. Enabling Host Address Lists
763
764    When you give Kermit an IP host name, it calls the socket routine
765    gethostbyname() to resolve it. gethostbyname() returns a hostent
766    struct, which might or might not not include a list of addresses; if
767    it does, then if the first one fails, Kermit can try the second one,
768    and so on. However, this will only work if the symbol "h_addr" is a
769    macro defined as "h_addr_list[0]", usually in netdb.h. If it is, then
770    you can activate this feature by defining the following symbol in
771    CFLAGS:
772
773   HADDRLIST
774
775   8.1.4. Enabling Telnet NAWS
776
777    The Telnet Negotiation About Window Size (NAWS) option requires the
778    ability to find out the terminal screen's dimensions. E.g. in Unix, we
779    need something like ioctl(0, TIOCGWINSZ, ...). If your version of
780    Kermit was built with NAWS capability, SHOW VERSIONS includes CK_NAWS
781    among the compiler options. If it doesn't, you can add it by defining
782    CK_NAWS at compile time. Then, if the compiler or linker complain
783    about undefined or missing symbols, or there is no complaint but SHOW
784    TERMINAL fails to show reasonable "Rows =, Columns =" values, then
785    take a look at (or write) the appropriate ttgwsiz() routine. On the
786    other hand, if CK_NAWS is defined by default for your system (in
787    [114]ckcnet.h), but causes trouble, you can override this definition
788    by including the -DNONAWS switch on your CC command line, thus
789    disabling the NAWS feature.
790
791    This appears to be needed at least on the AT&T 3B2, where in
792    [115]ckutio.c, the routine ttgwsiz() finds that the TIOCGWINSZ symbol
793    is defined but lacks definitions for the corresponding winsize struct
794    and its members ws_col and ws_row.
795
796    The UNIX version of C-Kermit also traps SIGWINCH, so it can send a
797    NAWS to the Telnet server any time the local console terminal window
798    size changes, e.g. when you stretch it with a mouse. The
799    SIGWINCH-trapping code is enabled if SIGWINCH is defined (i.e. in
800    signal.h). If this code should cause problems, you can disable it
801    without disabling the NAWS feature altogether, by defining NOSIGWINCH
802    at compile time.
803
804   8.1.5. Enabling Incoming TCP/IP Connections
805
806    This feature lets you "set host * port" and wait for an incoming
807    connection on the given port. This feature is enabled automatically at
808    compile if TCPSOCKET is defined and SELECT is also defined. But watch
809    out, simply defining SELECT on the cc command line does not guarantee
810    successful compilation or linking (see [116]Section 11).
811
812    If you want to disable incoming TCP/IP connections, then build
813    C-Kermit with:
814
815   -DNOLISTEN
816
817   8.1.6. Disabling SET TCP Options
818
819    The main reason for this is because of header file / prototype
820    conflicts at compile time regardting get- / setsockopt(). If you can't
821    fix them (without breaking other builds), add the following in CFLAGS:
822
823   -DNOTCPOPTS
824
825   8.2. X.25
826
827    X.25 support requires (a) a Sun, (b) the SunLink product (libraries
828    and header files), and (c) an X.25 connection into your Sun. Similarly
829    (in C-Kermit 7.0 or later) Stratus VOS and IBM AIX.
830
831    In UNIX, special makefile targets sunos4x25 and sunos41x25 (for SUNOS
832    4.0 and 4.1, respectively), or aix41x25, are provided to build in this
833    feature, but they only work if conditions (a)-(c) are met. To request
834    this feature, include -DSUNX25 (or -DIBMX25) in CFLAGS.
835
836    SUNX25 (or -DIBMX25) and TCPSOCKET can be freely mixed and matched,
837    and selected by the user at runtime with the SET NETWORK TYPE command
838    or SET HOST switches.
839
840   8.3. Other Networks
841
842    Support for other networking methods -- NETBIOS, LAT, Named Pipes, etc
843    -- is included in ck*net.h and ck*net.c for implementations (such as
844    Windows or OS/2) where these methods are supported.
845
846    Provision is made in the organization of the modules, header files,
847    commands, etc, for addition of new network types such as DECnet, X.25
848    for other systems (HP-UX, VMS, etc), and so on. Send email to
849    [117]kermit@columbia.edu if you are willing and able to work on such a
850    project.
851
852    [ [118]C-Kermit Home ] [ [119]Kermit Home ]
853     ________________________________________________________________________
854
855   9. EXCEPTION HANDLING
856
857    [ [120]Top ] [ [121]Contents ] [ [122]Next ] [ [123]Previous ]
858
859    The C language setjmp/longjmp mechanism is used for handling
860    exceptions. The jump buffer is of type jmp_buf, which almost
861    everywhere is typedef'd as an array, in which case you should have no
862    trouble compiling the exception-handling code. However, if you are
863    building C-Kermit in/for an environment where jmp_buf is something
864    other than an array (e.g. a struct), then you'll have to define the
865    following symbol:
866
867   JBNOTARRAY
868
869    [ [124]C-Kermit Home ] [ [125]Kermit Home ]
870     ________________________________________________________________________
871
872   10. SECURITY FEATURES
873
874    [ [126]Top ] [ [127]Contents ] [ [128]Next ] [ [129]Previous ]
875
876    Security, in the sense of secure authentication and strong encryption,
877    can be built into versionf of C-Kermit for which the appropriate
878    libraries and header files are available (Kerberos IV, Kerberos V,
879    OpenSSL, SRP), as explained in great detail in the Kermit Security
880    Reference
881    . The following symbols govern C-Kermit's security features at build
882    time:
883
884    NO_AUTHENTICATION
885           Means do not configure any TELNET AUTHENTICATION support. It
886           implies NO_ENCRYPTION and undefines any of the auth and encrypt
887           types. It does not undefine CK_SSL even though builds with
888           CK_SSL cannot succeed without CK_AUTHENTICATION. (This will be
889           supported in a future release. It will be needed to allow
890           C-Kermit to be built only as an FTP client.)
891
892    NO_KERBEROS
893           Means do not compile in any KERBEROS support when
894           CK_AUTHENTICATION has been defined.
895
896    NO_SRP
897           Do not compile in any SRP support when CK_AUTHENTICATION has
898           been defined.
899
900    NO_SSL
901           Do not compile in any SSL/TLS support
902
903    NO_ENCRYPTION
904           Do not compile in any Telnet encryption support. It does not
905           affect the use of SSL/TLS
906
907    NOSSH
908           Do not compile in any SSH support whether internal or external
909
910    CK_AUTHENTICATION
911           Telnet AUTHENTICATION support. (Also, required if SSL/TLS
912           support is desired.) On most platforms this does not autodefine
913           any authentication mechanisms such as Kerberos V, Kerberos IV,
914           SRP, ... Those need to be defined separately.
915
916    CK_KERBEROS
917           Defined automatically when KRB4, KRB5, or KRB524 are defined.
918           Implies that some version of Kerberos is in use.
919
920    KRB4
921           Should be defined when Kerberos IV support is desired.
922
923    KRB5
924           Should be defined when Kerberos V support is desired.
925
926    KRB524
927           Should be defined if both Kerberos V and Kerberos IV are used
928           and the Kerberos IV support is provided by the MIT Kerberos IV
929           compatibility library in the current Kerberos 5 distribution.
930
931    KRB5_U2U
932           Should be defined if KRB5 is defined and Kerberos 5 User to
933           User mode is desired.
934
935    HEIMDAL
936           Should be defined if Kerberos V support is provided by HEIMDAL.
937           Support for this option is not complete in C-Kermit 8.0. Anyone
938           interested in working on this should contact kermit-support.
939
940    CK_SRP
941           Should be defined if SRP support is desired.
942
943    CK_ENCRYPTION
944           Should be defined if TELNET ENCRYPTION option support is
945           desired. This option does not define any particular encryption
946           types. That should be done by defining CK_DES or CK_CAST.
947
948    CK_DES
949           Should be defined if either DES or 3DES Telnet Encryption
950           option support is desired.
951
952    LIBDES
953           If CK_DES is defined and DES support is being provided by
954           either Eric Young's libdes.a or OpenSSL 0.9.6x or earlier, this
955           option must be defined. If it is not defined, it will be
956           assumed that DES support is provided by the MIT Kerberos IV
957           libraries.
958
959    CK_CAST
960           Should be defined if CAST Telnet Encryption option support is
961           desired
962
963    CK_SSL
964           Should be defined if SSL/TLS support (OpenSSL) is desired.
965
966    SSL_KRB5
967           If KRB5 is defined, and OpenSSL is built to support the
968           Kerberos 5 ciphers, then you should define SSL_KRB5
969
970    NOSSLKRB5
971           If you are using OpenSSL 0.9.7 or higher and do not wish to
972           build with support for Kerberos 5 TLS ciphers, this option must
973           be defined.
974
975    ZLIB
976           If you are using OpenSSL 0.9.6 or higher and it has been
977           compiled with support for ZLIB compression, this option should
978           be defined to enable Kermit to properly enable the use of
979           compression.
980
981    SSHCMD
982           Defined for C-Kermit to enable the use of external SSH clients
983           from the Kermit command language
984
985    SSHBUILTIN
986           Defined for Kermit implementations that have integrated SSH
987           support. Currently only Windows.
988
989    ANYSSH
990           Defined if either SSHCMD or SSHBUILTIN are defined.
991
992    CK_SNDLOC
993           Telnet Send Location support.
994
995    NOSNDLOC
996           Do not include Telnet Send Location support.
997
998    CK_XDISPLOC
999           Telnet X-Display Location support. Determines if the X-Display
1000           location information is sent to the Telnet server either via
1001           Telnet XDISPLOC or NEW-ENV options.
1002
1003    NOXDISPLOC
1004           Do not include Telnet X-Display Location support.
1005
1006    CK_FORWARD_X
1007           Telnet Forward X Windows Session Data option. Used to protect
1008           the privacy and integrity of X Windows Sessions when secure
1009           telnet sessions are in use.
1010
1011    NOFORWARDX
1012           Do not include Telnet Forward X Windows Session Data option.
1013
1014    Besides the strong forms of security listed above, C-Kermit also
1015    embodies various internal security features, including:
1016
1017    NOPUSH
1018           Compiling with the NOPUSH symbol defined removes all the "shell
1019           escape" features from the program, including the PUSH, RUN, and
1020           SPAWN commands, the "!" and "@" command prefixes, OPEN !READ,
1021           OPEN !WRITE, job control (including the SUSPEND command), the
1022           REDIRECT command, shell/DCL escape from CONNECT mode, as well
1023           as the server's execution of REMOTE HOST commands (and, of
1024           course, the ENABLE HOST command). Add NODISPO to also prevent
1025           acceptance of incoming MAIL or REMOTE PRINT files. For UNIX,
1026           also be sure to read [130]Section 11 of the [131]Unix C-Kermit
1027           Installation Instructions. about set[ug]id configuration.
1028           Additional restrictions can be enforced when in server mode;
1029           read about the DISABLE command in the user manual.
1030
1031    NOCCTRAP
1032           Compiling with NOCCTRAP prevents the trapping of SIGINT by
1033           Kermit. Thus if the user generates a SIGINT signal (e.g. by
1034           typing the system's interrupt character), Kermit will exit
1035           immediately, rather than returning to its prompt.
1036
1037    NOPUSH and NOCCTRAP together allow Kermit to be run from restricted
1038    shells, preventing access to system functions.
1039
1040    [ [132]C-Kermit Home ] [ [133]Kermit Home ]
1041     ________________________________________________________________________
1042
1043   11. ENABLING SELECT()
1044
1045    [ [134]Top ] [ [135]Contents ] [ [136]Next ] [ [137]Previous ]
1046
1047    Kermit works best if it can do nonblocking reads, nondestructive input
1048    buffer checking, and millisecond sleeps. All of these functions can be
1049    accomplished by the select() function, which, unfortunately, is not
1050    universally available. Furthermore, select() is required if incoming
1051    TCP/IP connections are to be supported.
1052
1053    select() was introduced with Berkeley UNIX, rejected by AT&T for
1054    System V, but is gradually creeping in to all UNIX versions (and other
1055    operating systems too) by virtue of its presence in the sockets
1056    library, which is needed for TCP/IP. AT&T SVID for System V R4
1057    includes select(), but that does not mean that all SVR4
1058    implementations have it.
1059
1060    Furthermore, even when select() is available, it might work only on
1061    socket file descriptors, but not on others like serial ports, pipes,
1062    etc. For example, in AOS/VS and BeOS, it works only with file
1063    descriptors that were created by socket() and opened by connect() or
1064    accept().
1065
1066    Other alternatives include poll() and rdchk(). Only one of these three
1067    functions should be included. The following symbols govern this:
1068
1069      SELECT  Use select() (BSD, or systems with sockets libraries)
1070      CK_POLL Use poll()   (System V)
1071      RDCHK   Use rdchk()  (SCO XENIX and UNIX)
1072
1073    If your system supports the select() function, but your version of
1074    C-Kermit does not, try adding:
1075
1076   -DSELECT
1077
1078    to the CFLAGS, and removing -DRDCHK or -DCK_POLL if it is there. If
1079    you get compilation errors, some adjustments to ck*tio.c and/or
1080    ck*net.c might be needed; search for SELECT (uppercase) in these files
1081    (note that there are several variations on the calling conventions for
1082    select()).
1083
1084    Various macros and data types need to be defined in order to use
1085    select(). Usually these are picked up from <types.h> or <sys/types.h>.
1086    But on some systems, they are in <sys/select.h>. In that case, add the
1087    following:
1088
1089   -DSELECT_H
1090
1091    to the CFLAGS to tell C-Kermit to #include <sys/select.h>. A good
1092    indication that you need to do this would be if you get compile-time
1093    complaints about "fd_set" or "FD_SET" not being declared or defined.
1094
1095    In UNIX, the use of select() vs fork() in the CONNECT command is
1096    independent of the above considerations, and is governed by choosing a
1097    particular makefile target.
1098
1099    As of C-Kermit 7.0, select() is also the preferred control mechanism
1100    for the CONNECT command. Unfortunately, the structures used by the
1101    original UNIX CONNECT command, based on fork(), and those used by
1102    select(), are so different, it was not practical to implement them
1103    both in one module. So the select()-based CONNECT command module for
1104    UNIX is [138]ckucns.c, and the fork-based one remains [139]ckucon.c.
1105    To choose the fork-based one, which is more portable (but slower and
1106    more fragile), use "wermit" as the make target. To choose the
1107    select-based one, use "xermit". Only do this if you can verify that
1108    the CONNECT command works on serial connections and PIPE connections
1109    as well as TCP connections.
1110
1111      The select()-based Unix CONNECT module, ckucns.c, must be used if
1112      encryption is to be done, since the fork() version (ckucon.c) loses
1113      its ability to share vital state information between the two forks.
1114      Also note that the select() version is superior in many other ways
1115      too. For example, it recovers better from exterior killing, forced
1116      disconnections, etc, plus it goes faster.
1117
1118    SHOW VERSIONS tells whether the CONNECT module uses fork() or
1119    select().
1120
1121    C-Kermit 8.0 adds learned script capability, which depends on
1122    select(). All the "wermit" based targets (as opposed to "xermit") had
1123    NOLEARN added to them. Whenever changing a target over from wermit to
1124    xermit, also remember to remove NOLEARN.
1125
1126    [ [140]C-Kermit Home ] [ [141]Kermit Home ]
1127     ________________________________________________________________________
1128
1129   12. I/O REDIRECTION
1130
1131    [ [142]Top ] [ [143]Contents ] [ [144]Next ] [ [145]Previous ]
1132
1133    The REDIRECT command allows a local program to be run with its i/o
1134    redirected over the communications connection. Your version of
1135    C-Kermit has a REDIRECT command if it was built with the following
1136    CFLAG:
1137
1138   -DCK_REDIR
1139
1140    This, in turn, is possible only if the underlying API is there. In the
1141    case of UNIX this is just the wait() system call, so all UNIX versions
1142    get this feature as of 6.0.192 (earlier versions needed a <sys/wait.h>
1143    header file defining the symbols WIFEXITED and WEXITSTATUS).
1144
1145    As of version 7.0, file transfer can be done using pipes and filters.
1146    To enable this feature, #define PIPESEND (and fill in the code). To
1147    disable on systems where it is normally enabled, define NOPIPESEND.
1148    This feature is, of course, also disabled by building with NOPUSH (or
1149    giving the "nopush" command at runtime).
1150
1151    C-Kermit 7.0 also adds the PIPE and SET HOST /COMMAND commands, which
1152    provide another form of redirection. This feature is selected with
1153    -DNETCMD. CK_RDIR must also be defined, since the same mechanisms are
1154    used internally.
1155
1156    [ [146]C-Kermit Home ] [ [147]Kermit Home ]
1157     ________________________________________________________________________
1158
1159   13. FLOATING-POINT NUMBERS, TIMERS, AND ARITHMETIC
1160
1161    [ [148]Top ] [ [149]Contents ] [ [150]Next ] [ [151]Previous ]
1162
1163    Floating-point support was added in C-Kermit 7.0.
1164
1165    Floating-point numbers are enabled internally, at least for use in
1166    high-precision file-transfer timers and statistics, unless the
1167    following symbol is defined at compile time:
1168
1169   -DNOFLOAT
1170
1171    This might be necessary on old PCs that do not have built-in
1172    floating-point hardware.
1173
1174    When NOFLOAT is not defined, the following symbol tells which
1175    floating-point type to use:
1176
1177   -DCKFLOAT=xxxx
1178
1179    The value is either "double" (normal for 32- and 16-bit architectures)
1180    or "float" (normal for 64-bit architectures).
1181
1182    C-Kermit can be configured to use high-precision file-transfer timers
1183    for more accurate statistics. This feature is enabled with:
1184
1185   -DGFTIMER
1186
1187    and disabled with:
1188
1189   -DNOGFTIMER
1190
1191    If you try to build with -DGFTIMER but you get compilation errors,
1192    either fix them (and send email to kermit@columbia.edu telling what
1193    you did), or else give up and use -DNOGFTIMER (or -DNOFLOAT) instead.
1194    Hint: depending on your machine architecture, you might have better
1195    luck using double than float as the data type for floating-point
1196    numbers, or vice versa. Look in [152]ckcdeb.h for the CKFLOAT
1197    definition.
1198
1199    Floating-point arithmetic is also supported in the script programming
1200    language. First via the \fpp...() functions, such as \fppadd(), which
1201    adds two floating-point numbers, second in S-Expressions. Addition,
1202    subtraction, multiplication, and division are always available. But
1203    other functions such as logs, raising to powers, sines and cosines,
1204    etc, require the C Math library. To include user-level floating-point
1205    math you must put:
1206
1207   -DFNFLOAT
1208
1209    and in Unix you must link with the Math library:
1210
1211   LIBS=".... -lm"
1212
1213    In K95 and VMS, FNFLOAT is defined automatically if CKFLOAT is
1214    defined. In Unix, however, FNFLOAT must be added to each makefile
1215    target individually, because of the special linking instructions that
1216    must also be added to each target.
1217
1218    Note: S-Expressions require FNFLOAT.
1219
1220    [ [153]C-Kermit Home ] [ [154]Kermit Home ]
1221     ________________________________________________________________________
1222
1223   14. SPECIAL CONFIGURATIONS
1224
1225    [ [155]Top ] [ [156]Contents ] [ [157]Previous ]
1226
1227    As of C-Kermit 7.0, if you build C-Kermit normally, but with -DNOICP
1228    (No Interactive Command Parser), you get a program capable of making
1229    serial connections (but not dialing) and network connections (if
1230    TCPSOCKET or other network option included), and can also transfer
1231    files using Kermit protocol, but only via autodownload/upload.
1232    Furthermore, if you call the executable "telnet", it will act like
1233    Telnet -- using the command-line options. However, in this case there
1234    is nothing to escape back to, so if you type Ctrl-\c, it just prints a
1235    message to this effect.
1236
1237    You can also build C-Kermit with -DNOXFER, meaning omit all the
1238    file-transfer features. This leaves you with a scriptable
1239    communications program that is considerably smaller than the full
1240    C-Kermit.
1241
1242    [ [158]C-Kermit Home ] [ [159]Kermit Home ]
1243     ________________________________________________________________________
1244
1245   APPENDIX I: SUMMARY OF COMPILE-TIME OPTIONS
1246
1247    [ [160]Top ] [ [161]Contents ]
1248
1249    These are the symbols that can be specified on the cc command line,
1250    listed alphabetically. Others are used internally, including those
1251    taken from header files, those defined by the compiler itself, and
1252    those inferred from the ones given below. Kermit's SHOW VERSIONS
1253    command attempts to display most of these. See [162]ckcdeb.h and
1254    [163]ckcnet.h for inference rules. For example SVR3 implies ATTSV,
1255    MULTINET implies TCPSOCKET, and so on.
1256
1257    Here is the complete list of the Kermit-specific compile-time
1258    switches:
1259
1260    ACUCNTRL Select BSD 4.3-style acucntrl() bidirectional tty control.
1261    aegis Build for Apollo Aegis (predefined on Apollo systems).
1262    AIX370 Build for IBM AIX/370 for IBM mainframes.
1263    AIXESA Build for IBM AIX/ESA for IBM mainframes.
1264    AIXPS2 Build for IBM AIX 3.0 for PS/2 series (never formally
1265    released).
1266    AIXRS Build for IBM AIX 3.x on RS/6000.
1267    AIX41 Build for IBM AIX 4.x on RS/6000.
1268    AMIGA Build for Commodore Amiga with Intuition OS.
1269    ATT6300 Build for AT&T 6300 PLUS.
1270    ATT7300 Build for AT&T 7300 UNIX PC (3B1).
1271    ATTSV Build for AT&T System III or V UNIX.
1272    AUX Build for Apple A/UX for the Macintosh.
1273    BIGBUFOK OK to use big buffers - "memory is not a problem"
1274    BPS_xxxx Enable SET SPEED xxxx
1275    BSD29 Build for BSD 2.9 or 2.10.
1276    BSD4 Build for BSD 4.2.
1277    BSD41 Build for BSD 4.1.
1278    BSD43 Build for BSD 4.3.
1279    BSD44 Build for BSD 4.4.
1280    C70 Build for BBN C/70.
1281    CIE Build for CIE Systems 680/20.
1282    CKCONINTB4CB Work around prompt-disappears after escape back from
1283    CONNECT.
1284    CKLEARN Build with support for learned scripts.
1285    CKLOGDIAL Enable connection log.
1286    CKMAXPATH Maximum length for a fully qualified filename.
1287    CKREGEX (misnomer) Include [...] or {xxx,xxx,xxx} matching in
1288    ckmatch().
1289    CKSYSLOG Enable syslogging.
1290    CK_ANSIC Enable ANSI C constructs - prototypes, etc.
1291    CK_ANSILIBS Use header files for ANSI C libraries.
1292    CK_APC Enable APC execution by CONNECT module.
1293    CK_CURSES Enable fullscreen file transfer display.
1294    CK_DSYSINI Use system-wide init file, with name supplied by Kermit.
1295    CK_DTRCD DTR/CD flow control is available.
1296    CK_FAST Build with fast Kermit protocol defaults.
1297    CK_FORK_SIG UNIX only: signal() number for CONNECT module forks.
1298    CK_IFRO IF REMOTE command is available (and can run in remote mode).
1299    CK_INI_A System-wide init file takes precedence over user's.
1300    CK_INI_B User's init file takes precedence over the system-wide one.
1301    CK_LABELED Include support for SET FILE TYPE LABELED.
1302    CK_LBRK This version can send Long BREAK.
1303    CK_LINGER Add code to turn of TCP socket "linger" parameter.
1304    CK_MKDIR This version has a zmkdir() command to create directories.
1305    CK_NAWS Include TELNET Negotiate About Window Size support.
1306    CK_NEWTERM Use newterm() rather than initscr() to initialize curses.
1307    CK_PAM Include PAM authentication (might also require -lpam).
1308    CK_PCT_BAR Fullscreen file transfer display should include
1309    "thermometer".
1310    CK_POLL System-V or POSIX based UNIX has poll() function.
1311    CK_POSIX_SIG Use POSIX signal handing: sigjmp_buf, sigsetjmp,
1312    siglongjmp.
1313    CK_READ0 read(fd,&x,0) can be used to test TCP/IP connections.
1314    CK_REDIR Enable the REDIRECT command.
1315    CK_RESEND Include the RESEND command (needs zfseek() + append).
1316    CK_RTSCTS RTS/CTS flow control is available.
1317    CK_SHADOW Include support for shadow passwords (e.g. for IKSD
1318    authentication).
1319    CK_SOCKBUF Enable TCP socket-buffer-size-increasing code.
1320    CK_SOCKS UNIX only: Build with socks library rather than regular
1321    sockets
1322    CK_SOCKS5 UNIX only: Build with socks 5 lib rather than regular
1323    sockets
1324    CK_SPEED Enable control-character unprefixing.
1325    CK_SYSINI="xxxxx" Quoted string to be used as system-wide init file
1326    name.
1327    CK_TIMERS Build with support for dynamically calculated packet
1328    timeouts.
1329    CK_TMPDIR This version of Kermit has an isdir() function.
1330    CK_TTYFD Defined on systems where the communications connection file
1331    descriptor (ttyfd) can be passed to other processes as a command-line
1332    argument via \v(ttyfd).
1333    CK_URL Parse URLs as well as hostnames, etc.
1334    CK_XONXOFF Xon/Xoff flow control available.
1335    CK_XYZ Include support for XYZMODEM protocols.
1336    CK_WREFRESH Curses package includes wrefresh(),clearok() for screen
1337    refresh.
1338    CKFLOAT=type Floating-point data type, "double" or "float".
1339    CKTYP_H=xxx Force include of xxx as <types.h> file.
1340    CLSOPN When hanging up a tty device, also close and reopen it.
1341    CMDDEP Maximum recursion depth for self-referential user-defined fn's.
1342    COHERENT Build for Mark Williams Coherent UNIX
1343    CONGSPD Define if this version has congspd() routine in ck?tio.c
1344    datageneral Build for Data General AOS/VS or AOS/VS II
1345    DCLPOPEN popen() is available but needs to be declared
1346    DEC_TCPIP Build with support for DEC TCP/IP (UCX) for (Open)VMS
1347    DGUX430 Build for DG/UX 4.30
1348    DGUX540 Build for DG/UX 5.40
1349    DEFPAR=x Default parity, 0, 'e', 'o', 'm', or 's'.
1350    DFTTY=xxx Default communications device name.
1351    DIRENT UNIX directory structure to be taken from <dirent.h>.
1352    DIRPWDRP Prompt for password in REMOTE CWD command.
1353    DTILDE Include UNIX ~ notation for username/home-directory
1354    DYNAMIC Allocate file transfer packet buffers dynamically with malloc.
1355    ENCORE Build for Encore Multimax computers.
1356    EXCELAN Build with excelan TCP/IP.
1357    FNFLOAT Include floating-point math functions (logs, sin, cos, exp,
1358    etc)
1359    FT18 Build for Fortune For:Pro 1.8.
1360    FT21 Build for Fortune For:Pro 2.1.
1361    GEMDOS Build for Atari ST GEMDOS.
1362    GFTIMER Use high-precision floating-point file-transfer timers.
1363    GID_T=xxx Group IDs are of type xxx (usually int, short, or gid_t).
1364    HADDRLIST If gethostbyname() hostent struct contains a list of
1365    addresses.
1366    HDBUUCP Build with support for Honey DanBer UUCP.
1367    HPUX Build for Hewlett Packard HP-UX.
1368    HPUX9 Build for Hewlett Packard HP-UX 9.x.
1369    HPUX10 Build for Hewlett Packard HP-UX 10.x.
1370    HWPARITY Define if this version can SET PARITY HARDWARE { EVEN,
1371    ODD...}
1372    I386IX Build for Interactive System V R3.
1373    IFDEBUG Add IF stmts "if (deblog)" before "debug()" calls.
1374    INADDRX TCP/IP inet_addr() type is struct inaddr, not unsigned long.
1375    INTERLAN Build with support for Racal/Interlan TCP/IP.
1376    ISDIRBUG System defs of S_ISDIR and S_ISREG have bug, define
1377    ourselves.
1378    ISIII Build for Interactive System III.
1379    IX370 Build for IBM IX/370.
1380    KANJI Build with Kanji character-set translation support.
1381    LCKDIR UUCP lock directory is /usr/spool/uucp/LCK/.
1382    LFDEVNO UUCP lockfile name uses device numbers, as in SVR4.
1383    LINUXFSSTND For Linux, use FSSTND UUCP lockfile conventions (default).
1384    LOCK_DIR=xxx UUCP lock directory is xxx (quoted string).
1385    LOCKF Use lockf() (in addition to lockfiles) on serial lines
1386    LONGFN BSD long filenames supported using <dir.h> and opendir().
1387    LYNXOS Build for Lynx OS 2.2 or later (POSIX-based).
1388    MAC Build for Apple Macintosh with Mac OS.
1389    MATCHDOT Make wildcards match filenames that start with period (.)
1390    MAXRP=number Maximum receive-packet length.
1391    MAXSP=number Maximum send-packet length.
1392    MDEBUG Malloc-debugging requested.
1393    MINIDIAL Minimum modem dialer support: CCITT, Hayes, Unkown, and None.
1394    MINIX Build for MINIX.
1395    MIPS Build for MIPS workstation.
1396    MULTINET Build with support for TGV MultiNet TCP/IP (VAX/VMS).
1397    M_UNIX Defined by SCO.
1398    NAP The nap() is available (conflicts with SELECT and USLEEP)
1399    NAPHACK The nap() call is available but only as syscall(3112,...)
1400    NDIR BSD long filenames supported using <ndir.h> and opendir().
1401    NDGPWNAM Don't declare getpwnam().
1402    NDSYSERRLIST Don't declare sys_errlist[].
1403    NEEDSELECTDEFS select() is avaible but we need to define FD_blah
1404    ourselves.
1405    NETCMD Build with support for SET HOST /COMMAND and PIPE commands.
1406    NEXT Build for NeXT Mach 1.x or 2.x or 3.0, 3.1, or 3.2.
1407    NEXT33 Build for NeXT Mach 3.3.
1408    NOANSI Disable ANSI C function prototyping.
1409    NOAPC Do not include CK_APC code.
1410    NOARROWKEYS Exclude code to parse ANSI arrow-key sequences.
1411    NOB_xxxx Disable SET SPEED xxxx
1412    NOBIGBUF Override BIGBUFOK when it is the default
1413    NOBRKC Don't try to refer to t_brkc or t_eof tchars structure members.
1414    NOCKFQHOSTNAME Exclude code to get fully qualified hostname in case it
1415    causes core dumps.
1416    NOCCTRAP Disable Control-C (SIGINT) trapping.
1417    NOCKSPEED Disable control-prefix removal feature (SET CONTROL).
1418    NOCKTIMERS Build without support for dynamic timers.
1419    NOCKXYZ Overrides CK_XYZ.
1420    NOCKREGEX Do not include [...] or {xxx,xxx,xxx} matching in ckmatch().
1421    NOCMDL Build with no command-line option processing.
1422    NOCOTFMC No Close(Open()) To Force Mode Change (UNIX version).
1423    NOCSETS Build with no support for character set translation.
1424    NOCYRIL Build with no support for Cyrillic character set translation.
1425    NOCYRILLIC Ditto.
1426    NODEBUG Build with no debug logging capability.
1427    NODIAL Build with no DIAL or SET DIAL commands.
1428    NODISPO Build to always refuse incoming MAIL or REMOTE PRINT files.
1429    DNODISPLAY Build with no file-transfer display.
1430    NOESCSEQ Build with no support for ANSI escape sequence recognition.
1431    NOFAST Do not make FAST Kermit protocol settings the default.
1432    NOFDZERO Do not use file descriptor 0 for remote-mode file transfer.
1433    NOFILEH Do not #include <sys/file.h>.
1434    NOFLOAT Don't include any floating-point data types or operations.
1435    NOFRILLS Build with "no frills" (this should be phased out...)
1436    NOFTRUNCATE Include this on UNIXes that don't have ftruncate().
1437    NOGETUSERSHELL Include this on UNIXes that don't have getusershell().
1438    NOGFTIMER Don't use high-precision floating-point file-transfer
1439    timers.
1440    NOHEBREW Build with no support for Hebrew character sets.
1441    NOHELP Build with no built-in help.
1442    NOIKSD Build with IKSD support excluded.
1443    NOINITGROUPS Include this on UNIXes that don't have initgroups().
1444    NOICP Build with no interactive command parser.
1445    NOJC Build with no support for job control (suspend).
1446    NOKANJI Build with no support for Japanese Kanji character sets.
1447    NOKVERBS Build with no support for keyboard verbs (\Kverbs).
1448    NOLATIN2 Build with no ISO Latin-2 character-set translation support.
1449    NOLEARN Build with no support for learned scripts.
1450    NOLINKBITS Use of S_ISLNK and _IFLNK untrustworthy; use readlink()
1451    instead.
1452    NOLOCAL Build without any local-mode features: No Making Connections.
1453    NOLOGDIAL Disable connection log.
1454    NOLOGIN Build without IKSD (network login) support.
1455    NOLSTAT Not OK to use lstat().
1456    NOMDMHUP Build without "modem-specific hangup" (e.g. ATH0) feature.
1457    NOMHHOST Exclude the multihomed-host TCP/IP code (if compilcation
1458    errors)
1459    NOMINPUT Build without MINPUT command.
1460    NOMSEND Build with no MSEND command.
1461    NONAWS Do not include TELNET Negotiate About Window Size support.
1462    NONET Do not include any network support.
1463    NONOSETBUF (See NOSETBUF)
1464    NOPARSEN Build without automatic parity detection.
1465    NOPIPESEND Disable file transfer using pipes and filters.
1466    NOPOLL Override CK_POLL definition.
1467    NOPOPEN The popen() library call is not available.
1468    NOPURGE Build with no PURGE command.
1469    NOPUSH Build with no escapes to operating system.
1470    NOREALPATH In UNIX, realpath() function is not available.
1471    NORECALL Disable the command-recall feature.
1472    NOREDIRECT Disable REDIRECT command.
1473    NORENAME Don't use rename() system call, use link()/unlink() (UNIX).
1474    NORESEND Build with no RESEND command.
1475    NORETRY Build with no command-retry feature.
1476    NOSCRIPT Build with no SCRIPT command.
1477    NOSELECT Don't try to use select().
1478    NOSERVER Build with no SERVER mode and no server-related commands.
1479    NOSETBUF Don't make console writes unbuffered.
1480    NONOSETBUF DO make console writes unbuffered.
1481    NOSETREU setreuid() and/or setregid() not available.
1482    NOSHOW Build with no SHOW command (not recommended!).
1483    NOSIGWINCH Disable SIGWINCH signal trapping.
1484    NOSPL Build with no script programming language.
1485    NOSTAT Don't call stat() from mainline code.
1486    NOSYMLINK Include this for UNIXes that don't have readlink().
1487    NOSYSIOCTLH Do not #include <sys/ioctl.h>.
1488    NOSYSTIMEH Co not include <sys/time.h>.
1489    NOSYSLOG Disable syslogging code.
1490    NOTCPOPTS Build with no SET TCP options or underlying support.
1491    NOTLOG Build with no support for transaction logging.
1492    NOTM_ISDST Struct tm has no tm_isdst member.
1493    NOUNICODE Build with no support for Unicode character-set translation.
1494    NOURL Don't parse URLs
1495    NOUUCP Build with no UUCP lockfile support (dangerous!).
1496    NOWARN Make EXIT WARNING be OFF by default (otherwise it's ON).
1497    NOWREFRESH Override built-in definition of CK_WREFRESH (q.v.).
1498    NOXFER Build with no Kermit or other file-transfer protocols.
1499    NOXMIT Build with no TRANSMIT command.
1500    NOXPRINT Disables transparent print code.
1501    OLDMSG Use old "entering server mode" message (see [164]ckcmai.c).
1502    OLINUXHISPEED Build in old Linux hi-serial-speed code (for Linux <=
1503    1.0).
1504    OPENBSD Build for OpenBSD.
1505    OS2 Build for OS/2.
1506    OSF Build for OSF/1.
1507    OSFPC Build for OSF/1 on a PC.
1508    OSF32 Digital UNIX 3.2 or later.
1509    OSF40 Build for Digital UNIX 4.0.
1510    OSF50 Build for Digital UNIX 5.0.
1511    OSK Build for OS-9.
1512    OXOS Build for Olivetti X/OS 2.3.
1513    PCIX Build for PC/IX
1514    PID_T=xxx Type for pids is xxx (normally int or pid_t).
1515    POSIX Build for POSIX: use POSIX header files, functions, etc.
1516    _POSIX_SOURCE Disable non-POSIX features.
1517    PROVX1 Build for Venix 1.0 on DEC Professional 3xx.
1518    PTX Build for Dynix/PTX
1519    PWID_T=xxx getpwid() type is xxx.
1520    RBSIZ=xxx Define overall size of receive-packet buffer (with DYNAMIC).
1521    RDCHK rdchk() system call is available.
1522    RENAME rename() system call is available (UNIX).
1523    RTAIX Build for AIX 2.2.1 on IBM RT PC.
1524    RTU Build for Masscomp / Concurrent RTU.
1525    SAVEDUID BSD or other non-AT&T UNIX has saved-setuid feature.
1526    SBSIZ=xxx Define overall size of send-packet buffer (use with
1527    DYNAMIC).
1528    SDIRENT Directory structure specified in <sys/dirent.h>.
1529    SELECT select() function available (conflicts with RDCHK and CK_POLL)
1530    SELECT_H Include <sys/select.h> for select()-releated definitions.
1531    SETEUID BSD 4.4-style seteXid() functions available.
1532    SIG_V Type for signal() is void. Used to override normal assumption.
1533    SIG_I Type for signal() is int. Used to override normal assumption.
1534    SOCKOPT_T Override default data type for get/setsockopt() option
1535    length.
1536    SOLARIS Build for Solaris.
1537    SOLARIS25 Build for Solaris 2.5 or later.
1538    SONYNEWS Build for Sony NEWS-OS.
1539    STERMIOX <sys/termiox.h> is available.
1540    STRATUS Build for Stratus VOS.
1541    STRATUSX25 Include Stratus VOS X.25 support.
1542    SUN4S5 Build for SUNOS 4.x in the System V R3 environment.
1543    SUNOS4 Build for SUNOS 4.0 in the BSD environment.
1544    SUNOS41 Build for SUNOS 4.1 in the BSD environment.
1545    SUNX25 Build with support for SunLink X.25.
1546    SVR3 Build for AT&T System V Release 3.
1547    SVR3JC Allow job control support on System V Release 3 UNIX versions.
1548    SVR4 Build for AT&T System V Release 4.
1549    SW_ACC_ID UNIX only -- swap real & effective ids around access()
1550    calls.
1551    sxaE50 Build for PFU Compact A Series SX/A TISP.
1552    SYSLOGLEVEL=n Force syslogging at given level.
1553    SYSTIMEH Include <sys/time.h>.
1554    SYSUTIMEH Include <sys/utime.h> for setting file dates (88OPEN)
1555    TCPSOCKET Build with support for TCP/IP via Berkeley sockets library.
1556    TERMIOX <termiox.h> header file is available (mostly SVR4).
1557    TNCODE Include TELNET-specific code.
1558    TOWER1 Build for NCR Tower 1632 with OS 1.02.
1559    TRS16 Build for Tandy 16/6000.
1560    UID_T=xxx Type for uids is xxx (normally int or uid_t).
1561    UNIX Must be defined for all UNIX versions.
1562    UNIX351M AT&T UNIX 3.51m on the AT&T 7300 UNIX PC.
1563    USE_ARROWKEYS Include code to parse ANSI arrow-key sequences.
1564    USE_LSTAT OK to use lstat().
1565    USE_MEMCPY Define this if memcpy()/memset()/memmove() available.
1566    USE_STRERROR Define this if strerror() is available.
1567    USLEEP usleep() system call available (conflicts with NAP & SELECT).
1568    UTEK Build for Tektronix workstations with UTEK OS.
1569    UTIMEH Include <utime.h> for setting file dates (SVR4, POSIX)
1570    UTS24 Build for Amdahl UTS 2.4.
1571    V7 Build for Version 7 UNIX.
1572    VMS Build for VAX/VMS.
1573    VOID=xxx VOID type for functions (int or void).
1574    VXVE Build for CDC VX/VE 5.2.1.
1575    WAIT_T=xxx Type of argument passed to wait().
1576    WINTCP Build with Wollongong VAX/VMS TCP/IP (implies TCPSOCKET)
1577    WOLLONGONG Build with Wollongong UNIX TCP/IP (implies TCPSOCKET)
1578    XENIX Build for Xenix (SCO, Tandy, others).
1579    XNDIR Support for BSD long filenames via <sys/ndir.h>.
1580    XYZ_INTERNAL Support for XYZMODEM protocols is internal, not external.
1581    ZFCDAT Define this if zfcdat() function is available in Kermit.
1582    ZILOG Build for Zilog ZEUS.
1583    ZJDATE Has zjdate() function that converts date to Julian format.
1584    XPRINT Transparent print code included in CONNECT module.
1585
1586    [ [165]Top ] [ [166]Contents ] [ [167]C-Kermit Home ] [ [168]Kermit
1587    Home ]
1588      _________________________________________________________________
1589
1590
1591     C-Kermit Configuration Options / [169]The Kermit Project /
1592     [170]Columbia University / [171]kermit@columbia.edu / 14 March 2003
1593
1594 References
1595
1596    1. http://www.columbia.edu/kermit/
1597    2. http://www.columbia.edu/
1598    3. http://www.columbia.edu/kermit/ckccfg.html
1599    4. http://www.columbia.edu/kermit/ckermit.html
1600    5. http://www.columbia.edu/kermit/index.html
1601    6. http://www.columbia.edu/kermit/ckccfg.html#x1
1602    7. http://www.columbia.edu/kermit/ckccfg.html#x2
1603    8. http://www.columbia.edu/kermit/ckccfg.html#x3
1604    9. http://www.columbia.edu/kermit/ckccfg.html#x4
1605   10. http://www.columbia.edu/kermit/ckccfg.html#x5
1606   11. http://www.columbia.edu/kermit/ckccfg.html#x6
1607   12. http://www.columbia.edu/kermit/ckccfg.html#x7
1608   13. http://www.columbia.edu/kermit/ckccfg.html#x8
1609   14. http://www.columbia.edu/kermit/ckccfg.html#x9
1610   15. http://www.columbia.edu/kermit/ckccfg.html#x10
1611   16. http://www.columbia.edu/kermit/ckccfg.html#x11
1612   17. http://www.columbia.edu/kermit/ckccfg.html#x12
1613   18. http://www.columbia.edu/kermit/ckccfg.html#x13
1614   19. http://www.columbia.edu/kermit/ckccfg.html#x14
1615   20. http://www.columbia.edu/kermit/ckccfg.html#xa1
1616   21. http://www.columbia.edu/kermit/ckuins.html
1617   22. http://www.columbia.edu/kermit/ckermit.html
1618   23. http://www.columbia.edu/kermit/index.html
1619   24. http://www.columbia.edu/kermit/ckccfg.html#top
1620   25. http://www.columbia.edu/kermit/ckccfg.html#contents
1621   26. http://www.columbia.edu/kermit/ckccfg.html#x2
1622   27. http://www.columbia.edu/kermit/ckccfg.html#x0
1623   28. http://www.columbia.edu/kermit/ckermit.html
1624   29. http://www.columbia.edu/kermit/index.html
1625   30. http://www.columbia.edu/kermit/ckccfg.html#top
1626   31. http://www.columbia.edu/kermit/ckccfg.html#contents
1627   32. http://www.columbia.edu/kermit/ckccfg.html#x3
1628   33. http://www.columbia.edu/kermit/ckccfg.html#x1
1629   34. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
1630   35. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
1631   36. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus3.c
1632   37. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
1633   38. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
1634   39. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
1635   40. http://www.columbia.edu/kermit/ckermit.html
1636   41. http://www.columbia.edu/kermit/index.html
1637   42. http://www.columbia.edu/kermit/ckccfg.html#top
1638   43. http://www.columbia.edu/kermit/ckccfg.html#contents
1639   44. http://www.columbia.edu/kermit/ckccfg.html#x4
1640   45. http://www.columbia.edu/kermit/ckccfg.html#x2
1641   46. ftp://kermit.columbia.edu/kermit/c-kermit/makefile
1642   47. http://www.columbia.edu/kermit/ckuins.html
1643   48. http://www.columbia.edu/kermit/ckuins.html#x4
1644   49. http://www.columbia.edu/kermit/ckuins.html#x9.2
1645   50. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
1646   51. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
1647   52. ftp://kermit.columbia.edu/kermit/c-kermit/ckufio.c
1648   53. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
1649   54. ftp://kermit.columbia.edu/kermit/c-kermit/ckucmd.c
1650   55. http://www.columbia.edu/kermit/ckermit.html
1651   56. http://www.columbia.edu/kermit/index.html
1652   57. http://www.columbia.edu/kermit/ckccfg.html#top
1653   58. http://www.columbia.edu/kermit/ckccfg.html#contents
1654   59. http://www.columbia.edu/kermit/ckccfg.html#x5
1655   60. http://www.columbia.edu/kermit/ckccfg.html#x3
1656   61. http://www.columbia.edu/kermit/unicode.html
1657   62. http://www.columbia.edu/kermit/ckermit.html
1658   63. http://www.columbia.edu/kermit/index.html
1659   64. http://www.columbia.edu/kermit/ckccfg.html#top
1660   65. http://www.columbia.edu/kermit/ckccfg.html#contents
1661   66. http://www.columbia.edu/kermit/ckccfg.html#x6
1662   67. http://www.columbia.edu/kermit/ckccfg.html#x4
1663   68. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
1664   69. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
1665   70. http://www.columbia.edu/kermit/ckermit.html
1666   71. http://www.columbia.edu/kermit/index.html
1667   72. http://www.columbia.edu/kermit/ckccfg.html#top
1668   73. http://www.columbia.edu/kermit/ckccfg.html#contents
1669   74. http://www.columbia.edu/kermit/ckccfg.html#x7
1670   75. http://www.columbia.edu/kermit/ckccfg.html#x5
1671   76. http://www.columbia.edu/kermit/ckccfg.html#x6.1
1672   77. http://www.columbia.edu/kermit/ckccfg.html#x6.2
1673   78. http://www.columbia.edu/kermit/ckccfg.html#x6.3
1674   79. http://www.columbia.edu/kermit/ckccfg.html#x6.4
1675   80. http://www.columbia.edu/kermit/ckccfg.html#x4
1676   81. http://www.columbia.edu/kermit/gkermit.html
1677   82. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
1678   83. ftp://kermit.columbia.edu/kermit/c-kermit/ckcker.h
1679   84. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
1680   85. http://www.columbia.edu/kermit/ckermit.html
1681   86. http://www.columbia.edu/kermit/index.html
1682   87. http://www.columbia.edu/kermit/ckccfg.html#top
1683   88. http://www.columbia.edu/kermit/ckccfg.html#contents
1684   89. http://www.columbia.edu/kermit/ckccfg.html#x8
1685   90. http://www.columbia.edu/kermit/ckccfg.html#x6
1686   91. ftp://kermit.columbia.edu/kermit/c-kermit/ckudia.c
1687   92. http://www.columbia.edu/kermit/ckermit.html
1688   93. http://www.columbia.edu/kermit/index.html
1689   94. http://www.columbia.edu/kermit/ckccfg.html#top
1690   95. http://www.columbia.edu/kermit/ckccfg.html#contents
1691   96. http://www.columbia.edu/kermit/ckccfg.html#x9
1692   97. http://www.columbia.edu/kermit/ckccfg.html#x7
1693   98. http://www.columbia.edu/kermit/ckccfg.html#x8.1
1694   99. http://www.columbia.edu/kermit/ckccfg.html#x8.2
1695  100. http://www.columbia.edu/kermit/ckccfg.html#x8.3
1696  101. http://www.columbia.edu/kermit/ckccfg.html#x8.1.1
1697  102. http://www.columbia.edu/kermit/ckccfg.html#x8.1.2
1698  103. http://www.columbia.edu/kermit/ckccfg.html#x8.1.3
1699  104. http://www.columbia.edu/kermit/ckccfg.html#x8.1.4
1700  105. http://www.columbia.edu/kermit/ckccfg.html#x8.1.5
1701  106. http://www.columbia.edu/kermit/ckccfg.html#x8.1.6
1702  107. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
1703  108. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.c
1704  109. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.c
1705  110. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.h
1706  111. ftp://kermit.columbia.edu/kermit/c-kermit/ckcftp.c
1707  112. http://www.columbia.edu/kermit/ckermit.html
1708  113. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.c
1709  114. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
1710  115. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
1711  116. http://www.columbia.edu/kermit/ckccfg.html#x11
1712  117. mailto:kermit@columbia.edu
1713  118. http://www.columbia.edu/kermit/ckermit.html
1714  119. http://www.columbia.edu/kermit/index.html
1715  120. http://www.columbia.edu/kermit/ckccfg.html#top
1716  121. http://www.columbia.edu/kermit/ckccfg.html#contents
1717  122. http://www.columbia.edu/kermit/ckccfg.html#x10
1718  123. http://www.columbia.edu/kermit/ckccfg.html#x8
1719  124. http://www.columbia.edu/kermit/ckermit.html
1720  125. http://www.columbia.edu/kermit/index.html
1721  126. http://www.columbia.edu/kermit/ckccfg.html#top
1722  127. http://www.columbia.edu/kermit/ckccfg.html#contents
1723  128. http://www.columbia.edu/kermit/ckccfg.html#x11
1724  129. http://www.columbia.edu/kermit/ckccfg.html#x9
1725  130. http://www.columbia.edu/kermit/ckuins.html#x11
1726  131. http://www.columbia.edu/kermit/ckuins.html
1727  132. http://www.columbia.edu/kermit/ckermit.html
1728  133. http://www.columbia.edu/kermit/index.html
1729  134. http://www.columbia.edu/kermit/ckccfg.html#top
1730  135. http://www.columbia.edu/kermit/ckccfg.html#contents
1731  136. http://www.columbia.edu/kermit/ckccfg.html#x12
1732  137. http://www.columbia.edu/kermit/ckccfg.html#x10
1733  138. ftp://kermit.columbia.edu/kermit/c-kermit/ckucns.c
1734  139. ftp://kermit.columbia.edu/kermit/c-kermit/ckucon.c
1735  140. http://www.columbia.edu/kermit/ckermit.html
1736  141. http://www.columbia.edu/kermit/index.html
1737  142. http://www.columbia.edu/kermit/ckccfg.html#top
1738  143. http://www.columbia.edu/kermit/ckccfg.html#contents
1739  144. http://www.columbia.edu/kermit/ckccfg.html#x13
1740  145. http://www.columbia.edu/kermit/ckccfg.html#x11
1741  146. http://www.columbia.edu/kermit/ckermit.html
1742  147. http://www.columbia.edu/kermit/index.html
1743  148. http://www.columbia.edu/kermit/ckccfg.html#top
1744  149. http://www.columbia.edu/kermit/ckccfg.html#contents
1745  150. http://www.columbia.edu/kermit/ckccfg.html#x14
1746  151. http://www.columbia.edu/kermit/ckccfg.html#x12
1747  152. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
1748  153. http://www.columbia.edu/kermit/ckermit.html
1749  154. http://www.columbia.edu/kermit/index.html
1750  155. http://www.columbia.edu/kermit/ckccfg.html#top
1751  156. http://www.columbia.edu/kermit/ckccfg.html#contents
1752  157. http://www.columbia.edu/kermit/ckccfg.html#x13
1753  158. http://www.columbia.edu/kermit/ckermit.html
1754  159. http://www.columbia.edu/kermit/index.html
1755  160. http://www.columbia.edu/kermit/ckccfg.html#top
1756  161. http://www.columbia.edu/kermit/ckccfg.html#contents
1757  162. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
1758  163. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
1759  164. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
1760  165. http://www.columbia.edu/kermit/ckccfg.html#top
1761  166. http://www.columbia.edu/kermit/ckccfg.html#contents
1762  167. http://www.columbia.edu/kermit/ckermit.html
1763  168. http://www.columbia.edu/kermit/index.html
1764  169. http://www.columbia.edu/kermit/index.html
1765  170. http://www.columbia.edu/
1766  171. mailto:kermit@columbia.edu