308 lines
19 KiB
HTML
308 lines
19 KiB
HTML
|
<HTML><HEAD><TITLE>Tcl Built-In Commands - file manual page</TITLE></HEAD><BODY>
|
||
|
<DL>
|
||
|
<DD><A HREF="file.htm#M2" NAME="L314">NAME</A>
|
||
|
<DL><DD>file - Manipulate file names and attributes</DL>
|
||
|
<DD><A HREF="file.htm#M3" NAME="L315">SYNOPSIS</A>
|
||
|
<DL>
|
||
|
<DD><B>file </B><I>option</I> <I>name</I> ?<I>arg arg ...</I>?
|
||
|
</DL>
|
||
|
<DD><A HREF="file.htm#M4" NAME="L316">DESCRIPTION</A>
|
||
|
<DL>
|
||
|
<DD><A HREF="file.htm#M5" NAME="L317"><B>file atime </B><I>name</I> ?<B>time</B>?</A>
|
||
|
<DD><A HREF="file.htm#M6" NAME="L318"><B>file attributes </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M7" NAME="L319"><B>file channels ?</B><I>pattern</I>?</A>
|
||
|
<DD><A HREF="file.htm#M8" NAME="L320"><B>file copy </B>?<B>-force</B>? ?<B>- -</B>? <I>source</I> <I>target</I></A>
|
||
|
<DD><A HREF="file.htm#M9" NAME="L321"><B>file delete </B>?<B>-force</B>? ?<B>- -</B>? <I>pathname</I> ?<I>pathname</I> ... ?</A>
|
||
|
<DD><A HREF="file.htm#M10" NAME="L322"><B>file dirname </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M11" NAME="L323"><B>file executable </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M12" NAME="L324"><B>file exists </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M13" NAME="L325"><B>file extension </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M14" NAME="L326"><B>file isdirectory </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M15" NAME="L327"><B>file isfile </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M16" NAME="L328"><B>file join </B><I>name</I> ?<I>name ...</I>?</A>
|
||
|
<DD><A HREF="file.htm#M17" NAME="L329"><B>file lstat </B><I>name varName</I></A>
|
||
|
<DD><A HREF="file.htm#M18" NAME="L330"><B>file mkdir </B><I>dir</I> ?<I>dir</I> ...?</A>
|
||
|
<DD><A HREF="file.htm#M19" NAME="L331"><B>file mtime </B><I>name</I> ?<I>time</I>?</A>
|
||
|
<DD><A HREF="file.htm#M20" NAME="L332"><B>file nativename </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M21" NAME="L333"><B>file owned </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M22" NAME="L334"><B>file pathtype </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M23" NAME="L335"><B>file readable </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M24" NAME="L336"><B>file readlink </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M25" NAME="L337"><B>file rename </B>?<B>-force</B>? ?<B>- -</B>? <I>source</I> <I>target</I></A>
|
||
|
<DD><A HREF="file.htm#M26" NAME="L338"><B>file rename </B>?<B>-force</B>? ?<B>- -</B>? <I>source</I> ?<I>source</I> ...? <I>targetDir</I></A>
|
||
|
<DD><A HREF="file.htm#M27" NAME="L339"><B>file rootname </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M28" NAME="L340"><B>file size </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M29" NAME="L341"><B>file split </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M30" NAME="L342"><B>file stat </B><I>name varName</I></A>
|
||
|
<DD><A HREF="file.htm#M31" NAME="L343"><B>file tail </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M32" NAME="L344"><B>file type </B><I>name</I></A>
|
||
|
<DD><A HREF="file.htm#M33" NAME="L345"><B>file volume</B></A>
|
||
|
<DD><A HREF="file.htm#M34" NAME="L346"><B>file writable </B><I>name</I></A>
|
||
|
</DL>
|
||
|
<DD><A HREF="file.htm#M35" NAME="L347">PORTABILITY ISSUES</A>
|
||
|
<DL>
|
||
|
<DD><A HREF="file.htm#M36" NAME="L348"><B>Unix</B></A>
|
||
|
</DL>
|
||
|
<DD><A HREF="file.htm#M37" NAME="L349">SEE ALSO</A>
|
||
|
<DD><A HREF="file.htm#M38" NAME="L350">KEYWORDS</A>
|
||
|
</DL><HR>
|
||
|
<H3><A NAME="M2">NAME</A></H3>
|
||
|
file - Manipulate file names and attributes
|
||
|
<H3><A NAME="M3">SYNOPSIS</A></H3>
|
||
|
<B>file </B><I>option</I> <I>name</I> ?<I>arg arg ...</I>?<BR>
|
||
|
<H3><A NAME="M4">DESCRIPTION</A></H3>
|
||
|
This command provides several operations on a file's name or attributes.
|
||
|
<I>Name</I> is the name of a file; if it starts with a tilde, then tilde
|
||
|
substitution is done before executing the command (see the manual entry for
|
||
|
<B><A HREF="../TkCmd/filename.htm">filename</A></B> for details). <I>Option</I> indicates what to do with the
|
||
|
file name. Any unique abbreviation for <I>option</I> is acceptable. The
|
||
|
valid options are:
|
||
|
<P>
|
||
|
<DL>
|
||
|
<P><DT><A NAME="M5"><B>file atime </B><I>name</I> ?<B>time</B>?</A><DD>
|
||
|
Returns a decimal string giving the time at which file <I>name</I> was last
|
||
|
accessed. If <I>time</I> is specified, it is an access time to set
|
||
|
for the file. The time is measured in the standard POSIX fashion as
|
||
|
seconds from a fixed starting time (often January 1, 1970). If the file
|
||
|
doesn't exist or its access time cannot be queried or set then an error is
|
||
|
generated. On Windows, FAT file systems do not support access time.
|
||
|
<P><DT><A NAME="M6"><B>file attributes </B><I>name</I></A><DD>
|
||
|
<BR>
|
||
|
<B>file attributes </B><I>name</I> ?<B><A HREF="../TclCmd/option.htm">option</A></B>?
|
||
|
<BR>
|
||
|
<B>file attributes </B><I>name</I> ?<B>option value option value...</B>?
|
||
|
<DL><P><DD>
|
||
|
This subcommand returns or sets platform specific values associated
|
||
|
with a file. The first form returns a list of the platform specific
|
||
|
flags and their values. The second form returns the value for the
|
||
|
specific option. The third form sets one or more of the values. The
|
||
|
values are as follows:
|
||
|
<P>
|
||
|
On Unix, <B>-group</B> gets or sets the group name for the file. A group id
|
||
|
can be given to the command, but it returns a group name. <B>-owner</B> gets
|
||
|
or sets the user name of the owner of the file. The command returns the
|
||
|
owner name, but the numerical id can be passed when setting the
|
||
|
owner. <B>-permissions</B> sets or retrieves the octal code that chmod(1)
|
||
|
uses. This command does also has limited support for setting using the
|
||
|
symbolic attributes for chmod(1), of the form [ugo]?[[+-=][rwxst],[...]],
|
||
|
where multiple symbolic attributes can be separated by commas (example:
|
||
|
<B>u+s,go-rw</B> add sticky bit for user, remove read and write
|
||
|
permissions for group and other). A simplified <B>ls</B> style string,
|
||
|
of the form rwxrwxrwx (must be 9 characters), is also supported
|
||
|
(example: <B>rwxr-xr-t</B> is equivalent to 01755).
|
||
|
<P>
|
||
|
On Windows, <B>-archive</B> gives the value or sets or clears the
|
||
|
archive attribute of the file. <B>-hidden</B> gives the value or sets
|
||
|
or clears the hidden attribute of the file. <B>-longname</B> will
|
||
|
expand each path element to its long version. This attribute cannot be
|
||
|
set. <B>-readonly</B> gives the value or sets or clears the readonly
|
||
|
attribute of the file. <B>-shortname</B> gives a string where every
|
||
|
path element is replaced with its short (8.3) version of the
|
||
|
name. This attribute cannot be set. <B>-system</B> gives or sets or
|
||
|
clears the value of the system attribute of the file.
|
||
|
<P>
|
||
|
On Macintosh, <B>-creator</B> gives or sets the Finder creator type of
|
||
|
the file. <B>-hidden</B> gives or sets or clears the hidden attribute
|
||
|
of the file. <B>-readonly</B> gives or sets or clears the readonly
|
||
|
attribute of the file. Note that directories can only be locked if
|
||
|
File Sharing is turned on. <B>-type</B> gives or sets the Finder file
|
||
|
type for the file.
|
||
|
</DL>
|
||
|
<P><DT><A NAME="M7"><B>file channels ?</B><I>pattern</I>?</A><DD>
|
||
|
If <I>pattern</I> isn't specified, returns a list of names of all
|
||
|
registered open channels in this interpreter. If <I>pattern</I> is
|
||
|
specified, only those names matching <I>pattern</I> are returned. Matching
|
||
|
is determined using the same rules as for <B><A HREF="../TkCmd/string.htm">string match</A></B>.
|
||
|
<P><DT><A NAME="M8"><B>file copy </B>?<B>-force</B>? ?<B>- -</B>? <I>source</I> <I>target</I></A><DD>
|
||
|
<BR>
|
||
|
<B>file copy </B>?<B>-force</B>? ?<B>- -</B>? <I>source</I> ?<I>source</I> ...? <I>targetDir</I>
|
||
|
<DL><P><DD>
|
||
|
The first form makes a copy of the file or directory <I>source</I> under
|
||
|
the pathname <I>target</I>. If <I>target</I> is an existing directory,
|
||
|
then the second form is used. The second form makes a copy inside
|
||
|
<I>targetDir</I> of each <I>source</I> file listed. If a directory is
|
||
|
specified as a <I>source</I>, then the contents of the directory will be
|
||
|
recursively copied into <I>targetDir</I>. Existing files will not be
|
||
|
overwritten unless the <B>-force</B> option is specified. Trying to
|
||
|
overwrite a non-empty directory, overwrite a directory with a file, or a
|
||
|
file with a directory will all result in errors even if <I>-force</I> was
|
||
|
specified. Arguments are processed in the order specified, halting at the
|
||
|
first error, if any. A <B>- -</B> marks the end of switches; the argument
|
||
|
following the <B>- -</B> will be treated as a <I>source</I> even if it
|
||
|
starts with a <B>-</B>.
|
||
|
</DL>
|
||
|
<P><DT><A NAME="M9"><B>file delete </B>?<B>-force</B>? ?<B>- -</B>? <I>pathname</I> ?<I>pathname</I> ... ?</A><DD>
|
||
|
Removes the file or directory specified by each <I>pathname</I> argument.
|
||
|
Non-empty directories will be removed only if the <B>-force</B> option is
|
||
|
specified. Trying to delete a non-existant file is not considered an
|
||
|
error. Trying to delete a read-only file will cause the file to be deleted,
|
||
|
even if the <B>-force</B> flags is not specified. Arguments are processed
|
||
|
in the order specified, halting at the first error, if any. A <B>- -</B>
|
||
|
marks the end of switches; the argument following the <B>- -</B> will be
|
||
|
treated as a <I>pathname</I> even if it starts with a <B>-</B>.
|
||
|
<P><DT><A NAME="M10"><B>file dirname </B><I>name</I></A><DD>
|
||
|
Returns a name comprised of all of the path components in <I>name</I>
|
||
|
excluding the last element. If <I>name</I> is a relative file name and
|
||
|
only contains one path element, then returns ``<B>.</B>'' (or ``<B>:</B>''
|
||
|
on the Macintosh). If <I>name</I> refers to a root directory, then the
|
||
|
root directory is returned. For example,
|
||
|
<PRE><B>file dirname c:/</B></PRE>
|
||
|
returns <B>c:/</B>.
|
||
|
<P>
|
||
|
Note that tilde substitution will only be
|
||
|
performed if it is necessary to complete the command. For example,
|
||
|
<PRE><B>file dirname ~/src/foo.c</B></PRE>
|
||
|
returns <B>~/src</B>, whereas
|
||
|
<PRE><B>file dirname ~</B></PRE>
|
||
|
returns <B>/home</B> (or something similar).
|
||
|
<P><DT><A NAME="M11"><B>file executable </B><I>name</I></A><DD>
|
||
|
Returns <B>1</B> if file <I>name</I> is executable by the current user,
|
||
|
<B>0</B> otherwise.
|
||
|
<P><DT><A NAME="M12"><B>file exists </B><I>name</I></A><DD>
|
||
|
Returns <B>1</B> if file <I>name</I> exists and the current user has
|
||
|
search privileges for the directories leading to it, <B>0</B> otherwise.
|
||
|
<P><DT><A NAME="M13"><B>file extension </B><I>name</I></A><DD>
|
||
|
Returns all of the characters in <I>name</I> after and including the last
|
||
|
dot in the last element of <I>name</I>. If there is no dot in the last
|
||
|
element of <I>name</I> then returns the empty string.
|
||
|
<P><DT><A NAME="M14"><B>file isdirectory </B><I>name</I></A><DD>
|
||
|
Returns <B>1</B> if file <I>name</I> is a directory, <B>0</B> otherwise.
|
||
|
<P><DT><A NAME="M15"><B>file isfile </B><I>name</I></A><DD>
|
||
|
Returns <B>1</B> if file <I>name</I> is a regular file, <B>0</B> otherwise.
|
||
|
<P><DT><A NAME="M16"><B>file join </B><I>name</I> ?<I>name ...</I>?</A><DD>
|
||
|
Takes one or more file names and combines them, using the correct path
|
||
|
separator for the current platform. If a particular <I>name</I> is
|
||
|
relative, then it will be joined to the previous file name argument.
|
||
|
Otherwise, any earlier arguments will be discarded, and joining will
|
||
|
proceed from the current argument. For example,
|
||
|
<PRE><B>file join a b /foo bar</B></PRE>
|
||
|
returns <B>/foo/bar</B>.
|
||
|
<P>Note that any of the names can contain separators, and that the result
|
||
|
is always canonical for the current platform: <B>/</B> for Unix and
|
||
|
Windows, and <B>:</B> for Macintosh.
|
||
|
<P><DT><A NAME="M17"><B>file lstat </B><I>name varName</I></A><DD>
|
||
|
Same as <B>stat</B> option (see below) except uses the <I>lstat</I>
|
||
|
kernel call instead of <I>stat</I>. This means that if <I>name</I>
|
||
|
refers to a symbolic link the information returned in <I>varName</I>
|
||
|
is for the link rather than the file it refers to. On systems that
|
||
|
don't support symbolic links this option behaves exactly the same
|
||
|
as the <B>stat</B> option.
|
||
|
<P><DT><A NAME="M18"><B>file mkdir </B><I>dir</I> ?<I>dir</I> ...?</A><DD>
|
||
|
Creates each directory specified. For each pathname <I>dir</I> specified,
|
||
|
this command will create all non-existing parent directories as
|
||
|
well as <I>dir</I> itself. If an existing directory is specified, then
|
||
|
no action is taken and no error is returned. Trying to overwrite an existing
|
||
|
file with a directory will result in an error. Arguments are processed in
|
||
|
the order specified, halting at the first error, if any.
|
||
|
<P><DT><A NAME="M19"><B>file mtime </B><I>name</I> ?<I>time</I>?</A><DD>
|
||
|
Returns a decimal string giving the time at which file <I>name</I> was last
|
||
|
modified. If <I>time</I> is specified, it is a modification time to set for
|
||
|
the file (equivalent to Unix <B>touch</B>). The time is measured in the
|
||
|
standard POSIX fashion as seconds from a fixed starting time (often January
|
||
|
1, 1970). If the file doesn't exist or its modified time cannot be queried
|
||
|
or set then an error is generated.
|
||
|
<P><DT><A NAME="M20"><B>file nativename </B><I>name</I></A><DD>
|
||
|
Returns the platform-specific name of the file. This is useful if the
|
||
|
filename is needed to pass to a platform-specific call, such as exec
|
||
|
under Windows or AppleScript on the Macintosh.
|
||
|
<P><DT><A NAME="M21"><B>file owned </B><I>name</I></A><DD>
|
||
|
Returns <B>1</B> if file <I>name</I> is owned by the current user, <B>0</B>
|
||
|
otherwise.
|
||
|
<P><DT><A NAME="M22"><B>file pathtype </B><I>name</I></A><DD>
|
||
|
Returns one of <B>absolute</B>, <B>relative</B>, <B>volumerelative</B>. If
|
||
|
<I>name</I> refers to a specific file on a specific volume, the path type
|
||
|
will be <B>absolute</B>. If <I>name</I> refers to a file relative to the
|
||
|
current working directory, then the path type will be <B>relative</B>. If
|
||
|
<I>name</I> refers to a file relative to the current working directory on
|
||
|
a specified volume, or to a specific file on the current working volume, then
|
||
|
the file type is <B>volumerelative</B>.
|
||
|
<P><DT><A NAME="M23"><B>file readable </B><I>name</I></A><DD>
|
||
|
Returns <B>1</B> if file <I>name</I> is readable by the current user,
|
||
|
<B>0</B> otherwise.
|
||
|
<P><DT><A NAME="M24"><B>file readlink </B><I>name</I></A><DD>
|
||
|
Returns the value of the symbolic link given by <I>name</I> (i.e. the name
|
||
|
of the file it points to). If <I>name</I> isn't a symbolic link or its
|
||
|
value cannot be read, then an error is returned. On systems that don't
|
||
|
support symbolic links this option is undefined.
|
||
|
<P><DT><A NAME="M25"><B>file rename </B>?<B>-force</B>? ?<B>- -</B>? <I>source</I> <I>target</I></A>
|
||
|
<DT><A NAME="M26"><B>file rename </B>?<B>-force</B>? ?<B>- -</B>? <I>source</I> ?<I>source</I> ...? <I>targetDir</I></A><DD>
|
||
|
The first form takes the file or directory specified by pathname
|
||
|
<I>source</I> and renames it to <I>target</I>, moving the file if the
|
||
|
pathname <I>target</I> specifies a name in a different directory. If
|
||
|
<I>target</I> is an existing directory, then the second form is used. The
|
||
|
second form moves each <I>source</I> file or directory into the directory
|
||
|
<I>targetDir</I>. Existing files will not be overwritten unless the
|
||
|
<B>-force</B> option is specified. Trying to overwrite a non-empty
|
||
|
directory, overwrite a directory with a file, or a file with a directory
|
||
|
will all result in errors. Arguments are processed in the order specified,
|
||
|
halting at the first error, if any. A <B>- -</B> marks the end of
|
||
|
switches; the argument following the <B>- -</B> will be treated as a
|
||
|
<I>source</I> even if it starts with a <B>-</B>.
|
||
|
<P><DT><A NAME="M27"><B>file rootname </B><I>name</I></A><DD>
|
||
|
Returns all of the characters in <I>name</I> up to but not including the
|
||
|
last ``.'' character in the last component of name. If the last
|
||
|
component of <I>name</I> doesn't contain a dot, then returns <I>name</I>.
|
||
|
<P><DT><A NAME="M28"><B>file size </B><I>name</I></A><DD>
|
||
|
Returns a decimal string giving the size of file <I>name</I> in bytes. If
|
||
|
the file doesn't exist or its size cannot be queried then an error is
|
||
|
generated.
|
||
|
<P><DT><A NAME="M29"><B>file split </B><I>name</I></A><DD>
|
||
|
Returns a list whose elements are the path components in <I>name</I>. The
|
||
|
first element of the list will have the same path type as <I>name</I>.
|
||
|
All other elements will be relative. Path separators will be discarded
|
||
|
unless they are needed ensure that an element is unambiguously relative.
|
||
|
For example, under Unix
|
||
|
<PRE><B>file split /foo/~bar/baz</B></PRE>
|
||
|
returns <B>/ foo ./~bar baz</B> to ensure that later commands
|
||
|
that use the third component do not attempt to perform tilde
|
||
|
substitution.
|
||
|
<P><DT><A NAME="M30"><B>file stat </B><I>name varName</I></A><DD>
|
||
|
Invokes the <B>stat</B> kernel call on <I>name</I>, and uses the variable
|
||
|
given by <I>varName</I> to hold information returned from the kernel call.
|
||
|
<I>VarName</I> is treated as an array variable, and the following elements
|
||
|
of that variable are set: <B>atime</B>, <B>ctime</B>, <B>dev</B>, <B>gid</B>,
|
||
|
<B>ino</B>, <B>mode</B>, <B>mtime</B>, <B>nlink</B>, <B>size</B>, <B>type</B>,
|
||
|
<B>uid</B>. Each element except <B>type</B> is a decimal string with the
|
||
|
value of the corresponding field from the <B>stat</B> return structure;
|
||
|
see the manual entry for <B>stat</B> for details on the meanings of the
|
||
|
values. The <B>type</B> element gives the type of the file in the same
|
||
|
form returned by the command <B>file type</B>. This command returns an
|
||
|
empty string.
|
||
|
<P><DT><A NAME="M31"><B>file tail </B><I>name</I></A><DD>
|
||
|
Returns all of the characters in <I>name</I> after the last directory
|
||
|
separator. If <I>name</I> contains no separators then returns
|
||
|
<I>name</I>.
|
||
|
<P><DT><A NAME="M32"><B>file type </B><I>name</I></A><DD>
|
||
|
Returns a string giving the type of file <I>name</I>, which will be one of
|
||
|
<B>file</B>, <B>directory</B>, <B>characterSpecial</B>, <B>blockSpecial</B>,
|
||
|
<B>fifo</B>, <B>link</B>, or <B><A HREF="../TkCmd/socket.htm">socket</A></B>.
|
||
|
<P><DT><A NAME="M33"><B>file volume</B></A><DD>
|
||
|
Returns the absolute paths to the volumes mounted on the system, as a
|
||
|
proper Tcl list. On the Macintosh, this will be a list of the mounted
|
||
|
drives, both local and network. N.B. if two drives have the same name,
|
||
|
they will both appear on the volume list, but there is currently no way,
|
||
|
from Tcl, to access any but the first of these drives. On UNIX, the
|
||
|
command will always return "/", since all filesystems are locally mounted.
|
||
|
On Windows, it will return a list of the available local drives
|
||
|
(e.g. {a:/ c:/}).
|
||
|
<P><DT><A NAME="M34"><B>file writable </B><I>name</I></A><DD>
|
||
|
Returns <B>1</B> if file <I>name</I> is writable by the current user,
|
||
|
<B>0</B> otherwise.
|
||
|
<P></DL>
|
||
|
<H3><A NAME="M35">PORTABILITY ISSUES</A></H3>
|
||
|
<DL>
|
||
|
<P><DT><A NAME="M36"><B>Unix</B></A><DD>
|
||
|
These commands always operate using the real user and group identifiers,
|
||
|
not the effective ones.
|
||
|
|
||
|
<P></DL>
|
||
|
<H3><A NAME="M37">SEE ALSO</A></H3>
|
||
|
<B><A HREF="../TkCmd/filename.htm">filename</A></B>
|
||
|
<H3><A NAME="M38">KEYWORDS</A></H3>
|
||
|
<A href="../Keywords/A.htm#attributes">attributes</A>, <A href="../Keywords/C.htm#copy files">copy files</A>, <A href="../Keywords/D.htm#delete files">delete files</A>, <A href="../Keywords/D.htm#directory">directory</A>, <A href="../Keywords/F.htm#file">file</A>, <A href="../Keywords/M.htm#move files">move files</A>, <A href="../Keywords/N.htm#name">name</A>, <A href="../Keywords/R.htm#rename files">rename files</A>, <A href="../Keywords/S.htm#stat">stat</A>
|
||
|
<HR><PRE>
|
||
|
<A HREF="../copyright.htm">Copyright</A> © 1993 The Regents of the University of California.
|
||
|
<A HREF="../copyright.htm">Copyright</A> © 1994-1996 Sun Microsystems, Inc.
|
||
|
<A HREF="../copyright.htm">Copyright</A> © 1995-1997 Roger E. Critchlow Jr.</PRE>
|
||
|
</BODY></HTML>
|