catclose(3) abre/cierra un catálogo de mensajes

Other Alias

catopen

SINOPSIS

#include <nl_types.h>

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

DESCRIPCIÓN

La función catopen() abre un catálogo de mensajes y devuelve un descriptor de catálogo. El descriptor permanece válido hasta una llamada a catclose() o exec(). Si un descriptor de fichero es utilizado para implementar descriptores de catálogo la bandera FD_CLOEXEC es activada.

El argumento name espeficica el nombre del catálogo de mensajes a ser abierto. Si name especifica un camino absoluto (i.e. contiene una '/'), entonces name especifica un nombre de camino para el catálogo de mensajes. Si no, se usa la variable de ambiente NLSPATH donde %N se sustituirá por name (vea locale(7)). Es indefinido si NLSPATH será utilizado cuando un proceso tenga privilegios de superusuario. Si NLSPATH no existe en el entorno, o si un catálogo de mensajes no se puede abrir en ninguno de los caminos especificados por esa variable, se utiliza un camino definido por la implementación. Este camino por defecto puede depender de LC_MESSAGES cuando el argumento flag es NL_CAT_LOCALE y de la variable de entorno LANG cuando el argumento flag es 0. Cambiar la variable de localización LC_MESSAGES puede invalidar los descriptores de catálogos abiertos.

El argumento flag de catopen se emplea para indicar el origen para el idioma a utilizar. Si vale NL_CAT_LOCALE usará la configuración de localización actual para LC_MESSAGES. En otro caso usará la variable de entorno LANG.

La función catclose() cierra el catálogo de mensajes identificado por catalog. Esto invalida cualquier referencia posterior al catálogo de mensajes definido por catalog.

VALOR DEVUELTO

La función catopen() devuelve un descritor de catálogo de mensajes de tipo nl_catd en caso de éxito. En caso de fallo devuelve (nl_catd) -1 y modifica errno para indicar el error. Los posibles valores de error incluyen todos los posibles valores para la llamada open().

La función catclose() devuelve 0 en caso de éxito, o -1 en caso de fallo.

ENTORNO

LC_MESSAGES
Puede ser el origen de la configuración de localización LC_MESSAGES, y por tanto determina el idioma a usar si flag vale NL_CAT_LOCALE.
LANG
El idioma a utilizar si flag vale 0.

OBSERVACIONES

Esta es la descripción de POSIX 1003.1-2001. El valor de glibc para NL_CAT_LOCALE es 1. (Compare MCLoadAll más abajo.) El camino por defecto varía, pero normalmente se suele buscar en un número de sitios por debajo de /usr/share/locale.

OBSERVACIONES PARA LIBC4 Y LIBC5

Estas funciones están disponibles para Linux desde libc 4.4.4c. En el caso de libc4 y libc5 en linux, el descriptor de catálogo nl_catd es una zona de memoria ubicada con mmap() y no un descriptor de fichero. El argumento flag de catopen() debe ser o bien MCLoadBySet (=0) o MCLoadAll (=1). El primer valor indica que un conjunto del catálogo se cargará cuando se necesite, mientras que el último provoca que la llamada inicial a catopen() cargue el catálogo entero en memoria. El camino por defecto varía, pero normalmente se suele buscar en un número de sitios por debajo de /etc/locale y /usr/lib/locale.

CONFORME A

POSIX 1003.1-2001. En XPG 1987, Vol. 3 se dice: El argumento flag de catopen está reservado para un uso futuro y debería ser puesto a 0. No está claro cuál es el origen de las constantes MCLoadBySet y MCLoadAll.