tclx man page on IRIX

Man page or keyword search:  
man Server   31559 pages
apropos Keyword Search (all sections)
Output format
IRIX logo
[printable version]



TclX(3Tcl)							    TclX(3Tcl)

NAME
     TclX - Extended Tcl: Extended command set for Tcl

INTRODUCTION
     This man page contains the documentation for all of the extensions that
     are added to Tcl 7.4 by Extended Tcl (TclX 7.4a).	These extensions
     increase Tcl's capabilities by adding new commands to it, without
     changing the syntax of standard Tcl.  Extended Tcl is a superset of
     standard Tcl and is built alongside the standard Tcl sources.  Extended
     Tcl has three basic functional areas:  A set of new commands, a Tcl shell
     (i.e. a Unix shell-style command line and interactive environment),  and
     a user-extensible library of useful Tcl procedures, any of which can be
     automatically loaded on the first attempt to execute it.

     The command descriptions are separated into several sections:

	  o General Commands

	  o Debugging and Development Commands

	  o Unix Access Commands

	  o File Commands

	  o TCP/IP Server Access

	  o File Scanning Commands

	  o Math Commands

	  o List Maninipulation Commands

	  o Keyed Lists

	  o String and Character Manipulation Commands

	  o XPG/3 Message Catalog Commands

	  o Extended Tcl Shell

	  o Help Facility

	  o Tcl Loadable Libraries and Packages

GENERAL COMMANDS
     A set of general, useful Tcl commands, includes a command to begin an
     interactive session with Tcl, a facility for tracing execution, and a
     looping command.

     dirs This procedure lists the directories in the directory stack.

									Page 1

TclX(3Tcl)							    TclX(3Tcl)

     commandloop ?prompt1? ?prompt2?
	  Create an interactive command loop for the current TCL interpreter.
	  This command receives commands from stdin and executes them.	It is
	  useful TCL scripts that do not normally converse interactively with
	  a user through a Tcl command interpreter, but which sometimes want
	  to enter this mode.

	  Prompt1 is a Tcl command  that is evaluated to output a prompt
	  string.  The old value of tcl_prompt1 is saved and it is set to this
	  value for the duration of the command loop.  Prompt2 is a command
	  that is evaluated to output the ``downlevel prompt'', which is the
	  prompt which is issued for continuation input.  The old value of
	  tcl_prompt2 is saved and it is set to this value for the duration of
	  the command loop.

	  When the command terminates, the variables for the prompt hooks will
	  be set to their old value.  If these arguments are not specified,
	  the prompt hooks use their current value.

     echo ?str ...?
	  Writes zero or more strings to standard output, followed by a
	  newline.

     infox option
	  Return information about Extended Tcl, or the current application.
	  The following infox command options are available:

	  version
	       Return the version number of Extended Tcl.  The version number
	       for Extended Tcl is generated by combining the base version of
	       the standard Tcl code with a letter indicating the version of
	       Extended Tcl being used.	 This is the documentation for version
	       7.4a.

	  patchlevel
	       Return the patchlevel for Extended Tcl.

	  have_fchown
	       Return 1 if the fchown system call is available.	 This supports
	       the -fileid option on the chown and chgrp commands.

	  have_fchmod
	       Return 1 if the fchmod system call is available.	 This supports
	       the -fileid option on the chmod command.

	  have_flock
	       Return 1 if the flock command defined,  0 if it is not
	       available.

	  have_fsync
	       Return 1 if the fsync system call is available and the sync
	       command will sync individual files.  0 if it is not available

									Page 2

TclX(3Tcl)							    TclX(3Tcl)

	       and the sync command will always sync all file buffers.

	  have_ftruncate
	       Return 1 if the ftruncate system call is available.  If it is,
	       the ftruncate command -fileid option maybe used.

	  have_msgcats
	       Return 1 if XPG message catalogs are available, 0 if they are
	       not.  The catgets is designed to continue to function without
	       message catalogs, always returning the default string.

	  have_posix_signals
	       Return 1 if Posix signals are available (block and unblock
	       options available for the signal command).  0 is returned if
	       Posix signals are not available.

	  have_sockets
	       Return 1 if sockets are available (server_* suite and fstat
	       localhost and remotehost options).  0 is returned if sockets
	       are not available.

	  have_truncate
	       Return 1 if the truncate of chsize system call is available.
	       If it is, the ftruncate command will work.

	  appname
	       Return the symbolic application name of the current application
	       linked with the Extended Tcl library.  The C variable
	       tclAppName must be set by the application to return an
	       application specific value for this variable.

	  applongname
	       Return a natural language name for the current application. The
	       C variable tclLongAppName must be set by the application to
	       return an application specific value for this variable.

	  appversion
	       Return the version number for the current application.  The C
	       variable tclAppVersion must be set by the application to return
	       an application-specific value for this variable.

	  apppatchlevel
	       Return the patchlevel for the current application.  The C
	       variable tclAppPatchlevel must be set by the application to
	       return an application-specific value for this variable.

     for_array_keys var array_name code
	  This procedure performs a foreach-style loop for each key in the
	  named array.	The break and continue statements work as with
	  foreach.

									Page 3

TclX(3Tcl)							    TclX(3Tcl)

     for_recursive_glob var dirlist globlist code
	  This procedure performs a foreach-style loop over recursively
	  matched files.  All directories in dirlist are recursively searched
	  (breadth-first), comparing each file found against the file glob
	  patterns in globlist.	 For each matched file, the variable var is
	  set to the file path and code is evaluated.  Symbolic links are not
	  followed.

     loop var first limit ?increment? body
	  Loop is a looping command, similar in behavior to the Tcl for
	  statement, except that the loop statement achieves substantially
	  higher performance and is easier to code when the beginning and
	  ending values of a loop are known, and the loop variable is to be
	  incremented by a known, fixed amount every time through the loop.

	   The var argument is the name of a Tcl variable that will contain
	  the loop index.  The loop index is set to the value specified by
	  first.  The Tcl interpreter is invoked upon body zero or more times,
	  where var is incremented by increment every time through the loop,
	  or by one if increment is not specified.  Increment can be negative
	  in which case the loop will count downwards.

	  When var reaches limit, the loop terminates without a subsequent
	  execution of body.  For instance, if the original loop parameters
	  would cause loop to terminate, say first was one, limit was zero and
	  increment was not specified or was non-negative, body is not
	  executed at all and loop returns.

	  The first, limit and increment are integer expressions.  They are
	  only evaulated once at the beginning of the loop.

	  If a continue command is invoked within body then any remaining
	  commands in the current execution of body are skipped, as in the for
	  command.  If a break command is invoked within body then the loop
	  command will return immediately.  Loop returns an empty string.

     popd
	  This procedure pops the top directory entry from the directory stack
	  and make it the current directory.

     pushd ?dir?
	  This procedure pushs the current directory onto the directory stack
	  and cd to the specified directory.  If the directory is not
	  specified, then the current directory is pushed, but remains
	  unchanged.

     recursive_glob dirlist globlist
	  This procedure returns a list of recursively matches files.  All
	  directories in dirlist are recursively searched (breadth-first),
	  comparing each file found against the file glob patterns in
	  globlist.  Symbolic links are not followed.

									Page 4

