Linux |
CentOS 4.8 |
|
catopen(3) |
catopen, catclose − Ouverture/fermeture d’un catalogue de messages. |
#include <nl_types.h> nl_catd catopen (char *name, int flag); int catclose (nl_catd catalog); |
La fonction catopen() ouvre un catalogue de message, et en retourne un descripteur. Celui-ci reste valide jusqu’à un appel catclose() ou exec(). Si un descripteur de fichier est utilisé pour implémenter le descripteur de catalogue, il disposera de l’attribut FD_CLOEXEC. name indique le nom du catalogue à ouvrir. Si name indique un chemin d’accès absolu (contenant un ’/’ ) alors il est employé comme chemin d’accès au catalogue. Sinon, la variable d’environnement NLSPATH est utilisée, après avoir substitué name à son argument %N (voir locale(7)). Lorsque le processus à des privilèges root, l’emploi éventuel de NLSPATH n’est pas garanti. Si NLSPATH n’est pas définie dans l’environnement, ou si le catalogue de messages ne peut être ouvert dans aucun des chemins qu’elle contient, alors un chemin prédéfini, dépendant de l’implémentation, est utilisé. Ce dernier peut dépendre de la catégorie de localisation LC_MESSAGES si l’argument flag vaut NL_CAT_LOCALE ou de la variable d’environnement LANG si l’argument flag vaut zéro. Changer la partie LC_MESSAGES de la localisation, peut rendre invalides les descripteurs de catalogues déjà ouverts. L’argument flag de catopen() indique l’origine du langage à utiliser. S’il vaut NL_CAT_LOCALE alors il utilisera la configuration de la localisation pour LC_MESSAGES. Sinon, il utilisera la variable d’environnement LANG. La fonction catclose() Ferme le catalogue identifié par catalog. Ceci invalide toute référence ultérieure au catalogue par le descripteur catalog. |
La fonction catopen() renvoie un descripteur de catalogue de messages, du type nl_catd si elle réussit. En cas d’échec elle renvoie (nl_catd) −1, et remplit errno avec le code d’erreur. Les erreurs possibles incluent toutes celles que peut renvoyer open(2). La fonction catclose() renvoie 0 si elle réussit, ou −1 en cas d’échec. |
LC_MESSAGES |
Peut servir à déterminer le langage à utiliser, si flag vaut NL_CAT_LOCALE. |
LANG |
Le langage à utiliser, si flag vaut zéro. |
Tout ceci correspond à la description de POSIX 1003.1-2001. La valeur de NL_CAT_LOCALE dans la GlibC est 1. (Voir MCLoadAll plus bas). Le chemin par défaut varie, mais il inclut en général plusieurs emplacements sous /usr/share/locale. |
Ces fonctions sont disponibles sous Linux depuis la version 4.4.4.c de libc.so, et ultérieures. Dans le cas des libc4 et libc5, le descripteur de catalogue nl_catd est en réalite une zone de mémoire de projection mmap() et non pas un descripteur de fichier. L’argument flag de catopen() devrait être soit MCLoadBySet (= 0) soit MCLoadAll (= 1). La première valeur indique qu’un ensemble du catalogue doit être chargé quand le besoin s’en fait sentir, alors que la seconde réclame le chargement em mémoire dès l’appel catopen() initial. Le chemin par défaut varie, mais il inclut en général plusieurs emplacements sous /etc/locale et /usr/lib/locale . |
POSIX 1003.1-2001. Dans XPG 1987, Vol. 3 , il est dit : L’argument flag de catopen est réservé pour un usage futur et doit être mis à 0. L’origine des constantes MCLoadBySet et MCLoadAll est inconnue. |
catgets(3), setlocale(3) |
Christophe Blaess, 1997. |
catopen(3) |