Standards-Version: 3.9.6 (no changes)
[ckermit.git] / ckermit90.txt
index 51a0694..adf6ee3 100644 (file)
    [3]Home [4]Kermit 95 [5]C-Kermit [6]Scripts [7]Current [8]New [9]FAQ
    [10]Support
 
-          [11]Table of platforms   [12]Book: Using C-Kermit   [13]Download
+
+      [11]CLICK HERE to read about some of these items.
+
+          [12]Table of platforms   [13]Book: Using C-Kermit   [14]Download
                                                               C-Kermit 9.0
 
 C-Kermit 9.0 Update Notes
 
-     * [14]Large Files
-     * [15]How to Test Large-File Transfer
-     * [16]Arithmetic with Large Integers
-     * [17]FORCE-3 Packet Protocol
-     * [18]Variable Evaluation
-
-     * [19]The RENAME Command You Always Wanted
-     * [20]Other New Features
-     * [21]Incompatibilities
-     * [22]What's Not In C-Kermit 9.0
-     * [23]And a Loose End
-
-     * [24]Demonstration: Secure POP mail fetcher
-     * [25]Demonstration: HP Switch Configuration Backup
-     * [26]Demonstration: HP iLO Blade Configuration
-     * [27]Demonstration: IBM/Rolm/Siemens CBX Management
-     * [28]Demonstration: CSV and TSV Files
-     * [29]Demonstration Scripts for Webmasters
-
-   This is the third supplement to [30]Using C-Kermit, Second Edition. I
+   Note:   C-Kermit 9.0.301 contains a correction that applies only to
+   Solaris 10 and 11.
+     C-Kermit 9.0.302 contains corrections that apply only to FreeBSD 8
+   and 9.
+     * [15]Large Files
+     * [16]How to Test Large-File Transfer
+     * [17]Arithmetic with Large Integers
+     * [18]FORCE-3 Packet Protocol
+     * [19]Variable Evaluation
+
+     * [20]The RENAME Command You Always Wanted
+     * [21]Other New Features
+     * [22]Incompatibilities
+     * [23]What's Not In C-Kermit 9.0
+     * [24]And a Loose End
+
+     * [25]Demonstration: Secure POP mail fetcher
+     * [26]Demonstration: HP Switch Configuration Backup
+     * [27]Demonstration: HP iLO Blade Configuration
+     * [28]Demonstration: IBM/Rolm/Siemens CBX Management
+     * [29]Demonstration: CSV and TSV Files
+     * [30]Demonstration Scripts for Webmasters
+
+   This is the third supplement to [31]Using C-Kermit, Second Edition. I
    apologize for the scattered nature of the information and I hope I can
    organize it and gather it all into one place for easy and definitive
-   reference some day. It's a big job and it depends on the demand. For
-   the time being the definitive reference and introduction is the book
-   (which is now available also in a [31]Kindle Edition), plus the
-   [32]C-Kermit 7.0 update, [33]C-Kermit 8.0 update, and now this one.
-   Plus tons of other web pages on this site, sample script programs, and
-   so on.
+   reference some day. It's a big job so it depends on the demand. For the
+   time being the definitive reference and introduction is the book (which
+   is now available also in a [32]Kindle Edition), plus the [33]C-Kermit
+   7.0 update, [34]C-Kermit 8.0 update, and now this one. Plus tons of
+   other web pages on this site, sample script programs, and so on.
 
    In version 6.0, C-Kermit was a pretty powerful and flexible
    communication program with scripting capabilities. By version 9.0, I'd
    like to think of it more as a scripting language with built-in
    communications. You can get an idea of the kinds of programs you can
-   write in Kermit language [34]here. You can develop programs quickly
+   write in Kermit language [35]here. You can develop programs quickly
    because it's an interactive program, not a compiler. The scripting
    language is the command language. Kind of like the Unix shell but
    "somewhat" less cryptic, including concepts not only from C but from
-   PL/I, Snobol, LISP, and Smalltalk. The language itself is built upon
-   the command language of the much-loved [35]DECSYSTEM-20 from the 1970s
-   and 80s, the Clipper Ship of the Text Era. (Text is not a bad word.
-   Those of us who can touch-type and who are proficient in text-based
-   computing environments like Unix shell or VMS DCL are likely to be
-   orders of magnitude more productive than users of GUIs.)
-
-     - Frank da Cruz   [36]fdc@columbia.edu
+   PL/I, Snobol, LISP, Bliss, and Smalltalk. The language itself is built
+   upon the command language of the much-loved [36]DECSYSTEM-20 from the
+   1970s and 80s, the Clipper Ship of the Text Era. (Text is not a bad
+   word. Those of us who can touch-type and who are proficient in
+   text-based computing environments like Unix shell or VMS DCL are likely
+   to be orders of magnitude more productive than users of GUIs.)
+
+   Thanks to (at least) Jeff Altman, William Bader, Ian Beckwith, Nelson
+   Beebe, Gerry Belanger, Joop Boonen, Rob Brown, Christian Corti, Alexey
+   Dokuchaev, John Dunlap, Peter Eichhorn, Carl Friedberg, Terry Kennedy,
+   Günter Knauf, Jason Lehr, Arthur Marsh, Lewis McCarthy, Gary Mills, Ed
+   Ravin, Jonathan Reams, Mike Rechtman, Mark Sapiro, Steven Schweda
+   (SMS), Kinjal Shah, Michael Sokolov, Andy Tanenbaum, Seth Theriault,
+   Zach A. Thomas, Martin Vorländer, and Eric Weaver for assistance, and
+   to Hewlett-Packard Company for support.
+
+     - Frank da Cruz   [37]fdc@columbia.edu, 30 June 2011
+
+   P.S. It occurred to me just before the end of the day that maybe I
+   should back up the Kermit website on DVD, just in case. Using
+   [38]Kermit 95 on the desktop over an SSH connection to the Unix file
+   system where the website resides, I made a fresh directory on the PC,
+   CD'd to it, and on Unix cd'd to the Website directory, and told
+   C-Kermit 9.0 to:
+
+C-Kermit> send /recursive /dotfiles /nobackup *
+
+   and it re-created the website directory tree in the PC directory, text
+   files correctly converted to Windows format and binary files correctly
+   left as-is. The /dotfiles switch means to include files such as
+   .htaccess whose names start with a dot (period), and the /nobackup
+   switch means to skip backup files created by EMACs (such as
+   index.html.~243~). And then I did the same with the FTP sites, about
+   8GB in all. Watching the file-transfer display was kind of like having
+   30 years of my life flash before my eyes in a few minutes. Then I
+   copied the two directories to DVD (the FTP site had to be split over 2
+   DVDs). The whole operation took under half an hour. The directory tree
+   on the CD is directly usable in Windows, Unix, or any other operating
+   system (unlike if I had transferred the files all in binary mode or all
+   in text mode, or if I had made, say, a gzipped tar archive or a zip
+   archive). I believe that, to this day, Kermit is the only software that
+   can do this. If someday I have to upload from these DVDs to Unix, VMS,
+   or any other operating system, it can be done exactly the same way,
+   with any necessary conversions on text files done automatically, and
+   binary files left intact, recursively through a whole very large
+   directory tree.
 
 What's New in General
 
    Very briefly, the major items:
-     * [37]Open Source license.
-     * [38]64-bit file access and transfer and 64-bit integer arithmetic
+     * [39]Open Source license.
+     * [40]64-bit file access and transfer and 64-bit integer arithmetic
        on most common platforms.
