Imported Upstream version 302
[ckermit.git] / ckcplm.txt
index 9829987..e00edde 100644 (file)
@@ -9,64 +9,115 @@ C-Kermit Program Logic Manual
 
      Frank da Cruz
      [11]The Kermit Project
-     [12]Columbia University
 
    As of: C-Kermit 9.0.300, 30 June 2011
-   Last update: Tue Jun 28 08:59:18 2011
+   Last update: Fri Jul 1 15:47:34 2011
 
      IF YOU ARE READING A PLAIN-TEXT version of this document, note that
      this file is a plain-text dump of a Web page. You can visit the
      original (and possibly more up-to-date) Web page here:
 
-  [13]http://www.columbia.edu/kermit/ckcplm.html
-
-   [ [14]C-Kermit Home ] [ [15]Kermit Home ]
+  [12]http://www.columbia.edu/kermit/ckcplm.html
 
 CONTENTS
 
-  1. [16]INTRODUCTION
-  2. [17]FILES
-  3. [18]SOURCE CODE PORTABILITY AND STYLE
-  4. [19]MODULES
-     4.A. [20]Group A: Library Routines
-     4.B. [21]Group B: Kermit File Transfer
-     4.C. [22]Group C: Character-Set Conversion
-     4.D. [23]Group D: User Interface
-     4.E. [24]Group E: Platform-Dependent I/O
-     4.F. [25]Group F: Network Support
-     4.G. [26]Group G: Formatted Screen Support
-     4.H. [27]Group H: Pseudoterminal Support
-     4.I. [28]Group I: Security
-  I. [29]APPENDIX I: FILE PERMISSIONS
+  1. [13]INTRODUCTION
+  2. [14]FILES
+  3. [15]SOURCE CODE PORTABILITY AND STYLE
+  4. [16]MODULES
+     4.A. [17]Group A: Library Routines
+     4.B. [18]Group B: Kermit File Transfer
+     4.C. [19]Group C: Character-Set Conversion
+     4.D. [20]Group D: User Interface
+     4.E. [21]Group E: Platform-Dependent I/O
+     4.F. [22]Group F: Network Support
+     4.G. [23]Group G: Formatted Screen Support
+     4.H. [24]Group H: Pseudoterminal Support
+     4.I. [25]Group I: Security
+  I. [26]APPENDIX I: FILE PERMISSIONS
 
 1. INTRODUCTION
 
-   The Kermit Protocol is specified in the book Kermit, A File Transfer
-   Protocol by Frank da Cruz, Digital Press / Butterworth Heinemann,
-   Newton, MA, USA (1987), 379 pages, ISBN 0-932376-88-6. It is assumed
-   the reader is familiar with the Kermit protocol specification.
+   The Kermit Protocol is specified in the book [27]Kermit, A File
+   Transfer Protocol by Frank da Cruz, Digital Press / Butterworth
+   Heinemann, Newton, MA, USA (1987), 379 pages, ISBN 0-932376-88-6. It is
+   assumed the reader is familiar with the Kermit protocol specification.
 
    This file describes the relationship among the modules and functions of
    C-Kermit 5A and later, and other programming considerations. C-Kermit
    is designed to be portable to any kind of computer that has a C
    compiler. The source code is broken into many files that are grouped
-   according to their function, as shown in the [30]Contents.
+   according to their function, as shown in the [28]Contents.
 
    C-Kermit has seen constant development since 1985. Throughout its
    history, there has been a neverending tug-of-war among:
 
     a. Functionality: adding new features, fixing bugs, improving
        performance.
-    b. Adding support for new platforms.
+    b. Adding support for new platforms or communication methods.
     c. "Buzzword 1.0 compliance".
 
    The latter category is the most frustrating, since it generally
    involves massive changes just to keep the software doing what it did
    before in some new setting: e.g. the K&R-to-ANSIC conversion (which had
    to be done, of course, without breaking K&R); Y2K (not a big deal in
-   our case); the many and varied UNIX and other API "standards"; IPv6.
+   our case); the many and varied UNIX and other API "standards" with
+   which to "comply".
+
+   Upon first glance at the source code, you will probably be appalled.
+   Many will be tempted to clean it up and modernize it. But as soon as
+   you do, you are sure to break something. Remember that above all else,
+   the C-Kermit code is portable to every Unix platform that ever existed,
+   going back Unix V7 (1979)*, and to several other completely different
+   and unrelated operating-system families such as DEC/HP VMS, DG AOS/VS,
+   and Stratus VOS, as well as to some Unix offshoots like OS-9 and Plan 9
+   (from Outer Space). Every release of Kermit has been checked on every
+   platform available -- the older the better! -- to make sure it still
+   builds and runs. Even today (2011), there are modern Unix systems that
+   have non-ANSI C compilers, foremost among them HP-UX (where an ANSI
+   optimizing C compiler is available, but only as an expensive add-on).
+   In a way, portability is the most important feature of C-Kermit and
+   every effort should be made to preserve it through future releases.
+
+   Voluminous edit histories are available going back to May 1985. The
+   first versions of C-Kermit were done on our [29]DEC VAX-11/750 with
+   Ultrix 1.0 and 2.0 (as well as departmental 750s with 4.2BSD**), DEC
+   Pro-380 workstations (desktop PDP-11s) running 2.9BSD, which was
+   [30]ported to the 380 by us. Later (1988 or so) on a big VAX 8650 with
+   Ultrix, which became an 8700 (these no doubt weighed several tons), and
+   finally a succession of non-DEC equipment: an Encore Multimax, 25 years
+   worth of Suns, and now Linux on [31]HP Blades. We also had our own VMS
+   development systems for some years. All this plus a generous assortment
+   of departmental and offsite guest accounts on a multitude of platforms.
+   Anyway, the edit histories:
+
+     [32]ckc04e.txt C-Kermit 4.2(030) May 1985 to 4E(072) Jan 1989.
+     [33]ckc04f.txt C-Kermit 4F(077) Arp 1989 to 4F(095) Aug 1989.
+     [34]ckc168.txt Updates to C-Kermit 5A(168) for VMS Nov 1991
+     [35]ckc178.txt C-Kermit 5A(100) Jul 1989 to 5A(178) Jan 1992
+     [36]ckc188.txt C-Kermit 5A(188) development, 1992
+     [37]ckc189.txt C-Kermit 5A(189) development, 1993
+     [38]ckc192.txt C-Kermit 6.0(192) development, 1998
+     [39]ckc197.txt C-Kermit 7.0(197) development, 2000
+     [40]ckc200.txt C-Kermit 8.0.200 development, 2001
+     [41]ckc211.txt C-Kermit 8.0.201 through 8.0.209 2001-2004
+     [42]ckc300.txt C-Kermit 9.0.300 June 2011
+
+   _________________________________
+   * C-Kermit 6.0 was the last one to be built on V7, as I recall. The
+   code should still be good for V7 but it probably has outgrown the
+   16-bit address space. In any case there is still a V7 makefile target
+   and a V7 path through the forest of #ifdefs in the code if anybody is
+   running V7 on an emulator and would like to try building C-Kermit.
+   There is no support for V6 but that is only because no V6 system was
+   ever found for development. Notice that some other 16-bit Unixes are
+   supported in the code, including 2.9BSD and Tandy Xenix 3.0, but have
+   not been tried since C-Kermit 6.0
+
+   **  C-Kermit 9.0.300 was built successfully on 4.2BSD about 25 years
+   later, in June 2011.
 
