(*---------------------------------------------------------------------------
    :Program.     ARPFileReq.mod
    :Contents.	  Simple Benutzung des ARP Filerequesters
    :Author.      Bernd Preusing
    :Address.	  Gerhardstr. 16  D-2200 Elmshorn
    :Phone.	  04121/22486
    :Copyright.	  Public Domain
    :Language.	  Modula-2
    :Translator.  M2Amiga V3.2e
    :History.	  V1.0 09-Oct-89 Bernd Preusing
    :Imports.	  ARP library
---------------------------------------------------------------------------*)
IMPLEMENTATION MODULE ARPFileReq;

FROM SYSTEM	IMPORT	ADR, ADDRESS;
FROM ARP	IMPORT	FileRequest, FileRequester, FileName, DirName,
			FileReqFlags, FileReqFlagSet;
FROM Str	IMPORT	Copy, LastPos, Length, Concat;

VAR
  FR:FileRequester;
  File, Dir: ARRAY[0..79] OF CHAR;

(* $R- $V- $F- *)

PROCEDURE GetPath(VAR f,d:ARRAY OF CHAR);
VAR pos,i:INTEGER;
BEGIN
  Copy(d,f);
  pos:=LastPos(f,-1,'/');
  IF pos<0 THEN
    pos:=LastPos(f,-1,':');
  END;
  IF pos>=0 THEN
    IF d[pos]=':' THEN d[pos+1]:=0C ELSE d[pos]:=0C END;
    INC(pos);
    FOR i:=pos TO Length(f) DO
      f[i-pos]:=f[i]
    END;
    f[i]:=0C;
  ELSE
    d[0]:=0C
  END;
END GetPath;

PROCEDURE FileReq(VAR FName:ARRAY OF CHAR; Window:ADDRESS; Title:ARRAY OF CHAR;
		 flag:BOOLEAN):	BOOLEAN;
BEGIN
  Copy(File,FName);
  GetPath(File,Dir);

  FR.hail:=ADR(Title);
  IF flag THEN
    FR.funcFlags:=FileReqFlagSet{};
  ELSE
    FR.funcFlags:=FileReqFlagSet{doColor};
  END;
  FR.ddef      := ADR(File);
  FR.ddir      := ADR(Dir);
  FR.wind      := Window;
  FR.reserved1 := 0;
  FR.function  := NIL;
  FR.reserved2 := 0;

  IF FileRequest(ADR(FR))#NIL THEN
    IF (Length(Dir)>0) AND (Dir[Length(Dir)-1]#':') THEN
      Concat(Dir,'/');
    END;
    Concat(Dir,File);
    Copy(FName,Dir);
    RETURN TRUE
  ELSE
    RETURN FALSE;
  END;
END FileReq;

END ARPFileReq.mod