TclX(3Tcl)							    TclX(3Tcl)

     showproc ?procname ...?
	  This procedure lists the definition of the named procedures.
	  Loading them if it is not already loaded.  If no procedure names are
	  supplied, the definitions of all currently loaded procedures are
	  returned.

     This section contains information on commands and procdures that are
     useful for developing and debugging Tcl scripts.

     cmdtrace level|on ?noeval? ?notruncate? ?procs? ?fileid?
	  Print a trace statement for all commands executed at depth of level
	  or below (1 is the top level).  If on is specified, all commands at
	  any level are traced.	 The following options are available:

	  noeval
	       Causes arguments to be printed unevaluated.  If noeval is
	       specified, the arguments are printed before evaluation.
	       Otherwise, they are printed afterwards.

	       If the command line is longer than 60 characters, it is
	       truncated to 60 and a "..." is postpended to indicate that
	       there was more output than was displayed.  If an evaluated
	       argument contains a space, the entire argument will be enclosed
	       inside of braces (`{}') to allow the reader to visually
	       separate the arguments from each other.

	  notruncate
	       Disables the truncation of commands and evaluated arguments.

	  procs
	       Enables the tracing of procedure calls only.  Commands that
	       aren't procedure calls (i.e. calls to commands that are written
	       in C, C++ or some object-compatible language) are not traced if
	       the procs option is specified.  This option is particularly
	       useful for greatly reducing the output of cmdtrace while
	       debugging.

	  fileid
	       This is a file id as returned by the open command.  If
	       specified, then the trace output will be written to the file
	       rather than stdout.  A stdio buffer flush is done after every
	       line is written so that the trace may be monitored externally
	       or provide useful information for debugging problems that cause
	       core dumps.
     The most common use of this command is to enable tracing to a file during
     the development.  If a failure occurs, a trace is then available when
     needed.  Command tracing will slow down the execution of code, so it
     should be removed when code is debugged.  The following command will
     enable tracing to a file for the remainder of the program:

									Page 5

TclX(3Tcl)							    TclX(3Tcl)

	    cmdtrace on [open cmd.log w]

     cmdtrace off
	  Turn off all tracing.

     cmdtrace depth
	  Returns the current maximum trace level, or zero if trace is
	  disabled.

     edprocs ?proc...?
	  This procedure writes the named procedures, or all currently defined
	  procedures, to a temporary file, then calls an editor on it (as
	  specified by the EDITOR environment variable, or vi if none is
	  specified), then sources the file back in if it was changed.

     profile ?-commands? on

     profile off arrayVar
	  This command is used to collect a performance profile of a Tcl
	  script.  It collects data at the Tcl procedure level. The number of
	  calls to a procedure, and the amount of real and CPU time is
	  collected. Time is also collected for the global context.  The
	  procedure data is collected by bucketing it based on the procedure
	  call stack, this allows determination of how much time is spent in a
	  particular procedure in each of it's calling contexts.

	  The on option enables profile data collection. If the -commands
	  option is specifed, data on all commands within a procedure is
	  collected as well a procedures.  Multiple occurrences of a command
	  within a procedure are not distinguished, but this data may still be
	  useful for analysis.

	  The off option turns off profiling and moves the data collected to
	  the array arrayVar.  The array is address by a list containing the
	  procedure call stack.	 Element zero is the top of the stack, the
	  procedure that the data is for.  The data in each entry is a list
	  consisting of the procedure call count and the real time and CPU
	  time in milliseconds spent in the procedure (and all procedures it
	  called). The list is in the form {count real cpu}.  A Tcl procedure
	  profrep is supplied for reducing the data and producing a report

     profrep profDataVar sortKey ?outFile? ?userTitle?
	  This procedure generates a report from data collect from the profile
	  command.  ProfDataVar is the name of the array containing the data
	  returned by the profile command. SortKey indicates which data value
	  to sort by.  It should be one of "calls", "cpu" or "real".  OutFile
	  is the name of file to write the report to.  If omitted, stdout is
	  assumed.  UserTitle is an optional title line to add to output.

     saveprocs fileName ?proc...?
	  This prodcure saves the definition of the named procedure, or all
	  currently defined procedures if none is specified, to the named

									Page 6

TclX(3Tcl)							    TclX(3Tcl)

	  file.

UNIX ACCESS COMMANDS
     These commands provide access to many basic Unix facilities, including
     process handling, date and time processing, signal handling and the
     executing commands via the shell.

     alarm seconds
	  Instructs the system to send a SIGALRM signal in the specified
	  number of seconds.  This is a floating point number, so fractions of
	  a section may be specified.  If seconds is 0.0, any previous alarm
	  request is canceled.	Only one alarm at a time may be active; the
	  command returns the number of seconds left in the previous alarm.
	  On systems without the setitimer system call, seconds is rounded up
	  to an integer number of seconds.

     convertclock dateString ?GMT|{}? ?baseClock?
	  Convert dateString to an integer clock value (see getclock).	This
	  command can parse and convert virtually any standard date and/or
	  time string, which can include standard time zone mnemonics.	If
	  only a time is specified, the current date is assumed.  If the
	  string does not contain a time zone mnemonic, the local time zone is
	  assumed, unless the GMT argument is specified, in which case the
	  clock value is calculated assuming that the specified time is
	  relative to Greenwich Mean Time.

	  If baseClock is specified, it should contain an integer clock value.
	  Only the date in this value is used, not the time.  This is useful
	  for determining the time on a specific day or doing other date-
	  relative conversions.

	  The character string consists of zero or more specifications of the
	  following form:

	  time - A time of day, which is of the form hh[:mm[:ss]] [meridian]
	  [zone] or hhmm [meridian] [zone].  If no meridian is specified, hh
	  is interpreted on a 24-hour clock.

	  date - A specific month and day with optional year.  The acceptable
	  formats are mm/dd[/yy], monthname dd[, yy], dd monthname [yy], and
	  day, dd monthname yy.	 The default year is the current year.	If the
	  year is less then 100, then 1900 is added to it.

	  relative time - A specification relative to the current time.	 The
	  format is number unit; acceptable units are year, fortnight, month,
	  week, day, hour, minute (or min), and second (or sec).  The unit can
	  be specified as a singular or plural, as in 3 weeks.	These
	  modifiers may also be specified:  tomorrow, yesterday, today, now,
	  last, this, next, ago.

	  The actual date is calculated according to the following steps.
	  First, any absolute date and/or time is processed and converted.

									Page 7

TclX(3Tcl)							    TclX(3Tcl)

	  Using that time as the base, day-of-week specifications are added.
	  Next, relative specifications are used.  If a date or day is
	  specified, and no absolute or relative time is given, midnight is
	  used.	 Finally, a correction is applied so that the correct hour of
	  the day is produced after allowing for daylight savings time
	  differences.

	  convertclock ignores case when parsing all words.  The names of the
	  months and days of the week can be abbreviated to their first three
	  letters, with optional trailing period.  Periods are ignored in any
	  timezone or meridian values.

	  Note that convertclock will convert symbolic time-zone names, but
	  these are not standardized and there are conflicts with various
	  parts of the world.  Use GMT when trying to produce a portable time
	  that can then be converted back to a numeric value.

	  The only dates in the range 1902 and 2037 may be converted. Some
	  examples are:

	      convertclock "14 Feb 92"
	      convertclock "Feb 14, 1992 12:20 PM PST"
	      convertclock "12:20 PM Feb 14, 1992"

     execl ?-argv0 argv0? prog ?arglist?
	  Do an execl, replacing the current program (either Extended Tcl or
	  an application with Extended Tcl embedded into it) with prog and
	  passing the arguments in the list arglist.

	  The -argv0 options specifies that argv0 is to be passed to the
	  program as argv [0] rather than prog.

	  Note: If you are using execl in a Tk application and it fails, you
	  may not do anything that accesses the X server or you will receive a
	  BadWindow error from the X server.  This includes executing the Tk
	  version of the exit command.	We suggest using the following command
	  to abort Tk applications after an execl failure:

	      kill [id process]

     fmtclock clockval ?format? ?GMT|{}?
	  Converts a Unix integer time value, typically returned by getclock,
	  convertclock, or the atime, mtime, or ctime options of the file
	  command, to human-readable form.  The format argument is a string
	  that describes how the date and time are to be formatted.  Field
	  descriptors consist of a ``%'' followed by a field descriptor
	  character.  All other characters are copied into the result.	Valid
	  field descriptors are:

	      %% - Insert a %.
	      %a - Abbreviated weekday name.
	      %A - Full weekday name

									Page 8

TclX(3Tcl)							    TclX(3Tcl)

	      %b - Abbreviated month name.
	      %B - Full month name.
	      %d - Day of month (01 - 31).
	      %D - Date as %m/%d/%y.
	      %e - Day of month (1-31), no leading zeros.
	      %h - Abbreviated month name.
	      %H - Hour (00 - 23).
	      %I - Hour (00 - 12).
	      %j - Day number of year (001 - 366).
	      %m - Month number (01 - 12).
	      %M - Minute (00 - 59).
	      %n - Insert a new line.
	      %p - AM or PM.
	      %r - Time as %I:%M:%S %p.
	      %R - Time as %H:%M.
	      %S - Seconds (00 - 59).
	      %t - Insert a tab.
	      %T - Time as %H:%M:%S.
	      %U - Week number of year (01 - 52), Sunday is the first
		   day of the week.
	      %w - Weekday number (Sunday = 0).
	      %W - Week number of year (01 - 52), Monday is the first
		   day of the week.
	      %x - Local specific date format.
	      %X - Local specific time format.
	      %y - Year within century (00 - 99).
	      %Y - Year as ccyy (e.g. 1990)
	      %Z - Time zone name.

	  If format is not specified, "%a %b %d %H:%M:%S %Z %Y" is used.  If
	  GMT is specified, the time will be formated as Greenwich Mean Time.
	  If the argument is not specified or is empty, then the local
	  timezone will be used as defined by the operating environment.

     chroot dirname
	  Change root directory to dirname, by invoking the POSIX chroot(2)
	  system call.	This command only succeeds if running as root.

     fork
	  Fork the current Tcl process.	 Fork returns zero to the child
	  process and the process number of the child to the parent process.
	  If the fork fails, a Tcl error is generated.

	  If an execl is not going to be performed before the child process
	  does output, or if a close and dup sequence is going to be performed
	  on stdout or stderr, then a flush should be issued against stdout,
	  stderr and any other open output file before doing the fork.
	  Otherwise characters from the parent process pending in the buffers
	  will be output by both the parent and child processes.

	  Note: If you are forking in a Tk based apllication you must execl
	  before doing any window operations in the child or you will receive

									Page 9

TclX(3Tcl)							    TclX(3Tcl)

	  a BadWindow error from the X server.

     getclock
	  Return the current date and time as a system-dependent integer
	  value.  The unit of the value is seconds, allowing it to be used for
	  relative time calculations.

     id options
	  This command provides a means of getting, setting and converting
	  user, group and process ids.	The id command has the following
	  options:

	  id user ?name?

	  id userid ?uid?
	       Set the real and effective user ID to name or uid, if the name
	       (or uid) is valid and permissions allow it.  If the name (or
	       uid) is not specified, the current name (or uid) is returned.

	  id convert userid uid

	  id convert user name
	       Convert a user ID number to a user name, or vice versa.

	  id group ?name?

	  id groupid ?gid?
	       Set the real and effective group ID to name or gid, if the name
	       (or gid) is valid and permissions allow it.  If the group name
	       (or gid) is not specified, the current group name (or gid) is
	       returned.

	  id groups

	  id groupids
	       Return the current group access list of the process.  The
	       option groups returns group names and groupids returns id
	       numbers.

	  id convert groupid gid

	  id convert group name
	       Convert a group ID number to a group name, or vice versa.

	  id effective user

	  id effective userid
	       Return the effective user name, or effective user ID number,
	       respectively.

								       Page 10

TclX(3Tcl)							    TclX(3Tcl)

	  id effective group

	  id effective groupid
	       Return the effective group name, or effective group ID number,
	       respectively.

	  id effective groupids
	       Return all of the groupids the user is a member of.

	  id host
	       Return the hostname of the system the program is running on.

	  id process
	       Return the process ID of the current process.

	  id process parent
	       Return the process ID of the parent of the current process.

	  id process group
	       Return the process group ID of the current process.

	  id process group set
	       Set the process group ID of the current process to its process
	       ID.

	  id host
	       Returns the standard host name of the machine the process is
	       executing on.

     kill ?-pgroup? ?signal? idlist
	  Send a signal to the each process in the list idlist, if permitted.
	  Signal, if present, is the signal number or the symbolic name of the
	  signal, see the signal system call manual page.  The leading ``SIG''
	  is optional when the signal is specified by its symbolic name.  The
	  default for signo is 15, SIGTERM.

	  If -pgroup is specified, the numbers in idlist are take as process
	  group ids and the signal is sent to all of the process in that
	  process group.  A process group id of 0 specifies the current
	  process group.

     link ?-sym? srcpath destpath
	  Create a directory entry, destpath, linking it to the existing file,
	  srcpath.  If -sym is specified, a symbolic link, rather than a hard
	  link, is created.  (The -sym option is only available on systems
	  that support symbolic links.)

     mkdir ?-path? dirList
	  Create each of the directories in the list dirList.  The mode on the
	  new directories is 777, modified by the umask.  If -path is
	  specified, then any non-existent parent directories in the specified
	  path(s) are also created.

								       Page 11

TclX(3Tcl)							    TclX(3Tcl)

     nice ?priorityincr?
	  Change or return the process priority.  If priorityincr is omitted,
	  the current priority is returned.  If priorityincr is positive, it
	  is added to the current priority level, up to a system defined
	  maximum (normally 19),

	  Negative priorityincr values cumulatively increase the program's
	  priority down to a system defined minimum (normally -19); increasing
	  priority with negative niceness values will only work for the
	  superuser.

	  The new priority is returned.

     readdir dirPath
	  Returns a list containing the contents of the directory dirPath.
	  The directory entries "." and ".." are not returned.

     rmdir ?-nocomplain? dirList
	  Remove each of the directories in the list dirList.  If -nocomplain
	  is specified, then errors will be ignored.

     signal action siglist ?command?
	  Specify the action to take when a Unix signal is received by
	  Extended Tcl, or a program that embeds it.  Siglist is a list of
	  either the symbolic or numeric Unix signal (the SIG prefix is
	  optional).  Action is one of the following actions to be performed
	  on receipt of the signal.  To specify all modifiable signals, use
	  `*' (this will not include SIGKILL and SIGSTOP, as they can not be
	  modified).

	  default - Perform system default action when signal is received (see
	  signal system call documentation).

	  ignore - Ignore the signal.

	  error - Generate a catchable Tcl error.  It will be as if the
	  command that was running returned an error.  The error code will be
	  in the form:
	      POSIX SIG signame
	  For the death of child signal, signame will always be SIGCHLD,
	  rather than SIGCLD, to allow writing portable code.

	  trap - When the signal occurs, execute command and continue
	  execution if an error is not returned by command.  The command will
	  be executed in the global context.  The command will be edited
	  before execution, replacing occurrences of "%S" with the signal
	  name.	 Occurrences of "%%" result in a single "%".  This editing
	  occurs just before the trap command is evaluated. If an error is
	  returned, then follow the standard Tcl error mechanism.  Often
	  command will just do an exit.

								       Page 12