-   [ [31]Contents ] [ [32]C-Kermit ] [ [33]Kermit Home ]
+   [ [43]Contents ] [ [44]C-Kermit ] [ [45]Kermit Home ]
 
 2. FILES
 
@@ -89,13 +140,13 @@ CONTENTS
      k     (unused)
      l     Stratus VOS
      m     Macintosh with Mac OS 1-9
-     n     Microsoft Windows NT/2000/XP
-     o     OS/2 and/or Microsoft Windows 9x/ME/NT/2000/XP
+     n     (unused)
+     o     OS/2 and Microsoft Windows 9x/ME/NT/2000/XP/Vista/etc
      p     Plan 9 from Bell Labs
      q     (reserved)
-     r     DEC PDP-11 with RSTS/E (never used, open for reassigment)
+     r     DEC PDP-11 with RSTS/E (never used, open for reassignment)
      s     Atari ST GEMDOS (last supported in version 5A(189))
-     t     DEC PDP-11 with RT-11 (never used, open for reassigment)
+     t     DEC PDP-11 with RT-11 (never used, open for reassignment)
      u     Unix-based operating systems (*)
      v     VMS and OpenVMS
      w     Wart (Lex-like preprocessor, platform independent)
@@ -106,7 +157,7 @@ CONTENTS
      4     IBM AS/400
      5-8   (reserved)
      9     Microware OS-9
-     _     Encryption modules
+     _     (underscore) Encryption modules
 
    (*) In fact there is little distinction between the ckc*.* and cku*.*
    categories. It would make more sense for all cku*.* modules to be
