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)