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