-     * Support for recent releases of Linux, Mac OS X, *BSD, etc ([39]see
+     * Support for recent releases of Linux, Mac OS X, *BSD, etc ([41]see
        table).
      * Support for newer OpenSSL releases up to and including 1.0.0d
-       ([40]see table).
-     * [41]Strengthened error checking for file transfer under extremely
+       ([42]see table).
+     * [43]Strengthened error checking for file transfer under extremely
        harsh conditions.
-     * [42]Simplified semantics for variables used in scripts.
-     * Super-handy and useful [43]extensions to the RENAME command.
-     * Many other scripting improvements including support for reading and
-       writing [44]CSV and TSV files.
-     * [45]MIME character-set names are now recognized.
-     * Improved logging and debugging (see demo [46]here).
-     * Lots more described or listed below, and [47]here.
+     * [44]Simplified semantics for variables used in scripts.
+     * Super-handy [45]extensions to the RENAME command.
+     * Other scripting improvements including support for reading and
+       writing [46]CSV and TSV files.
+     * [47]MIME character-set names are now recognized.
+     * Improved logging and debugging (see demo [48]here).
+     * Lots more described or listed below, and [49]here.
 
 Open Source License
 
-   C-Kermit 9.0 has the [48]Revised 3-Clause BSD License, an open source
-   license approved by OSI, the [49]Open Source Initiative.
+   C-Kermit 9.0 has the [50]Revised 3-Clause BSD License, an open source
+   license approved by OSI, the [51]Open Source Initiative.
 
 Large Files
 
@@ -104,7 +148,7 @@ Large Files
    interface itself to allow entry and display of large numbers. All this
    had to be done in a way that would not affect pure 32-bit builds on
    platforms that do not support large files. Large file support is
-   summarized in the [50]Table of Platforms; entries in Yellow (32-bit
+   summarized in the [52]Table of Platforms; entries in Yellow (32-bit
    builds that support 64-bit integers) and Green (64-bit builds) support
    large files.
 
@@ -126,7 +170,7 @@ How to Test Large-File Transfer
      * If you don't have such a file or there is not sufficient disk space
        for such a file, you can create a special kind of file that takes
        up one block on the disk but appears to be 4.3GB long by compiling
-       and running [51]THIS C PROGRAM on Linux, Solaris, HP-UX, or other
+       and running [53]THIS C PROGRAM on Linux, Solaris, HP-UX, or other
        Unix platform that supports large files. Kermit or FTP or any other
        file transfer program will transfer the result (BIGFILE) in such a
        way as to actually put 4.3GB (or other desired size; see source) on
@@ -154,14 +198,14 @@ Arithmetic with Large Integers
    Because large file support requires the availability of a 64-bit signed
    integer data type, other aspects of C-Kermit were adapted to use it
    too, most notably Kermit's algebraic expression evaluator and its
-   [52]S-Expression interpreter, on all platforms that support large files
-   (those listed as 64 or 32/64 in the Word column of the [53]table). In
+   [54]S-Expression interpreter, on all platforms that support large files
+   (those listed as 64 or 32/64 in the Word column of the [55]table). In
    fact, every Kermit command that parses a number in any field can now
    parse a large number on those platforms.
 
    S-Expressions can now be forced to operate with integers only, without
    floating-point conversion or having to explicitly truncate each result;
-   as an example. see the revised [54]Easter date calculation script.
+   as an example. see the revised [56]Easter date calculation script.
 
 FORCE-3 Packet Protocol
 
@@ -177,22 +221,22 @@ FORCE-3 Packet Protocol
 
    But the Internet is not everywhere, and not all modems are
    error-correcting. Perhaps the most difficult trial so far for Kermit or
-   any other protocol is the [55]EM-APEX project, in which floats are
+   any other protocol is the [57]EM-APEX project, in which floats are
    dropped into the ocean from an aircraft into the path of a hurricane;
    these floats dive into the water measuring current, temperature, and
-   salinity at different depths and then surfacing to phone home, sending
+   salinity at different depths and then surface to phone home, sending
    the data to land stations using Kermit protocol over
-   non-error-correcting 300bps [56]Iridium satellite modems, with high
-   seas and winds battering the floats and heavy ([57]sometimes
+   non-error-correcting 300bps [58]Iridium satellite modems, with high
+   seas and winds battering the floats and heavy ([59]sometimes
    electrical) storms between the modem and the satellite.
 
    Because of the transmission speed and long distances involved, the
    transfers were very slow. The Kermit software in the floats is
-   [58]Embedded Kermit, which did not implement sliding windows, which
+   [60]Embedded Kermit, which did not implement sliding windows, which
    would have sped up the flow considerably. John Dunlap, engineer at the
    University of Washington's Applied Physics Laboratory, undertook the
    task of adding sliding windows to E-Kermit. For testing, he rigged up a
-   [59]simulator in which Kermit transfers take place over a connection
+   [61]simulator in which Kermit transfers take place over a connection
    with different amounts of noise and delay. He found that occasionally,
    a transfer would appear to succeed, but the received file would be
    corrupt.
@@ -215,7 +259,7 @@ FORCE-3 Packet Protocol
    the two Kermit partners out of sync as to packet encoding and
    interpretation (the chances of two such errors producing a seemingly
    valid packet are about 1 in 6000 when using the 6-bit checksum). For
-   example the compression technique might be misnegotiated and then the
+   example, the compression technique might be misnegotiated and then the
    receiver might store incoming data without decompressing it.
 
    The solution is a new option, selected by:
@@ -232,13 +276,12 @@ FORCE-3 Packet Protocol
 
    In practice, however, it is possible to code the packet receiver
    "cheat" by reading the packet data before verifying the block check.
-   Thus when the receiver is C-Kermit 9.0 Beta.01 or later or E-Kermit 1.7
-   or later, it is only necessary to give the "set block 5" command to the
+   Thus when the receiver is C-Kermit 9.0 or later or E-Kermit 1.7 or
+   later, it is only necessary to give the "set block 5" command to the
    file sender, and the receiver will check for a FORCE-3 first packet. If
-   the receiver does not support this feature, however, the the initial
-   packet will be be rejected (after several retries) and the file
-   transfer will not take place. There is no attempt to "back off" to
-   normal behavior.
+   the receiver does not support this feature, however, the initial packet
+   will be be rejected (after several retries) and the file transfer will
+   not take place. There is no attempt to "back off" to normal behavior.
 
    CAPTION: Table 4. Kermit Protocol Packet Block Check Types
 
@@ -253,7 +296,11 @@ FORCE-3 Packet Protocol
    FORCE-3 SET BLOCK 5 3 Optional, not negotiated. 16-bit CRC forced all
    packets.
 
-   [60]E-Kermit 1.7
+   BLANK-FREE-2 is for environments where Kermit packets are treated as
+   lines of text, and in which trailing blanks can be stripped; for
+   example, when transferring files with an IBM mainframe through a 3270
+   protocol converter.
+   [62]E-Kermit 1.7
 
 Variable Evaluation
 
@@ -275,7 +322,7 @@ Variable Evaluation
    a single letter, for example \a, \b, etc. The contributed code
    evaluated these variables recursively, meaning if the definition of a
    variable contained variable references, then these were resolved when
-   dererencing the variable, and the process would continue as deep down
+   dereferencing the variable, and the process would continue as deep down
    as necessary to resolve the thing fully.
 
    This was sometimes handy, but it had one severe drawback: There was no
@@ -310,11 +357,11 @@ Variable Evaluation
    \m(name) User-defined scalar variable, evaluated one level deep.
    \$(name) An environment variable, evaluated one level deep.
    \s(name[n:m]) Compact substring notation, evaluated one level deep.
-   \fname(args...)) Built-in function with zero or more arguments.
+   \fname(args...) Built-in function with zero or more arguments.
    \\ Literal backslash
-   \N OUTPUT comand only: NUL, ASCII 0
-   \B OUTPUT comand only: BREAK
-   \L OUTPUT comand only: Long BREAK
+   \N OUTPUT command only: NUL, ASCII 0
+   \B OUTPUT command only: BREAK (250ms, for serial connections)
+   \L OUTPUT command only: Long BREAK (1.5sec, ditto)
 
    Variable names in Kermit are case-independent. The simplifications in
    the table are that the notation for decimal and octal bytes can have
@@ -324,7 +371,7 @@ Variable Evaluation
    must evaluate to, numbers (floating point numbers are truncated).
    Associative arrays are also available (dynamic arrays with arbitrary
    text as subscript), but they are really just a variation on \m()
-   variables (read about associative arrays [61]here). Also, there are
+   variables (read about associative arrays [63]here). Also, there are
    some alternative notations for compact substring notation.
 
    We didn't want to have lots of "distinguished" characters, as the UNIX
@@ -336,10 +383,10 @@ Variable Evaluation
    arguments to macros. The same is true for array elements, especially in
    contexts where they are used to return results from built-in functions
    (for example, \fsplit() used to return the elements of a
-   [62]comma-separated value list if any of the values contained
+   [64]comma-separated value list if any of the values contained
    backslashes). An even worse scenario is when macro arguments are passed
    from one macro to another; for some graphic illustrations see
-   [63]Taming the Wild Backslash - Part Deux from the [64]C-Kermit 7.0
+   [65]Taming the Wild Backslash - Part Deux from the [66]C-Kermit 7.0
    Update Notes.
 
    We can't just change how variables are evaluated because that would
@@ -358,7 +405,7 @@ Variable Evaluation
        anyway there should never be any harm in evaluating them
        recursively because their final value is always (or should be)
        numeric, not some string that might contain backslashes.
-     * The VARIABLE-EVALUTION setting is on the command stack. Thus you
+     * The VARIABLE-EVALUATION setting is on the command stack. Thus you
        can give this command in a macro, command file, or user-defined
        function without affecting the calling environment.
      * The new \frecurse() function forces recursive evaluation of its
@@ -413,13 +460,12 @@ test2 c:\\users\\fdc\\somefile.txt
 test2 \fliteral(c:\users\fdc\somefile.txt)
 
    C-Kermit 9.0 adds a new notation for \fliteral() which also has certain
-   advantages over it: \q(string)
-   :
+   advantages over it: \q(string):
 
 test2 \q(c:\users\fdc\somefile.txt)
 
    Since \fliteral() is a function, its argument list (the text within
-   parantheses) has special syntax of its own, in which commas and braces
+   parentheses) has special syntax of its own, in which commas and braces
    are treated specially and introduce another set of quoting problems.
    \q(string) doesn't have these problems. The only consideration is that
    parentheses must be balanced or else quoted (preceded by backslash), or
@@ -430,7 +476,7 @@ test2 \q(c:\users\fdc\somefile.txt)
    above.
 
    SET COMMAND VARIABLE-EVALUATION SIMPLE is a big change and might have
-   repurcussions that didn't show up in the initial tests; a lot more
+   repercussions that didn't show up in the initial tests; a lot more
    testing is needed.
 
    On the topic of variables, let's summarize in one place the ways in
@@ -475,7 +521,7 @@ test2 \q(c:\users\fdc\somefile.txt)
    DO name arguments name arguments When invoking a macro with a DO
    command (or an implied one), the arguments are evaluated, then assigned
    to \%1, \%2, etc, and the macro's name to \%0.
-   (SETQ name value)   Kermit also includes a mini-[65]LISP intpreter
+   (SETQ name value)   Kermit also includes a mini-[67]LISP interpreter
 
    Variables are evaluated automatically in Kermit commands simply by
    referencing them, according to rules given in Table 1. The following
@@ -491,7 +537,7 @@ test2 \q(c:\users\fdc\somefile.txt)
    element, it is evaluated to get the name; otherwise the argument is the
    name. Its definition is returned with no recursion.
    \m() name Equivalent to \fdefinition().
-   \recurse() \m(name) Forces recursive evaluation of a macro definition
+   \frecurse() \m(name) Forces recursive evaluation of a macro definition
    (a.k.a. long variable name). NOTE: \frecurse() can operate on any kind
    of variable as well as on any string containing any mixture of
    variables.
@@ -535,10 +581,10 @@ New RENAME Features for C-Kermit 9.0
    substitution, or character-set conversion, and optionally also move
    them to a different directory:
 
-     /LOWER:   Convert the filename to lowercase
-     /UPPER:   Convert the filename to uppercase
-     /CONVERT: Change the filename's character encoding
-     /REPLACE: Do string substitutions on the filename
+     /LOWER:      Convert the filename to lowercase
+     /UPPER:      Convert the filename to uppercase
+     /CONVERT:    Change the filename's character encoding
+     /REPLACE:    Do string substitutions on the filename
 
    If the source-file specification includes a path or directory, any
    changes are applied to the filenames only, not to the directory or path
@@ -570,10 +616,10 @@ New RENAME Features for C-Kermit 9.0
 
    Reminder: In switches such as /COLLISION that take arguments
    (operands), the switch name and its argument(s) are separated by a
-   colon (:) with no intevening spaces. Also remember that Kermit keywords
-   can always be abbreviated by leaving off characters from the right, as
-   long as the result is still unique in its context. Thus "ren /col:f"
-   would be equivalent to "rename /collision:fail".
+   colon (:) with no intervening spaces. Also remember that Kermit
+   keywords can always be abbreviated by leaving off characters from the
+   right, as long as the result is still unique in its context. Thus "ren
+   /col:f" would be equivalent to "rename /collision:fail".
 
    You can change the following preferences for the RENAME command with
    the new SET RENAME command:
@@ -808,7 +854,7 @@ Changing the Character Encoding of Filenames
    RENAME /CONVERT:charset1:charset2 filespec [ directory ]
           Converts filenames from the first character set to the second
           one. The two character sets can be chosen from the SET FILE
-          CHARACTER-SET list; for complete details see [66]this page. For
+          CHARACTER-SET list; for complete details see [68]this page. For
           example suppose you have a file called "Olga_Tañón.txt" on a
           computer where ISO 8859-1 Latin Alphabet 1 is used, and you have
           transported it (e.g. on CDROM) to another computer where the
@@ -829,7 +875,7 @@ Changing the Character Encoding of Filenames
 
 Other New Features
 
-   See the [67]C-Kermit Daily Builds page for details. Very briefly:
+   See the [69]C-Kermit Daily Builds page for details. Very briefly:
 
      * Perhaps most important, modernized makefile targets for the major
        Unix platforms: Linux, Mac OS X, AIX, Solaris, etc. These are
@@ -844,52 +890,40 @@ Other New Features
      * Bigger buffers, more storage for commands, macros, scripts,
        strings, and filename expansion in 64-bit versions and in 32-bit
        versions that support large files.
-     * New options for the RENAME command, allowing you to rename groups
-       of files at once, changing case of letters in the name or changing
-       its character set, removing spaces or changing them to something
-       else, and/or doing anchored or floating or occurrence-based string
-       replacement, described [68]HERE.
-     * Built-in FTP client for VMS. This is the [69]same FTP client Unix
+     * User-settable FTP timeout, works on both the data and control
+       connection.
+     * FTP access to ports higher than 16383.
+     * Built-in FTP client for VMS. This is the [70]same FTP client Unix
        C-Kermit has had since version 8.0, minimally adapted to VMS by
        SMS, supporting binary and Stream_LF file transfer only (in other
        words, nothing to handle RMS files), but otherwise fully functional
        (and scriptable) and theoretically capable of making connections
        secured by SSL (at least it compiles and links OK with SSL - HP SSL
-       1.3 in this case). In the present Alpha release, this is an
-       optional feature requested by including the "i" option in P1 (and
-       by including "CK_SSL" in P3 if you also want SSL, and then also
-       "OPENSSL_DISABLE_OLD_DES_SUPPORT" if necessary). Much testing is
-       needed to determine if it should be included in the final C-Kermit
-       9.0 release.
+       1.3 in this case).
      * Large file support in VMS, also by SMS. Alpha and Itanium only (not
        VAX). VMS C-Kermit was already able to transfer large files, but
        the file-transfer display (numbers and progress bar) and statistics
        were wrong because they used ints. In the present Alpha test
        release, this is an optional feature requested by including the "f"
        option in P1.
