home *** CD-ROM | disk | FTP | other *** search
- ############################################################################
- #
- # File: getpaths.icn
- #
- # Subject: Procedure to generate elements in path environment variable
- #
- # Author: Richard L. Goerwitz
- #
- # Date: June 1, 1991
- #
- ###########################################################################
- #
- # Version: 1.3
- #
- ###########################################################################
- #
- # Suspends, in turn, the paths supplied as args to getpaths(),
- # then all paths in the PATH environment variable. A typical
- # invocation might look like:
- #
- # open(getpaths("/usr/local/lib/icon/procs") || filename)
- #
- # Note that getpaths() will be resumed in the above context until
- # open succeeds in finding an existing, readable file. Getpaths()
- # can take any number of arguments.
- #
- ############################################################################
- #
- # Requires: UNIX or MS-DOS
- #
- ############################################################################
-
- procedure getpaths(base_paths[])
-
- local paths, p
- static sep, trailer, trimmer
- initial {
- if find("UNIX", &features) then {
- sep := ":"
- trailer := "/"
- trimmer := cset(trailer || " ")
- }
- else if find("MS-DOS", &features) then {
- sep := ";"
- trailer := "\\"
- trimmer := cset(trailer || " ")
- }
- else stop("getpaths: OS not supported.")
- }
-
- suspend !base_paths
- paths := getenv("PATH")
- \paths ? {
- tab(match(sep))
- while p := 1(tab(find(sep)), move(1))
- do suspend ("" ~== trim(p,trimmer)) || trailer
- return ("" ~== trim(tab(0),trimmer)) || trailer
- }
-
- end
-