CATOPEN(3)

NAZWA
catopen, catclose - otwarcie/zamknięcie katalogu komunikatów

SKŁADNIA
#include <nl_types.h>

nl_catd catopen(const char *name, int flag);
int catclose(nl_catd catalog);

OPIS
Funkcja catopen() otwiera katalog komunikatów i zwraca deskryptor tego katalogu. Deskryptor pozostaje ważny aż do wywołania catclose() lub exec(). Jeśli w celu implementacji deskryptorów katalogów, użyty zostanie deskryptor pliku, to zostanie ustawiony znacznik FD_CLOEXEC.

Argument name określa nazwę otwieranego katalogu komunikatów. Jeśli name jest ścieżką bezwzględną (tzn. zawiera znak '/'), to name wyznacza ścieżkę do katalogu komunikatów. W przeciwnym wypadku używana jest zmienna środowiskowa NLSPATH z ciągiem %N zastąpionym przez name (zobacz locale(7)). Nie jest określone, czy zmianna NLSPATH zostanie użyta, gdy proces ma uprawnienia root-a. Jeśli zmienna NLSPATH nie istnieje, lub katalog komunikatów nie może zostać otwarty w żadnej ze ścieżek przez nią określonych, to zostanie użyta ściężka zależna od implementacji. Ta domyślna ścieżka może zależeć od ustawienia locale LC_MESSAGES gdy argument flag jest równy NL_CAT_LOCALE lub od zmiennej środowiskowej LANG gdy argument flag jest równy 0. Zmiana części LC_MESSAGES ustawień locale może unieważnić otwarte deskryptory katalogów.

Argument catopen() flag służy do wskazania źródeł dla używanego języka. Jeśli ma wartość NL_CAT_LOCALE, to użyte zostanie bieżące ustawienie locale dla LC_MESSAGES. W przeciwnym przypadku użyta zostanie zmienna środowiskowa LANG.

Funkcja catclose() zamyka katalog komunikatów określony przez deskryptor catalog. Unieważnia ona każde następne odwołania do katalogu catalog.

WARTOŚĆ ZWRACANA
Jeśli funkcja catopen() zakończy się pomyślnie, zwraca deskryptor katalogu komunikatow, który jest typu nl_catd. Jeśli funkcja zawiedzie, zwraca (nl_catd) -1 i ustawia errno wskazując rodzaj błędu. Możliwe wartości błędów obejmują wszystkie możliwe wartości dla wywołania open().

Funkcja catclose() zwraca 0 jeśli zakończy się pomyślnie, a -1 w przeciwnym przypadku.

ŚRODOWISKO

LC_MESSAGES
    Może stanowić źródło ustawienia locale LC_MESSAGES i wówczas określa język używany, gdy flag jest ustawione na NL_CAT_LOCALE.

LANG
    Język używany, gdy flag wynosi 0.

UWAGI
Powyższe stanowi opis wg POSIX 1003.1-2001. Dla glibcwartość NL_CAT_LOCALE wynosi 1. (Porównaj MCLoadAll poniżej.) Domyślna ścieżka może być różna, ale zazwyczaj stanowi kilka miejsc wewnątrz katalogu /usr/share/locale.

UWAGI DLA LIBC4 I LIBC5
Funkcje te są dostępne w Linuksie od libc 4.4.4c. W przypadku linuksowych libc4 i libc5, deskryptor katalogu nl_catd, jest odwzorowanym przez mmap() obszarem pamięci, a nie deskryptorem pliku. Argument catopen() flag Powinien być równy albo MCLoadBySet (=0) albo MCLoadAll (=1). Pierwsza z wartości wskazuje, że zestaw z katalogu ma być załadowany, gdy będzie to potrzebne, podczas gdy druga z nich powoduje, że pierwsze wywołanie catopen() załaduje cały katalog do poamieci. Domyślna ścieżka przeszukiwania może być różna, ale zazwyczaj stanowi kilka miejsc wewnątrz katalogów /etc/locale i /usr/lib/locale.

ZGODNE Z
POSIX 1003.1-2001. W XPG 1987, Vol. 3 mówi on: Argument flag funkcji catopen jest zarezerwowany do wykorzystania w przyszłości i powinien być ustawiony na 0. Nie jest jasne, co było źródłem dla stałych MCLoadBySet i MCLoadAll.

ZOBACZ TAKŻE
catgets(3), setlocale(3)