TclX(3Tcl)							    TclX(3Tcl)

	  get - Retrieve the current settings of the specified signals.	 A
	  keyed list will be returned were the keys are one of the specified
	  signals and the values are a list cosisting of the action associated
	  with the signal, a 0 if the signal may be delivered (not block) and
	  a 1 if it is blocked. The actions maybe one of `default',`ignore',
	  `error' or `trap.  If the action is trap, the third element is the
	  command associated with the action.  The action `unknown' is
	  returned if a non-Tcl signal handler has been associated with the
	  signal.

	  set - Set signals from a keyed list in the format returned by the
	  get.	For this action, siglist is the keyed list of signal state.
	  Signals with an action of `unknown' are not modified.

	  block - Block the specified signals from being received. (Posix
	  systems only).

	  unblock - Allow the specified signal to be received. Pending signals
	  will not occur. (Posix systems only).

	  The signal action will remain enabled after the specified signal has
	  occurred.  The exception to this is SIGCHLD on systems without Posix
	  signals.  For these systems, SIGCHLD is not be automatically
	  reenabled.  After a SIGCHLD signal is received, a call to wait must
	  be performed to retrieve the exit status of the child process before
	  issuing another signal SIGCHLD ... command.  For code that is to be
	  portable between both types of systems, use this approach.

	  Signals are not processed until after the completion of the Tcl
	  command that is executing when the signal is received.  If an
	  interactive Tcl shell is running, then the SIGINT will be set to
	  error, non-interactive Tcl sessions leave SIGINT unchanged from when
	  the process started (normally default for foreground processes and
	  ignore for processes in the background).

     sleep seconds
	  Sleep the Extended Tcl process for seconds seconds.

     system command
	  Executes command via the system(3) call.  Differs from exec in that
	  system doesn't return the executed command's standard output as the
	  result string, and system goes through the Unix shell to provide
	  wildcard expansion, redirection, etc, as is normal from an sh
	  command line.	 The exit code of the command is returned.

     sync ?fileId?
	  If fileId is not specified, or if it is and this system does not
	  support the fsync system call, issues a sync system call to flush
	  all pending disk output.  If fileId is specified and the system does
	  support the fsync system call, issues an fsync on the file
	  corresponding to the specified Tcl fileId to force all pending
	  output to that file out to the disk.

								       Page 13

