(***********************************************************************
*                                                                      *
*                                                                      *
*       MODUL pathstuff                                                *
*                                                                      *
*         unterstuetzt eine Suchstrategie fuer den                     *
*         Modula-Einpasscompiler                                       *
*                                                                      *
*       Files:          pathstuf.def, pathstuf.mod                     *
*       Verfasser:      Gunter Magin                                   *
*       freigegeben:    13.02.87                                       *
*                                                                      *
***********************************************************************)


DEFINITION MODULE Path;

(* Implementierung einer Suchstrategie fuer den Einpasscompiler;
   sucht benoetigte Files, die nicht im aktuellen Directory
   stehen, in den Directories, die im File mit dem Namen FName 
   (aktuelles Dir) eingetragen sind;
   Achtung: Der eingetragene Pfadname muss so sein, dass der 
       Filename gerade noch angehaengt zu werden braucht !
       Das betrifft insbesondere die Delimiter!! *)


CONST
  maxNameLen =         31;     (* wie NL in m2pm *)
  maxPathsNum =        20;     (* Anzahl an moeglichen Pfaden *)
  FName =              "m2paths.txt";
                                (* fuer Atari und Unix *)
TYPE
  Path;


PROCEDURE FindPath(VAR p: Path; VAR FileName: ARRAY OF CHAR; VAR i: INTEGER);
    (* ordnet dem Ausgabeparameter den i-ten Pfadnamen zu. 
       FileName wird dafuer weder benutzt noch veraendert *)

PROCEDURE AddPath(p: Path; VAR relFileName: ARRAY OF CHAR; 
                        VAR absFileName: ARRAY OF CHAR);

    (* gibt in absFileName den vollstaendigen Filenamen aus Pfadnamen
       (aus p) und Filenamen (aus relFileName) zurueck.
       Falls relFileName und absFileName dieselbe Variable sind, so 
       treten keine Konflikte auf, da intern zwischengespeichert wird ! *)

END Path.