@@ -146,7 +197,7 @@ foo(x,y) int x, y; {
   $ emacs
   Esc-X Visit-Tags-Table<CR><CR>
 
-   (but remember that the source file for ckcpro.c is [34]ckcpro.w!)
+   (but remember that the source file for ckcpro.c is [46]ckcpro.w!)
 
    Also:
 
@@ -157,12 +208,12 @@ foo(x,y) int x, y; {
        most other stuff (obviously this is not a portability issue, just
        style).
 
-   [ [35]Contents ] [ [36]C-Kermit ] [ [37]Kermit Home ]
+   [ [47]Contents ] [ [48]C-Kermit ] [ [49]Kermit Home ]
 
 3. SOURCE CODE PORTABILITY AND STYLE
 
    C-Kermit was designed in 1985 as a platform-independent replacement for
-   the earlier Unix Kermit. c-Kermit's design was expected to promote
+   the earlier Unix Kermit. C-Kermit's design was expected to promote
    portability, and judging from the number of platforms to which it has
    been adapted since then, the model is effective, if not ideal
    (obviously if we had it all to do over, we'd change a few things). To
@@ -197,7 +248,7 @@ foo(x,y) int x, y; {
        way to test the results on all the hundreds of platforms where
        C-Kermit is supposed to build.
 
-   When writing code for the system-indendent C-Kermit modules, please
+   When writing code for the system-independent C-Kermit modules, please
    stick to the following coding conventions to ensure portability to the
    widest possible variety of C preprocessors, compilers, and linkers, as
    well as certain network and/or email transports. The same holds true
@@ -244,8 +295,6 @@ foo(x,y) int x, y; {
        all the time).
      * Always cast strlen() in expressions to int:
        if ((int)strlen(foo) < x)...
-     * Any variable whose value might exceed 16383 should be declared as
-       long, or if that is not possible, then as unsigned.
      * Avoid typedefs; they might be portable but they are very confusing
        and there's no way to test for their presence or absence at compile
        time. Use preprocessor symbols instead if possible; at least you
@@ -257,7 +306,7 @@ foo(x,y) int x, y; {
        modifier other than L.
      * Unsigned char is not portable, use CHAR (a preprocessor symbol
        defined in the Kermit header files) and always take precautions
-       against character signage (more about this [38]below).
+       against character signage (more about this [50]below).
      * Don't use initializers with automatic arrays or structs: it's not
        portable.
      * Don't use big automatic arrays or structs in functions that might
@@ -381,12 +430,12 @@ foo(x,y) int x, y; {
        char * foo" in another, or vice-versa: this causes core dumps.
      * With compiler makers falling all over themselves trying to outdo
        each other in ANSI strictness, it has become increasingly necessary
-       to cast EVERYTHING. This is increasingly true for char vs unsigned
-       char. We need to use unsigned chars if we want to deal with 8-bit
-       character sets, but most character- and string-oriented APIs want
-       (signed) char arguments, so explicit casts are necessary. It would
-       be nice if every compiler had a -funsigned-char option (as gcc
-       does), but they don't.
+       to cast EVERYTHING. Especially char vs unsigned char. We need to
+       use unsigned chars if we want to deal with 8-bit character sets,
+       but most character- and string-oriented APIs want (signed) char
+       arguments, so explicit casts are necessary. It would be nice if
+       every compiler had a -funsigned-char option (as gcc does), but they
+       don't.
      * a[x], where x is an unsigned char, can produce a wild memory
        reference if x, when promoted to an int, becomes negative. Cast it
        to (unsigned), even though it ALREADY IS unsigned.
@@ -394,7 +443,7 @@ foo(x,y) int x, y; {
        arguments; for ANSI compilers you MUST use ANSI declarations to
        avoid promotion problems, but you can't use ANSI declarations with
        non-ANSI compilers. Thus declarations of such functions must be
-       hideously entwined in #ifdefs. Example: latter:
+       hideously entwined in #ifdefs. Example:
   int                          /*  Put character in server command buffer  */
   #ifdef CK_ANSIC
   putsrv(char c)
@@ -451,7 +500,7 @@ foo(x,y) int x, y; {
    certain not to apply. For example, in VMS-specific code, it is OK to
    use #if, because VAX C, DEC C, and VMS GCC all support it.
 
-   [ [39]Contents ] [ [40]C-Kermit ] [ [41]Kermit Home ]
+   [ [51]Contents ] [ [52]C-Kermit ] [ [53]Kermit Home ]
 
 3.1. Memory Leaks
 
@@ -503,9 +552,9 @@ foo(x,y) int x, y; {
    ckmakxmsg()
           Like ckmakmsg() but accepts up to 12 items
 
-   More about library functions in [42]Section 4.A.
+   More about library functions in [54]Section 4.A.
 
-   [ [43]Contents ] [ [44]C-Kermit ] [ [45]Kermit Home ]
+   [ [55]Contents ] [ [56]C-Kermit ] [ [57]Kermit Home ]
 
 3.2. The "char" vs "unsigned char" Dilemma
 
@@ -533,7 +582,7 @@ foo(x,y) int x, y; {
    whereas our character data is unsigned. Fine, we can can use casts here
    too -- but who knows what happens inside these routines.
 
-   [ [46]Contents ] [ [47]C-Kermit ] [ [48]Kermit Home ]
+   [ [58]Contents ] [ [59]C-Kermit ] [ [60]Kermit Home ]
 
 4. MODULES
 
@@ -550,8 +599,8 @@ foo(x,y) int x, y; {
           conxxx() (console i/o) routines.
 
    Protocol State
-          Reading and writing from the communicatons device. In this mode,
-          all i/o is handled by the Group E ttxxx() (terminal i/o)
+          Reading and writing from the communications device. In this
+          mode, all i/o is handled by the Group E ttxxx() (terminal i/o)
           routines.
 
    Terminal State
@@ -567,17 +616,17 @@ foo(x,y) int x, y; {
    console or interruptions from it (except for "in-band" interruptions
    such as ^C^C^C).
 
-   [ [49]Contents ] [ [50]C-Kermit ] [ [51]Kermit Home ]
+   [ [61]Contents ] [ [62]C-Kermit ] [ [63]Kermit Home ]
 
 4.A. Group A: Library Functions
 
    Library functions, strictly portable, can be used by all modules on all
-   platforms: [52]ckclib.h, [53]ckclib.c.
+   platforms: [64]ckclib.h, [65]ckclib.c.
 
-   (To be filled in... For now, see [54]Section 3.1 and the comments in
+   (To be filled in... For now, see [66]Section 3.1 and the comments in
    ckclib.c.)
 
-   [ [55]Contents ] [ [56]C-Kermit ] [ [57]Kermit Home ]
+   [ [67]Contents ] [ [68]C-Kermit ] [ [69]Kermit Home ]
 
 4.B. Group B: Kermit File Transfer
 
@@ -591,72 +640,72 @@ foo(x,y) int x, y; {
    contain any library calls except from the standard C library (e.g.
    printf()). They most certainly do not contain any system calls. Files:
 
-   [58]ckcsym.h
+   [70]ckcsym.h
           For use by C compilers that don't allow -D on the command line.
 
-   [59]ckcasc.h
+   [71]ckcasc.h
           ASCII character symbol definitions.
 
-   [60]ckcsig.h
+   [72]ckcsig.h
           System-independent signal-handling definitions and prototypes.
 
-   [61]ckcdeb.h
+   [73]ckcdeb.h
           Originally, debugging definitions. Now this file also contains
           all definitions and prototypes that are shared by all modules in
           all groups.
 
-   [62]ckcker.h
+   [74]ckcker.h
           Kermit protocol symbol definitions.
 
-   [63]ckcxla.h
+   [75]ckcxla.h
           Character-set-related symbol definitions (see next section).
 
-   [64]ckcmai.c
+   [76]ckcmai.c
           The main program. This module contains the declarations of all
           the protocol-related global variables that are shared among the
           other modules.
 
-   [65]ckcpro.w
+   [77]ckcpro.w
           The protocol module itself, written in "wart", a lex-like
           preprocessor that is distributed with Kermit under the name
           CKWART.C.
 
-   [66]ckcfns.c, [67]ckcfn2.c, [68]ckcfn3.c
+   [78]ckcfns.c, [79]ckcfn2.c, [80]ckcfn3.c
           The protocol support functions used by the protocol module.
 
-   [69]Group B modules may call upon functions from [70]Group E, but not
-   from [71]Group D modules (with the single exception that the main
+   [81]Group B modules may call upon functions from [82]Group E, but not
+   from [83]Group D modules (with the single exception that the main
    program invokes the user interface, which is in Group D). (This last
    assertion is really only a conjecture.)
 
-   [ [72]Contents ] [ [73]C-Kermit ] [ [74]Kermit Home ]
+   [ [84]Contents ] [ [85]C-Kermit ] [ [86]Kermit Home ]
 
 4.C. Group C: Character-Set Conversion
 
-   Character set translation tables and functions. Used by the [75]Group
+   Character set translation tables and functions. Used by the [87]Group
    B, protocol modules, but may be specific to different computers. (So
    far, all character character sets supported by C-Kermit are supported
-   in [76]ckuxla.c and [77]ckuxla.h, including Macintosh and IBM character
+   in [88]ckuxla.c and [89]ckuxla.h, including Macintosh and IBM character
    sets). These modules should be completely portable, and not rely on any
    kind of system or library services.
 
-   [78]ckcxla.h
+   [90]ckcxla.h
           Character-set definitions usable by all versions of C-Kermit.
 
    ck?xla.h
-          Character-set definitions for computer "?", e.g. [79]ckuxla.h
-          for UNIX, [80]ckmxla.h for Macintosh.
+          Character-set definitions for computer "?", e.g. [91]ckuxla.h
+          for UNIX, [92]ckmxla.h for Macintosh.
 
-   [81]ck?xla
+   [93]ck?xla
           Character-set translation tables and functions for computer "?",
           For example, CKUXLA.C for UNIX, CKMXLA.C for Macintosh. So far,
           these are the only two such modules. The UNIX module is used for
           all versions of C-Kermit except the Macintosh version.
 
-   [82]ckcuni.h
+   [94]ckcuni.h
           Unicode definitions
 
-   [83]ckcuni.c
+   [95]ckcuni.c
           Unicode module
 
    Here's how to add a new file character set in the original (non-Unicode
@@ -718,7 +767,7 @@ foo(x,y) int x, y; {
 
           + (To be filled in...)
 
-   [ [84]Contents ] [ [85]C-Kermit ] [ [86]Kermit Home ]
+   [ [96]Contents ] [ [97]C-Kermit ] [ [98]Kermit Home ]
 
 4.D. Group D: User Interface
 
@@ -742,7 +791,7 @@ foo(x,y) int x, y; {
        such as the CONNECT command, local file management commands,
        parameter-setting commands, FTP client commands, etc.
 
-   If you plan to imbed the [87]Group B, files into a program with a
+   If you plan to embed the [99]Group B, files into a program with a
    different user interface, your interface must supply an appropriate
    screen() function, plus a couple related ones like chkint() and
    intmsg() for handling keyboard (or mouse, etc) interruptions during
@@ -757,38 +806,38 @@ foo(x,y) int x, y; {
    combination, and it can even be built with no user interface at all (in
    which case it runs as a remote-mode Kermit server).
 
-   [88]ckucmd.h
-   [89]ckucmd.c
+   [100]ckucmd.h
+   [101]ckucmd.c
           The command parsing primitives used by the interactive command
           parser to parse keywords, numbers, filenames, etc, and to give
           help, complete fields, supply defaults, allow abbreviations and
           editing, etc. This package is totally independent of Kermit, but
-          does depend on the [90]Group E functions.
+          does depend on the [102]Group E functions.
 
-   [91]ckuusr.h
+   [103]ckuusr.h
           Definitions of symbols used in Kermit's commands.
 
    ckuus*.c
           Kermit's interactive command parser, including the script
-          programming language: [92]ckuusr.c (includes top-level keyword
-          tables); [93]ckuus2.c (HELP command text); [94]ckuus3.c (most of
-          the SET command); [95]ckuus4.c (includes variables and
+          programming language: [104]ckuusr.c (includes top-level keyword
+          tables); [105]ckuus2.c (HELP command text); [106]ckuus3.c (most
+          of the SET command); [107]ckuus4.c (includes variables and
           functions); ckuus[567].c (miscellaneous);
 
-   [96]ckuusy.c
+   [108]ckuusy.c
           The command-line-option parser.
 
-   [97]ckuusx.c
+   [109]ckuusx.c
           User interface functions common to both the interactive and
           command-line parsers.
 
-   [98]ckuver.h
+   [110]ckuver.h
           Version heralds for different implementations.
 
-   [99]ckuscr.c
+   [111]ckuscr.c
           The (old, uucp-like) SCRIPT command
 
-   [100]ckudia.c
+   [112]ckudia.c
           The DIAL command. Includes specific knowledge of many types of
           modems.
 
@@ -802,8 +851,8 @@ foo(x,y) int x, y; {
           The CONNECT command. Terminal connection, and in some cases
           (Macintosh, Windows) also terminal emulation. NOTE: As of
           C-Kermit 7.0, there are two different CONNECT modules for UNIX:
-          [101]ckucon.c -- the traditional, portable, fork()-based version
-          -- and [102]ckucns.c, a new version that uses select() rather
+          [113]ckucon.c -- the traditional, portable, fork()-based version
+          -- and [114]ckucns.c, a new version that uses select() rather
           than forks so it can handle encryption. ckucns.c is the
           preferred version for Unix; ckucon.c is not likely to keep pace
           with it in terms of upgrades, etc. However, since select() is
@@ -836,7 +885,7 @@ foo(x,y) int x, y; {
    existence of C library features like fopen, fgets, feof, (f)printf,
    argv/argc, etc. Other functions that are likely to vary among operating
    systems -- like setting terminal modes or interrupts -- are invoked via
-   calls to functions that are defined in the [103]Group E
+   calls to functions that are defined in the [115]Group E
    platform-dependent modules, ck?[ft]io.c. The command line parser
    processes any arguments found on the command line, as passed to main()
    via argv/argc. The interactive parser uses the facilities of the cmd
@@ -845,7 +894,7 @@ foo(x,y) int x, y; {
    requirements for the Kermit command parser are these:
 
     1. Set parameters via global variables like duplex, speed, ttname,
-       etc. See [104]ckcmai.c for the declarations and descriptions of
+       etc. See [116]ckcmai.c for the declarations and descriptions of
        these variables.
     2. If a command can be executed without the use of Kermit protocol,
        then execute the command directly and set the sstate (start state)
@@ -893,7 +942,7 @@ foo(x,y) int x, y; {
    defined). The intmsg() and chkint() functions provide the user i/o for
    interrupting file transfers.
 
-   [ [105]Contents ] [ [106]C-Kermit ] [ [107]Kermit Home ]
+   [ [117]Contents ] [ [118]C-Kermit ] [ [119]Kermit Home ]
 
 4.E. Group E: Platform-Dependent I/O
 
@@ -901,10 +950,10 @@ foo(x,y) int x, y; {
    including the command package, call upon these functions, which are
    designed to provide system-independent primitives for controlling and
    manipulating devices and files. For Unix, these functions are defined
-   in the files [108]ckufio.c (files), [109]ckutio.c (communications), and
-   [110]ckusig.c (signal handling).
+   in the files [120]ckufio.c (files), [121]ckutio.c (communications), and
+   [122]ckusig.c (signal handling).
 
-   For VMS, the files are [111]ckvfio.c, ckvtio.c, and [112]ckusig.c (VMS
+   For VMS, the files are [123]ckvfio.c, ckvtio.c, and [124]ckusig.c (VMS
    can use the same signal handling routines as Unix). It doesn't really
    matter what the files are called, except for Kermit distribution
    purposes (grouping related files together alphabetically), only that
@@ -1018,7 +1067,7 @@ foo(x,y) int x, y; {
    int dfflow;
           Default flow control. 0 = none, 1 = Xon/Xoff, ... (see FLO_xxx
           symbols in ckcdeb.h)
-          Set by Group E module. Used by [113]ckcmai.c to initialize flow
+          Set by Group E module. Used by [125]ckcmai.c to initialize flow
           control variable.
 
    int dfloc;
@@ -1033,7 +1082,7 @@ foo(x,y) int x, y; {
 
    char *dftty;
           Default communication device. Set by Group E module. Used in
-          many places. This variable should be initialized the the symbol
+          many places. This variable should be initialized the symbol
           CTTNAM, which is defined in ckcdeb.h, e.g. as "/dev/tty" for
           UNIX, "TT:" for VMS, etc. Example: char *dftty = CTTNAM;
 
@@ -1070,7 +1119,7 @@ foo(x,y) int x, y; {
           mode. Since this is not implemented everywhere, references to it
           are in #ifdef CK_TTYFD..#endif.
 
-   [ [114]Contents ] [ [115]C-Kermit ] [ [116]Kermit Home ]
+   [ [126]Contents ] [ [127]C-Kermit ] [ [128]Kermit Home ]
 
 4.E.2. Functions
 
@@ -1080,8 +1129,8 @@ foo(x,y) int x, y; {
 4.E.2.1. File-Related Functions
 
    In most implementations, these are collected together into a module
-   called ck?fio.c, where ? = "u" ([117]ckutio.c for Unix), "v"
-   ([118]ckvtio.c for VMS), [119]etc. To be totally platform-independent,
+   called ck?fio.c, where ? = "u" ([129]ckutio.c for Unix), "v"
+   ([130]ckvtio.c for VMS), [131]etc. To be totally platform-independent,
    C-Kermit maintains its own file numbers, and provides the functions
    described in this section to deal with the files associated with them.
    The file numbers are referred to symbolically, and are defined as
@@ -1098,7 +1147,7 @@ foo(x,y) int x, y; {
   #define ZSYSFN      8           /* Input from a system function (pipe) */
   #define ZRFILE      9           /* Local file for READ command */  (NEW)
   #define ZWFILE     10           /* Local file for WRITE command */ (NEW)
-  #define ZMFILE     11           /* Auxilliary file for internal use */ (NEW)
+  #define ZMFILE     11           /* Auxiliary file for internal use */ (NEW)
   #define ZNFILS     12           /* How many defined file numbers */
 
    In the descriptions below, fn refers to a filename, and n refers to one
@@ -1623,7 +1672,7 @@ foo(x,y) int x, y; {
           the given argument vector, which follows the conventions of UNIX
           argv[]: the name of the command pointed to by element 0, the
           first arg by element 1, and so on. A null args[] pointer
-          indicates the end of the arugment list. All open files must
+          indicates the end of the argument list. All open files must
           remain open so the exec'd process can use them. Returns only if
           unsuccessful.
 
@@ -1669,7 +1718,7 @@ foo(x,y) int x, y; {
    is a date of the form yyyymmdd hh:mm:ss, e.g. 19900208 13:00:00, which
    is to be used for setting or comparing the file date. Other attributes
    in the struct can also be set, such as the protection/permission (See
-   [120]Appendix I), when it makes sense (e.g. "yy->lprotect.val" can be
+   [132]Appendix I), when it makes sense (e.g. "yy->lprotect.val" can be
    set if the remote system ID matches the local one).
     x: A function code: 0 means to set the file's creation date as given.
    1 means compare the date from the yy struct with the file's date.
@@ -1788,7 +1837,7 @@ foo(x,y) int x, y; {
    In UNIX, the only need Kermit has for privileged status is access to
    the UUCP lockfile directory, in order to read, create, and destroy
    lockfiles, and to open communication devices that are normally
-   protected against the user (see the [121]Unix C-Kermit Installation
+   protected against the user (see the [133]Unix C-Kermit Installation
    Instructions for discussion). Therefore, privileges should only be
    enabled for these operations and disabled at all other times. This
    relieves the programmer of the responsibility of putting expensive and
@@ -1839,7 +1888,7 @@ foo(x,y) int x, y; {
           Attempts to turns privileges off in such a way that they can be
           turned on again later. Then checks to make sure that they were
           really turned off. If they were not really turned off, then they
-          are cancelled permanently. Returns:
+          are canceled permanently. Returns:
             0 on success
             nonzero on failure
 
@@ -2200,9 +2249,9 @@ foo(x,y) int x, y; {
               modem:
                       Less than zero: this is the negative of the network
                       type, and ttname is a network host name. Network
-                      types (from [122]ckcnet.h:
+                      types (from [134]ckcnet.h:
 
-  NET_TCPB 1   TCP/IP Berkeley (socket)  (implemented in [123]ckutio.c)
+  NET_TCPB 1   TCP/IP Berkeley (socket)  (implemented in [135]ckutio.c)
   NET_TCPA 2   TCP/IP AT&T (streams)     (not yet implemented)
   NET_DEC  3   DECnet                    (not yet implemented)
 
@@ -2437,8 +2486,8 @@ foo(x,y) int x, y; {
           the data it points to is not safe, so should be copied to a safe
           place before use. ztime() has no return value. As a side effect,
           this routine can also fill in the following two external
-          variables (which must be defined in the system-dependendent
-          modules for each platform):
+          variables (which must be defined in the system-dependent modules
+          for each platform):
             long ztusec: Fraction of seconds of clock time, microseconds.
             long ztmsec: Fraction of seconds of clock time, milliseconds.
           If these variables are not set by zstime(), they remain at their
@@ -2507,21 +2556,21 @@ foo(x,y) int x, y; {
            -1: if this function is not supported.
             0: on success.
 
-   [ [124]Contents ] [ [125]C-Kermit ] [ [126]Kermit Home ]
+   [ [136]Contents ] [ [137]C-Kermit ] [ [138]Kermit Home ]
 
 4.F. Group F: Network Support
 
    As of version 5A, C-Kermit includes support for several networks.
    Originally, this was just worked into the ttopen(), ttclos(), ttinc(),
-   ttinl(), and similar routines in [127]ckutio.c. But this made it
+   ttinl(), and similar routines in [139]ckutio.c. But this made it
    impossible to share this code with non-UNIX versions, like VMS, AOS/VS,
    OS/2, etc. So as of edit 168, network code has been separated out into
    its own module and header file, ckcnet.c and ckcnet.h:
 
-     [128]ckcnet.h: Network-related symbol definitions.
-     [129]ckcnet.c: Network i/o (TCP/IP, X.25, etc), shared by most
+     [140]ckcnet.h: Network-related symbol definitions.
+     [141]ckcnet.c: Network i/o (TCP/IP, X.25, etc), shared by most
    platforms.
-     [130]cklnet.c: Network i/o (TCP/IP, X.25, etc) specific to Stratus
+     [142]cklnet.c: Network i/o (TCP/IP, X.25, etc) specific to Stratus
    VOS.
 
    The routines and variables in these modules fall into two categories:
@@ -2606,7 +2655,7 @@ foo(x,y) int x, y; {
    contain code to test for the network type, which is available via the
    global variable ttnet.
 
-   [ [131]Contents ] [ [132]C-Kermit ] [ [133]Kermit Home ]
+   [ [143]Contents ] [ [144]C-Kermit ] [ [145]Kermit Home ]
 
 4.F.1. Telnet Protocol
 
@@ -2616,8 +2665,8 @@ foo(x,y) int x, y; {
    it can be implemented in remote mode, which does not have a network
    connection:
 
-      [134]ckctel.h: Telnet protocol symbol definitions.
-      [135]ckctel.c: Telnet protocol.
+      [146]ckctel.h: Telnet protocol symbol definitions.
+      [147]ckctel.c: Telnet protocol.
 
    The Telnet protocol is supported by the following variables and
    routines:
@@ -2643,7 +2692,7 @@ foo(x,y) int x, y; {
 
 4.F.2. FTP Protocol
 
-   (To be filled in...)
+   (To be filled in...) See the [148]source file
 
 4.F.3. HTTP Protocol
 
@@ -2694,7 +2743,7 @@ foo(x,y) int x, y; {
           x25inl()
           Read a Kermit packet from X.25 circuit.
 
-   [ [136]Contents ] [ [137]C-Kermit ] [ [138]Kermit Home ]
+   [ [149]Contents ] [ [150]C-Kermit ] [ [151]Kermit Home ]
 
 4.F.5. Adding New Network Types
 
@@ -2755,14 +2804,14 @@ foo(x,y) int x, y; {
    You can NOT use constructions like "#if defined (HPX25 || IBMX25)";
    they are not portable.
 
-   [ [139]Contents ] [ [140]C-Kermit ] [ [141]Kermit Home ]
+   [ [152]Contents ] [ [153]C-Kermit ] [ [154]Kermit Home ]
 
 4.G. Group G: Formatted Screen Support
 
    So far, this is used only for the fullscreen local-mode file transfer
    display. In the future, it might be extended to other uses. The
    fullscreen display code is in and around the routine screenc() in
-   [142]ckuusx.c.
+   [155]ckuusx.c.
 
    In the UNIX version, we use the curses library, plus one call from the
    termcap library. In other versions (OS/2, VMS, etc) we insert dummy
@@ -2808,17 +2857,18 @@ foo(x,y) int x, y; {
           management service keeps a copy of the entire screen, as curses
           and SMG do. C-Kermit does not do this itself.
 
-   [ [143]Contents ] [ [144]C-Kermit ] [ [145]Kermit Home ]
+   [ [156]Contents ] [ [157]C-Kermit ] [ [158]Kermit Home ]
 
 4.H. Group H: Pseudoterminal Support
 
-   (To be filled in...)
+   (To be filled in...) But see: [159]these comments, and the source files
+   [160]ckupty.h and [161]ckupty.c.
 
 4.I. Group I: Security
 
-   (To be filled in...)
+   (To be filled in...) Meanwhile, see [162]security.html.
 
-   [ [146]Contents ] [ [147]C-Kermit ] [ [148]Kermit Home ]
+   [ [163]Contents ] [ [164]C-Kermit ] [ [165]Kermit Home ]
 
 APPENDIX I. FILE PERMISSIONS
 
@@ -2880,13 +2930,13 @@ I.2. Handling of Generic Protection
    etc), except that no non-Owner field should give more permissions than
    the Owner field.
 
-   [ [149]Top ] [ [150]Contents ] [ [151]C-Kermit Home ] [ [152]Kermit
+   [ [166]Top ] [ [167]Contents ] [ [168]C-Kermit Home ] [ [169]Kermit
    Home ]
      __________________________________________________________________
 
 
-    C-Kermit Program Logic Manual / [153]The Kermit Project /
-    [154]kermit@columbia.edu / 30 June 2011
+    C-Kermit Program Logic Manual / [170]The Kermit Project /
+    [171]kermit@columbia.edu / 30 June 2011
 
 References
 
@@ -2901,146 +2951,163 @@ References
    9. http://www.columbia.edu/kermit/ckfaq.html
   10. http://www.columbia.edu/kermit/support.html
   11. http://www.columbia.edu/kermit/
-  12. http://www.columbia.edu/
-  13. http://www.columbia.edu/kermit/ckcplm.html
-  14. http://www.columbia.edu/kermit/ckermit.html
-  15. http://www.columbia.edu/kermit/index.html
-  16. http://www.columbia.edu/kermit/ckcplm.html#x1
-  17. http://www.columbia.edu/kermit/ckcplm.html#x2
-  18. http://www.columbia.edu/kermit/ckcplm.html#x3
-  19. http://www.columbia.edu/kermit/ckcplm.html#x4
-  20. http://www.columbia.edu/kermit/ckcplm.html#x4.A
-  21. http://www.columbia.edu/kermit/ckcplm.html#x4.B
-  22. http://www.columbia.edu/kermit/ckcplm.html#x4.C
-  23. http://www.columbia.edu/kermit/ckcplm.html#x4.D
-  24. http://www.columbia.edu/kermit/ckcplm.html#x4.E
-  25. http://www.columbia.edu/kermit/ckcplm.html#x4.F
-  26. http://www.columbia.edu/kermit/ckcplm.html#x4.G
-  27. http://www.columbia.edu/kermit/ckcplm.html#x4.H
-  28. http://www.columbia.edu/kermit/ckcplm.html#x4.I
-  29. http://www.columbia.edu/kermit/ckcplm.html#xa1
-  30. http://www.columbia.edu/kermit/ckcplm.html#contents
-  31. http://www.columbia.edu/kermit/ckcplm.html#contents
-  32. http://www.columbia.edu/kermit/ckermit.html
-  33. http://www.columbia.edu/kermit/index.html
-  34. ftp://kermit.columbia.edu/kermit/c-kermit/ckcpro.w
-  35. http://www.columbia.edu/kermit/ckcplm.html#contents
-  36. http://www.columbia.edu/kermit/ckermit.html
-  37. http://www.columbia.edu/kermit/index.html
-  38. http://www.columbia.edu/kermit/ckcplm.html#x3.2
-  39. http://www.columbia.edu/kermit/ckcplm.html#contents
-  40. http://www.columbia.edu/kermit/ckermit.html
-  41. http://www.columbia.edu/kermit/index.html
-  42. http://www.columbia.edu/kermit/ckcplm.html#x4.A
+  12. http://www.columbia.edu/kermit/ckcplm.html
+  13. http://www.columbia.edu/kermit/ckcplm.html#x1
+  14. http://www.columbia.edu/kermit/ckcplm.html#x2
+  15. http://www.columbia.edu/kermit/ckcplm.html#x3
+  16. http://www.columbia.edu/kermit/ckcplm.html#x4
+  17. http://www.columbia.edu/kermit/ckcplm.html#x4.A
+  18. http://www.columbia.edu/kermit/ckcplm.html#x4.B
+  19. http://www.columbia.edu/kermit/ckcplm.html#x4.C
+  20. http://www.columbia.edu/kermit/ckcplm.html#x4.D
+  21. http://www.columbia.edu/kermit/ckcplm.html#x4.E
+  22. http://www.columbia.edu/kermit/ckcplm.html#x4.F
+  23. http://www.columbia.edu/kermit/ckcplm.html#x4.G
+  24. http://www.columbia.edu/kermit/ckcplm.html#x4.H
+  25. http://www.columbia.edu/kermit/ckcplm.html#x4.I
+  26. http://www.columbia.edu/kermit/ckcplm.html#xa1
+  27. http://www.amazon.com/gp/product/0932376886?ie=UTF8&tag=aleidmoreldom-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0932376886
+  28. http://www.columbia.edu/kermit/ckcplm.html#contents
+  29. http://www.columbia.edu/kermit/vax_11-750.jpg
+  30. http://www.columbia.edu/cu/computinghistory/hermit.html
+  31. http://www.columbia.edu/kermit/cudocs/ilosetup.html
+  32. ftp://kermit.columbia.edu/kermit/f/ckc04e.txt
+  33. ftp://kermit.columbia.edu/kermit/f/ckc04f.txt
+  34. ftp://kermit.columbia.edu/kermit/f/ckc168.txt
+  35. ftp://kermit.columbia.edu/kermit/f/ckc178.txt
+  36. ftp://kermit.columbia.edu/kermit/f/ckc188.txt
+  37. ftp://kermit.columbia.edu/kermit/f/ckc189.txt
+  38. ftp://kermit.columbia.edu/kermit/f/ckc192.txt
+  39. ftp://kermit.columbia.edu/kermit/f/ckc197.txt
+  40. ftp://kermit.columbia.edu/kermit/f/ckc200.txt
+  41. ftp://kermit.columbia.edu/kermit/f/ckc211.txt
+  42. ftp://kermit.columbia.edu/kermit/f/ckc300.txt
   43. http://www.columbia.edu/kermit/ckcplm.html#contents
   44. http://www.columbia.edu/kermit/ckermit.html
   45. http://www.columbia.edu/kermit/index.html
-  46. http://www.columbia.edu/kermit/ckcplm.html#contents
-  47. http://www.columbia.edu/kermit/ckermit.html
-  48. http://www.columbia.edu/kermit/index.html
-  49. http://www.columbia.edu/kermit/ckcplm.html#contents
-  50. http://www.columbia.edu/kermit/ckermit.html
-  51. http://www.columbia.edu/kermit/index.html
-  52. ftp://kermit.columbia.edu/kermit/c-kermit/ckclib.h
-  53. ftp://kermit.columbia.edu/kermit/c-kermit/ckclib.c
-  54. http://www.columbia.edu/kermit/ckcplm.html#x3.1
+  46. ftp://kermit.columbia.edu/kermit/c-kermit/ckcpro.w
+  47. http://www.columbia.edu/kermit/ckcplm.html#contents
+  48. http://www.columbia.edu/kermit/ckermit.html
+  49. http://www.columbia.edu/kermit/index.html
+  50. http://www.columbia.edu/kermit/ckcplm.html#x3.2
+  51. http://www.columbia.edu/kermit/ckcplm.html#contents
+  52. http://www.columbia.edu/kermit/ckermit.html
+  53. http://www.columbia.edu/kermit/index.html
+  54. http://www.columbia.edu/kermit/ckcplm.html#x4.A
   55. http://www.columbia.edu/kermit/ckcplm.html#contents
   56. http://www.columbia.edu/kermit/ckermit.html
   57. http://www.columbia.edu/kermit/index.html
-  58. ftp://kermit.columbia.edu/kermit/c-kermit/ckcsym.h
-  59. ftp://kermit.columbia.edu/kermit/c-kermit/ckcasc.h
-  60. ftp://kermit.columbia.edu/kermit/c-kermit/ckcsig.h
-  61. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
-  62. ftp://kermit.columbia.edu/kermit/c-kermit/ckcker.h
-  63. ftp://kermit.columbia.edu/kermit/c-kermit/ckcxla.h
-  64. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
-  65. ftp://kermit.columbia.edu/kermit/c-kermit/ckcpro.w
-  66. ftp://kermit.columbia.edu/kermit/c-kermit/ckcfns.c
-  67. ftp://kermit.columbia.edu/kermit/c-kermit/ckcfn2.c
-  68. ftp://kermit.columbia.edu/kermit/c-kermit/ckcfn3.c
-  69. http://www.columbia.edu/kermit/ckcplm.html#x4.B
-  70. http://www.columbia.edu/kermit/ckcplm.html#x4.E
-  71. http://www.columbia.edu/kermit/ckcplm.html#x4.D
-  72. http://www.columbia.edu/kermit/ckcplm.html#contents
-  73. http://www.columbia.edu/kermit/ckermit.html
-  74. http://www.columbia.edu/kermit/index.html
-  75. http://www.columbia.edu/kermit/ckcplm.html#x4.B
-  76. ftp://kermit.columbia.edu/kermit/c-kermit/ckuxla.c
-  77. ftp://kermit.columbia.edu/kermit/c-kermit/ckuxla.h
-  78. ftp://kermit.columbia.edu/kermit/c-kermit/ckcxla.h
-  79. ftp://kermit.columbia.edu/kermit/c-kermit/ckuxla.h
-  80. ftp://kermit.columbia.edu/kermit/c-kermit/ckmxla.h
-  81. ftp://kermit.columbia.edu/kermit/c-kermit/ck?xla
-  82. ftp://kermit.columbia.edu/kermit/c-kermit/ckcuni.h
-  83. ftp://kermit.columbia.edu/kermit/c-kermit/ckcuni.c
+  58. http://www.columbia.edu/kermit/ckcplm.html#contents
+  59. http://www.columbia.edu/kermit/ckermit.html
+  60. http://www.columbia.edu/kermit/index.html
+  61. http://www.columbia.edu/kermit/ckcplm.html#contents
+  62. http://www.columbia.edu/kermit/ckermit.html
+  63. http://www.columbia.edu/kermit/index.html
+  64. ftp://kermit.columbia.edu/kermit/c-kermit/ckclib.h
+  65. ftp://kermit.columbia.edu/kermit/c-kermit/ckclib.c
+  66. http://www.columbia.edu/kermit/ckcplm.html#x3.1
+  67. http://www.columbia.edu/kermit/ckcplm.html#contents
+  68. http://www.columbia.edu/kermit/ckermit.html
+  69. http://www.columbia.edu/kermit/index.html
+  70. ftp://kermit.columbia.edu/kermit/c-kermit/ckcsym.h
+  71. ftp://kermit.columbia.edu/kermit/c-kermit/ckcasc.h
+  72. ftp://kermit.columbia.edu/kermit/c-kermit/ckcsig.h
+  73. ftp://kermit.columbia.edu/kermit/c-kermit/ckcdeb.h
+  74. ftp://kermit.columbia.edu/kermit/c-kermit/ckcker.h
+  75. ftp://kermit.columbia.edu/kermit/c-kermit/ckcxla.h
+  76. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
+  77. ftp://kermit.columbia.edu/kermit/c-kermit/ckcpro.w
+  78. ftp://kermit.columbia.edu/kermit/c-kermit/ckcfns.c
+  79. ftp://kermit.columbia.edu/kermit/c-kermit/ckcfn2.c
+  80. ftp://kermit.columbia.edu/kermit/c-kermit/ckcfn3.c
+  81. http://www.columbia.edu/kermit/ckcplm.html#x4.B
+  82. http://www.columbia.edu/kermit/ckcplm.html#x4.E
+  83. http://www.columbia.edu/kermit/ckcplm.html#x4.D
   84. http://www.columbia.edu/kermit/ckcplm.html#contents
   85. http://www.columbia.edu/kermit/ckermit.html
   86. http://www.columbia.edu/kermit/index.html
   87. http://www.columbia.edu/kermit/ckcplm.html#x4.B
-  88. ftp://kermit.columbia.edu/kermit/c-kermit/ckucmd.h
-  89. ftp://kermit.columbia.edu/kermit/c-kermit/ckucmd.c
-  90. http://www.columbia.edu/kermit/ckcplm.html#x4.E
-  91. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
-  92. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.c
-  93. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus2.c
-  94. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus3.c
-  95. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus4.c
-  96. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusy.c
-  97. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
-  98. ftp://kermit.columbia.edu/kermit/c-kermit/ckuver.h
-  99. ftp://kermit.columbia.edu/kermit/c-kermit/ckuscr.c
- 100. ftp://kermit.columbia.edu/kermit/c-kermit/ckudia.c
- 101. ftp://kermit.columbia.edu/kermit/c-kermit/ckucon.c
- 102. ftp://kermit.columbia.edu/kermit/c-kermit/ckucns.c
- 103. http://www.columbia.edu/kermit/ckcplm.html#x4.E
- 104. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
- 105. http://www.columbia.edu/kermit/ckcplm.html#contents
- 106. http://www.columbia.edu/kermit/ckermit.html
- 107. http://www.columbia.edu/kermit/index.html
- 108. ftp://kermit.columbia.edu/kermit/c-kermit/ckufio.c
- 109. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 110. ftp://kermit.columbia.edu/kermit/c-kermit/ckusig.c
- 111. ftp://kermit.columbia.edu/kermit/c-kermit/ckvfio.c
- 112. ftp://kermit.columbia.edu/kermit/c-kermit/ckusig.c
- 113. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
- 114. http://www.columbia.edu/kermit/ckcplm.html#contents
- 115. http://www.columbia.edu/kermit/ckermit.html
- 116. http://www.columbia.edu/kermit/index.html
- 117. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 118. ftp://kermit.columbia.edu/kermit/c-kermit/ckvtio.c
- 119. http://www.columbia.edu/kermit/ckcplm.html#x2
- 120. http://www.columbia.edu/kermit/ckcplm.html#xa1
- 121. http://www.columbia.edu/kermit/ckuins.html
- 122. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
- 123. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 124. http://www.columbia.edu/kermit/ckcplm.html#contents
- 125. http://www.columbia.edu/kermit/ckermit.html
- 126. http://www.columbia.edu/kermit/index.html
- 127. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
- 128. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
- 129. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.c
- 130. ftp://kermit.columbia.edu/kermit/c-kermit/cklnet.c
- 131. http://www.columbia.edu/kermit/ckcplm.html#contents
- 132. http://www.columbia.edu/kermit/ckermit.html
- 133. http://www.columbia.edu/kermit/index.html
- 134. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.h
- 135. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.c
+  88. ftp://kermit.columbia.edu/kermit/c-kermit/ckuxla.c
+  89. ftp://kermit.columbia.edu/kermit/c-kermit/ckuxla.h
+  90. ftp://kermit.columbia.edu/kermit/c-kermit/ckcxla.h
+  91. ftp://kermit.columbia.edu/kermit/c-kermit/ckuxla.h
+  92. ftp://kermit.columbia.edu/kermit/c-kermit/ckmxla.h
+  93. ftp://kermit.columbia.edu/kermit/c-kermit/ck?xla
+  94. ftp://kermit.columbia.edu/kermit/c-kermit/ckcuni.h
+  95. ftp://kermit.columbia.edu/kermit/c-kermit/ckcuni.c
+  96. http://www.columbia.edu/kermit/ckcplm.html#contents
+  97. http://www.columbia.edu/kermit/ckermit.html
+  98. http://www.columbia.edu/kermit/index.html
+  99. http://www.columbia.edu/kermit/ckcplm.html#x4.B
+ 100. ftp://kermit.columbia.edu/kermit/c-kermit/ckucmd.h
+ 101. ftp://kermit.columbia.edu/kermit/c-kermit/ckucmd.c
+ 102. http://www.columbia.edu/kermit/ckcplm.html#x4.E
+ 103. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.h
+ 104. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusr.c
+ 105. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus2.c
+ 106. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus3.c
+ 107. ftp://kermit.columbia.edu/kermit/c-kermit/ckuus4.c
+ 108. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusy.c
+ 109. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
+ 110. ftp://kermit.columbia.edu/kermit/c-kermit/ckuver.h
+ 111. ftp://kermit.columbia.edu/kermit/c-kermit/ckuscr.c
+ 112. ftp://kermit.columbia.edu/kermit/c-kermit/ckudia.c
+ 113. ftp://kermit.columbia.edu/kermit/c-kermit/ckucon.c
+ 114. ftp://kermit.columbia.edu/kermit/c-kermit/ckucns.c
+ 115. http://www.columbia.edu/kermit/ckcplm.html#x4.E
+ 116. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
+ 117. http://www.columbia.edu/kermit/ckcplm.html#contents
+ 118. http://www.columbia.edu/kermit/ckermit.html
+ 119. http://www.columbia.edu/kermit/index.html
+ 120. ftp://kermit.columbia.edu/kermit/c-kermit/ckufio.c
+ 121. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
+ 122. ftp://kermit.columbia.edu/kermit/c-kermit/ckusig.c
+ 123. ftp://kermit.columbia.edu/kermit/c-kermit/ckvfio.c
+ 124. ftp://kermit.columbia.edu/kermit/c-kermit/ckusig.c
+ 125. ftp://kermit.columbia.edu/kermit/c-kermit/ckcmai.c
+ 126. http://www.columbia.edu/kermit/ckcplm.html#contents
+ 127. http://www.columbia.edu/kermit/ckermit.html
+ 128. http://www.columbia.edu/kermit/index.html
+ 129. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
+ 130. ftp://kermit.columbia.edu/kermit/c-kermit/ckvtio.c
+ 131. http://www.columbia.edu/kermit/ckcplm.html#x2
+ 132. http://www.columbia.edu/kermit/ckcplm.html#xa1
+ 133. http://www.columbia.edu/kermit/ckuins.html
+ 134. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
+ 135. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
  136. http://www.columbia.edu/kermit/ckcplm.html#contents
  137. http://www.columbia.edu/kermit/ckermit.html
  138. http://www.columbia.edu/kermit/index.html
- 139. http://www.columbia.edu/kermit/ckcplm.html#contents
- 140. http://www.columbia.edu/kermit/ckermit.html
- 141. http://www.columbia.edu/kermit/index.html
- 142. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
+ 139. ftp://kermit.columbia.edu/kermit/c-kermit/ckutio.c
+ 140. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.h
+ 141. ftp://kermit.columbia.edu/kermit/c-kermit/ckcnet.c
+ 142. ftp://kermit.columbia.edu/kermit/c-kermit/cklnet.c
  143. http://www.columbia.edu/kermit/ckcplm.html#contents
  144. http://www.columbia.edu/kermit/ckermit.html
  145. http://www.columbia.edu/kermit/index.html
- 146. http://www.columbia.edu/kermit/ckcplm.html#contents
- 147. http://www.columbia.edu/kermit/ckermit.html
- 148. http://www.columbia.edu/kermit/index.html
- 149. http://www.columbia.edu/kermit/ckcplm.html#top
- 150. http://www.columbia.edu/kermit/ckcplm.html#contents
- 151. http://www.columbia.edu/kermit/ckermit.html
- 152. http://www.columbia.edu/kermit/index.html
- 153. http://www.columbia.edu/kermit/index.html
- 154. mailto:kermit@columbia.edu
+ 146. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.h
+ 147. ftp://kermit.columbia.edu/kermit/c-kermit/ckctel.c
+ 148. ftp://kermit.columbia.edu/kermit/c-kermit/ckcftp.c
+ 149. http://www.columbia.edu/kermit/ckcplm.html#contents
+ 150. http://www.columbia.edu/kermit/ckermit.html
+ 151. http://www.columbia.edu/kermit/index.html
+ 152. http://www.columbia.edu/kermit/ckcplm.html#contents
+ 153. http://www.columbia.edu/kermit/ckermit.html
+ 154. http://www.columbia.edu/kermit/index.html
+ 155. ftp://kermit.columbia.edu/kermit/c-kermit/ckuusx.c
+ 156. http://www.columbia.edu/kermit/ckcplm.html#contents
+ 157. http://www.columbia.edu/kermit/ckermit.html
+ 158. http://www.columbia.edu/kermit/index.html
+ 159. http://www.columbia.edu/kermit/ckermit90.html#LooseEnd
+ 160. ftp://kermit.columbia.edu/kermit/f/ckupty.h
+ 161. ftp://kermit.columbia.edu/kermit/f/ckupty.c
+ 162. http://www.columbia.edu/kermit/security.html
+ 163. http://www.columbia.edu/kermit/ckcplm.html#contents
+ 164. http://www.columbia.edu/kermit/ckermit.html
+ 165. http://www.columbia.edu/kermit/index.html
+ 166. http://www.columbia.edu/kermit/ckcplm.html#top
+ 167. http://www.columbia.edu/kermit/ckcplm.html#contents
+ 168. http://www.columbia.edu/kermit/ckermit.html
+ 169. http://www.columbia.edu/kermit/index.html
+ 170. http://www.columbia.edu/kermit/index.html
+ 171. mailto:kermit@columbia.edu