(*------------------------------------------

  :Program.     FileDate
  :Author.      Albert Weinert [awn]
  :Address.     Krähenweg 21, D-5000 Köln 30
  :Version.     V1.0
  :Date.        28-Mar-1993
  :Copyright.   Albert Weinert 1993
  :Language.    Oberon-2
  :Translator.  Amiga Oberon 3.00d
  :Contents.    Vergleicht die Erstellungs Daten zweier Dateien
  :Imports.     <Importiertes, Name/ShortCut des Autors>
  :Remarks.     Wenn das File FILE neuer wie das File CHECK dann wird  RC=0
  :Remarks.     zurückgegeben. Wenn das File CHECK nicht vorhanden ist dann wird
  :Remarks.     auch RC=0 zurückgegeben. Wenn allerdings das File FILE nicht
  :Remarks.     vorhanden ist, dann wird RC=20 zurückgeben. Wenn das File FILE
  :Remarks.     älter wie das File CHECK ist dann wird RC=5 zurückgegeben.
  :Bugs.        <Bekannte Fehler>
  :Usage.       FileDate FILE/A,CHECK/A
  :History.     V0.0   [awn] 28-Mar-1993 : Erstellt
  :History.     V1.0   [awn] 28-Mar-1993 : Funktioniert

--------------------------------------------*)
MODULE  FileDate;
(* $OddChk- *)
IMPORT  FileDateVersion,
        Exec,
        Dos;

VAR file : Dos.FileInfoBlockPtr;
    date1,date2: Dos.Date;
    RDArgs : Dos.RDArgsPtr;
    args : ARRAY 2 OF Exec.STRPTR;
    lock : Dos.FileLockPtr;
    time1,time2: LONGINT;

PROCEDURE DateToInt(date:Dos.Date; VAR time:LONGINT);
  BEGIN
    time:=date.tick DIV Dos.ticksPerSecond;
    INC(time,date.minute * 60);
    INC(time,date.days * 24 * 60 * 60);
  END DateToInt;

BEGIN
  RDArgs:=Dos.ReadArgs("FILE/A,CHECK/A",args,NIL);
  IF RDArgs # NIL THEN
    file:=Dos.AllocDosObjectTags(Dos.fib,NIL);
    IF file # NIL THEN
      lock:=Dos.Lock(args[0]^,Dos.accessRead);
      IF lock # NIL THEN
        IF Dos.Examine(lock,file^) THEN
          date1:=file.date;
          Dos.UnLock(lock);
          lock:=Dos.Lock(args[1]^,Dos.accessRead);
          IF lock # NIL THEN
            IF Dos.Examine(lock,file^) THEN
              date2:=file.date;
              Dos.UnLock(lock);
              lock:=NIL;
              DateToInt(date1,time1);
              DateToInt(date2,time2);
              IF time1 < time2 THEN
                HALT(5);
              END;
            ELSE
              HALT(0);
            END;
          ELSE
            Dos.PrintF("Neuer\n");
            HALT(0);
          END;
        ELSE
          HALT(20);
        END;
      ELSE
        HALT(20);
      END;
    END (* IF file # NIL THEN *);
  END (* IF RDArgs # NIL THEN *);
CLOSE
  IF lock # NIL THEN Dos.UnLock(lock) END;
  IF file # NIL THEN Dos.FreeDosObject(Dos.fib,file) END;
  IF RDArgs # NIL THEN Dos.FreeArgs(RDArgs) END;
END FileDate.
