Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ catopen(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

catgets(3C)

setlocale(3C)

environ(5)

fcntl(5)

catopen(3C)                                                     catopen(3C)

NAME
     catopen, catclose - Meldungskatalog öffnen und schließen

SYNTAX
     #include <nltypes.h>

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

     int catclose(nlcatd catd);

BESCHREIBUNG
     catopen() öffnet ein Verzeichnis mit Meldungen und liefert einen Ver-
     zeichnisdeskriptor zurück. name gibt den Namen des zu verwendenden
     Meldungskatalogs an, der geöffnet werden soll. Wenn name einen Schräg-
     strich / enthält, dann gibt name den Pfadnamen für einen Meldungskata-
     log an. Ansonsten wird die Umgebungsvariable NLSPATH verwendet. Wenn
     NLSPATH in der Umgebung nicht existiert oder der Meldungskatalog unter
     einem in NLSPATH definierten Pfad nicht geöffnet werden kann, wird der
     voreingestellte Pfad verwendet [siehe nltypes(5)]. Wenn oflag den
     Wert NLCATLOCALE hat, kann sich dadurch die Einstellung von
     LCMESSAGES ändern. Wenn oflag 0 ist, kann das Auswirkungen auf die
     Umgebungsvariable LANG haben.

     Der Deskriptor eines Meldungskatalogs bleibt in einem Prozeß so lange
     gültig, bis der Prozeß oder ein erfolgreicher Aufruf einer der exec-
     Funktionen ihn schließt. Eine Änderung in der Einstellung der Katego-
     rie LCMESSAGES setzt die existierenden offenen Kataloge außer Kraft.

     Die Namen der Meldungskataloge und ihre Positionen auf dem Speicherme-
     dium sind je nach System verschieden. Einzelne Anwendungen können Mel-
     dungskataloge nach eigenen Gesichtspunkten benennen und anlegen. Daher
     wird ein Mechanismus benötigt, der genau angibt, wo sich der Meldungs-
     katalog befindet.

     Die Variable NLSPATH liefert sowohl die Position von Meldungskatalogen
     in der Form eines Suchpfads, als auch die Namenskonventionen, die mit
     den Meldungskatalogen verknüpft sind. Zum Beispiel:

          NLSPATH=/nlslib/%L/%N.cat:/nlslib/%N/%L

     Das Metazeichen % zeigt ein Substitutionsfeld an, wobei %L die aktu-
     elle Einstellung der Umgebungsvariablen LANG (siehe folgenden
     Abschnitt) ersetzt und %N den Wert des Parameters name ersetzt, der an
     catopen() übergeben wird. Im obigen Beispiel sucht catopen() daher
     zuerst in /nlslib/$LANG/name.cat und dann in /nlslib/name/$LANG nach
     dem angegebenen Meldungskatalog.

     NLSPATH wird üblicherweise systemweit eingestellt (z. B. in
     /etc/profile) und macht daher die Positionierungs- und Namenskonven-
     tionen für die Meldungskataloge sowohl für die Programme als auch die
     Benutzer transparent.




Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

catopen(3C)                                                     catopen(3C)

     Der komplette Satz der Metazeichen umfaßt folgende Symbole:

     %N   Wert des Namensparameters, der an catopen() übergeben wird

     %L   Wert von LANG

     %l   Wert des Sprachenelements aus LANG

     %t   Wert des Landelements aus LANG

     %c   Wert des Zeichensatzelements aus LANG

     %%   das Zeichen %

     Die Umgebungsvariable LANG bietet die Möglichkeit, die Muttersprache,
     lokale Besonderheiten und den Zeichensatz des Benutzers in Form einer
     ASCII-Zeichenkette anzugeben:

          LANG=language[_territory[.codeset]]

     Ein Benutzer aus Österreich, der Deutsch spricht und ein Terminal mit
     dem Zeichensatz ISO 8859/1 verwendet, stellt die Variable LANG auf den
     folgenden Wert:

          LANG=DeA.88591

     Auf diese Weise sollte es einem Benutzer möglich sein, entsprechende
     relevante Meldungskataloge zu finden, vorausgesetzt, sie existieren.

     Sollte die Variable LANG nicht gesetzt sein, dann wird der Wert von
     LCMESSAGES verwendet, wie er von setlocale() zurückgeliefert wird.
     Ist dieser Wert NULL, dann wird der voreingestellte Pfad verwendet,
     der in nltypes definiert wird.

     Wenn oflag den Wert 0 hat, wird die Umgebungsvariable LANG zur Lokali-
     sierung des Meldungskatalogs verwendet, ohne Berücksichtigung der
     Kategorie LCMESSAGES. Wenn oflag den Wert NLCATLOCALE hat, wird
     LCMESSAGES zur Lokalisierung des Meldungskatalogs verwendet.

     catclose() schließt den Meldungskatalog catd.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     Die Funktion catopen() kann bei folgenden Bedingungen fehlschlagen:

     EACCES          Für die Komponente des Pfads zum Meldungskatalog wird
                     die Suchberechtigung verweigert, oder für den Mel-
                     dungskatalog wird die Schreibberechtigung verweigert.



Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

catopen(3C)                                                     catopen(3C)

     EMFILE          Im aufrufenden Prozeß sind zur Zeit die über OPENMAX
                     festgelegte maximale Anzahl Dateideskriptoren geöff-
                     net.

     ENAMETOOLONG    Die Länge des Pfadnamens für den Meldungskatalog über-
                     schreitet PATHMAX, oder eine Komponente des Pfadnames
                     ist länger als NAMEMAX.

     ENAMETOOLONG    Die Auflösung des Pfadnamens eines symbolischen Links
                     hat ein Zwischenergebnis erzeugt, dessen Länge
                     PATHMAX überschreitet.

     ENFILE          Es sind zu viele Dateien im System geöffnet.

     ENOENT          Der Meldungskatalog ist nicht vorhanden, oder das
                     Argument name zeigt auf eine leere Zeichenkette.

     ENOMEM          Es ist nicht genügend Speicherplatz verfügbar.

     ENOTDIR         Eine Komponente des Pfads zum Meldungskatalog ist kein
                     Verzeichnis. Die Funktion catclose() kann bei folgen-
                     den Bedingungen fehlschlagen:

     EBADF           Der Katalogdeskriptor ist ungültig.

     EINTR           Die Funktion catclose() wurde durch ein Signal unter-
                     brochen.

ERGEBNIS
     Bei Erfolg liefert catopen() einen Deskriptor für den Meldungskatalog
     zurück, welcher beim späteren Aufruf von catgets() und catclose() ver-
     wendet werden kann. Ansonsten liefert catopen() den Wert (nlcatd)-1
     zurück.

     catclose() liefert bei Erfolg 0 zurück; tritt ein Fehler auf, wird -1
     zurückgegeben.

HINWEISE
     Einige Implementierungen von catopen() verwenden malloc(), um internen
     Pufferbereichen Speicherplatz zuzuweisen. Die Funktion catopen()
     schlägt möglicherweise fehl, wenn zur Aufnahme dieser Puffer nicht
     genügend Speicherplatz verfügbar ist.

     Deskriptoren von Meldungskatalogen sind nach dem Aufruf einer der
     exec-Funktionen nicht mehr gültig.

     Anwendungsentwickler sollten sich darüber im Klaren sein, daß bisher
     noch keine Richtlinien für die Position von Meldungskatalogen ausgear-
     beitet wurden. Daher sollte darauf geachtet werden, daß Konflikte mit
     Katalogen vermieden werden, die von anderen Anwendungen und den Stan-
     darddienstprogrammen verwendet werden.



Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

catopen(3C)                                                     catopen(3C)

SIEHE AUCH
     catgets(3C), setlocale(3C), environ(5), fcntl(5), nltypes(5).




















































Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026