[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.
+ * [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
+ 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.)
- - Frank da Cruz [36]fdc@columbia.edu
+ Thanks to (at least) Jeff Altman, William Bader, Ian Beckwith, Nelson
+ Beebe, Gerry Belanger, Joop Boonen, Rob Brown, Christian Corti, John
+ Dunlap, Peter Eichhorn, Carl Friedberg, Terry Kennedy, Günter Knauf,
+ Jason Lehr, Arthur Marsh, Lewis McCarthy, Gary Mills, 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 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 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.
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 accesss 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
platforms that support them. A "large file" is one whose size is
greater than 2^31-1 (2,147,483,647) bytes (2GB-1); that is, one whose
size requires more than 31 bits to represent. Before now, Kermit was
- able to access such files only on 100% 64-bit platforms such as Digital
- Unix, later known as Tru64 Unix. In the new release, Kermit takes
- advantage of the X/Open Single UNIX Specification Version 2 (UNIX 98)
- Large File Support (LFS) specification, which allows 32-bit platforms
- to create, access, and manage files larger than 2GB.
+ able to accesss such files only on 100% 64-bit platforms such as
+ Digital Unix, later known as Tru64 Unix. In the new release, Kermit
+ takes advantage of the X/Open Single UNIX Specification Version 2 (UNIX
+ 98) Large File Support (LFS) specification, which allows 32-bit
+ platforms to create, accesss, and manage files larger than 2GB.
Accommodating large files required code changes in many modules,
affecting not only file transfer, but also file management functions
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.
* 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
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
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.
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:
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
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
+ derefencing 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
\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
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
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
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
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
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
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.
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
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:
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
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
* 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 accesss 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
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
+ 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.
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
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
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
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
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
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
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)
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:
can't be removed because it 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.
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.
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
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
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
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
ckupty.[ch], which are well-proven in terms of portability and of
actually working. They are currently used by SET HOST /PTY for making
terminal connections to external processes. But these routines are
- written on the assumption that the pty is to be accessed interactively,
- and maybe they are setting the fork/pty arrangement up in such a way
- that that's not suitable for file transfer. The Pass One routine is
- called xttptycmd() in ckutio.c.
+ written on the assumption that the pty is to be accesssed
+ interactively, and maybe they are setting the fork/pty arrangement up
+ in such a way that that's not suitable for file transfer. The Pass One
+ routine is called xttptycmd() in ckutio.c.
So in Pass Two I made a second copy of the routine, yttptycmd(), that
manages the pty and fork itself, so all the code is in one place and
it's simple and understandable. But it still doesn't work for Zmodem
downloads. In this routine, I use openpty() to get the pty pair, which
- is not portable, so I can have access to both the master and slave pty
+ is not portable, so I can have accesss to both the master and slave pty
file descriptors. This version can be used only a platforms that have
openpty(): Linux, Mac OS X, NetBSD, etc.
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
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:
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.
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).
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
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
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
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
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
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.
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
\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:
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
.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
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:
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
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
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