IMPLEMENTATION MODULE FileLookup;    (* LG 06.06.80 *)
  (* $T- *)

FROM Streams IMPORT Stream, ErrorCode;
FROM M2Files IMPORT CreateInput, Filename, Extension;
FROM WriteStrings IMPORT WriteString, WriteLn;


PROCEDURE LookupFile( name: ARRAY OF CHAR;
                       defaultextension: ARRAY OF CHAR;
                       VAR filenum: CARDINAL;
                       query, acceptdefault, acceptoptions: BOOLEAN;
                       VAR acceptedfilename: ARRAY OF CHAR;
                       VAR goodfile: BOOLEAN);

    (* name          : module name *)
    (*                 file name is constructed using M2PATH *)
    (* filenum       : file number is set to Stream *)
    (* query         : verify name of file actually read *)
    (* acceptdefault : ignored *)
    (* acceptoptions : ignored *)
    (* goodfile      : lookup was successful *)

VAR ext: Extension;
    i: CARDINAL;
    s: Stream;

BEGIN
    FOR i:=0 TO HIGH(ext) DO ext[i] := defaultextension[i]; END;
    s := CreateInput(name, ext);
    IF s^.status # Success THEN
        goodfile := FALSE;
        WriteString("m2m: no symbol file found for ");
        WriteString(name); WriteLn;
    ELSE
        goodfile := TRUE;
        filenum := CARDINAL(s);
        IF query THEN
            WriteString("  ");
            WriteString(name);
            WriteString(": ");
            WriteString(Filename); WriteLn;
        END (* if *);
    END (* if *);
END LookupFile;

END FileLookup.
