command or program. The built-in command might not behave the way
the platform-specific external one did, but many options are
available for customization. Of course the underlying
command or program. The built-in command might not behave the way
the platform-specific external one did, but many options are
available for customization. Of course the underlying
[352]Section 4.5.1 for details.
7. SEND ? prints a list of switches rather than a list of filenames.
If you want to see a list of filenames, use a (system-dependent)
[352]Section 4.5.1 for details.
7. SEND ? prints a list of switches rather than a list of filenames.
If you want to see a list of filenames, use a (system-dependent)
with a message, but without changing the exit status from what it
normally would have been, use the \v(exitstatus) variable, e.g.:
with a message, but without changing the exit status from what it
normally would have been, use the \v(exitstatus) variable, e.g.:
The EXIT status is returned to the system shell or whatever other
process invoked C-Kermit, e.g. in UNIX:
The EXIT status is returned to the system shell or whatever other
process invoked C-Kermit, e.g. in UNIX:
As of C-Kermit 7.0, in the UNIX version only, the COPY and RENAME
commands are built in and do not call the underlying platform's COPY or
RENAME command. This allows them to work in "NOPUSH" versions and other
As of C-Kermit 7.0, in the UNIX version only, the COPY and RENAME
commands are built in and do not call the underlying platform's COPY or
RENAME command. This allows them to work in "NOPUSH" versions and other
- circumstances where it can't access system commands, and it allows file
- copying and renaming to be done portably in scripts. The
+ circumstances where it can't accesss system commands, and it allows
+ file copying and renaming to be done portably in scripts. The
characteristics of the built-in COPY or RENAME include:
* It fails if the source file is a directory or is wild or lacks read
characteristics of the built-in COPY or RENAME include:
* It fails if the source file is a directory or is wild or lacks read
* It fails if the source file is the destination file.
* It allows the destination file to be a directory, in which case the
source file is copied (or renamed) into it with the same name.
* It fails if the source file is the destination file.
* It allows the destination file to be a directory, in which case the
source file is copied (or renamed) into it with the same name.
or other manual. The general syntax is:
MANUAL [ string ]
If the string is omitted, C-Kermit asks the underlying system to
or other manual. The general syntax is:
MANUAL [ string ]
If the string is omitted, C-Kermit asks the underlying system to
1. Only one READ file and one WRITE file can be open at a time.
2. The READ and WRITE commands are strictly line oriented.
3. These commands can not be used with binary files.
1. Only one READ file and one WRITE file can be open at a time.
2. The READ and WRITE commands are strictly line oriented.
3. These commands can not be used with binary files.
5. The syntax is a bit counterintuitive for programmers.
The new file i/o system allows multiple files to be open at once, in
any desired combination of modes (read/write/append) supported by the
operating system, for line, block (record), or character i/o, for
5. The syntax is a bit counterintuitive for programmers.
The new file i/o system allows multiple files to be open at once, in
any desired combination of modes (read/write/append) supported by the
operating system, for line, block (record), or character i/o, for
The new system, however, does not replace the old one, since the old
system still must be used for:
The new system, however, does not replace the old one, since the old
system still must be used for:
- Opens a file for the type of access specified by the switches,
- or for read-only access if no switches are given. Upon success,
+ Opens a file for the type of accesss specified by the switches,
+ or for read-only accesss if no switches are given. Upon success,
a channel number is assigned to this file and stored in the
given variable so you can refer to the open file in subsequent
i/o commands. If the file can not be opened, the FILE OPEN
a channel number is assigned to this file and stored in the
given variable so you can refer to the open file in subsequent
i/o commands. If the file can not be opened, the FILE OPEN
switch is meaningless (but still can be used) in UNIX. In VMS,
Windows, and OS/2, it inhibits end-of-line processing and
conversion, and so should be used for binary files and/or files
switch is meaningless (but still can be used) in UNIX. In VMS,
Windows, and OS/2, it inhibits end-of-line processing and
conversion, and so should be used for binary files and/or files
- It is also possible to use block i/o to manage random-access files with
- fixed-length records (as long as they don't contain NUL characters).
- Suppose, for example, you have a file of "card image" records with
- fixed-field information about customers, such as:
+ It is also possible to use block i/o to manage random-accesss files
+ with fixed-length records (as long as they don't contain NUL
+ characters). Suppose, for example, you have a file of "card image"
+ records with fixed-field information about customers, such as:
first PDIAL command in a PDIAL sequence. Values are:
-2: Unknown because TAPI handled the phone number translation.
first PDIAL command in a PDIAL sequence. Values are:
-2: Unknown because TAPI handled the phone number translation.
front of the number. Another example might be:
def xxx if equal "\v(modem)" "hayes-1200" return \freplace(\%1,$,{,,,,,})
front of the number. Another example might be:
def xxx if equal "\v(modem)" "hayes-1200" return \freplace(\%1,$,{,,,,,})
code before the number. Different providers might be better (e.g.
cheaper) for certain times of day or days of the week, or for dialing
code before the number. Different providers might be better (e.g.
cheaper) for certain times of day or days of the week, or for dialing
Similarly, when the same number might be reached through multiple
providers, it's possible that one provider might not be able to
Similarly, when the same number might be reached through multiple
providers, it's possible that one provider might not be able to
Although C-Kermit includes its own Telnet implementation, you might
need to use an external Telnet program to make certain connections;
Although C-Kermit includes its own Telnet implementation, you might
need to use an external Telnet program to make certain connections;
open any dialout device when its open count indicates that another
process has it open. SHOW COMM (in QNX only) displays the setting, and
if you have a port open, it also shows the current open count (with
open any dialout device when its open count indicates that another
process has it open. SHOW COMM (in QNX only) displays the setting, and
if you have a port open, it also shows the current open count (with
On multiuser systems, it is possible to keep a single, shared,
system-wide connection log, but this is not recommended since (a) it
On multiuser systems, it is possible to keep a single, shared,
system-wide connection log, but this is not recommended since (a) it
- requires you keep a publicly write-accessible logfile (a glaring target
- for mischief), and (b) it would require each user to log to that file
- and not disable logging. A better method for logging connections, in
- UNIX at least, is syslogging (see [429]ckuins.txt Section 15 and
+ requires you keep a publicly write-accesssible logfile (a glaring
+ target for mischief), and (b) it would require each user to log to that
+ file and not disable logging. A better method for logging connections,
+ in UNIX at least, is syslogging (see [429]ckuins.txt Section 15 and
[430]Section 4.2 of the [431]IKSD Administration Guide for details).
2.13. Automatic Connection-Specific Flow Control Selection
[430]Section 4.2 of the [431]IKSD Administration Guide for details).
2.13. Automatic Connection-Specific Flow Control Selection
As noted in the manual, C-Kermit's CONNECT command on UNIX is not a
terminal emulator, but rather a "semitransparent pipe" between the
As noted in the manual, C-Kermit's CONNECT command on UNIX is not a
terminal emulator, but rather a "semitransparent pipe" between the
host to which C-Kermit is connected. The "semitransparent" qualifier is
because of character-set translation as well as several actions taken
by the emulator in response to the characters or strings that pass
host to which C-Kermit is connected. The "semitransparent" qualifier is
because of character-set translation as well as several actions taken
by the emulator in response to the characters or strings that pass
printing, also called Controller printing (as distinct from Autoprint
or line or screen print). It is intended mainly for use on UNIX
workstation consoles (as opposed to remote logins), but with some care
printing, also called Controller printing (as distinct from Autoprint
or line or screen print). It is intended mainly for use on UNIX
workstation consoles (as opposed to remote logins), but with some care
Transparent printing is related to APC by sharing C-Kermit's built-in
ANSI escape-sequence parser to detect "printer on" and "printer off"
Transparent printing is related to APC by sharing C-Kermit's built-in
ANSI escape-sequence parser to detect "printer on" and "printer off"
2. Only the 7-bit forms of the escape sequences are supported. The
8-bit CSI C1 control is not recognized.
3. Autoprint is not supported, since this requires a full-fledged
2. Only the 7-bit forms of the escape sequences are supported. The
8-bit CSI C1 control is not recognized.
3. Autoprint is not supported, since this requires a full-fledged
4. The start-print and stop-print sequences pass through to the screen
(there is no way to avoid this without causing unacceptable delays
or deadlocks in CONNECT mode). Thus if your terminal or emulator
4. The start-print and stop-print sequences pass through to the screen
(there is no way to avoid this without causing unacceptable delays
or deadlocks in CONNECT mode). Thus if your terminal or emulator
- Some sites might not wish to allow access to system commands or
- external programs from within Kermit. Such access, including all the
+ Some sites might not wish to allow accesss to system commands or
+ external programs from within Kermit. Such accesss, including all the
features described here, can be disabled in various ways:
1. When building from source code, include -DNOPUSH among the CFLAGS.
features described here, can be disabled in various ways:
1. When building from source code, include -DNOPUSH among the CFLAGS.
However, we can use some fairly-well established file naming
conventions for this purpose. C-Kermit 7.0 lets you provide lists of
filename patterns that are used to separately determine the file type
However, we can use some fairly-well established file naming
conventions for this purpose. C-Kermit 7.0 lets you provide lists of
filename patterns that are used to separately determine the file type
possibly containing the special characters "*" (asterisk, which matches
any string of zero of more characters) and/or "?" (question mark, which
matches any single character). For example "a*b" matches all files
possibly containing the special characters "*" (asterisk, which matches
any string of zero of more characters) and/or "?" (question mark, which
matches any single character). For example "a*b" matches all files
owner, the members of one or more groups, the system administrator, and
everybody else, might be allowed various combinations of Read, Write,
owner, the members of one or more groups, the system administrator, and
everybody else, might be allowed various combinations of Read, Write,
The permission code goes by different names on different platforms. In
UNIX, it might be called the filemode. In VMS, it is called the file
The permission code goes by different names on different platforms. In
UNIX, it might be called the filemode. In VMS, it is called the file
4.4.2.1.1. UNIX
UNIX supports three categories of users, File Owner, Group, and World,
4.4.2.1.1. UNIX
UNIX supports three categories of users, File Owner, Group, and World,
Thus, a UNIX file's permissions are expressed in 9 bits.
The system-dependent permission string for UNIX is a 3-digit octal
Thus, a UNIX file's permissions are expressed in 9 bits.
The system-dependent permission string for UNIX is a 3-digit octal
4.4.2.1.2. VMS
VMS supports four categories of users, System, File Owner, Group, and
4.4.2.1.2. VMS
VMS supports four categories of users, System, File Owner, Group, and
- World, and four types of file access permission: Read, Write, Execute,
+ World, and four types of file accesss permission: Read, Write, Execute,
and Delete. Thus, a VMS file's permissions are expressed in 16 bits.
The system-dependent protection string for VMS is a 4-digit hexadecimal
and Delete. Thus, a VMS file's permissions are expressed in 16 bits.
The system-dependent protection string for VMS is a 4-digit hexadecimal
whether the file "foo" exists; and it runs an inferior process, which
might be a problem in some environments for resource and/or security
reasons, and won't work at all in a "nopush" environment (e.g. one in
whether the file "foo" exists; and it runs an inferior process, which
might be a problem in some environments for resource and/or security
reasons, and won't work at all in a "nopush" environment (e.g. one in
programs, e.g. in a VMS "captive account").
In C-Kermit 7.0 on VMS and UNIX, and in K95 1.1.19 and later, the
programs, e.g. in a VMS "captive account").
In C-Kermit 7.0 on VMS and UNIX, and in K95 1.1.19 and later, the
shows the "/tmp/foo" file. If you want to see all "foo" files in
the /tmp tree, do "cd /tmp" and then "dir /recursive foo".
* If a file size of -1 is shown, or date-time of 0000-00-00 00:00:00,
shows the "/tmp/foo" file. If you want to see all "foo" files in
the /tmp tree, do "cd /tmp" and then "dir /recursive foo".
* If a file size of -1 is shown, or date-time of 0000-00-00 00:00:00,
the file was denied to C-Kermit.
* In VMS, if FOO.DIR;1 is a directory within your current directory,
"directory foo" and "directory [.foo]" list the files in the [.FOO]
the file was denied to C-Kermit.
* In VMS, if FOO.DIR;1 is a directory within your current directory,
"directory foo" and "directory [.foo]" list the files in the [.FOO]
by using RUN or "!", e.g. in VMS:
run directory /size/date/protection/except=*.obj oofa.*;0
by using RUN or "!", e.g. in VMS:
run directory /size/date/protection/except=*.obj oofa.*;0
Chooses buffered file output; this is the default. UNIX does its
normal sort of disk buffering. The optional size specifies
Kermit's own file output buffer size, and therefore the
Chooses buffered file output; this is the default. UNIX does its
normal sort of disk buffering. The optional size specifies
Kermit's own file output buffer size, and therefore the
- frequency of disk accesses (write() system calls) -- the bigger
- the size, the fewer the disk accesses.
+ frequency of disk accessses (write() system calls) -- the bigger
+ the size, the fewer the disk accessses.
in which the 1MB Solaris 2.4 Sparc executable was transferred over a
SunLink X.25 connection; nothing is known about the actual physical
connection. With a packet length of 8000 and a window size of 30, the
in which the 1MB Solaris 2.4 Sparc executable was transferred over a
SunLink X.25 connection; nothing is known about the actual physical
connection. With a packet length of 8000 and a window size of 30, the
visual aspect of the packet that would be seen by the terminal (or,
more to the point, the emulator, such as K95). This way, only C-Kermit
goes into RECEIVE mode, and not also the terminal emulator through
visual aspect of the packet that would be seen by the terminal (or,
more to the point, the emulator, such as K95). This way, only C-Kermit
goes into RECEIVE mode, and not also the terminal emulator through
- which C-Kermit is accessed. And therefore, it is no longer necessary to
- SET TERMINAL AUTODOWNLOAD OFF to prevent multiple Kermits from going
+ which C-Kermit is accesssed. And therefore, it is no longer necessary
+ to SET TERMINAL AUTODOWNLOAD OFF to prevent multiple Kermits from going
into receive mode at once, but of course it is still necessary to
ensure that, when you have multiple Kermits in a chain, that the
desired one receives the autodownload.
into receive mode at once, but of course it is still necessary to
ensure that, when you have multiple Kermits in a chain, that the
desired one receives the autodownload.
started in interactive mode, and would cause it to exit if it
entered server mode via command-line option.) When C-Kermit is
to be the server, you can use { ENABLE, DISABLE } EXIT to
started in interactive mode, and would cause it to exit if it
entered server mode via command-line option.) When C-Kermit is
to be the server, you can use { ENABLE, DISABLE } EXIT to
When attempting to execute a REMOTE RMDIR, the server can remove only a
single directory, not an entire sequence or tree. The system service
that is called to remove the directory generally requires not only that
When attempting to execute a REMOTE RMDIR, the server can remove only a
single directory, not an entire sequence or tree. The system service
that is called to remove the directory generally requires not only that
In the future, a REMOTE RMDIR /RECURSIVE command (and the accompanying
protocol) might be added. For now, use the equivalent REMOTE HOST
In the future, a REMOTE RMDIR /RECURSIVE command (and the accompanying
protocol) might be added. For now, use the equivalent REMOTE HOST
- and access the various online introductions, FAQs, technical reports,
+ and accesss the various online introductions, FAQs, technical reports,
and other information. For greater depth, order the latest version of
the published Unicode Standard. The following overview contains a great
many oversimplifications and perhaps an opinion or two.
and other information. For greater depth, order the latest version of
the published Unicode Standard. The following overview contains a great
many oversimplifications and perhaps an opinion or two.
bytes in UCS-2 text pose problems for current applications and
transmission methods. And to make matters worse, different hardware
platforms store UCS-2 characters in different byte order. Thus a UCS-2
bytes in UCS-2 text pose problems for current applications and
transmission methods. And to make matters worse, different hardware
platforms store UCS-2 characters in different byte order. Thus a UCS-2
computers with different architecture might have its bytes in the wrong
order (or worse; see [549]Section 6.6.5.1 ).
computers with different architecture might have its bytes in the wrong
order (or worse; see [549]Section 6.6.5.1 ).
storage. Any officially sanctioned method of doing this is called a UCS
Transformation Format, or UTF. One such method, called UTF-16, is
essentially identical with UCS-2 except that it designates certain code
storage. Any officially sanctioned method of doing this is called a UCS
Transformation Format, or UTF. One such method, called UTF-16, is
essentially identical with UCS-2 except that it designates certain code
characters in other planes without having to use full UCS-4. We won't
discuss UTF-16 further here, since at the moment there are no other
planes. Several other UTF's (such as UTF-1, UTF-2, and UTF-7) have
characters in other planes without having to use full UCS-4. We won't
discuss UTF-16 further here, since at the moment there are no other
planes. Several other UTF's (such as UTF-1, UTF-2, and UTF-7) have
conversion between ASCII and UTF-8 is no conversion at all, and
applications or platforms (such as Plan 9 from Bell Labs) that use
UTF-8 "for everything" can still run traditional ASCII-only
conversion between ASCII and UTF-8 is no conversion at all, and
applications or platforms (such as Plan 9 from Bell Labs) that use
UTF-8 "for everything" can still run traditional ASCII-only
ASCII characters are not padded with NUL bytes. But also unlike UCS-2,
there is no transparency for Latin-1 or any other non-ASCII character
set. Every non-ASCII UCS-2 character is represented by a sequence of 2
ASCII characters are not padded with NUL bytes. But also unlike UCS-2,
there is no transparency for Latin-1 or any other non-ASCII character
set. Every non-ASCII UCS-2 character is represented by a sequence of 2
UTF-8 was first used in Plan 9 and soon will be available in Linux. It
will probably spread from there (Unicode in some form is, of course,
UTF-8 was first used in Plan 9 and soon will be available in Linux. It
will probably spread from there (Unicode in some form is, of course,
stated without doubt that C-Kermit's key mapping will not work for
UTF-8 values, since (a) the key map is indexed by 8-bit byte values and
(b) C-Kermit reads keystrokes a byte at a time (these comments do not
stated without doubt that C-Kermit's key mapping will not work for
UTF-8 values, since (a) the key map is indexed by 8-bit byte values and
(b) C-Kermit reads keystrokes a byte at a time (these comments do not
"wide" keycodes and uses them to index a "wide" keymap).
Restrictions: As noted, the CONNECT command does not support UCS-2 as a
"wide" keycodes and uses them to index a "wide" keymap).
Restrictions: As noted, the CONNECT command does not support UCS-2 as a
break characters unless you put them in the include list.
Suppose, for example, you have a file in which each line is a
Tab-separated list of words, numbers, or phrases that might
break characters unless you put them in the include list.
Suppose, for example, you have a file in which each line is a
Tab-separated list of words, numbers, or phrases that might
characters, etc (like something that might have been exported
from a spreadsheet or database), and you want to split only on
Tab; here is a way (\m(line) is a line read from the file):
characters, etc (like something that might have been exported
from a spreadsheet or database), and you want to split only on
Tab; here is a way (\m(line) is a line read from the file):
[a b c d e f g h i j k l m n o p q r s t u v w x y z]
Note that \%* can not be used at top level, since Kermit does not have
[a b c d e f g h i j k l m n o p q r s t u v w x y z]
Note that \%* can not be used at top level, since Kermit does not have
"file:index", or "file.index", and the code above would have worked
just as well (with the corresponding syntax adjustments). But to be
able to use an associative array in a program after the array is built,
"file:index", or "file.index", and the code above would have worked
just as well (with the corresponding syntax adjustments). But to be
able to use an associative array in a program after the array is built,
advance what they are. That's where the chosen notation comes in.
First of all, any macro name that ends with "<xxx>" (where "xxx" is any
advance what they are. That's where the chosen notation comes in.
First of all, any macro name that ends with "<xxx>" (where "xxx" is any
contain the command-line arguments, if any, that appear after "--" or
"=", if any. This array is saved and restored around macro calls;
recall that inside macros it contains the macro argument vector
contain the command-line arguments, if any, that appear after "--" or
"=", if any. This array is saved and restored around macro calls;
recall that inside macros it contains the macro argument vector
440 Change "set terminal byteszie" to "set terminal bytesize".
Change "input Password:" to "input 10 Password".
440 Change "set terminal byteszie" to "set terminal bytesize".
Change "input Password:" to "input 10 Password".
453 There are two incorrectly coded IF statements in the DELIVER macro
definition. Replace both occurrences of "if > \%1 \%3 {" with
"xif > \%i \%3 {" (replace "if" by "xif" and "\%1" with "\%i").
453 There are two incorrectly coded IF statements in the DELIVER macro
definition. Replace both occurrences of "if > \%1 \%3 {" with
"xif > \%i \%3 {" (replace "if" by "xif" and "\%1" with "\%i").
/* source code is granted to the University of Columbia C-Kermit project */
/* to be distributed in binary format only. Please familiarize yourself */
/* with the accompanying LICENSE.P file. */
/* source code is granted to the University of Columbia C-Kermit project */
/* to be distributed in binary format only. Please familiarize yourself */
/* with the accompanying LICENSE.P file. */
The license and distribution terms for any publically available version
or derivative of this code cannot be changed. i.e. this code cannot
The license and distribution terms for any publically available version
or derivative of this code cannot be changed. i.e. this code cannot