TclX(3Tcl)							    TclX(3Tcl)

	  If fileId is specified, the file must be writable.  A flush will be
	  issued against the fileId before the sync.

	  The infox have_fsync command can be used to determine if "sync
	  fileId" will do a sync or a fsync.

     times
	  Return a list containing the process and child execution times in
	  the form:
	      utime stime cutime cstime
	  Also see the times(2) system call manual page.  The values are in
	  milliseconds.

     umask ?octalmask?
	  Sets file-creation mode mask to the octal value of octalmask.	 If
	  octalmask is omitted, the current mask is returned.

     unlink ?-nocomplain? filelist
	  Delete (unlink) the files whose names are in the list filelist.  If
	  -nocomplain is specified, then errors will be ignored.

     wait ?-nohang? ?-untraced? ?-pgroup? ?pid?
	  Waits for a process created with the execl command to terminate,
	  either due to an untrapped signal or call to exit system call.  If
	  the process id pid is specified, they wait on that process,
	  otherwise wait on any child process to terminate.

	  If -nohang is specified, then don't block waiting on a process to
	  terminate.  If no process is immediately available, return an empty
	  list.	 If -untraced is specified then the status of child processes
	  that are stopped, and whose status has not yet been reported since
	  they stopped, are also returned.  If -pgroup is specfied and pid is
	  not specified, then wait on any child process whose process groupd
	  ID is they same as the calling process. If pid is specified with
	  -pgroup, then it is take as a process group ID, waiting on any
	  process in that process group to terminate.

	  Wait returns a list containing three elements: The first element is
	  the process id of the process that terminated.  If the process
	  exited normally, the second element is `EXIT', and the third
	  contains the numeric exit code.  If the process terminated due to a
	  signal, the second element is `SIG', and the third contains the
	  signal name.	If the process is currently stopped (on systems that
	  support SIGSTP), the second element is `STOP', followed by the
	  signal name.

	  Note that it is possible to wait on processes to terminate that were
	  create in the background with the exec command.  However, if any
	  other exec command is executed after the process terminates, then
	  the process status will be reaped by the exec command and will not
	  be available to the wait command.

								       Page 14

TclX(3Tcl)							    TclX(3Tcl)

FILE COMMANDS
     These commands provide extended file access and manipulation.  This
     includes searching ASCII-sorted data files, copying files, duplicating
     file descriptors, control of file access options, retrieving open file
     status, and creating pipes with the pipe system call.  Also linking and
     unlinking files, setting file, process, and user attributes and
     truncating files.	An interface to the select system call is available on
     Unix systems that support it.

     It should be noted that Tcl file I/O is implemented on top of the stdio
     library.  By default, the file is buffered.  When communicating to a
     process through a pipe, a flush command should be issued to force the
     data out.	Alternatively, the fcntl command may be used to set the
     buffering mode of a file to line-buffered or unbuffered.

     bsearch fileId key ?retvar? ?compare_proc?
	  Search an opened file fileId containing lines of text sorted into
	  ascending order for a match.	Key contains the string to match.  If
	  retvar is specified, then the line from the file is returned in
	  retvar, and the command returns 1 if key was found, and 0 if it
	  wasn't.  If retvar is not specified or is a null name, then the
	  command returns the line that was found, or an empty string if key
	  wasn't found.

	  By default, the key is matched against the first white-space
	  separated field in each line.	 The field is treated as an ASCII
	  string.  If compare_proc is specified, then it defines the name of a
	  Tcl procedure to evaluate against each line read from the sorted
	  file during the execution of the bsearch command.  Compare_proc
	  takes two arguments, the key and a line extracted from the file.
	  The compare routine should return a number less than zero if the key
	  is less than the line, zero if the key matches the line, or greater
	  than zero if the key is greater than the line.  The file must be
	  sorted in ascending order according to the same criteria
	  compare_proc uses to compare the key with the line, or errouenous
	  results will occur.

     copyfile ?-bytes num|-maxbytes num? fromFileId toFileId
	  Copies the rest of the file specified by fromFileId, starting from
	  its current position, to the file specified by toFileId, starting
	  from its current position.

	  If -bytes is specified, then num bytes are copied.  If less than num
	  bytes are available, an error is returned.  If -maxbytes is
	  specified, then num bytes are copied but no error is returned if
	  less are available.

	  The command returns the number of bytes that were copied.

	  The -bytes option is particularly useful for mixing binary data in
	  with ASCII commands or data in a data stream.

								       Page 15

TclX(3Tcl)							    TclX(3Tcl)

     chmod [-fileid] mode filelist
	  Set permissions of each of the files in the list filelist to mode,
	  where mode is an absolute numeric mode or symbolic permissions as in
	  the UNIX chmod(1) command.  To specify a mode as octal, it should be
	  prefixed with a "0" (e.g. 0622).

	  If the option -fileid is specified, filelist is a list of open file
	  identifiers rather than a list of file names.	 This option is not
	  available on all Unix systems.  Use the infox have_fchmod command to
	  determine if this functionallity is available.

     chown [-fileid] owner|{owner group} filelist
	  Set owner of each file in the list filelist to owner, which can be a
	  user name or numeric user id.	 If the first parameter is a list,
	  then the owner is set to the first element of the list and the group
	  is set to the second element.	 Group can be a group name or numeric
	  group id.  If group is {}, then the file group will be set to the
	  login group of the specified user.

	  If the option -fileid is specified, filelist is a list of open file
	  identifiers rather than a list of file names.	 This option is not
	  available on all Unix systems.  Use the infox have_fchown command to
	  determine if this functionallity is available.

     chgrp [-fileid] group filelist
	  Set the group id of each file in the list filelist to group, which
	  can be either a group name or a numeric group id.

	  If the option -fileid is specified, filelist is a list of open file
	  identifiers rather than a list of file names.	 This option is not
	  available on all Unix systems.  Use the infox have_fchown command to
	  determine if this functionallity is available.

     dup fileId ?targetFileId?
	  Duplicate an open file.  A new file id is opened that addresses the
	  same file as fileId.

	  If targetFileId is specified, the the file is dup to this specified
	  file id.  Normally this is stdin, stdout, or stderr.	The dup
	  command will handle flushing output and closing this file.  The new
	  file will be buffered, if its needs to be unbuffered, use the fcntl
	  command to set it unbuffered.

	  If fileId is a number rather than a Tcl file id, then the dup
	  command will bind that file to a Tcl file id.	 This is usedful for
	  accessing files that are passed from the parent process.  The
	  argument ?targetFileId? is not valid with this operation.

     fcntl fileId attribute ?value?
	  This command either sets or clears a file option or returns its
	  current value.  If value are not specified, then the current value
	  of attribute is returned. The following attributes may be specified:

								       Page 16

TclX(3Tcl)							    TclX(3Tcl)

	  RDONLY - The file is opened for reading only. (Get only)

	  WRONLY - The file is opened for writing only.	 (Get only)

	  RDWR - The file is opened for reading and writing.  (Get only)

	  READ - If the file is readable. (Get only).

	  WRITE - If the file is writable. (Get only).

	  APPEND - The file is opened for append-only writes.  All writes will
	  be forced to the end of the file.

	  NONBLOCK - The file is to be accessed with non-blocking I/O.	See
	  the read system call for a description of how it affects the
	  behavior of file reads.

	  CLOEXEC - Close the file on an process exec.	If the execl command
	  or some other mechanism causes the process to do an exec, the file
	  will be closed if this option is set.

	  NOBUF - The file is not buffered. If set, then there no stdio
	  buffering for the file.

	  LINEBUF - Output the file will be line buffered. The buffer will be
	  flushed when a newline is written, when the buffer is full, or when
	  input is requested.

	  The APPEND, NONBLOCK, and CLOEXEC attributes may be set or cleared
	  by specifying the attribute name and a value 1 to set the attribute
	  and 0 to clear it.

	  The NOBUF and LINEBUF attributes may only be set (a value of 1) and
	  only one of the options may be selected.  Once set, it may not be
	  changed.  These options should be set before any I/O operations have
	  been done on the file or data may be lost.

     flock options fileId ?start? ?length? ?origin?
	  This command places a lock on all or part of the file specified by
	  fileId.  The lock is either advisory or mandatory, depending on the
	  mode bits of the file.  The lock is placed beginning at relative
	  byte offset start for length bytes.  If start or length is omitted
	  or empty, zero is assumed.  If length is zero, then the lock always
	  extents to end of file, even if the file grows.  If origin is
	  "start", then the offset is relative to the beginning of the file.
	  If it is "current", it is relative to the current access position in
	  the file.  If it is "end", then it is relative to the end-of-file (a
	  negative is before the EOF, positive is after).  If origin is
	  omitted, start is assumed.

	  The following options are recognized:

								       Page 17

TclX(3Tcl)							    TclX(3Tcl)

	  -read - Place a read lock on the file.  Multiple processes may be
	  accessing the file with read-locks.

	  -write - Place a write lock on the file.  Only one process may be
	  accessing a file if there is a write lock.

	  -nowait - If specified, then the process will not block if the lock
	  can not be obtained.	With this option, the command returns 1 if the
	  lock is obtained and 0 if it is not.

	  See your system's fcntl system call documentation for full details
	  of the behavior of file locking.  If locking is being done on ranges
	  of a file, it is best to use unbuffered file access (see the fcntl
	  command).

     for_file var filename { code }
	  This procedure implements a loop over the contents of a file.	 For
	  each line in filename, it sets var to the line and executes code.

	  The break and continue commands work as with foreach.

	  For example, the command

	       for_file line /etc/passwd {echo $line}

	  would echo all the lines in the password file.

     funlock fileId ?start? ?length? ?origin?
	  Remove a locked from a file that was previously placed with the
	  flock command.  The arguments are the same as for the flock command,
	  see that command for more details.

     fstat fileId ?item?|?stat arrayvar?
	  Obtain status information about an open file.

	  The following keys are used to identify data items:

	  o atime - The time of last access.

	  o ctime - The time of last file status change

	  o dev - The device containing a directory for the file.  This value
	  uniquely identifies the file system that contains the file.

	  o gid - The group ID of the file's group.

	  o ino - The inode number.  This field uniquely identifies the file
	  in a given file system.

	  o mode - The mode of the file (see the mknod system call).

								       Page 18

TclX(3Tcl)							    TclX(3Tcl)

	  o mtime - Time when the data in the file was last modified.

	  o nlink - The number of links to the file.

	  o size - The file size in bytes.

	  o tty - If the file is associated with a terminal, then 1 otherwise
	  0.

	  o type - The type of the file in symbolic form, which is one of the
	  following values: file, directory, characterSpecial, blockSpecial,
	  fifo, link, or socket.

	  o uid - The user ID of the file's owner.

	  If one of these keys is specified as item, then that data item is
	  returned.

	  If stat arrayvar is specified, then the information is returned in
	  the array arrrayvar.	Each of the above keys indexes an element of
	  the array containing the data.

	  If only fileId is specified, the command returns the data as a keyed
	  list.

	  The following values may be returned only if explicitly asked for,
	  it will not be returned with the array or keyed list forms:

	  o remotehost - If fileId is a TCP/IP socket connection, then a list
	  is returned with the first element being the remote host IP address.
	  If the remote host name can be found, it is returned as the second
	  element of the list.	The remote host IP port number is returned as
	  the this element.

	  o localhost - If fileId is a TCP/IP socket connection, then a list
	  is returned with the first element being the local host IP address.
	  If the local host name can be found, it is returned as the second
	  element of the list.	The local host IP port number is returned as
	  the this element.

     ftruncate [-fileid] file newsize
	  Truncate a file to have a length of at most newsize bytes.

	  If the option -fileid is specified, file is an open file identifier,
	  otherwise it is a file path.

	  This command is not available on all systems if the underlying
	  operating system support is not available.  The command infox
	  have_truncate will indicate if this command is available.  On some
	  systems, the -fileid option is not available,	 check the result of
	  infox have_ftruncate to see if it can be used.

								       Page 19

TclX(3Tcl)							    TclX(3Tcl)

     lgets fileId ?varName?
	  Reads the next Tcl list from the file given by fileId and discards
	  the terminating newline character.  This command differs from the
	  gets command, in that it reads Tcl lists rather than lines.  If the
	  list contains a newline, then that newline will be returned as part
	  of the result.  Only a newline not quoted as part of the list
	  indicates the end of the list.  There is no corresponding command
	  for outputing lists, as puts will do this correctly.	If varName is
	  specified, then the line is placed in the variable by that name and
	  the return value is a count of the number of characters read (not
	  including the newline).  If the end of the file is reached before
	  reading any characters then -1 is returned and varName is set to an
	  empty string.	 If varName is not specified then the return value
	  will be the line (minus the newline character) or an empty string if
	  the end of the file is reached before reading any characters.	 An
	  empty string will also be returned if a line contains no characters
	  except the newline, so eof may have to be used to determine what
	  really happened.

     frename oldPath newPath
	  Renames oldPath to newPath.  This command does not support renaming
	  across file systems.

     pipe ?fileId_var_r fileId_var_w?
	  Create a pipe.  If fileId_var_r and fileId_var_r are specified, then
	  pipe will set the a variable named fileId_var_r to contain the
	  fileId of the side of the pipe that was opened for reading, and
	  fileId_var_w will contain the fileId of the side of the pipe that
	  was opened for writing.

	  If the fileId variables are not specified, then a list containing
	  the read and write fileIdw is returned as the result of the command.

     read_file ?-nonewline? fileName
	  read_file fileName numBytes
	  This proecure reads the file fileName and returns the contents as a
	  string.  If -nonewline is specified, then the last character of the
	  file is discarded if it is a newline.	 The second form specifies
	  exactly how many bytes will be read and returned, unless there are
	  fewer than numBytes bytes left in the file; in this case, all the
	  remaining bytes are returned.

     select readfileIds ?writefileIds? ?exceptfileIds? ?timeout?
	  This command allows an Extended Tcl program to wait on zero or more
	  files being ready for for reading, writing, have an exceptional
	  condition pending, or for a timeout period to expire.	 readFileIds,
	  writeFileIds, exceptFileIds are each lists of fileIds, as returned
	  from open, to query.	An empty list ({}) may be specified if a
	  category is not used.

	  The files specified by the readFileIds list are checked to see if
	  data is available for reading. The writeFileIds are checked if the

								       Page 20

TclX(3Tcl)							    TclX(3Tcl)

	  specified files are clear for writing.  The exceptFileIds are
	  checked to see if an exceptional condition has occured (typically,
	  an error).  The write and exception checking is most useful on
	  devices, however, the read checking is very useful when
	  communicating with multiple processes through pipes.	Select
	  considers data pending in the stdio input buffer for read files as
	  being ready for reading, the files do.  not have to be unbuffered.

	  Timeout is a floating point timeout value, in seconds.  If an empty
	  list is supplied (or the parameter is omitted), then no timeout is
	  set.	If the value is zero, then the select command functions as a
	  poll of the files, returning immediately even if none are ready.

	  If the timeout period expires with none of the files becomming
	  ready, then the command returns an empty list.  Otherwise the
	  command returns a list of three elements, each of those elements is
	  a list of the fileIds that are ready in the read, write and
	  exception classes.  If none are ready in a class, then that element
	  will be the null list.  For example:

		  select {file3 file4 file5} {file6 file7} {} 10.5

	  could return

		  {file3 file4} {file6} {}

	  or perhaps

		  file3 {} {}

     write_file fileName string ?string...?
	  This procedure writes the specified strings to the named file.

TCP/IP SERVER ACCESS
     Commands are provided to access TCP/IP-based servers, and to create them.
     It is easy to build servers using Extended Tcl that run under inetd, or
     even servers that run standalone and accept and manage multiple
     simultaneous connections.	The socket file handles maybe be read using
     the either the gets or read command and written using either the puts or
     server_send command.

     The fstat remotehost and fstat localhost requests are useful both for
     clients and servers.  To obtain the host name of the system the script is
     running on, use id host.

     If a TclX script is setup to run under inetd, it is launched with its
     stdin, stdout and stderr associated with the client socket.  The standard
     Tcl file ids stdin, stdout and stderr maybe then be used to communicate
     with the client.

								       Page 21

TclX(3Tcl)							    TclX(3Tcl)

     server_connect ?options? host service
	  Open a TCP/IP connection to a server of host on the port specified
	  by service.  The server is then accessed using the standard Tcl file
	  I/O commands.	 Host may be a host name or an IP address.  Port may
	  be a port number of a service name.

	  If a destination host name is supplied and more that one address is
	  valid for the host, the host's addresses will be tried in the order
	  returned until one can be connected to, or the list is exhausted.
	  You may also use the server_info command to obtain the list of valid
	  address.

	  The options are:

	  o -buf - Specifies that the file is buffered.	 When writing to the
	  file, the flush command must be used to force data in the buffer to
	  be sent to the server.  Buffered access will result in significantly
	  better performance when reading data, and will also improve the
	  performance of a series of writes done without intervening reads.
	  The buffering is only used when accessing the file via the gets,
	  read, and puts commands. The server_send command does not use the
	  buffer.

	  o -nobuf - The file is unbuffered. A single file id, open for both
	  reading and writing, is returned.

	  o -twoids - Return a pair of file ids in a list.  The first id is
	  open for read access, the second for write access.  The close
	  command must be called against both file ids when you are done using
	  the socket and they maybe closed independently.  This option is
	  primarily intended to implement compatibility procedures for
	  deprecated commands, however it maybe useful for code that needs to
	  independently manage the read and write ends of the socket.

	  o -myip ipNumber - Define the IP number for your side of the
	  connection.  This is useful for multi-homed hosts (hosts with more
	  than one IP address).	 Note that only IP addresses corresponding to
	  network interfaces on your machine may be used. If -myip is not
	  specified, the operating system will assign the IP number for you.

	  o -myport portNumber - Define the port number for your side of the
	  connection.  If the port number is already in use, an error will be
	  returned.  If the port number is in the privileged range, the Tcl
	  program will have to be running as superuser, or an error will be
	  returned.

     server_create ?options?
	  Creates a TCP/IP server socket on the local machine.	A file handle
	  is returned upon successful creation.	 When a connection request is
	  made to the server, the file handle becomes read-ready.  Connections
	  can be accepted using server_accept.

								       Page 22

TclX(3Tcl)							    TclX(3Tcl)

	  The file handle can be detected as read-ready using select, by using
	  fcntl to make the handle nonblocking and then calling server_accept,
	  or by using the Tk fileevent command.

	  Options are:

	  o -myip ipNumber - Define the IP number for your side of the
	  connection.  This is useful for multi-homed hosts (hosts with more
	  than one IP address).	 Note that only IP addresses corresponding to
	  network interfaces on your machine may be used. If -myip is not
	  specified, the operating system will assign the IP number for you.

	  o -myport portNumber - Define the port number for your side of the
	  connection.  If the port number is already in use, an error will be
	  returned.  If the port number is in the privileged range, the Tcl
	  program will have to be running as superuser, or an error will be
	  returned.

	  o -backlog count - Maximum length the queue of pending connections
	  may grow to.	If a connection request arrives with the queue full,
	  the client may receive an error with an indication of ECONNREFUSED,
	  or, if the underlying protocol supports retransmission, the request
	  may be ignored so that retries may succeed.  Note that on at least
	  some BSD-based systems the backlog is silently limited to 5,
	  regardless of the value specified.  The default is 5.

     server_accept ?options? fileid
	  Accept a TCP/IP connection to the server socket associated with
	  fileid.  Options are -buf, -nobuf and -twoids.  See the
	  server_connect command for a description of these options.  A file
	  handle (or a pair of file handles when -twoids) is return.

     server_info addresses host
	  server_info official_name host
	  server_info aliases host
	  Optain information about a TCP/IP server. The argument host can be
	  either a host name or an IP address.

	  The following subcommands are recognized:

	  o addresses - Return the list of IP addresses for host.

	  o official_name - Return official name for host.

	  o aliases - Return the list of aliases for host.  (Note that these
	  are IP number aliases, not DNS CNAME aliases. See ifconfig(2).)

     server_send ?options? fileid string
	  Send the specified string to the TCP/IP connection corresponding to
	  fileid.  Theserver_send command is provide as an option to puts for
	  writing to a socket as it is better at detecting lost connections

								       Page 23

TclX(3Tcl)							    TclX(3Tcl)

	  and other IP-related error conditions.  File buffering is ignored
	  for server_send. There is no need to flush after a server_send.  The
	  results of mixing server_send with puts without flushing the puts
	  output is indeterminate.

	  Options are:

	  o -nonewline - Don't append a newline character to the end of the
	  message.  The default is to append a newline character.

	  o -dontroute - Requests that routing be bypassed and the direct
	  interface used (usually used only by diagnostic or routing programs)

	  o -outofband - Send out-of-band data on the socket.

FILE SCANNING COMMANDS
     These commands provide a facility to scan files, matching lines of the
     file against regular expressions and executing Tcl code on a match.  With
     this facility you can use Tcl to do the sort of file processing that is
     traditionally done with awk.  And since Tcl's approach is more
     declarative, some of the scripts that can be rather difficult to write in
     awk are simple to code in Tcl.

     File scanning in Tcl centers around the concept of a scan context.	 A
     scan context contains one or more match statements, which associate
     regular expressions to scan for with Tcl code to be executed when the
     expressions are matched.

     scancontext ?option?
	  This command manages file scan contexts.  A scan context is a
	  collection of regular expressions and commands to execute when that
	  regular expression matches a line of the file.  A context may also
	  have a single default match, to be applied against lines that do not
	  match any of the regular expressions.	 Multiple scan contexts may be
	  defined and they may be reused on multiple files.  A scan context is
	  identified by a context handle.  The scancontext command takes the
	  following forms:

     scancontext create
	  Create a new scan context.  The scanmatch command is used to define
	  patterns in the context.  A contexthandle is returned, which the Tcl
	  programmer uses to refer to the newly created scan context in calls
	  to the Tcl file scanning commands.

     scancontext delete contexthandle
	  Delete the scan context identified by contexthandle, and free all of
	  the match statements and compiled regular expressions associated
	  with the specified context.

     scancontext copyfile contexthandle ?filehandle?
	  Set or return the file handle that unmatched lines are copied to.
	  (See scanfile).  If filehandle is omitted, the copy file handle is

								       Page 24

TclX(3Tcl)							    TclX(3Tcl)

	  returned.  If no copy file is associated with the context, {} is
	  returned.  If a file handle is specified, it becomes the copy file
	  for this context.  If filehandle is {}, then it removes any copy
	  file specification for the context.

     scanfile ?-copyfile copyFileId? contexthandle fileId
	  Scan the file specified by fileId, starting from the current file
	  position.  Check all patterns in the scan context specified by
	  contexthandle against it, executing the match commands corresponding
	  to patterns matched.

	  If the optional -copyfile argument is specified, the next argument
	  is a file ID to which all lines not matched by any pattern
	  (excluding the default pattern) are to be written.  If the copy file
	  is specified with this flag, instead of using the scancontext
	  copyfile command, the file is disassociated from the scan context at
	  the end of the scan.

     scanmatch ?-nocase? contexthandle ?regexp? commands
	  Specify Tcl commands, to be evaluated when regexp is matched by a
	  scanfile command.  The match is added to the scan context specified
	  by contexthandle.  Any number of match statements may be specified
	  for a give context.  Regexp is a regular expression (see the regexp
	  command).  If -nocase is specified as the first argument, the
	  pattern is matched regardless of alphabetic case.

	  If regexp is not specified, then a default match is specified for
	  the scan context.  The default match will be executed when a line of
	  the file does not match any of the regular expressions in the
	  current scancontext.

	  The array matchInfo is available to the Tcl code that is executed
	  when an expression matches (or defaults).  It contans information
	  about the file being scanned and where within it the expression was
	  matched.

	  matchInfo is local to the top level of the match command unless
	  declared global at that level by the Tcl global command.  If it is
	  to be used as a global, it must be declared global before scanfile
	  is called (since scanfile sets the matchInfo before the match code
	  is executed, a subsequent global will override the local variable).
	  The following array entries are available:

	  matchInfo(line)
	       Contains the text of the line of the file that was matched.

	  matchInfo(offset)
	       The byte offset into the file of the first character of the
	       line that was matched.

								       Page 25

TclX(3Tcl)							    TclX(3Tcl)

	  matchInfo(linenum)
	       The line number of the line that was matched. This is relative
	       to the first line scanned, which is usually, but not
	       necessarily, the first line of the file.	 The first line is
	       line number one.

	  matchInfo(context)
	       The context handle of the context that this scan is associated
	       with.

	  matchInfo(handle)
	       The file id (handle) of the file currently being scanned.

	  matchInfo(copyHandle)
	       The file id (handle) of the file specified by the -copyfile
	       option.	The element does not exist if -copyfile was not
	       specified.

	  matchInfo(submatch0)
	       Will contain the characters matching the first parenthesized
	       subexpression.  The second will be contained in submatch1, etc.

	  matchInfo(subindex0)
	       Will contain the a list of the starting and ending indices of
	       the string matching the first parenthesized subexpression.  The
	       second will be contained in subindex1, etc.

     All scanmatch patterns that match a line will be processed in the order
     in which their specifications were added to the scan context.  The
     remainder of the scanmatch pattern-command pairs may be skipped for a
     file line if a continue is executed by the Tcl code of a preceding,
     matched pattern.

     If a return is executed in the body of the match command, the scanfile
     command currently in progress returns, with the value passed to return as
     its return value.

MATH COMMANDS
     Several extended math commands commands make many additional math
     functions available in TclX.  In addition, a set of procedures provide
     command access to the math functions supported by the expr command.

     The following procedures provide command interfaces to the expr math
     functions. They take the same arguments as the expr functions and may
     take expressions as arguments.

	  abs	      acos	  asin	     atan2
	  atan	      ceil	  cos	     cosh
	  double      exp	  floor	     fmod
	  hypot	      int	  log10	     log
	  pow	      round	  sin	     sinh

								       Page 26

TclX(3Tcl)							    TclX(3Tcl)

	  sqrt	      tan	  tanh

     max num1 num2 ?..numN?

     expr max(num1, num2)
	  Returns the argument that has the highest numeric value. Each
	  argument may be any integer or floating point value.

	  This functionality is also available as a math function max in the
	  Tcl expr command.

     min num1 num2 ?..numN?

     expr min(num1, num2)
	  Returns the argument that has the lowest numeric value.  Each
	  argument may be any integer or floating point value.

	  This functionality is also available as a math function min in the
	  Tcl expr command.

     random limit | seed ?seedval?
	  Generate a pseudorandom integer number greater than or equal to zero
	  and less than limit.	If seed is specified, then the command resets
	  the random number generator to a starting point derived from the
	  seedval. This allows one to reproduce pseudorandom number sequences
	  for testing purposes.	 If seedval is omitted, then the seed is set
	  to a value based on current system state and the current time,
	  providing a reasonably interesting and ever-changing seed.

LIST MANINIPULATION COMMANDS
     Extended Tcl provides additional list manipulation commands and
     procedures.

     intersect lista listb
	  Procedure to return the logical intersection of two lists.  The
	  returned list will be sorted.

     intersect3 lista listb
	  Procedure to intersects two lists, returning a list containing three
	  lists:  The first list returned is everything in lista that wasn't
	  in listb.  The second list contains the intersection of the two
	  lists, and the third list contains all the elements that were in
	  listb but weren't in lista.  The returned lists will be sorted.

     lassign list var ?var...?
	  Assign successive elements of a list to specified variables.	If
	  there are more variable names than fields, the remaining variables
	  are set to the empty string.	If there are more elements than
	  variables, a list of the unassigned elements is returned.

	  For example,

								       Page 27

TclX(3Tcl)							    TclX(3Tcl)

	     lassign {dave 100 200 {Dave Foo}} name uid gid longName

	  Assigns name to ``dave'', uid to ``100'', gid to ``200'', and
	  longName to ``Dave Foo''.

     lempty list
	  Determine if the specified list is empty.  If empty, 1 is returned,
	  otherwise, 0 is returned.  This command is an alternative to
	  comparing a list to an empty string.

     lmatch ?mode? list pattern
	  Search the elements of list, returning a list of all elements
	  matching pattern.  If none match, an empty list is returned.

	  The mode argument indicates how the elements of the list are to be
	  matched against pattern and it must have one of the following
	  values:

	  -exact The list element must contain exactly the same string as
	  pattern.

	  -glob Pattern is a glob-style pattern which is matched against each
	  list element using the same rules as the string match command.

	  -regexp Pattern is treated as a regular expression and matched
	  against each list element using the same rules as the regexp
	  command.

	  If mode is omitted then it defaults to -glob.

     lrmdups list
	  Procedure to remove duplicate elements from a list.  The returned
	  list will be sorted.

     lvarcat var string ?string...?
	  This command treats each string argument as a list and concatenates
	  them to the end of the contents of var, forming a a single list.
	  The list is stored back into var and also returned as the result.
	  if var does not exist, it is created.

     lvarpop var ?indexExpr? ?string?
	  The lvarpop command pops (deletes) the element indexed by the
	  expression indexExpr from the list contained in the variable var.
	  If index is omitted, then 0 is assumed.  If string, is specified,
	  then the deleted element is replaced by string. The replaced or
	  deleted element is returned.	Thus ``lvarpop argv 0'' returns the
	  first element of argv, setting argv to contain the remainder of the
	  string.

	  If the expression indexExpr starts with the string end, then end is
	  replaced with the index of the last element in the list.  If the
	  expression starts with len, then len is replaced with the length of

								       Page 28

TclX(3Tcl)							    TclX(3Tcl)

	  the list.

     lvarpush var string ?indexExpr?
	  The lvarpush command pushes (inserts) string as an element in the
	  list contained in the variable var.  The element is inserted before
	  position indexExpr in the list. If index is omitted, then 0 is
	  assumed.  If var does not exists, it is created.

	  If the expression indexExpr starts with the string end, then end is
	  replaced with the index of the last element in the list.  If the
	  expression starts with len, then len is replaced with the length of
	  the list.  Note the a value of end means insert the string before
	  the last element.

     union lista listb
	  Procedure to return the logical union of the two specified lists.
	  Any duplicate elements are removed.

KEYED LISTS
     Extended Tcl defines a special type of list referred to as keyed lists.
     These lists provided a structured data type built upon standard Tcl
     lists.  This provides a functionality similar to structs in the C
     programming language.

     A keyed list is a list in which each element contains a key and value
     pair.  These element pairs are stored as lists themselves, where the key
     is the first element of the list, and the value is the second.  The key-
     value pairs are refered to as fields.  This is an example of a keyed
     list:

	      {{NAME {Frank Zappa}} {JOB {musician and composer}}}

     If the variable person contained the above list, then keylget person NAME
     would return {Frank Zappa}.  Executing the command:

	  keylset person ID 106

     would make person contain

	      {{ID 106} {NAME {Frank Zappa}} {JOB {musician and composer}}

     Fields may contain subfields; `.' is the seperator character.  Subfields
     are actually fields where the value is another keyed list.	 Thus the
     following list has the top level fields ID and NAME, and subfields
     NAME.FIRST and  NAME.LAST:

	      {ID 106} {NAME {{FIRST Frank} {LAST Zappa}}}

     There is no limit to the recursive depth of subfields, allowing one to
     build complex data structures.

								       Page 29

