(* ------------------------------------------------------------------------
  :Program.       OberonSupport
  :Contents.      oberonsupport.library: easy handling of Oberon-Errors
  :Author.        Kai Bolay [kai]
  :Address.       Snail-Mail:              E-Mail:
  :Address.       Hoffmannstraße 168       UUCP: kai@amokle.adsp.sub.org
  :Address.       D-7250 Leonberg 1        FIDO: 2:247/706.3
  :History.       v2.0 [kai] 16-Mar-92
  :Copyright.     © 1992 by Kai Bolay
  :Copyright.     permission is herby given to Fridtjof Siebert to include
  :Copyright.     this source into his comercial distribution
  :Language.      Oberon
  :Translator.    AMIGA OBERON v2.25d
------------------------------------------------------------------------ *)
MODULE OberonSupport;

(* $OvflChk- $RangeChk- $StackChk- $NilChk- $ReturnChk- $CaseChk- *)

IMPORT
  e: Exec, I: Intuition, y: SYSTEM;

CONST
  libName* = "oberonsupport.library";
  libVersion* = 2;
TYPE
  Error* = STRUCT
    num*, line*, column*: INTEGER;
  END;
  ErrorHeaderPtr* = UNTRACED POINTER TO ErrorHeader;
  ErrorHeader* = STRUCT
    numErrors*: INTEGER;
    error*: ARRAY MAX (INTEGER) OF Error;
    (* really: ARRAY numErrors OF Error !! *)
  END;
VAR
  base*: e.LibraryPtr;

PROCEDURE ARexxQuery {base, -30} (); (* to be called by ARexx only! *)
PROCEDURE FreeErrorFile* {base, -36} (errors{8}: ErrorHeaderPtr);
PROCEDURE ReadErrorFile* {base, -42} (name{8}: ARRAY OF CHAR): ErrorHeaderPtr;
PROCEDURE GetErrorText* {base, -48} (num{0}: INTEGER): e.STRPTR;

BEGIN
  base := e.OpenLibrary (libName, libVersion);
  IF base = NIL THEN
    y.SETREG (0, I.DisplayAlert (0, "\x00\x64\x14missing oberonsupport.library v2\o\o",50));
    HALT (20);
  END;
CLOSE
  IF base # NIL THEN e.CloseLibrary (base); base := NIL END;
END OberonSupport.
