doconfig(3C) doconfig(3C)
NAME
doconfig - Konfigurationsskript ausführen
SYNTAX
#include <sac.h>
int doconfig(int fd, char *script, long rflag);
BESCHREIBUNG
doconfig ist eine SAF (Service Access Facility)-Bibliotheksfunktion,
die Konfigurationsskripte interpretiert, die sich in den Dateien
/etc/saf/pmtag/config, /etc/saf/sysconfig und /etc/saf/pmtag/svctag
befinden.
script ist der Name des Konfigurationsskripts. fd ist ein Dateide-
skriptor, der den Stream festlegt, auf den Stream-Operationen angewen-
det werden sollen. rflag ist eine Bitmaske, die den Modus festlegt, in
dem script interpretiert werden soll. rflag kann zwei Werte, NORUN und
NOASSIGN, annehmen, die durch ein ODER verknüpft werden können. Wenn
rflag Null ist, sind alle Kommandos im Konfigurationsskript zu inter-
pretieren. Wenn rflag das Bit NOASSIGN gesetzt hat, ist das Kommando
assign nicht erlaubt, und es wird ein Fehler zurückgegeben. Wenn rflag
das Bit NORUN gesetzt hat, sind die Kommandos run und runwait nicht
erlaubt, und es wird ein Fehler zurückgegeben.
Die Konfigurationssprache, in der script geschrieben ist, besteht aus
einer Sequenz von Kommandos, wovon jedes Kommando einzeln interpre-
tiert wird. Folgende Schlüsselwörter sind definiert: assign, push,
pop, runwait und run. Das Kommentarzeichen ist ein #. Wenn ein # in
einer Zeile auftaucht, wird alles von dieser Stelle an bis zum Zeilen-
ende ignoriert. Leerzeilen haben keine Bedeutung. Keine Zeile eines
Kommandoskripts darf mehr als 1024 Zeichen besitzen.
assign variable=value
Dies wird für die Definition von Umgebungsvariablen verwendet.
variable ist der Name der Umgebungsvariable und value ist der
Wert, der ihr zugewiesen werden soll. Der zugewiesene Wert muß
eine String-Konstante sein. Es besteht keine Möglichkeit der
Parameterersetzung. Der Wert value kann in Anführungszeichen ste-
hen. Die Regeln für das Setzen von Anführungszeichen sind die der
Shell für die Definition von Umgebungsvariablen. assign schei-
tert, wenn kein Speicherplatz für die neue Variable angelegt wer-
den kann, oder falls irgendein Teil der Angaben ungültig ist.
push module1[, module2, module3, ...]
Dies wird verwendet, um STREAMS-Module auf den Stream-Stack zu
legen (push), der durch fd festgelegt ist. module1 ist der Name
des Moduls, das zuerst auf den Stack gelegt wird, module2 ist der
Name des zweiten Moduls, usw. Das Kommando scheitert, falls
irgendeines der Module nicht auf dem Stack abgelegt werden kann.
Wenn ein Modul nicht abgelegt werden kann, werden die nachfolgend
genannten Module in der Kommandozeile einfach ignoriert und die
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
doconfig(3C) doconfig(3C)
Module, die bereits abgelegt wurden, werden wieder vom Stack
genommen (pop).
pop [module]
Dies wird verwendet, um STREAMS-Module vom angegebenen Stream-
Stack herunterzunehmen (pop). Falls pop ohne Argumente aufgerufen
wird, wird das oberste Modul vom Stream-Stack genommen. Wenn ein
Argument angegeben wird, werden Module einzeln vom Stream-Stack
genommen, bis das angegebene Modul sich an oberster Stelle befin-
det. Falls sich das Modul nicht in dem angegebenen Stream befin-
det, bleibt der Stream unverändert, und das Kommando scheitert.
Falls module das spezielle Schlüsselwort ALL ist, werden alle
Module vom Stream-Stack heruntergenommen. Beachten Sie, daß nur
Module, die sich oberhalb des obersten Treibers befinden, beein-
flußt werden.
runwait command
Das Kommando runwait läßt ein Kommando ablaufen und wartet auf
dessen Beendigung. command ist der Pfadname des Kommandos, das
gestartet werden soll. /usr/bin/sh -c läßt das Kommando ablaufen.
Shell-Skripts können daher aus Konfigurationsskripten heraus aus-
geführt werden. Das Kommando runwait scheitert, wenn command
nicht gefunden oder nicht ausgeführt werden kann oder wenn
command mit einem Wert zurückkehrt, der ungleich Null ist.
run command
Das Kommando run ist identisch mit runwait, bis auf den einzigen
Unterschied, daß es nicht wartet, bis das Kommando command been-
det ist. command ist der Pfadname des Kommandos, das ausgeführt
werden soll. run scheitert nur dann, wenn es nicht in der Lage
ist, einen Sohnprozeß für die Ausführung des Kommandos zu erzeu-
gen.
Obgleich sie syntaktisch nicht zu unterscheiden sind, sind einige Kom-
mandos, die run und runwait zur Verfügung stehen, eingebaute Interpre-
ter-Kommandos. Eingebaute Interpreter-Kommandos werden benutzt, wenn
es erforderlich ist, den Prozeßzustand innerhalb dieses Prozeßkontex-
tes zu ändern. Die eingebauten Interpreter-Kommandos von doconfig sind
den speziellen Shell-Kommandos sehr ähnlich. Und ebenso wie diese
Shell-Kommandos, starten sie für die Ausführung keinen anderen Prozeß.
Sehen Sie dazu nach unter sh(1). Die anfängliche Menge an eingebauten
Kommandos ist:
cd
ulimit
umask
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
doconfig(3C) doconfig(3C)
DIAGNOSE
doconfig liefert 0 zurück, wenn das Skript erfolgreich interpretiert
wurde. Falls ein Kommando im Skript scheitert, wird die Interpretation
des Skripts an dieser Stelle beendet, und es wird eine positive Zahl
zurückgegeben. Diese Zahl zeigt an, welche Zeile im Skript gescheitert
ist. Falls ein Systemfehler auftritt, wird der Wert -1 zurückgelie-
fert. Wenn ein Skript scheitert, sollte der Prozeß, dessen Umgebung
eingerichtet wurde, nicht gestartet werden.
SIEHE AUCH
sh(1), pmadm(1M), sacadm(1M).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98