TclX(3Tcl)							    TclX(3Tcl)

     Keyed lists are constructed and accessed via a number of commands.	 All
     keyed list management commands take the name of the variable containing
     the keyed list as an argument (i.e. passed by reference), rather than
     passing the list directly.

     keyldel listvar key
	  Delete the field specified by key from the keyed list in the
	  variable listvar.  This removes both the key and the value from the
	  keyed list.

     keylget listvar ?key? ?retvar | {}?
	  Return the value associated with key from the keyed list in the
	  variable listvar.  If retvar is not specified, then the value will
	  be returned as the result of the command. In this case, if key is
	  not found in the list, an error will result.

	  If retvar is specified and key is in the list, then the value is
	  returned in the variable retvar and the command returns 1 if the key
	  was present within the list.	If key isn't in the list, the command
	  will return 0, and retvar will be left unchanged.  If {} is
	  specified for retvar, the value is not returned, allowing the Tcl
	  programmer to determine if a key is present in a keyed list without
	  setting a variable as a side-effect.

	  If key is omitted, then a list of all the keys in the keyed list is
	  returned.

     keylkeys listvar ?key?
	  Return the a list of the keyes in the keyed list in the variable
	  listvar.  If keys is specified, then it is the name of a key field
	  who's subfield keys are to be retrieve.

     keylset listvar key value ?key2 value2 ...?
	  Set the value associated with key, in the keyed list contained in
	  the variable listvar, to value.  If listvar does not exists, it is
	  created.  If key is not currently in the list, it will be added.  If
	  it already exists, value replaces the existing value.	 Multiple
	  keywords and values may be specified, if desired.

