Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

catopen - Meldungskatalog öffnen

&pagelevel(4)&pagelevel

Definition

#include <nl_types.h>

nl_catd catopen(const char *name, int oflag);

Beschreibung

catopen() öffnet einen Meldungskatalog und liefert einen Meldungskatalog-Deskriptor zurück.

name gibt den Namen des zu öffnenden Meldungskatalogs an. Wenn name einen Schrägstrich / enthält, wird name als absoluter Pfadname interpretiert. Andernfalls wird die Umgebungsvariable NLSPATH ausgewertet, wobei name für %N eingesetzt wird (siehe auch Abschnitt "Lokalität“).

Wenn die Umgebungsvariable NLSPATH nicht existiert oder der Meldungskatalog unter irgendeiner in NLSPATH definierten Pfadkomponente nicht geöffnet werden kann, wird der voreingestellte Pfad verwendet (siehe nl_types.h).

Wenn oflag gleich NL_CAT_LOCALE ist, wird diese Voreinstellung durch die Kategorie LC_MESSAGES bestimmt.

Wenn oflag 0 ist, wird nur die Umgebungsvariable LANG ausgewertet unabhängig vom Inhalt der Kategorie LC_MESSAGES (siehe auch Abschnitt "Umgebungsvariablen“).

Ein Meldungskatalog-Deskriptor bleibt in einem Prozess so lange gültig, bis ihn der Prozess oder ein erfolgreicher Aufruf einer exec-Funktion schließt. Eine Änderung in der Kategorie LC_MESSAGES kann existierende offene Kataloge ungültig machen.

Wenn ein Dateideskriptor benutzt wird, um Meldungskatalog-Deskriptoren zu definieren, wird das Bit FD_CLOEXEC gesetzt (siehe auch fcntl.h).

Returnwert

Meldungskatalog-Deskriptor



bei Erfolg. Dieser kann nun von catgets() und catclose() verwendet werden.


(nl_catd)-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

catopen() schlägt fehl, wenn gilt:

 

EACCES

Eine Komponente des Meldungskatalog-Pfadpräfixes darf nicht durchsucht werden, oder der Meldungskatalog darf nicht gelesen werden.

 

EMFILE

Der Prozess verwendet mehr als {OPEN_MAX} Dateideskriptoren gleichzeitig.


ENAMETOOLONG



Die Länge des Meldungskatalog-Pfadnamens überschreitet {PATH_MAX}, oder eine Komponente des Pfadnamens ist größer als {NAME_MAX} oder die Auflösung eines symbolischen Verweises erzeugt ein Zwischenergebnis, das länger ist als {PATH_MAX}.

 

ENFILE

Zu viele Dateinamen sind aktuell im System offen.

 

ENOENT

Der Meldungskatalog existiert nicht,
oder name weist auf eine leere Zeichenkette.

 

ENOMEM

Es ist nicht genügend Speicherplatz verfügbar.

 

ENOTDIR

Eine Komponente des Meldungskatalog-Pfadnamens ist kein Verzeichnis.

Hinweise

catopen() verwendet malloc(), um Speicherplatz für die internen Pufferbereiche zu reservieren. catopen() schlägt fehl, wenn nicht genügend Speicherplatz für die Unterbringung dieser Puffer verfügbar ist.

Portable Anwendungen müssen berücksichtigen, dass Meldungskatalog-Deskriptoren nach dem Aufruf einer exec-Funktion nicht mehr gültig sind.

Jede Anwendung muss den zugehörigen Meldungskatalog in einem der durch DEF_NLSPATH voreingestellten Dateiverzeichnisse so ablegen, dass er bei der Ersetzung von %N durch name gefunden wird (siehe auch nl_types.h).

Siehe auch

catclose(), catgets(), fcntl.h, nl_types.h, Abschnitt "Lokalität“ und Abschnitt "Umgebungsvariablen“.