/* routine(s) to search a file in the directories saved in an */ /* environment variable (e.g. "PATH") */ /* Note that this routine won't find hidden or system files. */ /* example call */ do forever say "Enter a filename ("""" to abort):" searchFile = strip( lineIn() ) if searchFile = '' then leave say "Result of SearchDataFile(" || searchFile || ") is: " say " """ || SearchDataFile( searchFile ) || """" say "Result of SearchProgram(" || searchFile || ") is: " say " """ || SearchProgram( searchFile ) || """" end /* do forever */ exit 0 /* ------------------------------------------------------------------ */ /* function: Search a file in the current directory and in the */ /* directories saved in an environment variable */ /* (e.g. PATH, DPATH, ... ) */ /* */ /* call: SearchFile( fileName, varName {,environment}) */ /* */ /* where: fileName - name of the file to search */ /* varName - name of the environment variable containing */ /* the directories to search */ /* environment - environment with the environment Variable */ /* (Def.: OS2ENVIRONMENT) */ /* */ /* returns: full name of the file or "" if not found */ /* */ SearchFile: PROCEDURE parse arg fileName , envVar, environment resultStr = "" if fileName <> "" & envVar <> "" then do if environment = '' then environment = "OS2ENVIRONMENT" searchDirs = ".;" || value( envVar, , environment ) do forever parse var searchDirs curSearchDir ";" searchDirs curSearchDir = strip( curSearchDir ) if curSearchDir = "" then iterate if right( curSearchDir, 1 ) <> "\" & , right( curSearchDir, 1 ) <> ":" then curSearchDir = curSearchDir || "\" resultStr = stream( curSearchDir || fileName, "c", "QUERY EXISTS" ) if resultStr <> "" then leave if SearchDirs = "" then leave end /* do forverver */ end /* if fileName <> "" & ... */ RETURN resultStr /* ------------------------------------------------------------------ */ /* function: Search a file in the current directory and in the */ /* directories saved in the environment variable PATH */ /* */ /* call: SearchProgram( progName {,environment}) */ /* */ /* where: progName - name of the program to search */ /* environment - environment with the environment Variable */ /* (Def.: OS2ENVIRONMENT) */ /* */ /* returns: full name of the program or "" if not found */ /* */ SearchProgram: PROCEDURE parse arg progName , environment resultStr = "" if progName <> "" then resultStr = SearchFile( progName, "PATH", environment ) RETURN resultStr /* ------------------------------------------------------------------ */ /* function: Search a datafile in the current directory and in the */ /* directories saved in the environment variable DPATH */ /* */ /* call: SearchProgram( datafileName {,environment}) */ /* */ /* where: datafileName - name of the datafile to search */ /* environment - environment with the environment Variable */ /* (Def.: OS2ENVIRONMENT) */ /* */ /* returns: full name of the datafile or "" if not found */ /* */ SearchDataFile: PROCEDURE parse arg dataFileName , environment resultStr = "" if dataFileName <> "" then resultStr = SearchFile( datafileName, "DPATH", environment ) RETURN resultStr