STRING AND CHARACTER MANIPULATION COMMANDS
     The commands provide additional functionality to classify characters,
     convert characters between character and numeric values, index into a
     string, determine the length of a string, extract a range of character
     from a string, replicate a string a number of times, and transliterate a
     string (similar to the Unix tr program).

     ccollate ?-local? string1 string2
	  This command compares two strings. If returns -1 if string1 is less
	  than string2, 0 if they are equal amd 1 if string1 is greater than
	  string2.

	  If -local is specified, the strings are compared according to the

								       Page 30

TclX(3Tcl)							    TclX(3Tcl)

	  collation environment of the current locale.

     cequal string1 string2
	  This command compares two strings for equality.  It returns 1 if
	  string1 and string2 are the identical and 0 if they are not.	This
	  command is a short-cut for string compare and avoids the problems
	  with string expressions being treated unintentionally as numbers.

     cindex string indexExpr
	  Returns the character indexed by the expression indexExpr (zero
	  based) from string.

	  If the expression indexExpr starts with the string end, then end is
	  replaced with the index of the last character in the string.	If the
	  expression starts with len, then len is replaced with the length of
	  the string.

     clength string
	  Returns the length of string in characters. This command is a
	  shortcut for:

	      string length string

     crange string firstExpr lastExpr
	  Returns a range of characters from string starting at the character
	  indexed by the expression firstExpr (zero-based) until the character
	  indexed by the expression lastExpr.

	  If the expression firstExpr or lastExpr starts with the string end,
	  then end is replaced with the index of the last character in the
	  string.  If the expression starts with len, then len is replaced
	  with the length of the string.

     csubstr string firstExpr lengthExpr
	  Returns a range of characters from string starting at the character
	  indexed by the expression firstExpr (zero-based) for lengthExpr
	  characters.

	  If the expression firstExpr or lengthExpr starts with the string
	  end, then end is replaced with the index of the last character in
	  the string.  If the expression starts with len, then len is replaced
	  with the length of the string.

     ctoken strvar separators
	  Parse a token out of a character string.  The string to parse is
	  contained in the variable named strvar.  The string separators
	  contains all of the valid separator characters for tokens in the
	  string.  All leading separators are skipped and the first token is
	  returned.  The variable strvar will be modified to contain the
	  remainder of the string following the token.

								       Page 31