-     * User-settable FTP timeout, works on both the data and control
-       connection.
-     * FTP access to ports higher than 16383.
      * New PUTENV command that allows Kermit to pass environment variables
-       to subprocesses (Unix only).
-     * Unix C-Kermit SET TERMINAL TYPE now passes its arguments to
-       subprocesses as an environment variable.
-     * New TOUCH command, many file selection options.
+       to subprocesses (Unix only, "help putenv").
+     * New TOUCH command, many file selection options ("help touch").
      * New DIRECTORY command options and switches (/TOP, /COUNT;
        HDIRECTORY, WDIRECTORY...). To see the ten biggest files in the
        current directory: "dir /top:10 /sort:size /reverse *" or
        equivalently, "hdir /top:10 *". WDIR lists files in reverse
        chronological order, shorthand for "dir /sort:date /reverse".
      * New command FSEEK /FIND:string-or-pattern, seeks to the first line
-       in an FOPEN'd file that contains the given string or matching the
+       in an FOPEN'd file that contains the given string or matches the
        given pattern. Example: Suppose you have a file of lines like this:
 
      quantity   description...
-       in which the first "word" is a number, and a description (for
-       example, the name of an item). Here is how to use FSEEK to quickly
-       get the total quantity of any given item, which is passed as a
-       parameter (either a literal string or a pattern) on the command
-       line:
+       in which the first "word" is a number, followed by a description
+       (for example, the name of an item). Here is how to use FSEEK to
+       quickly get the total quantity of any given item, which is passed
+       as a parameter (either a literal string or a pattern) on the
+       command line:
 
 #!/usr/local/bin/kermit +
 if not def \%1 exit 1 Usage: \fbasename(\%0) string-or-pattern
