home *** CD-ROM | disk | FTP | other *** search
- '\"
- '\" Copyright (c) 1991-1993 The Regents of the University of California.
- '\" All rights reserved.
- '\"
- '\" Permission is hereby granted, without written agreement and without
- '\" license or royalty fees, to use, copy, modify, and distribute this
- '\" documentation for any purpose, provided that the above copyright
- '\" notice and the following two paragraphs appear in all copies.
- '\"
- '\" IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- '\" FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- '\" ARISING OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
- '\" CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- '\"
- '\" THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- '\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- '\" AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- '\" ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
- '\" PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- '\"
- '\" $Header: /user6/ouster/tcl/man/RCS/library.n,v 1.10 93/06/05 14:43:33 ouster Exp $ SPRITE (Berkeley)
- '
- .so man.macros
- .de UL
- \\$1\l'|0\(ul'\\$2
- ..
- .HS library tcl
- .BS
- .SH NAME
- library \- standard library of Tcl procedures
- .SH SYNOPSIS
- .nf
- \fBauto_execok \fIcmd\fR
- \fBauto_load \fIcmd\fR
- \fBauto_mkindex \fIdir pattern\fR
- \fBauto_reset\fR
- \fBparray \fIarrayName\fR
- \fBunknown \fIcmd \fR?\fIarg arg ...\fR?
- .fi
- .BE
-
- .SH INTRODUCTION
- .PP
- Tcl includes a library of Tcl procedures for commonly-needed functions.
- The procedures defined in the Tcl library are generic ones suitable
- for use by many different applications.
- The location of the Tcl library is returned by the \fBinfo library\fR
- command.
- In addition to the Tcl library, each application will normally have
- its own library of support procedures as well; the location of this
- library is normally given by the value of the \fB$\fIapp\fB_library\fR
- global variable, where \fIapp\fR is the name of the application.
- For example, the location of the Tk library is kept in the variable
- \fB$tk_library\fR.
- .PP
- To access the procedures in the Tcl library, an application should
- source the file \fBinit.tcl\fR in the library, for example with
- the Tcl command
- .DS
- \fBsource [info library]/init.tcl
- .DE
- This will define the \fBunknown\fR procedure and arrange for the
- other procedures to be loaded on-demand using the auto-load
- mechanism defined below.
-
- .SH "COMMAND PROCEDURES"
- .PP
- The following procedures are provided in the Tcl library:
- .TP
- \fBauto_execok \fIcmd\fR
- Determines whether there is an executable file by the name \fIcmd\fR.
- This command examines the directories in the current search path
- (given by the PATH enviornment variable) to see if there is an
- executable file named \fIcmd\fR in any of those directories.
- If so, it returns 1; if not it returns 0. \fBAuto_exec\fR
- remembers information about previous searches in an array
- named \fBauto_execs\fR; this avoids the path search in
- future calls for the same \fIcmd\fR. The command \fBauto_reset\fR
- may be used to force \fBauto_execok\fR to forget its cached
- information.
- .TP
- \fBauto_load \fIcmd\fR
- This command attempts to load the definition for a Tcl command named
- \fIcmd\fR.
- To do this, it searches an \fIauto-load path\fR, which is a list of
- one or more directories.
- The auto-load path is given by the global variable \fB$auto_path\fR
- if it exists.
- If there is no \fB$auto_path\fR variable, then the TCLLIBPATH environment
- variable is used, if it exists.
- Otherwise the auto-load path consists of just the Tcl library directory.
- Within each directory in the auto-load path there must be a file
- \fBtclIndex\fR that describes one
- .VS
- or more commands defined in that directory
- and a script to evaluate to load each of the commands.
- The \fBtclIndex\fR file should be generated with the
- \fBauto_mkindex\fR command.
- If \fIcmd\fR is found in an index file, then the appropriate
- script is evaluated to create the command.
- .VE
- The \fBauto_load\fR command returns 1 if \fIcmd\fR was successfully
- created.
- The command returns 0 if there was no index entry for \fIcmd\fR
- or if the script didn't actually define \fIcmd\fR (e.g. because
- index information is out of date).
- If an error occurs while processing the script, then that error
- is returned.
- \fBAuto_load\fR only reads the index information once and saves it
- in the array \fBauto_index\fR; future calls to \fBauto_load\fR
- check for \fIcmd\fR in the array rather than re-reading the index
- files.
- The cached index information may be deleted with the command
- \fBauto_reset\fR.
- This will force the next \fBauto_load\fR command to reload the
- index database from disk.
- .TP
- \fBauto_mkindex \fIdir pattern\fR
- Generates an index suitable for use by \fBauto_load\fR.
- The command searches \fIdir\fR for all files whose names match
- \fIpattern\fR (matching is done with the \fBglob\fR command),
- generates an index of all the Tcl command
- procedures defined in all the matching files, and stores the
- index information in a file named \fBtclIndex\fR in \fIdir\fR.
- For example, the command
- .RS
- .DS
- \fBauto_mkindex foo *.tcl\fR
- .DE
- .LP
- will read all the \fB.tcl\fR files in subdirectory \fBfoo\fR
- and generate a new index file \fBfoo/tclIndex\fR.
- .PP
- \fBAuto_mkindex\fR parses the Tcl scripts in a relatively
- unsophisticated way: if any line contains the word \fBproc\fR
- as its first characters then it is assumed to be a procedure
- definition and the next word of the line is taken as the
- procedure's name.
- Procedure definitions that don't appear in this way (e.g. they
- have spaces before the \fBproc\fR) will not be indexed.
- .RE
- .TP
- \fBauto_reset\fR
- Destroys all the information cached by \fBauto_execok\fR and
- \fBauto_load\fR.
- This information will be re-read from disk the next time it is
- needed.
- \fBAuto_reset\fR also deletes any procedures listed in the auto-load
- index, so that fresh copies of them will be loaded the next time
- that they're used.
- .TP
- \fBparray \fIarrayName\fR
- Prints on standard output the names and values of all the elements
- in the array \fIarrayName\fR.
- \fBArrayName\fR must be an array accessible to the caller of \fBparray\fR.
- It may be either local or global.
- .TP
- \fBunknown \fIcmd \fR?\fIarg arg ...\fR?
- This procedure is invoked automatically by the Tcl interpreter
- whenever the name of a command doesn't exist.
- The \fBunknown\fR procedure receives as its arguments the
- name and arguments of the missing command.
- .VS
- \fBUnknown\fR first calls \fBauto_load\fR to load the command.
- .VE
- If this succeeds, then it executes the original command with its
- original arguments.
- If the auto-load fails then \fBunknown\fR calls \fBauto_execok\fR
- to see if there is an executable file by the name \fIcmd\fR.
- If so, it invokes the Tcl \fBexec\fR command
- with \fIcmd\fR and all the \fIargs\fR as arguments.
- If \fIcmd\fR can't be auto-executed, \fBunknown\fR checks to
- see if the command was invoked at top-level and outside of any
- script. If so, then \fBunknown\fR takes takes two additional steps.
- First, it sees if \fIcmd\fR has one of the following three forms:
- \fB!!\fR, \fB!\fIevent\fR, or \fB^\fIold\fB^\fInew\fR?\fB^\fR?.
- If so, then \fBunknown\fR carries out history substitution
- in the same way that \fBcsh\fR would for these constructs.
- Second, and last, \fBunknown\fR checks to see if \fIcmd\fR is
- a unique abbreviation for an existing Tcl command.
- If so, it expands the command name and executes the command with
- the original arguments.
- If none of the above efforts has been able to execute
- the command, \fBunknown\fR generates an error return.
- If the global variable \fBauto_noload\fR is defined, then the auto-load
- step is skipped.
- If the global variable \fBauto_noexec\fR is defined then the
- auto-exec step is skipped.
- Under normal circumstances the return value from \fBunknown\fR
- is the return value from the command that was eventually
- executed.
-
- .SH "VARIABLES"
- .PP
- The following global variables are defined or used by the procedures in
- the Tcl library:
- .TP
- \fBauto_execs\fR
- Used by \fBauto_execok\fR to record information about whether
- particular commands exist as executable files.
- .TP
- \fBauto_index\fR
- Used by \fBauto_load\fR to save the index information read from
- disk.
- .TP
- \fBauto_noexec\fR
- If set to any value, then \fBunknown\fR will not attempt to auto-exec
- any commands.
- .TP
- \fBauto_noload\fR
- If set to any value, then \fBunknown\fR will not attempt to auto-load
- any commands.
- .TP
- \fBauto_path\fR
- If set, then it must contain a valid Tcl list giving directories to
- search during auto-load operations.
- .TP
- \fBenv(TCL_LIBRARY)\fR
- If set, then it specifies the location of the directory containing
- library scripts (the value of this variable will be returned by
- the command \fBinfo library\fR). If this variable isn't set then
- a default value is used.
- .TP
- \fBenv(TCLLIBPATH)\fR
- If set, then it must contain a valid Tcl list giving directories to
- search during auto-load operations.
- This variable is only used if \fBauto_path\fR is not defined.
- .TP
- \fBunknown_active\fR
- This variable is set by \fBunknown\fR to indicate that it is active.
- It is used to detect errors where \fBunknown\fR recurses on itself
- infinitely.
- The variable is unset before \fBunknown\fR returns.
-
- .SH KEYWORDS
- auto-exec, auto-load, library, unknown
-