<<>> <> <> <> <<>> SearchPathViews CEDAR 10.1 FOR INTERNAL XEROX USE ONLY SearchPathViews PFS Views that search directories Mike Spreitzer Ó Copyright 1992 Xerox Corporation. All rights reserved. Abstract: The SearchPath view is a PFS view that implements search paths. Created by: Mike Spreitzer Maintained by: Mike Spreitzer Keywords: PFS View, Search Path, Union Directory XEROX Xerox Corporation Palo Alto Research Center 3333 Coyote Hill Road Palo Alto, California 94304 For Internal Xerox Use Only 1. Search Path Directories The SearchPath view is a PFS view that implements search paths. That is, it implements a new kind of directory, whose contents are effectively the union of the contents of several other directories. There are multiple, named search paths. A search path name is a ROPE modulo case. A search path is a non-empty sequence of directories. Creation of new files is done in the first directory in the sequence. Operations that involve finding an existing file search the directories, in order, to find an acceptable file. A PFS path of the form `-SearchPath:/PathName' identifies one of these search path directories --- the one named PathName. There is a standard prefix mapping that maps `/path' to `-SearchPath:', so you can use `/path/PathName' equivalently to `-SearchPath:/PathName'. A search path directory is case-sensitive iff one of the directories in its sequence is. If some of those directories are case-sensitive and others aren't, you may get incorrect or surprising results from some operations. 2. User Interface There are a few Commander commands for manipulating search paths. name SetPath syntax SetPath PathName read/write-dir read-dir* description Defines, or changes the definition of, a search path. The directory arguments may be relative (to the current directory), and need not be syntactic directories (eg, end with a slash). examples % SetPath foo bar baz defines the path named `foo' to be the sequence , where C is the current working directory. % SetPath foo bar/ baz/ is exactly equivalent to the preceeding example. % SetPath foo . ../../include defines the path named `foo' to be the current working directory followed by the uncle named `include'. warnings No confirmation is printed, so be careful when using complex constructions. stop/undo The `DeletePath' command will un-define a search path name. name GetPath syntax SetPath PathName* description Prints the definition(s) of the given path name(s). The definition is printed as a command that would establish the definition. examples % GetPath foo SetPath foo C/bar/ C/baz/ % reveals the definition of the search path named `foo'. % ls -bo /path/B* /path/ base -- 1 files % GetPath base SetPath base /tilde/spreitze/ubisrc/apps/base/ /tilde/spreitze/ubisrc/mob/ % First a list of all defined search path names that begin with `B' is gotten with an `LS' invocation, then the definition of the only such one is queried. If only we could trick `LS' into omitting the directory, we could combine these two operations into one, which would look something like % GetPath $(ls -therightswitches /path/B*) name DeletePath syntax DeletePath PathName* description Removes the definition(s) of the given path name(s). For each given path name, an acknowledgment is printed, indicating whether the name had been defined. examples % DeletePath foo bar Search path foo deleted. Search path bar wasn't defined. % name InPath syntax InPath read/write-dir read-dir* DO cmd description Temporarily defines a new search path, and executes the given command with that path as the working directory. The name of the temporary search path does not appear in the command line, and will never be a name that was already defined. The search path name used is un-defined after the command is executed. The level of quoting in cmd is not affected. Sadly, `$-interpretation' is done twice on cmd. examples % InPath . ../../mobs DO Mimosa -kc Foo effectively adds a path-searching capability to Mimosa. % InPath . DO echo -s "a b" a b % Quotes in cmd are interpreted once. % setprop foo ($bar) % setprop bar "$baz" % setprop baz barf % echo $foo $bar % InPath . DO echo $foo $baz % `$-interpretation' is done twice on cmd. warnings `$-interpretation' is done twice on cmd. stop/undo The STOP! button can stop the execution of cmd. 3. Programming Interface See SearchPaths.mesa; it should be fairly self-explanatory, after reading the above material.