@@ -920,9 +954,15 @@ exit 0
        sequentially timestamped logs, to seek directly to the date-time
        where you want to start processing. Some other improvements for the
        FOPEN/FREAD/FWRITE/FCLOSE family of commands are included also
-       (perfomance, bug fixes, convenience features), listed in the
-       [70]change log. (Prior to 9.0.299 Alpha.02, the FSEEK /FIND:
+       (performance, bug fixes, convenience features), listed in the
+       [71]change log. (Prior to 9.0.299 Alpha.02, the FSEEK /FIND:
        command always started from the top.)
+     * MIME synonyms for character-set names: A new equivalence between
+       MIME names and Kermit names for character sets, with a new table
+       showing the supported sets [72]HERE (this feature is also
+       illustrated in the [73]Weblog script).
+     * Unix C-Kermit SET TERMINAL TYPE now passes its arguments to
+       subprocesses as an environment variable.
      * SET SESSION-LOG TEXT now strips out ANSI escape sequences from the
        session log.
      * For interacting with POP servers over clear-text or SSL-secured
@@ -930,19 +970,19 @@ exit 0
           + New SSL and TLS "raw" connections (no Telnet protocol).
           + New INPUT command options for reading and capturing (perhaps
             while scanning) continuous incoming text, such as INPUT
-            /NOWRAP (explained [71]HERE).
+            /NOWRAP (explained [74]HERE).
           + New \femailaddress() command to extract the e-mail address
             from an Internet mail message To: or From: line, used in
             fetching mail from POP servers.
           + Improved date parsing commands and functions for parsing the
             different date formats that can appear in e-mail.
           + Production scripts for fetching mail from a secure POP server,
-            available [72]HERE.
+            available [75]HERE.
      * Various features added to make Kermit more useful for writing CGI
        scripts such as INPUT /COUNT:n to INPUT exactly n characters
        (useful for reading form data).
      * New \fpictureinfo() function for getting orientation and dimensions
-       of JPG and GIF images, described [73]HERE.
+       of JPG and GIF images, described [76]HERE.
      * New \fgetpidinfo() function for testing whether a given process
        exists.
      * \fkwdvalue() function fixed to allow multiword values.
@@ -954,11 +994,12 @@ exit 0
        exists.
      * New \fsqueeze(s1) function removes leading and trailing whitespace
        from string s1, changes tabs to spaces, squeezing each run of
-       repeated whitespace characters to a single space (Alpha.02).
+       repeated whitespace characters to a single space.
      * Compact substring notation: \s(somestring[12:18]) is the same as
        \fsubstring(\m(somestring),12,18), i.e. the substring starting at
-       position 12, 18 charcters long. \s(somestring[12_18]) means
-       characters 12 through 18 of the string (7 characters).
+       position 12, 18 characters long. \s(somestring[12_18]) means
+       characters 12 through 18 of the string (7 characters). Also,
+       \s(somestring[17.]) returns character number 17 of somestring.
      * The string indexing functions now accept an optional trailing
        argument specifying the occurrence number of the target string.
        Likewise, \fword() can fetch words from the right as well as the
@@ -972,7 +1013,7 @@ exit 0
        recently entered file specification.
      * In Unix, the ability to log a terminal session to a serial port,
        for use with speaking devices or serial printers; described
-       [74]HERE. Also for the same purpose, SET SESSION-LOG
+       [77]HERE. Also for the same purpose, SET SESSION-LOG
        NULL-PADDED-LINES for a speech synthesizer than needed this.
      * Adaptation to OpenSSL 0.9.8 and 1.0.0.
      * Lifted the restriction on having a remote Kermit program send
@@ -986,12 +1027,9 @@ exit 0
        would send the results (output) back to the client as a file
        transfer with "destination screen", but of course the remote has no
        screen.
-     * [75]MIME synonyms for character-set names were introduced in
-       Alpha.05. Nobody seemed to notice that after that, character-set
-       selection didn't work at all. Anyway, now it's fixed.
-     * Added XMESSAGE, which is to MESSAGE (Alpha.03) as XECHO is ECHO: it
+     * Added XMESSAGE, which is to [78]MESSAGE as XECHO is ECHO: it
        outputs a string with no line terminator DEBUG MESSAGE is ON.
-     * Fixed \recurse() to not dump core when invoked with no arguments.
+     * Fixed \frecurse() to not dump core when invoked with no arguments.
      * Improved text for HELP FUNCTION SPLIT and HELP FUNCTION WORD.
      * Patches for Debian 6.0 "Squeeze" from Ian Beckwith.
      * \fcontents(\&a[3]) got an error if the array was declared but its
@@ -1004,7 +1042,7 @@ exit 0
        old BSD-style ptys. Thanks to Gary Mills for this one, who noticed
        that he couldn't have more than 48 C-Kermit SSH sessions going at
        once and figured out why.
-     * As noted [76]below DES encryption is being retired from many
+     * As noted [79]below DES encryption is being retired from many
        platforms and libraries that once used it. I changed the Solaris
        and Linux OpenSSL builds to account for this by testing for it. I
        probably should also add a OMITDES option to omit DES even if it is
@@ -1018,21 +1056,21 @@ exit 0
        distribution.
      * \fjoin(), which is the inverse function of fsplit() now accepts CSV
        and TSV as a second argument, to transform an array into a
-       comma-separated or tab-separated value list, as described [77]HERE.
+       comma-separated or tab-separated value list, as described [80]HERE.
      * Even in 2010, Unix distributions continue to change their UUCP
-       lockfile conventions. Alpha.08 contains support from Joop Boonen
-       for OpenSuse >= 11.3 and recent Debian, which no longer have
+       lockfile conventions. C-Kermit 9.0 contains support from Joop
+       Boonen for OpenSuSE >= 11.3 and recent Debian, which no longer have
        baudboy.h, which first appeared in Red Hat 7.2 in 2003.
      * From Lewis McCarthy:
 
      Based on code inspection, C-Kermit appears to have an SSL-related
      security vulnerability analogous to that identified as CVE-2009-3767
      (see e.g.
-     [78]http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3767).
+     [81]http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3767).
 
      I'm attaching a patch for this issue relative to the revision of
      ck_ssl.c obtained from a copy of
-     [79]http://www.columbia.edu/kermit/ftp/test/tar/x.zip downloaded on
+     [82]http://www.columbia.edu/kermit/ftp/test/tar/x.zip downloaded on
      2010/07/30, which I believe is the latest.
      When this flaw was first widely publicized at last year's Black Hat
      conference, it was claimed that some public certificate authorities
@@ -1040,8 +1078,8 @@ exit 0
      class of vulnerability. As far as I know they have not revealed
      specifically which public CA(s) had been found issuing such
      certificates. Some references:
-          + [80]http://www.mseclab.com/?p=180
-          + [81]http://www.theregister.co.uk/2009/07/30/universal_ssl_cert
+          + [83]http://www.mseclab.com/?p=180
+          + [84]http://www.theregister.co.uk/2009/07/30/universal_ssl_cert
             ificate/
 
      * Peter Eichhorn reported that "RENAME ../x ." didn't work; fixed
@@ -1051,13 +1089,8 @@ exit 0
        dangerous. For safety FCLOSE has to require a specific channel
        number or the word ALL.
      * Added \fstrcmp(s1,s2,case,start,length), which has the advantage
-       over IF EQU,LGT,LLT that case senstivity can be specified as a
+       over IF EQU,LGT,LLT that case sensitivity can be specified as a
        function arg, and also substrings can be specified.
