(****************************************************************)
(*                                                              *)
(*         Gardens Point Modula-2 Library Definition            *)
(*                                                              *)
(*                                                              *)
(*     (c) Copyright 1996 Faculty of Information Technology     *)
(*              Queensland University of Technology             *)
(*                                                              *)
(*     Permission is granted to use, copy and change this       *)
(*     program as long as the copyright message is left intact  *)
(*                                                              *)
(****************************************************************)

(* !LIBRARY! *) DEFINITION MODULE PathLookup;

  FROM UxFiles IMPORT File;

  PROCEDURE FindAndOpen(pathString   : ARRAY OF CHAR;
                        baseName     : ARRAY OF CHAR;
                        VAR openName : ARRAY OF CHAR;
                        VAR openFile : File);

  (* precondition  : pathString is nul terminated and has    *)
  (*                 components separated by colon chars,    *)
  (*                 openName is long enough for pathname    *)
  (* postcondition : openFile <> NIL ==> file was found.     *)
  (*                 openName has nul terminated absolute    *)
  (*                 path name, or nul string if not found   *)


  PROCEDURE FindAbsName(pathString   : ARRAY OF CHAR;
                        baseName     : ARRAY OF CHAR;
                        VAR openName : ARRAY OF CHAR;
                        VAR found    : BOOLEAN);

  (* precondition  : pathString is nul terminated and has    *)
  (*                 components separated by colon chars,    *)
  (*                 openName is long enough for pathname    *)
  (* postcondition : found = TRUE ==> file was found.        *)
  (*                 openName has nul terminated absolute    *)
  (*                 path name, or nul string if not found   *)


(* example of usage : to find file "foo.mod" on path $FOOPATH --
 *
 *  FROM PathLookup IMPORT FindAbsName;
 *  FROM ProgArgs IMPORT EnvironString;
 *  FROM UxFiles IMPORT File;
 *
 *  VAR file  : File;
 *      path  : ARRAY [0 .. 99] OF CHAR;
 *      name  : ARRAY [0 .. 79] OF CHAR;
 *      found : BOOLEAN;
 *
 *  BEGIN
 *    EnvironString("FOOPATH",path);
 *    FindAbsName(path,"foo.mod",name,found);
 *    IF found THEN
 *       (* -- do whatever *)
 *    ELSE WriteString(name); WriteString(" not found"); WriteLn;
 *    END;
 *)

END PathLookup.