TclX(3Tcl)							    TclX(3Tcl)

     cexpand string
	  Expand backslash sequences in string to their actual characters.  No
	  other substitution takes place.

     ctype ?-failindex var? class string
	  ctype determines whether all characters in string are of the
	  specified class.  It returns 1 if they are all of class, and 0 if
	  they are not, or if the string is empty.  This command also provides
	  another method (besides format and scan) of converting between an
	  ASCII character and its numeric value.  The following ctype commands
	  are available:

	  ctype ?-failindex var? alnum string
	       Tests that all characters are alphabetic or numeric characters
	       as defined by the character set.

	  ctype ?-failindex var? alpha string
	       Tests that all characters are alphabetic characters as defined
	       by the character set.

	  ctype ?-failindex var? ascii string
	       Tests that all characters are an ASCII character (a non-
	       negative number less than 0200).

	  ctype char number
	       Converts the numeric value, string, to an ASCII character.
	       Number must be in the range 0 through 255.

	  ctype ?-failindex var? cntrl string
	       Tests that all characters are ``control characters'' as defined
	       by the character set.

	  ctype ?-failindex var? digit string
	       Tests that all characters are valid decimal digits, i.e. 0
	       through 9.

	  ctype ?-failindex var? graph string
	       Tests that all characters within are any character for which
	       ctype print is true, except for space characters.

	  ctype ?-failindex var? lower string
	       Tests that all characters are lowercase letters as defined by
	       the character set.

	  ctype ord character
	       Convert a character into its decimal numeric value.  The first
	       character of the string is converted.

	  ctype ?-failindex var? space string
	       Tests that all characters are either a space, horizontal-tab,
	       carriage return, newline, vertical-tab, or form-feed.

								       Page 32

TclX(3Tcl)							    TclX(3Tcl)

	  ctype ?-failindex var? print string
	       Tests that all characters are a space or any character for
	       which ctype alnum or ctype punct is true or other ``printing
	       character'' as defined by the character set.

	  ctype ?-failindex var? punct string
	       Tests that all characters are made up of any of the characters
	       other than the ones for which alnum, cntrl, or space is true.

	  ctype ?-failindex var? upper string
	       Tests that all characters are uppercase letters as defined by
	       the character set.

	  ctype ?-failindex var? xdigit string
	       Tests that all characters are valid hexadecimal digits, that is
	       0 through 9, a through f or A through F.

	  If -failindex is specified, then the index into string of the first
	  character that did not match the class is returned in var.

     replicate string countExpr
	  Returns string, replicated the number of times indicated by the
	  expression countExpr.

     translit inrange outrange string
	  Translate characters in string, changing characters occuring in
	  inrange to the corresponding character in outrange. Inrange and
	  outrange may be list of characters or a range in the form `A-M'.
	  For example:
		  translit a-z A-Z foobar

	  returns "FOOBAR".

XPG/3 MESSAGE CATALOG COMMANDS
     These commands provide a Tcl interface to message catalogs that are
     compliant with the X/Open Portability Guide, Version 3 (XPG/3).

     Tcl programmers can use message catalogs to create applications that are
     language-independent.  Through the use of message catalogs, prompts,
     messages, menus and so forth can exist for any number of languages, and
     they can altered, and new languages added,	 without affecting any Tcl or
     C source code, greatly easing the maintenance difficulties incurred by
     supporting multiple languages.

     A default text message is passed to the command that fetches entries from
     message catalogs.	This allows the Tcl programmer to create message
     catalogs containing messages in various languages, but still have a set
     of default messages available regardless of the presence of any message
     catalogs, and allow the programs to press on without difficulty when no
     catalogs are present.

     Thus, the normal approach to using message catalogs is to ignore errors

								       Page 33

TclX(3Tcl)							    TclX(3Tcl)

     on catopen, in which case catgets will return the default message that
     was specified in the call.

     The Tcl message catalog commands normally ignore most errors.  If it is
     desirable to detect errors, a special option is provided.	This is
     normally used only during debugging, to insure that message catalogs are
     being used.  If your Unix implementation does not have XPG/3 message
     catalog support, stubs will be compiled in that will create a version of
     catgets that always returns the default string.  This allows for easy
     porting of software to environments that don't have support for message
     catalogs.

     Message catalogs are global to the process, an application with multiple
     Tcl interpreters within the same process may pass and share message
     catalog handles.

     catopen ?-fail|-nofail? catname
	  Open the message catalog catname.  This may be a relative path name,
	  in which case the NLSPATH environment variable is searched to find
	  an absolute path to the message catalog.  A handle in the form
	  msgcatN is returned.	Normally, errors are ignored, and in the case
	  of a failed call to catopen, a handle is returned to an unopened
	  message catalog.  (This handle may still be passed to catgets and
	  catclose, causing catgets to simply return the default string, as
	  described above.  If the -fail option is specified, an error is
	  returned if the open fails.  The option -nofail specifies the
	  default behavior of not returning an error when catopen fails to
	  open a specified message catalog.  If the handle from a failed
	  catopen is passed to catgets, the default string is returned.

     catgets catHandle setnum msgnum defaultstr
	  Retrieve a message form a message catalog. CatHandle should be a Tcl
	  message catalog handle that was returned by catopen.	Setnum is the
	  message set number, and msgnum is the message number. If the message
	  catalog was not opened, or the message set or message number cannot
	  be found, then the default string, defaultstr, is returned.

     catclose ?-fail|-nofail? cathandle
	  Close the message catalog specified by cathandle.  Normally, errors
	  are ignored.	If -fail is specified, any errors closing the message
	  catalog file are returned.  The option -nofail specifies the default
	  behavior of not returning an error.  The use of -fail only makes
	  sense if it was also specified in the call to catopen.

EXTENDED TCL SHELL
     tcl ?-qn? ?-f? ?script?|?-c command? ?args?

     Tcl starts the interactive Tcl command interpreter.  The Tcl shell
     provides an environment for writing, debugging and executing Tcl scripts.
     The functionality of the Tcl shell can be easily obtained by any
     application that includes Tcl.

								       Page 34

TclX(3Tcl)							    TclX(3Tcl)

     The tcl command, issued without any arguments, invokes an interactive Tcl
     shell, allowing the user to interact directly with Tcl, executing any Tcl
     commands at will and viewing their results.

     If script is specified, then the script is executed non-interactively
     with any additional arguments, args, being supplied in the global Tcl
     variable `argv'.  If command is supplied, then this command (or
     semicolon-separated series of commands) is executed, with `argv'
     containing any args.

     The Tcl shell is intended as an environment for Tcl program development
     and execution.  While it is not a full-featured interactive shell, it
     provides a comfortable environment for the interactive development of Tcl
     code.  Note that the package library code described here overrides the
     unknown command provided as part of the standard Berkeley Tcl library
     facility, although Tcl source libraries coded to that standard can be
     loaded and used by Extended Tcl.

     The following command line flags are recognized by the Tcl shell command
     line parser:

     -q	  Quick initialization flag.  The Tcl initiaization file is not
	  evaluated and the auto_path variable is not set.  Tcl auto-load
	  libraries will not be available.

     -n	  No procedure call stack dump.	 The procedure call stack will not be
	  displayed when an error occurs, only the error message.  Useful in
	  the #! line of already debugged scripts.

     -f	  Takes the next argument as a script for Tcl to source, rather than
	  entering interactive mode.  The -f flag is optional.	Normally the
	  first argument that does not start with a `-' is taken as the script
	  to execute unless the `-c' option is specified.  Any following
	  arguments are passed to the script via argv, thus any other Tcl
	  shell command-line flags must precede this option.

     -c	  Take the next argument as a Tcl command to execute.  It may contain
	  series of commands to execute, separated by `;'.  Any following
	  arguments are passed in argv, thus, as with -f, any other Tcl shell
	  flags must precede this option.

     --	  Mark the end of the arguments to the Tcl shell. All arguments
	  following this are passed in the Tcl variable argv.  This is useful
	  to pass arguments without attempting to execute a Tcl script.

     The result string returned by a command executed from the Tcl shell
     command line is normally echoed back to the user.	If an error occurs,
     then the string result is displayed, along with the error message.	 The
     error message will be preceded by the string ``Error:''.

								       Page 35

TclX(3Tcl)							    TclX(3Tcl)

     The set command is a special case.	 If the command is called to set a
     variable (i.e. with two arguments), then the result will not be echoed.
     If only one argument, the name of a variable, is supplied to set, then
     the result will be echoed.

     If an unknown Tcl command is entered from the command line, then the Unix
     command path, specified in the environment variable PATH, will be
     searched for a command of the same name.  If the command is found, it
     will be executed with any arguments remaining on the Tcl command line
     being passed as arguments to the command.	This feature is provided to
     enhance the interactive environment for developing Tcl scripts.

     Automatic execution of programs in this manner is only supported from the
     command line, not in script files or in procedures, to reduce confusion
     and mistakes while programming in Tcl.  Scripts should use the Tcl exec
     or system commands to run Unix commands.

     The following variables are set and/or used by the Tcl shell.

     argv0
	  Contains the name of the Tcl program specified on the command line
	  or the name that the Tcl shell was invoked under if no program was
	  specified.  argc Contains a count of the number of argv arguments (0
	  if none).  argv A list containing the arguments passed in from the
	  command line, excluding arguments used by the Tcl shell.  The first
	  element is the first passed argument, not the program name.

     tcl_interactive
	  Set to 1 if Tcl shell is invoked interactively, or 0 if the Tcl
	  shell is directly executing a script.	 Normally checked by scripts
	  so that they can function as a standalone application if specified
	  on the command line, but merely load in and not execute if loaded
	  during an interactive invocation of Tcl.

     auto_path
	  Path to search to locate Tcl scripts.	 Used by the auto_load command
	  and the TclX unknown command handler.	 The path is a Tcl list of
	  directory names.

     tclx_library
	  Path to the TclX runtime library.  If your running the TclX shell or
	  an appilcation based on it (like wishx), this is the same value
	  returned by "info library".

     tcl_prompt1
	  Contains code to run to output the prompt used when interactively
	  prompting for commands.

     tcl_prompt2
	  Contains code to run to output the prompt used when interactively
	  prompting for continuation of an incomplete command.

								       Page 36