-     * Fixed a subtle flaw in the [82]CSV feature that was added in
-       Alpha.06, namely that if the last item in a comma separated list
-       was enclosed within doublequotes with a trailing space after the
-       closing doublequote, a spurious empty final element would be
-       created in the result array.
      * New built-in functions:
 
         \fcvtcsets(string,cs1,cs2)
@@ -1073,13 +1106,9 @@ exit 0
 
        For the motivation for these features and an application that uses
        them to analyze web logs, see the Weblog script below.
-     * MIME Character-Set Names: A new equivalence between MIME names and
-       Kermit names for character sets, with a new table showing the
-       supported sets [83]HERE (this feature is also illustrated in the
-       Weblog script).
      *
 
-        Lazy IF Conditions: Third, now you can do this:
+        Lazy IF Conditions: Now you can do this:
                 define foo some number
                 if foo command
 
@@ -1090,15 +1119,15 @@ exit 0
        Of course the old way still works too. But watch out because if the
        variable name is the same as a symbolic IF condition (for example
        COUNT), it won't do what you expected. (IF COUNT was used for loop
-       control in early versions of MS-DOS Kermit, before it got true FOR
+       control in early versions of MS-DOS Kermit, before it got real FOR
        and WHILE loops; it was added to C-Kermit for compatibility, and it
-       can't be removed because it could break existing scripts).
+       can't be removed because that could break existing scripts).
      * Escape sequences are now stripped from text-mode session logs not
        only in CONNECT sessions but also in whatever is logged by the
-       INPUT command; described in the [84]next section.
+       INPUT command; described in the [85]next section.
      * New commands for selectively issuing progress or debugging messages
        from scripts, also described in the next section.
-     * Fix from [85]John Dunlap to prevent the fixed packet-timeout
+     * Fix from [86]John Dunlap to prevent the fixed packet-timeout
        interval from going to an unexpected value.
      * Alpha.04 fixes a problem with FTP connections made from 64-bit Unix
        platforms. All the other changes in this section were to Alpha.03.
@@ -1106,12 +1135,12 @@ exit 0
        possible, as it always has been with Telnet and other connection
        types; suggested by Peter Eichhorn (needs testing).
      * A symbol conflict fixed that prevented successful build on
-       [86]FreeBSD 8.0.
+       [87]FreeBSD 8.0.
      * Fixes from Christian Corti for building on SunOS 4.1.
      * New aixg target for building on AIX with gcc.
      * New aix+ibmssl target. This is nice because the IBM-supplied SSL
        libraries and header files are in a known location; no need to
-       [87]set environment variables giving their locations.
+       [88]set environment variables giving their locations.
      * "Large File Support" is now included by default on Alpha and IA64
        hardware on VMS 7.3 and later, and it should work much better than
        before.
@@ -1140,7 +1169,7 @@ exit 0
        overflowed 31 bits because this is C-Kermit, built with the C
        compiler and the C library (runtime system), which did not support
        long integers until VMS 7.3.
-     * The [88]LISP Operator ROUND now takes an optional second argument
+     * The [89]LISP Operator ROUND now takes an optional second argument
        that specifies the number of places to round to, e.g.
        (ROUND dollars 2) rounds dollars to 2 decimal places.
      * Improved pattern matching in many commands for both strings and
@@ -1153,10 +1182,10 @@ Incompatibilities
    backwards compatibility. A script written for a previous Kermit release
    should run the same way in the new release.
 
-   There's one exception this time. The [89]\fsplit() function is
+   There's one exception this time. The [90]\fsplit() function is
    incredibly handy, it can do almost anything, up to and including
    parsing a LISP program (the underlying code is the basis of the
-   [90]S-Expression interpreter). But did you ever try to use it to parse
+   [91]S-Expression interpreter). But did you ever try to use it to parse
    (say) a Tab-Separated-List (TSV file) or Comma-Separated-List (CSV)? It
    works as expected as long as the data contains only 7-bit characters.
    But if your data contains (say) Spanish or German or Russian text
@@ -1200,7 +1229,7 @@ What's Not In C-Kermit 9.0
        sites having a policy against installing any application that does
        not come as an RPM). In the meantime, here's a page that describes
        some Kermit-specific issues in package construction:
-       [91]ckpackages.html.
+       [92]ckpackages.html.
 
 And a Loose End...
 Using External File-Transfer Protocols on Secure Connections
@@ -1271,7 +1300,7 @@ Using External File-Transfer Protocols on Secure Connections
    side. It's as if the path between the pty slave and master lacks flow
    control; I deliver a valid data stream to the pty slave and the master
    gets bits and pieces. This impression is bolstered somewhat by the
-   "[92]man 7 pty" page in HP-UX, which talks about some special modes for
+   "[93]man 7 pty" page in HP-UX, which talks about some special modes for
    ptys that turn off all termio processing and guarantee a
    flow-controlled reliable stream of bytes in both directions - a feature
    that seems to be specific to HP-UX, and exactly the one we need
@@ -1312,7 +1341,7 @@ Using External File-Transfer Protocols on Secure Connections
    rzsz, crzsz, and lrzsz. We know that some of these have quirks
    regarding standard i/o, etc, which is one of the reasons for using ptys
    in the first place, and i/o does work - just not reliably. Anyway, the
-   1100 lines or so of [93]ckc299.txt, starting just below where it says
+   1100 lines or so of [94]ckc299.txt, starting just below where it says
    "--- Dev.27 ---" tell the full story. At this point I have to give up
    and move on; it might be more productive to let somebody else who has
    more experience with ptys take a look at it - if indeed anyone still
@@ -1326,7 +1355,7 @@ Using External File-Transfer Protocols on Secure Connections
      make targetname KFLAGS=-DYTTPTYCMD (builds with yttptycmd())
      make targetname KFLAGS=-DZTTPTYCMD (builds with zttptycmd())
 
-   These are all in [94]ckutio.c. As noted, the second one works only for
+   These are all in [95]ckutio.c. As noted, the second one works only for
    Linux, FreeBSD, NetBSD, and Mac OS X, because it uses non-POSIX,
    non-portable openpty(). If you want to try it on some other platform
    that has openpty(), you can build it like this:
@@ -1353,9 +1382,9 @@ Using External File-Transfer Protocols on Secure Connections
 
 Demonstration: Fetch Mail from POP Server Secured by SSL
 
-   [95]pop.ksc is a fully elaborated production script for fetching one's
+   [96]pop.ksc is a fully elaborated production script for fetching one's
    mail from a POP3 server over a connection secured by SSL. For
-   explanation and documentation, [96]CLICK HERE. [97]mailcheck is a
+   explanation and documentation, [97]CLICK HERE. [98]mailcheck is a
    wrapper for the pop.ksc script, which collects your password one time,
    and then checks for new mail every 5 minutes (or other selected
    interval) and calls pop.ksc to fetch it if there is any.
@@ -1364,7 +1393,7 @@ Demonstration: HP Switch Configuration Backup
 
    A common use for Kermit software is to make automated backups of the
    configuration of network switches and routers, such as those made by
