home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 1998 October
/
STC_CD_10_1998.iso
/
SYSTEM
/
OLGA13
/
OLGALIB
/
OLGA.TXT
< prev
Wrap
Text File
|
1998-09-26
|
4KB
|
85 lines
Thomas Künneth
Friedrich-Neuper-Str. 2b
90552 Röthenbach
Zunächst: 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 für Privatpersonen erlaubt
und erwünscht; das Packen auf CD-ROMS oder Übernehmen in PD-Serien bedarf
meiner ausdrücklichen schriftlichen Genehmigung
Ausdrücklich gestattet ist es Thomas Much das Archiv OLGA_LIB in die Gesamt-
distribution "OLGA" aufzunehmen
Für Schäden 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 für die Verwendung des Protokolls nötigen Konstanten bzw.
Makros bereitstellt. Darüberhinaus sind im Laufe der Zeit nützliche 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 müssen 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 später 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 veranla₧t die
Lib die Shell dieses Programm zu starten (via AV_STARTPROG). Eine andere
Möglichkeit ist es, OLGAMANAGER den Namen einer bereits laufenden Anwendung
zuzuweisen. Dies wäre dann die richtige Wahl wenn eine Shell das OLGA-Proto-
koll unterstützt.
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 Länge des Namens geachtet und der String in Gro₧buchstaben
gewandelt wird; wird ein kompletter Pfadname übergeben wird der Dateiname
herausgefiltert und auf ihn ein appl_find gemacht.
run_appl() veranla₧t einen AV-Server, das angegebene Programm zu starten
und ihm die Kommandozeile zu übergeben. run_appl() sorgt selbst für das
Allozieren des globalen Speichers für die beiden Strings, der beim nächsten
Aufruf wieder freigegeben wird. Unabhängig davon wie die
Kommandozeile aufgebaut ist mu₧ sie mit einem 0-Byte abschlie₧en. 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:
Mögliche Aufrufformen sind - abhängig 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 müssen. In einem anderen Modul mu₧ _GemParBlk und
MiNTInstalled (ein Integer der einen Wert ungleich 0 hat wenn MiNT läuft)
definiert werden.
Ich hoffe diese Mini-Lib ist ein paar Leuten von Nutzen.
Vorschläge, Meinungen und Kritiken bitte an:
Thomas Künneth @ N (MausNet)
oder
tskuenne@linguistik.uni-erlangen.de