TclX(3Tcl)							    TclX(3Tcl)

     tclx_errorHandler
	  If this variable is set to the name of a procedure, that procedure
	  will be call if an uncaught error occurs.  The procedure will be
	  passed a single argument of the error message, however to allow
	  future expansion, the procedure should have a final argument of
	  args.	 The procedure is only called in non-interactive shells.  If
	  the procedure returns normally, the program will just exit without
	  any error being issued by the shell.	Generally the procedure should
	  exit with a non-zero exit code once the error has been processed.
	  It is not possible to continue executing the code in which the error
	  occurred.  This is useful for logging errorInfo or e-mailing it to
	  the maintainer.

     TCLXENV
	  Array that contains information used internally by various Tcl
	  procedures that are part of the TclX shell.  Don't change this array
	  unless you know what your doing.

     When Extended Tcl is installed, the standard runtime files are places in
     the Tcl master directory, which is configured when Tcl is built.  This
     master directory normally contains the Tcl initialization file
     (TclInit.tcl), the standard Tcl library file (tcl.tlib) and the help
     files.  The Tcl master directory is named after the version of Tcl it is
     associated with, e.g. /usr/local/tclX/7.4a.  The path to the Tcl master
     directory is available from the info library command.  The location of
     the Tcl master directory can be overridden with the TCL_LIBRARY
     environment variable.

     The first step in initializing the Tcl shell is to locate the Tcl
     initialization file, normally TclInit.tcl.	 If an environment variable
     TCLINIT exists, it contains the path to the Tcl initialization file.  If
     the TCLINIT environment variable is not set, the file TclInit.tcl is used
     from the default Tcl master directory.

     Tcl then evaulates the Tcl initialization file.  The auto_path variable
     is initialized to the Tcl master directory and may be augmented by the
     intialization file or the application.  Other procedures and variables
     used by the Extended Tcl shell are also defined by this file.

     If the Tcl is invoked interactively, it will source a file named .tclrc
     in the user's home directory, if it exists.  Tcl is viewed primarily as a
     programming language, not an interactive shell, so the .tclrc is intended
     for use for loading development utilities, not to support applications,
     which should not have to rely on the user's environment in such a manner.

     The Extended Tcl Tk shell, wishx, has an additional master directory and
     initialization file.  It use the environment variable TK_LIBRARY to
     override the default location of the Tk master directory.

								       Page 37

TclX(3Tcl)							    TclX(3Tcl)

HELP FACILITY
     The help facility allows one to look up help pages which where extracted
     from the standard Tcl manual pages and Tcl scripts during Tcl
     installation.  Help files are structured as a multilevel tree of subjects
     and help pages.  Help files are found by searching directories named help
     in the directories listed in the auto_path variable.  All of the files in
     the list of help directories form a virtual root of the help tree.	 This
     method allows multiple applications to provide help trees without having
     the files reside in the same directory.

     The help facility can be accessed in two ways, as interactive commands in
     the Extended Tcl shell or as an interactive Tk-based program (if you have
     built Extended Tcl with Tk).

     To run the Tk-based interactive help program:

	 tclhelp ?addpaths?
     Where addpaths are additional paths to search for help directories.  By
     default, only the auto_path used by tclhelp is search.  This will result
     in help on Tcl, Extended Tcl and Tk.

     The following interactive Tcl commands and options are provided with the
     help package:

     help
	  Help, without arguments, lists of all the help subjects and pages
	  under the current help subject.

     help subject
	  Displays all of help pages and lower level subjects (if any exist)
	  under the subject subject.

     help subject/helppage
	  Display the specified help page.  The help output is passed through
	  a simple pager if output exceeds 23 lines, pausing waiting for a
	  return to be entered.	 If any other character is entered, the output
	  is terminated.

     helpcd ?subject?
	  Change the current subject, which is much like the Unix current
	  directory.  If subject is not specified, return to the top-level of
	  the help tree.  Help subject path names may also include ``..''
	  elements.

     helppwd
	  Displays the current help subject.

     help help | ?
	  Displays help on the help facility at any directory level.

								       Page 38

TclX(3Tcl)							    TclX(3Tcl)

     apropos pattern
	  This command locates subjects by searching their one-line
	  descriptions for a pattern.  Apropos is useful when you can remember
	  part of the name or description of a command, and want to search
	  through the one-line summaries for matching lines.  Full regular
	  expressions may be specified (see the regexp command).

TCL LOADABLE LIBRARIES AND PACKAGES
     Extended Tcl supports standard Tcl tclIndex libraries and package
     libraries. A package library file can contain multiple independent Tcl
     packages.	A package is a named collection of related Tcl procedures and
     initialization code.

     The package library file is just a regular Unix text file, editable with
     your favorite text editor, containing packages of Tcl source code. The
     package library file name must have the suffix .tlib.  An index file with
     the suffix .tndx, corresponding to the package library.  The .tndx will
     be automatically created by Tcl whenever it is out of date or missing
     (provided there is write access to the directory.

     The variable auto_path contains a list of directories that are searched
     for libraries.  The first time an unknown command trap is take, the
     indexes for the libraries are loaded into memory. If the auto_path
     variable is changed during execution of a program, it will be re-
     searched. Only the first package of a given name found during the
     execution of a program is loaded.	This can be overridden with
     loadlibindex command.

     The start of a package is delimited by:

	  #@package: package_name proc1 ?..procN?

     These lines must start in column one.  Everything between the #@package:
     keyword and the next #@package: keyword or a #@packend keyword, or the
     end of the file, becomes part of the named package.  The specified
     procedures, proc1..procN, are the entry points of the package.  When a
     command named in a package specification is executed and detected as an
     unknown command, all code in the specified package will be sourced.  This
     package should define all of the procedures named on the package line,
     define any support procedures required by the package and do any
     package-specific initialization.  Packages declarations maybe continued
     on subsequent lines using standard Tcl backslash line continuations.  The
     #@packend keyword is useful to make sure only the minimum required
     section of code is sourced.  Thus for example a large comment block at
     the beginning of the next file won't be loaded.

     Care should be taken in defining package_name, as the first package found
     in the path by with a given name is loaded.  This can be useful in
     developing new version of packages installed on the system.

								       Page 39

TclX(3Tcl)							    TclX(3Tcl)

     For example, in a package source file, the presence of the following
     line:

	  #@package: directory_stack pushd popd dirs

     says that the text lines following that line in the package file up to
     the next package line or the end of the file is a package named
     directory_stack and that an attempt to execute either pushd, popd or dirs
     when the routine is not already defined will cause the directory_stack
     portion of the package file to be loaded.

PACKAGE LIBRARY MANAGEMENT COMMANDS
     Several commands are available for building and managing package
     libraries.	 Commands that are extended versions of the standard Tcl
     library commands are listed here.	All of the standard Tcl library
     management commands and variables are also supported.

     auto_commands ?-loaders?
	  Lists the names of all known loadable procedures and commands
	  procedures.  If -loaders is specified, the command that will be
	  executed to load the command will also be returned.

     buildpackageindex libfilelist
	  Build index files for package libraries.  The argument libfilelist
	  is a list of package libraries.  Each name must end with the suffix
	  .tlib.  A corresponding .tndx file will be built.  The user must
	  have write access to the directory containing each library.

     convert_lib tclIndex packagelib ?ignore?
	  Convert a Ousterhout style tclIndex index file and associate source
	  files into a package library packagelib.  If packagelib does not
	  have a .tlib extension, one will be added.  Any files specified in
	  tclIndex that are in the list ignore will be skipped.	 Files listed
	  in ignore should just be the base file names, not full paths.

     auto_load ?command?
	  Attempt to load the specified command from a loadable library.
	  loading the package containing the procedure.	 If the package
	  indexes have not been loaded for all package libraries in auto_path,
	  they will be loaded.	Out-of-date library indexes will be rebuilt if
	  they are writable.  The procedure returns 1 if the command was
	  sucessfully loaded, or 0 if it was not.

	  Duplicated package names are skipped, the first package of a given
	  name found in the path is loaded.  If the auto_path has changed
	  since the last load, indexes will be reloaded (duplicate packages
	  will not be redefined).

	  If command is not specified, the indexes will be loaded, if they
	  have not alreay been loaded or if the auto_path variable has
	  changed, but no command will be loaded.

								       Page 40

TclX(3Tcl)							    TclX(3Tcl)

     This command overrides the standard Tcl procedure of the same name.

     loadlibindex libfile.tlib
	  Load the package library index of the library file libfile (which
	  must have the suffix .tlib).	Package library indexes along the
	  auto_path are loaded automatically on the first demand_load; this
	  command is provided to explicitly load libraries that are not in the
	  path.	 If the index file (with a .tndx suffix) does not exists or is
	  out of date, it will be rebuilt if the user has directory
	  permissions to create it. If a package with the same name as a
	  package in libfile.tlib has already been loaded, its definition will
	  be overridden by the new package.  However, if any procedure has
	  actually been used from the previously defined package, the
	  procedures from libfile.tlib will not be loaded.

	  This command will also load an index built by mkindex.tcl program
	  supplied with standard Tcl.  This file must be named "tclIndex".

     auto_packages ?-location?
	  Returns a list of the names of all defined packages. If -location is
	  specified, a list of pairs of package name and the .tlib path name,
	  offset and length of the package within the library.

     auto_load_file file
	  Source a file, as with the source command, except search auto_path
	  for the file.

     searchpath path file
	  Search all directories in the specified path, which is a Tcl list,
	  for the specified file.  Returns the full path name of the file, or
	  an empty string if the requested file could not be found.

								       Page 41

[top]

List of man pages available for IRIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net