-   Cisco or Hewlett-Packard (although [98]tftp can be used for this, it is
+   Cisco or Hewlett-Packard (although [99]tftp can be used for this, it is
    not available in all such devices; Kermit, however, works with those
    that have tftp as well as those that don't).
 
@@ -1390,8 +1419,8 @@ Demonstration: HP Switch Configuration Backup
    for data that is read by INPUT commands and therefore works for scripts
    too.
 
-   A sample HP Switch Configuration Backup script is [99]HERE, and its
-   data file is [100]HERE. This script also illustrates some other new
+   A sample HP Switch Configuration Backup script is [100]HERE, and its
+   data file is [101]HERE. This script also illustrates some other new
    features of Alpha.03:
 
    MESSAGE text
@@ -1413,7 +1442,7 @@ Demonstration: HP Switch Configuration Backup
    SET DEBUG MESSAGE { ON, OFF, STDERR }
           ON means MESSAGE commands should print to standard output; OFF
           means they shouldn't print anything; STDERR means the messages
-          should be printed to [101]stderr. DEBUG MESSAGE is OFF by
+          should be printed to [102]stderr. DEBUG MESSAGE is OFF by
           default, i.e. unless you SET it to ON or STDERR.
 
    IF DEBUG command
@@ -1434,7 +1463,7 @@ if fail exit 1 "FATAL - \v(lastcommand)"
 
 Demonstration: HP iLO Blade Configuration
 
-   [102]THIS DOCUMENT describes a script in production use at Columbia
+   [103]THIS DOCUMENT describes a script in production use at Columbia
    University for configuring and deploying racks full of HP blade servers
    through their "integrated Lights Out" (iLO) management interface,
    bypassing the tedious and error-prone process of configuring the
@@ -1446,7 +1475,7 @@ Demonstration: HP iLO Blade Configuration
 
 Demonstration: IBM/Rolm/Siemens CBX Management
 
-   [103]THIS DOCUMENT describes a suite of scripts (some in production,
+   [104]THIS DOCUMENT describes a suite of scripts (some in production,
    some in development) used to manage the Columbia campus 20,000-line
    main telephone switch, along with about 10 satellite switches at
    off-campus locations. These switches are 1980s technology*, their
@@ -1468,10 +1497,10 @@ Demonstration: CSV and TSV Files
 
    Contents
 
-     * [104]Reading a CSV or TSV Record and Converting it to an Array
-     * [105]Using \fjoin() to create a Comma- or Tab-Separated Value List
+     * [105]Reading a CSV or TSV Record and Converting it to an Array
+     * [106]Using \fjoin() to create a Comma- or Tab-Separated Value List
        from an Array
-     * [106]Using CSV or TSV Files
+     * [107]Using CSV or TSV Files
 
    Comma-Separated Value (CSV) format is commonly output by spreadsheets
    and databases when exporting data into plain-text files for import into
@@ -1485,7 +1514,7 @@ Demonstration: CSV and TSV Files
     3. Fields within records are separated by commas, with zero or more
        whitespace characters (space or tab) before and/or after the comma;
        such whitespace is considered part of the separator.
-    4. Fields with imbedded commas must be enclosed in ASCII doublequote
+    4. Fields with embedded commas must be enclosed in ASCII doublequote
        characters.
     5. Fields with leading or trailing spaces must be enclosed in ASCII
        doublequotes.
@@ -1667,7 +1696,7 @@ C-Kermit>
 
 Using \fjoin() to create Comma- or Tab-Separated Value Lists from Arrays
 
-   In C-Kermit 9.0, \fsplit()'s inverse function, [107]\fjoin() received
+   In C-Kermit 9.0, \fsplit()'s inverse function, [108]\fjoin() received
    the capability of converting an array into a comma-separated or a
    tab-separated value list. Thus, given a CSV, if you split it into an
    array with \fsplit() and then join the array with \fjoin(), giving each
@@ -1681,13 +1710,13 @@ Using \fjoin() to create Comma- or Tab-Separated Value Lists from Arrays
    \fjoin(&a,CSV)
           Given the array \&a[] or any other valid array designator, joins
           its elements into a comma-separated list according to the
-          [108]rules listed above.
+          [109]rules listed above.
 
    \fjoin(&a,TSV)
           Joins the elements of the given array into a tab-separated list,
           also described above.
 
-   [109]Previous calling conventions for \fjoin() are undisturbed,
+   [110]Previous calling conventions for \fjoin() are undisturbed,
    including the ability to specify a portion of an array, rather than the
    whole array:
 
@@ -1848,7 +1877,7 @@ define alphabet abcdefghijklmnopqrstuvwxyz
 
    This defines a macro named alphabet and gives it the value
    abcdefghijklmnopqrstuvwxyz. A more convenient notation (added in
-   C-Kermit 7.0, see [110]Table 2) for this is:
+   C-Kermit 7.0, see [111]Table 2) for this is:
 
 .alphabet = abcdefghijklmnopqrstuvwxyz
 
@@ -1877,17 +1906,17 @@ Alphabet backwards = zyxwvutsrqponmlkjihgfedcba
 .alphabet = abcdefghijklmnopqrstuvwxyz
 .backwards := \freverse(\m(alphabet))
 
-   [111]Any command starting with a period is an assignment, and the
+   [112]Any command starting with a period is an assignment, and the
    operator (= or :=) tells what to do with the right-hand side before
    making the assignment.
 
    In both the DEFINE and ASSIGN commands, the variable name itself is
    taken literally. It is also possible, however, to have Kermit compute
-   the variable name. This is done (as described in [112]Using C-Kermit,
+   the variable name. This is done (as described in [113]Using C-Kermit,
    2nd Ed., p.457), using parallel commands that start with underscore:
    _DEFINE and _ASSIGN (alias _DEF and _ASG). These are just like DEFINE
    and ASSIGN except they evaluate the variable name before making the
-   assigment. For example:
+   assignment. For example:
 
 define \%a one
 _define \%a\%a\%a 111
@@ -1907,8 +1936,8 @@ _define \%a\%a\%a \m(number)
    would give the macro a value of "\m(number)".
 
    You can use the _ASSIGN command to create any kind of data structure
-   you want; you can find some examples in the [113]Object-Oriented
-   Programming section of the [114]Kermit Script Library. In the following
+   you want; you can find some examples in the [114]Object-Oriented
+   Programming section of the [115]Kermit Script Library. In the following
    program we use this capability to create a two-dimensional array, or
    matrix, to hold the all the elements of the CSV file, and then to
    display the matrix:
@@ -1961,15 +1990,17 @@ for \%i 1 \%r 1 {                       # Loop through rows
 
 Demonstration Scripts for Webmasters
 
-   [115]ksitemap
+   These scripts all use new features of C-Kermit 9.0.
+
+   [116]ksitemap
           A C-Kermit 9.0 script to build sitemap.xml for a website,
           complete with Google image extensions (this is the file used by
           webmasters to get their sites crawled and indexed optimally).
 
-   [116]The Weblog Script
+   [117]The Weblog Script
           Reads a web log, extracts the Google searches, normalizes the
           search strings, and prints the top 20 searches, along with their
-          counts. Documented [117]HERE.
+          counts.
 
    [118]The Amazon Script
           Reads an Amazon Associate orders report and lists the products
@@ -1977,16 +2008,14 @@ Demonstration Scripts for Webmasters
           clicks on each.
 
    [119]Photoalbum
-          Makes a website from a collecion of JPG images. For explanation
-          and documentation, [120]CLICK HERE. Requires [121]C-Kermit 9.0
-          or later.
+          Makes a website from a collection of JPG images.
 
-            [122]Home [123]Kermit 95 [124]C-Kermit [125]Scripts [126]Current
-   [127]New [128]FAQ  [129]Support
+            [120]Home [121]Kermit 95 [122]C-Kermit [123]Scripts [124]Current
+   [125]New [126]FAQ  [127]Support
 
 
-    C-Kermit 9.0 / [130]The Kermit Project / [131]Columbia University /
-    [132]kermit@columbia.edu / [133]validate
+    C-Kermit 9.0 / [128]The Kermit Project / [129]Columbia University /
+    [130]kermit@columbia.edu / [131]validate
 
 References
 
@@ -2000,126 +2029,124 @@ References
    8. http://www.columbia.edu/kermit/whatsnew.html
    9. http://www.columbia.edu/kermit/faq.html
   10. http://www.columbia.edu/kermit/support.html
-  11. http://www.columbia.edu/kermit/ck90tables.html
-  12. http://www.amazon.com/gp/product/1555581641?ie=UTF8&tag=aleidmoreldom-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1555581641
-  13. http://www.columbia.edu/kermit/ckermit.html#download
-  14. http://www.columbia.edu/kermit/ckermit90.html#LargeFiles
-  15. http://www.columbia.edu/kermit/ckermit90.html#TestLargeFiles
-  16. http://www.columbia.edu/kermit/ckermit90.html#Bignums
-  17. http://www.columbia.edu/kermit/ckermit90.html#force3
-  18. http://www.columbia.edu/kermit/ckermit90.html#Vareval
-  19. http://www.columbia.edu/kermit/ckermit90.html#rename
-  20. http://www.columbia.edu/kermit/ckermit90.html#Other
-  21. http://www.columbia.edu/kermit/ckermit90.html#Incompatibilities
-  22. http://www.columbia.edu/kermit/ckermit90.html#NotIn9.0
-  23. http://www.columbia.edu/kermit/ckermit90.html#LooseEnd
-  24. http://www.columbia.edu/kermit/ckermit90.html#pop
-  25. http://www.columbia.edu/kermit/ckermit90.html#HPswitch
-  26. http://www.columbia.edu/kermit/ckermit90.html#iLO
-  27. http://www.columbia.edu/kermit/ckermit90.html#Rolm
-  28. http://www.columbia.edu/kermit/ckermit90.html#CSV
-  29. http://www.columbia.edu/kermit/ckermit90.html#Otherdemos
-  30. http://www.columbia.edu/kermit/ck60manual.html
-  31. http://www.amazon.com/gp/product/B002ACPF9M?ie=UTF8&tag=aleidmoreldom-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=B002ACPF9M
-  32. http://www.columbia.edu/kermit/ckermit70.html
-  33. http://www.columbia.edu/kermit/ckermit80.html
-  34. http://www.columbia.edu/kermit/ckscripts.html
-  35. http://www.columbia.edu/kermit/dec20.html
-  36. mailto:fdc@columbia.edu
-  37. http://www.columbia.edu/kermit/cu-bsd-license.html
-  38. http://www.columbia.edu/kermit/ckermit90.html#LargeFiles
-  39. http://www.columbia.edu/kermit/ck90tables.html
-  40. http://www.columbia.edu/kermit/ck90tables.html
-  41. http://www.columbia.edu/kermit/ckermit90.html#force3
-  42. http://www.columbia.edu/kermit/ckermit90.html#Vareval
-  43. http://www.columbia.edu/kermit/ckrename.html
-  44. http://www.columbia.edu/kermit/csv.html
-  45. http://www.columbia.edu/kermit/csetnames.html
-  46. http://www.columbia.edu/kermit/ckermit90.html#HPswitch
-  47. http://www.columbia.edu/kermit/ckdaily.html
-  48. http://www.columbia.edu/kermit/cu-bsd-license.html
-  49. http://www.opensource.org/
-  50. http://kermit.columbia.edu/ck90tables.html#LF
-  51. ftp://kermit.columbia.edu/kermit/utils/bigfile.c
-  52. http://www.columbia.edu/kermit/ckermit80.html#x9
-  53. http://www.columbia.edu/kermit/ck90tables.html#LF
-  54. ftp://kermit.columbia.edu/kermit/scripts/ckermit/easter2
-  55. http://www.columbia.edu/kermit/em-apex.html
-  56. http://www.iridium.com/
-  57. http://science1.nasa.gov/science-news/science-at-nasa/2006/09jan_electrichurricanes/
-  58. http://www.columbia.edu/kermit/ek.html
-  59. ftp://kermit.columbia.edu/kermit/ek/simirid/
+  11. http://www.columbia.edu/cu/computinghistory/books/#menagerie
+  12. http://www.columbia.edu/kermit/ck90tables.html
+  13. http://www.amazon.com/gp/product/1555581641?ie=UTF8&tag=aleidmoreldom-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1555581641
+  14. http://www.columbia.edu/kermit/ckermit.html#download
+  15. http://www.columbia.edu/kermit/ckermit90.html#LargeFiles
+  16. http://www.columbia.edu/kermit/ckermit90.html#TestLargeFiles
+  17. http://www.columbia.edu/kermit/ckermit90.html#Bignums
+  18. http://www.columbia.edu/kermit/ckermit90.html#force3
+  19. http://www.columbia.edu/kermit/ckermit90.html#Vareval
+  20. http://www.columbia.edu/kermit/ckermit90.html#rename
+  21. http://www.columbia.edu/kermit/ckermit90.html#Other
+  22. http://www.columbia.edu/kermit/ckermit90.html#Incompatibilities
+  23. http://www.columbia.edu/kermit/ckermit90.html#NotIn9.0
+  24. http://www.columbia.edu/kermit/ckermit90.html#LooseEnd
+  25. http://www.columbia.edu/kermit/ckermit90.html#pop
+  26. http://www.columbia.edu/kermit/ckermit90.html#HPswitch
+  27. http://www.columbia.edu/kermit/ckermit90.html#iLO
+  28. http://www.columbia.edu/kermit/ckermit90.html#Rolm
+  29. http://www.columbia.edu/kermit/ckermit90.html#CSV
+  30. http://www.columbia.edu/kermit/ckermit90.html#Otherdemos
+  31. http://www.columbia.edu/kermit/ck60manual.html
+  32. http://www.amazon.com/gp/product/B002ACPF9M?ie=UTF8&tag=aleidmoreldom-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=B002ACPF9M
+  33. http://www.columbia.edu/kermit/ckermit70.html
+  34. http://www.columbia.edu/kermit/ckermit80.html
+  35. http://www.columbia.edu/kermit/ckscripts.html
+  36. http://www.columbia.edu/cu/computinghistory/dec20.html
+  37. mailto:fdc@columbia.edu
+  38. http://www.columbia.edu/kermit/k95.html
+  39. http://www.columbia.edu/kermit/cu-bsd-license.html
+  40. http://www.columbia.edu/kermit/ckermit90.html#LargeFiles
+  41. http://www.columbia.edu/kermit/ck90tables.html
+  42. http://www.columbia.edu/kermit/ck90tables.html
+  43. http://www.columbia.edu/kermit/ckermit90.html#force3
+  44. http://www.columbia.edu/kermit/ckermit90.html#Vareval
+  45. http://www.columbia.edu/kermit/ckrename.html
+  46. http://www.columbia.edu/kermit/csv.html
+  47. http://www.columbia.edu/kermit/csetnames.html
+  48. http://www.columbia.edu/kermit/ckermit90.html#HPswitch
+  49. http://www.columbia.edu/kermit/ckdaily.html
+  50. http://www.columbia.edu/kermit/cu-bsd-license.html
+  51. http://www.opensource.org/
+  52. http://kermit.columbia.edu/ck90tables.html#LF
+  53. ftp://kermit.columbia.edu/kermit/utils/bigfile.c
+  54. http://www.columbia.edu/kermit/ckermit80.html#x9
+  55. http://www.columbia.edu/kermit/ck90tables.html#LF
+  56. ftp://kermit.columbia.edu/kermit/scripts/ckermit/easter2
+  57. http://www.columbia.edu/kermit/em-apex.html
+  58. http://www.iridium.com/
+  59. http://science1.nasa.gov/science-news/science-at-nasa/2006/09jan_electrichurricanes/
   60. http://www.columbia.edu/kermit/ek.html
-  61. http://www.columbia.edu/kermit/ckermit70.html#x7.10.10
-  62. http://www.columbia.edu/kermit/csv.html
-  63. http://www.columbia.edu/kermit/ckermit70.html#x1.11
-  64. http://www.columbia.edu/kermit/ckermit70.html
-  65. http://www.columbia.edu/kermit/ckermit80.html#x9
-  66. http://www.columbia.edu/kermit/csetnames.html
-  67. http://www.columbia.edu/kermit/ckdaily.html
-  68. http://www.columbia.edu/kermit/ckrename.html
-  69. http://www.columbia.edu/kermit/ftpclient.html
-  70. http://www.columbia.edu/kermit/ckdaily.html
-  71. http://www.columbia.edu/kermit/input_nowrap.html
-  72. http://www.columbia.edu/~fdc/mm/index.html
-  73. http://www.columbia.edu/kermit/photoalbum.html
-  74. http://www.columbia.edu/~fdc/kermit/logserial.html
-  75. http://www.columbia.edu/kermit/csetnames.html
-  76. http://www.columbia.edu/kermit/ckermit90.html#NotIn9.0
-  77. http://www.columbia.edu/kermit/csv.html#join
-  78. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3767
-  79. http://www.columbia.edu/kermit/ftp/test/tar/x.zip
-  80. http://www.mseclab.com/?p=180
-  81. http://www.theregister.co.uk/2009/07/30/universal_ssl_certificate/
-  82. http://www.columbia.edu/kermit/csv.html
-  83. http://www.columbia.edu/kermit/csetnames.html
-  84. http://www.columbia.edu/kermit/ckermit90.html#HPswitch
-  85. http://www.columbia.edu/kermit/em-apex.html
-  86. http://www.freebsd.org/releases/8.0R/announce.html
-  87. http://www.columbia.edu/kermit/security81.html#x4.2.3
-  88. http://www.columbia.edu/kermit/ckermit80.html#x9
-  89. http://www.columbia.edu/kermit/ckermit80.html#x8.7.2
-  90. http://www.columbia.edu/kermit/ckermit80.html#x9
-  91. http://www.columbia.edu/kermit/ckpackages.html
-  92. http://docs.hp.com/en/B9106-90013/pty.7.html
-  93. http://www.columbia.edu/kermit/test/text/ckc299.txt
-  94. http://www.columbia.edu/kermit/test/text/ckutio.c
-  95. http://www.columbia.edu/~fdc/mm/pop
-  96. http://www.columbia.edu/~fdc/mm/
-  97. http://www.columbia.edu/~fdc/mm/mailcheck
-  98. http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol
-  99. http://www.columbia.edu/kermit/ftp/scripts/ckermit/gethpconfig
- 100. http://www.columbia.edu/kermit/ftp/scripts/ckermit/TestSwitches.txt
- 101. http://en.wikipedia.org/wiki/Standard_streams
- 102. http://kermit.columbia.edu/cudocs/ilosetup.html
- 103. http://www.columbia.edu/kermit/cudocs/cbx.html
- 104. http://www.columbia.edu/kermit/ckermit90.html#record
- 105. http://www.columbia.edu/kermit/ckermit90.html#join
- 106. http://www.columbia.edu/kermit/ckermit90.html#file
- 107. http://www.columbia.edu/kermit/ckermit80.html#fjoin
- 108. http://www.columbia.edu/kermit/ckermit90.html#rules
- 109. http://www.columbia.edu/kermit/ckermit80.html#fjoin
- 110. http://www.columbia.edu/kermit/ckermit90.html#varasg
- 111. http://www.columbia.edu/kermit/ckermit70.html#x7.9
- 112. http://www.amazon.com/gp/product/1555581641?ie=UTF8&tag=aleidmoreldom-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1555581641
- 113. http://www.columbia.edu/kermit/ckscripts.html#oops
- 114. http://www.columbia.edu/kermit/ckscripts.html
- 115. http://www.columbia.edu/kermit/ksitemap.html
- 116. http://kermit.columbia.edu/ftp/scripts/ckermit/weblog
+  61. ftp://kermit.columbia.edu/kermit/ek/simirid/
+  62. http://www.columbia.edu/kermit/ek.html
+  63. http://www.columbia.edu/kermit/ckermit70.html#x7.10.10
+  64. http://www.columbia.edu/kermit/csv.html
+  65. http://www.columbia.edu/kermit/ckermit70.html#x1.11
+  66. http://www.columbia.edu/kermit/ckermit70.html
+  67. http://www.columbia.edu/kermit/ckermit80.html#x9
+  68. http://www.columbia.edu/kermit/csetnames.html
+  69. http://www.columbia.edu/kermit/ckdaily.html
+  70. http://www.columbia.edu/kermit/ftpclient.html
+  71. http://www.columbia.edu/kermit/ckdaily.html
+  72. http://www.columbia.edu/kermit/csetnames.html
+  73. http://www.columbia.edu/kermit/ckermit90.html#Otherdemos
+  74. http://www.columbia.edu/kermit/input_nowrap.html
+  75. http://www.columbia.edu/~fdc/mm/index.html
+  76. http://www.columbia.edu/kermit/photoalbum.html
+  77. http://www.columbia.edu/~fdc/kermit/logserial.html
+  78. http://www.columbia.edu/kermit/ckermit90.html#message
+  79. http://www.columbia.edu/kermit/ckermit90.html#NotIn9.0
+  80. http://www.columbia.edu/kermit/csv.html#join
+  81. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3767
+  82. http://www.columbia.edu/kermit/ftp/test/tar/x.zip
+  83. http://www.mseclab.com/?p=180
+  84. http://www.theregister.co.uk/2009/07/30/universal_ssl_certificate/
+  85. http://www.columbia.edu/kermit/ckermit90.html#HPswitch
+  86. http://www.columbia.edu/kermit/em-apex.html
+  87. http://www.freebsd.org/releases/8.0R/announce.html
+  88. http://www.columbia.edu/kermit/security81.html#x4.2.3
+  89. http://www.columbia.edu/kermit/ckermit80.html#x9
+  90. http://www.columbia.edu/kermit/ckermit80.html#x8.7.2
+  91. http://www.columbia.edu/kermit/ckermit80.html#x9
+  92. http://www.columbia.edu/kermit/ckpackages.html
+  93. http://docs.hp.com/en/B9106-90013/pty.7.html
+  94. http://www.columbia.edu/kermit/test/text/ckc299.txt
+  95. http://www.columbia.edu/kermit/test/text/ckutio.c
+  96. http://www.columbia.edu/~fdc/mm/pop
+  97. http://www.columbia.edu/~fdc/mm/
+  98. http://www.columbia.edu/~fdc/mm/mailcheck
+  99. http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol
+ 100. http://www.columbia.edu/kermit/ftp/scripts/ckermit/gethpconfig
+ 101. http://www.columbia.edu/kermit/ftp/scripts/ckermit/TestSwitches.txt
+ 102. http://en.wikipedia.org/wiki/Standard_streams
+ 103. http://kermit.columbia.edu/cudocs/ilosetup.html
+ 104. http://www.columbia.edu/kermit/cudocs/cbx.html
+ 105. http://www.columbia.edu/kermit/ckermit90.html#record
+ 106. http://www.columbia.edu/kermit/ckermit90.html#join
+ 107. http://www.columbia.edu/kermit/ckermit90.html#file
+ 108. http://www.columbia.edu/kermit/ckermit80.html#fjoin
+ 109. http://www.columbia.edu/kermit/ckermit90.html#rules
+ 110. http://www.columbia.edu/kermit/ckermit80.html#fjoin
+ 111. http://www.columbia.edu/kermit/ckermit90.html#varasg
+ 112. http://www.columbia.edu/kermit/ckermit70.html#x7.9
+ 113. http://www.amazon.com/gp/product/1555581641?ie=UTF8&tag=aleidmoreldom-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1555581641
+ 114. http://www.columbia.edu/kermit/ckscripts.html#oops
+ 115. http://www.columbia.edu/kermit/ckscripts.html
+ 116. http://www.columbia.edu/kermit/ksitemap.html
  117. http://www.columbia.edu/kermit/weblog.html
  118. http://kermit.columbia.edu/ftp/scripts/ckermit/amazon
- 119. http://kermit.columbia.edu/ftp/scripts/ckermit/photoalbum
- 120. http://www.columbia.edu/kermit/photoalbum.html
- 121. http://www.columbia.edu/kermit/ck90.html
- 122. http://www.columbia.edu/kermit/index.html
- 123. http://www.columbia.edu/kermit/k95.html
- 124. http://www.columbia.edu/kermit/ckermit.html
- 125. http://www.columbia.edu/kermit/ckscripts.html
- 126. http://www.columbia.edu/kermit/current.html
- 127. http://www.columbia.edu/kermit/whatsnew.html
- 128. http://www.columbia.edu/kermit/faq.html
- 129. http://www.columbia.edu/kermit/support.html
- 130. http://www.columbia.edu/kermit/index.html
- 131. http://www.columbia.edu/
- 132. mailto:kermit@columbia.edu
- 133. http://validator.w3.org/check?uri=http%3A%2F%2Fkermit.columbia.edu%2Fck90.html
+ 119. http://www.columbia.edu/kermit/photoalbum.html
+ 120. http://www.columbia.edu/kermit/index.html
+ 121. http://www.columbia.edu/kermit/k95.html
+ 122. http://www.columbia.edu/kermit/ckermit.html
+ 123. http://www.columbia.edu/kermit/ckscripts.html
+ 124. http://www.columbia.edu/kermit/current.html
+ 125. http://www.columbia.edu/kermit/whatsnew.html
+ 126. http://www.columbia.edu/kermit/faq.html
+ 127. http://www.columbia.edu/kermit/support.html
+ 128. http://www.columbia.edu/kermit/index.html
+ 129. http://www.columbia.edu/
+ 130. mailto:kermit@columbia.edu
+ 131. http://validator.w3.org/check?uri=http%3A%2F%2Fkermit.columbia.edu%2Fckermit90.html