home *** CD-ROM | disk | FTP | other *** search
-
- (*
- * Copyright 1987, 1989 Samuel H. Smith; All rights reserved
- *
- * This is a component of the ProDoor System.
- * Do not distribute modified versions without my permission.
- * Do not remove or alter this notice or any other copyright notice.
- * If you use this in your own program you must distribute source code.
- * Do not use any of this in a commercial product.
- *
- *)
-
-
- (*
- * get the value of an environment variable
- *
- *)
- type
- gestring = string[255];
-
-
- function get_environment_var(id: gestring): gestring;
- var
- envseg: integer;
- i: integer;
- env: gestring;
-
- begin
- envseg := memw[PrefixSeg:$2c];
-
- i := 0;
- repeat
- env := '';
- while mem[envseg:i] <> 0 do
- begin
- env := env + chr(mem[envseg:i]);
- i := i + 1;
- end;
-
- if copy(env,1,length(id)) = id then
- begin
- get_environment_var := copy(env,length(id)+1,255);
- exit;
- end;
-
- i := i + 1;
- until mem[envseg:i] = 0;
-
- (* not found *)
- get_environment_var := '';
- end;
-
-
- (*
- * locate a file with search rules from specified environment variable.
- * returns the full pathname of the located file.
- * returns only the original name if not found.
- *
- *)
-
- function locate_file_env(name: gestring;
- environ: gestring): gestring;
- var
- paths: gestring;
- dir: gestring;
- i: integer;
- fd: file;
-
- begin
-
- (* get the paths and start searching them. arrange for current directory
- to be scanned first. add trailing ; to handle special case for last path *)
-
- paths := environ + ';';
- dir := '';
-
- for i := 1 to length(paths) do
- begin
-
- (* if a full directory has been collected, then try this path *)
- if (paths[i] = ';') or (i = length(paths)) then
- begin
- if (length(dir) > 1) and (dir[length(dir)] <> '\') then
- dir := dir + '\';
-
- {$I-}
- assign(fd,dir + name);
- reset(fd);
- {$I+}
- if ioresult = 0 then
- {! 7. IOResu^lt now returns different values corresponding to DOS error codes.}
- begin
- close(fd);
- locate_file_env := dir + name;
- exit;
- end;
-
- dir := '';
- end
- else
- dir := dir + paths[i];
- end;
-
- (* couldn't find it. return the original name *)
- locate_file_env := name;
- end;
-
-
- (*
- * locate a file. search PATH= paths if needed. returns
- * the full pathname of the located file.
- * returns only the original name if not found.
- *
- *)
-
- function locate_file(name: gestring): gestring;
- begin
-
- locate_file := locate_file_env(name,';' + get_environment_var('PATH='));
-
- end;
-
-