NOMBRE¶
catopen, catclose - abre/cierra un catálogo de mensajes
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.
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.
VÉASE TAMBIÉN¶
catgets(3),
setlocale(3)