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
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)
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
$ 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:
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
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
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
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
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.
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)
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
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
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
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
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
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
+ (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
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
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.
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
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
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)
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
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
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;
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;
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
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
#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
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.
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.
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
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
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)
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
-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:
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
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:
4.F.2. FTP Protocol
- (To be filled in...)
+ (To be filled in...) See the [148]source file
4.F.3. HTTP Protocol
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
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
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
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
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