confstr(3C) confstr(3C)
NAME
confstr - Konfigurierbare Variablen lesen
SYNTAX
#include <unistd.h>
sizet confstr(int name, char *buf, sizet len);
BESCHREIBUNG
Mit der Funktion confstr() können Zeichenketten-Werte abgefragt wer-
den, die von der Konfiguration definiert wurden. Verwendung und Zweck
entsprechen der Funktion sysconf(), diese Funktion wird jedoch für
Zeichenketten-Werte, und nicht für numerische Werte, verwendet.
Eine Anwendung kann zwischen einem ungültigen Parameterwert für einen
Namen und einem Namen unterscheiden, der einer konfigurierbaren Varia-
blen ohne einen von der Konfiguration definierten Wert entspricht.
Dazu wird abgefragt, ob errno modifiziert wurde. Dies entspricht dem
Verhalten von sysconf().
Ursprünglich wurde diese Funktion benötigt, um den von der Konfigura-
tion definierten Standardwert für die Umgebungsvariable PATH abzufra-
gen. Da der Benutzer PATH um Dateiverzeichnisse erweitern kann, die
Dienstprogramme als Ersatz für XCU-Standarddienstprogramme enthalten
können, müssen Anwendungen den Wert der vom System zur Verfügung
gestellten Umgebungsvariablen PATH feststellen können, der den richti-
gen Suchpfad für die Standarddienstprogramme enthält.
Eine Anwendung könnte zum Beispiel
confstr (name, (char *)NULL, (sizet) 0)
dazu verwenden festzustellen, welche Puffergröße für den
Zeichenketten-Wert benötigt wird, mit malloc() einen Puffer für die
Zeichenkette zuweisen und dann wieder confstr() aufrufen, um die Zei-
chenkette zu lesen. Es kann aber auch ein fester, statischer Puffer
zugewiesen werden, der für die meisten Werte ausreichend groß ist (zum
Beispiel 512 oder 1024 Byte). Anschließend kann mit malloc() für den
Fall ein größerer Puffer zugewiesen werden, wenn dieser Puffer zu
klein ist.
Das Argument name steht für die Systemvariable, die abgefragt werden
soll. Die Implementierung unterstützt den Wert CSPATH für name, der
in unistd.h definiert ist.
Wenn len ungleich Null ist und name einen von der Konfiguration defi-
nierten Wert hat, kopiert confstr() diesen Wert in den Puffer mit len
Byte, auf den buf zeigt. Wenn die zurückzugebende Zeichenkette mehr
als len Byte hat (einschließlich abschließendem Nullbyte), so schnei-
det confstr() die Zeichenkette auf len-1 Byte ab und fügt ein
abschließendes Nullbyte an das Ergebnis an. Die Anwendung kann erken-
nen, daß die Zeichenkette abgeschnitten wurde, wenn sie den von
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
confstr(3C) confstr(3C)
confstr() zurückgelieferten Wert mit len vergleicht.
Wenn len gleich Null und buf ein Nullzeiger ist, gibt confstr() den
Integer-Wert wie unten definiert zurück. Es wird aber keine Zeichen-
kette zurückgegeben. Ist len gleich Null, aber buf kein Nullzeiger, so
ist das Ergebnis nicht definiert.
Die Funktion confstr() schlägt fehl, wenn:
EINVAL Der Wert des Arguments name ist ungültig.
ERGEBNIS
Wenn name einen von der Konfiguration definierten Wert hat, gibt die
Funktion confstr() die Puffergröße zurück, die für den gesamten, von
der Konfiguration definierten Wert benötigt wird. Ist dieser Rückgabe-
wert größer als len, wird die in buf zurückgelieferte Zeichenkette
abgeschnitten.
Wenn name ein ungültiger Wert ist, gibt confstr() Null zurück. Der
Fehler wird in errno gesetzt.
Wenn name keinen von der Konfiguration definierten Wert hat, gibt
confstr() Null zurück. errno bleibt dann unverändert.
SIEHE AUCH
pathconf(2), sysconf(3C).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98