Документация по LinuxLinuxDoc.Ru 🔍

catopen, catclose - открывает/закрывает каталог сообщений

НАЗВАНИЕ
catopen, catclose - открывает/закрывает каталог сообщений

СИНТАКСИС

#include

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

ОПИСАНИЕ
Функция catopen() открывает каталог сообщений и возвращает
дескриптор каталога. Дескриптор считается действительным
до вызова catclose() или exec(). Если для реализации
дескрипторов каталогов используется файловый дескриптор,
то для него будет установлен флаг FD_CLOSEXEC.

Аргумент name указывает на имя каталога сообщений, который
необходимо открыть. Если name указывает на абсолютный
(т.е., содержащий символ '/') путь, то name определяет
адрес каталога сообщений. Иначе переменная окружения
NLSPATH используется вместе с name и заменяется на %N (см.
locale(7)). Не определено, будет ли использоваться
NLSPATH, если процесс имеет права root. Если NLSPATH не
содержится в окружении или если каталог сообщений не может
быть открыт ни в одном из путей, указанных в этой
переменной, то используется путь, зависящий от реализации.
Он может зависеть от категории LC_MESSAGES локали в
случае, когда аргумент flag имеет значение NL_CAT_LOCALE,
или от переменной окружения LANG в случае, когда flag
равен 0. Изменение категории LC_MESSAGES локали может
привести к признанию дескрипторов открытых каталогов
недействительными. то просматриваются следующие пути:

Аргумент flag функции catopen используется для определения
источника для используемого языка. Если он установлен в
NL_CAT_LOCALE, то будет использована текущая категория
LC_MESSAGES локали. В противном случае будет использована
переменная окружения LANG.

Функция catclose() закрывает каталог сообщений, указанный
в catalog. Все последующие обращения к каталогу,
определяемому catalog, считаются неверными.


ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция catopen() возвращает дескриптор каталога сообщений
типа nl_catd. В случае ошибки она возвращает (nl_catd) -1
и устанавливает значение errno для сообщения об ошибке.
Возможные коды ошибок те же, что и для функции open().

Функция catclose() возвращает 0 или -1 в случае ошибки.

ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ
LC_MESSAGES
Может задавать категорию LC_MESSAGES локали и,
таким образом, определять используемый язык в
случае, когда flag установлен в NL_CAT_LOCALE.

LANG Язык, используемый в случае, когда flag равен 0.

ЗАМЕЧАНИЯ
Выше приведено описание в соответствие с POSIX
1003.1-2001. В glibc значение NL_CAT_LOCALE равно 1.
(Сравните с MCLoadAll ниже.) Путь, используемый по
умолчанию, варьируется, но обычно представляет собой
различные подкаталоги /usr/share/locale.

ЗАМЕЧАНИЯ ДЛЯ LIBC4 И LIBC5
Эти функции появились в Linux начиная с libc 4.4.4c. В
случае linux libc4 и libc5 дескриптор каталога nl_catd
является файлом, отображаемым в память с помощью функции
mmap(), а не дескриптором файла. Аргумент flag функции
catopen() должен быть либо MCLoadBySet (=0) или MCLoadAll
(=1). Первое значение указывает, что части каталога будут
подгружаться по необходимости. Второе значение приводит к
загрузке всего каталога в память при вызове catopen().
Путь поиска, используемый по умолчанию, варьируется, но
обычно представляет собой различные подкаталоги
/etc/locale и /usr/lib/locale.

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX 1003.1-2001. В XPG 1987, Vol. 3 сказано: Аргумент
flag функции catopen зарезервирован для будущего
использования и должен быть равен 0. Источник констант
MCLoadBySet и MCLoadAll неясен.
Читать новости Linux в Telegram
Linux - catopen, catclose - открывает/закрывает каталог сообщений
Мы в соцсетях ✉