Thomas Knneth
Friedrich-Neuper-Str. 2b
90552 Rthenbach


Zunchst: Wenn ich von der OLGA-Lib spreche so ist nur die Pure C - Library
inkl. Headerdatei gemeint; der Manager und das dem Konzept zugrunde liegende
Protokoll entstammen der Feder von Thomas Much @ KA2

OLGA-Lib ist Freeware und darf ohne weitere Kosten in eigenen Programmen
eingesetzt werden; die kostenlose Weitergabe ist fr Privatpersonen erlaubt
und erwnscht; das Packen auf CD-ROMS oder bernehmen in PD-Serien bedarf
meiner ausdrcklichen schriftlichen Genehmigung
Ausdrcklich gestattet ist es Thomas Much das Archiv OLGA_LIB in die Gesamt-
distribution "OLGA" aufzunehmen
Fr Schden welcher Art auch immer die durch die direkte oder indirekte
Nutzung dieses Paketes entstehen bernehme ich keinerlei haftung; die ver-
wendung geschieht auf eigene Gefahr

-----------

Der zweifellos wichtigste Bestandteil dieses Pakets ist die Headerdatei
OLGA.H die die fr die Verwendung des Protokolls ntigen Konstanten bzw.
Makros bereitstellt. Darberhinaus sind im Laufe der Zeit ntzliche Funktionen
entstanden, die die Handhabung des Protokolls vereinfachen oder (IMHO) andere
clevere Dinge tun... :-)

Die mit olga_... beginnenden Funktionen erlauben nur eine etwas verein-
fachte Handhabung des OLGA-Managers. Wichtig: die diesen Funktionen ber-
gebenen Zeiger mssen von anderen Prozessen aus erreichbar sein; des-
halb gibt es die Funktion global_strcpy, die einen String inkl. 0-Byte
in einen von der Funktion allozierten globalen Speicherbereich kopiert.
Dieser Speicher kann spter mit Gemdos-Mfree freigegeben werden.
olga_init sucht den Manager im System; wurde er nicht gefunden wird ggf.
die Environmentvariable OLGAMANAGER ausgewertet. Sie sollte den kom-
pletten Pfadnamen des Managers enthalten. In diesem Fall veranlat die
Lib die Shell dieses Programm zu starten (via AV_STARTPROG). Eine andere
Mglichkeit ist es, OLGAMANAGER den Namen einer bereits laufenden Anwendung
zuzuweisen. Dies wre dann die richtige Wahl wenn eine Shell das OLGA-Proto-
koll untersttzt.
Die Funktion get_avserver_id wertet die Environmentvariable AVSERVER aus und
versucht den angegebenen Proze mit appl_find zu orten.
Wird AVSERVER nicht gefunden wird nach "GEMINI  " gesucht.
Die Funktion xappl_find() ist nichts weiter als ein appl_find, wobei aber
auf die Lnge des Namens geachtet und der String in Grobuchstaben
gewandelt wird; wird ein kompletter Pfadname bergeben wird der Dateiname
herausgefiltert und auf ihn ein appl_find gemacht.
run_appl() veranlat einen AV-Server, das angegebene Programm zu starten
und ihm die Kommandozeile zu bergeben. run_appl() sorgt selbst fr das
Allozieren des globalen Speichers fr die beiden Strings, der beim nchsten
Aufruf wieder freigegeben wird. Unabhngig davon wie die
Kommandozeile aufgebaut ist mu sie mit einem 0-Byte abschlieen. Vor dem
Aufruf wird getestet ob die Anwendung schon im Speicher war. Ist dem so,
wird die Kommandozeile via VA_START bergeben. Dies klappt auch, wenn kein
AV-Server im System installiert wurde. Wurde kein AV-Server gefunden startet
die Lib die Anwendung selbst, hierzu wird nach dem MagX-Cookie gesucht und
ggf. die entsprechende Aufrufvariante verwendet. Wird kein passender Cookie
gefunden verwendet die Lib die MTOS-Konvention, wenn die AES-Version >= 0x400
ist. ACHTUNG: eine andere Lib mu eine Funktion GetCookie() mit der blichen
Syntax bereitstellen.

sc_changed macht ab AES 4 einen Broadcast mit den der Nachricht SC_CHANGED
entsprechenden Parametern

Die Funktion olga_start erwartet unterschiedliche Parameter:
Mgliche Aufrufformen sind - abhngig von olga_ols - :
OLS_TYPE:       void olga_start(char *cmdlin,int olga_ols,int xacc_typ)
OLS_EXTENSION:  void olga_start(char *cmdlin,int olga_ols,long extension)
OLS_NAME:       void olga_start(char *cmdlin,int olga_ols,char *filename)

Wichtig: olga_init liefert keine Proze ID. Diese soll dem Message-Buffer
entnommen werden wenn die Meldung OLGA_INIT eintrifft.

Die Lib verwendet einige Funktionen aus den Standard-Libraries, die deshalb
mit eingebunden werden mssen. In einem anderen Modul mu _GemParBlk und
MiNTInstalled (ein Integer der einen Wert ungleich 0 hat wenn MiNT luft)
definiert werden.

Ich hoffe diese Mini-Lib ist ein paar Leuten von Nutzen.

Vorschlge, Meinungen und Kritiken bitte an:
Thomas Knneth @ N (MausNet)
oder
tskuenne@linguistik.uni-erlangen.de
