CATOPEN(3)

NOM
catopen, catclose - Ouverture et fermeture d'un catalogue de messages

SYNOPSIS
#include <nl_types.h>

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

DESCRIPTION
La fonction catopen() ouvre un catalogue de messages, et en retourne un descripteur. Celui-ci reste valide jusqu'à un appel catclose() ou execve(2). Si un descripteur de fichier est utilisé pour implémenter le descripteur de catalogue, il disposera de l'attribut FD_CLOEXEC.

L'argument 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 actuelle 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.

VALEUR RENVOYÉE
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 renseigne 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.

ENVIRONNEMENT

LC_MESSAGES
    Peut être la source de la définition de la localisation LC_MESSAGES et peut servir à déterminer le langage à utiliser, si flag vaut NL_CAT_LOCALE.

LANG
    Le langage à utiliser, si flag vaut zéro.

CONFORMITÉ
POSIX.1-2001. L'origine des constantes MCLoadBySet et MCLoadAll est inconnue.

NOTES
Tout ceci correspond à la description de POSIX.1-2001. La valeur de NL_CAT_LOCALE de 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.

  Notes Linux
Ces fonctions sont disponibles sous Linux depuis la version 4.4.4c de libc.so, et ultérieures. Dans le cas des libc4 et libc5, le descripteur de catalogue nl_catd est en réalité une zone de mémoire de projection mmap(2) 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 en 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.

VOIR AUSSI
catgets(3), setlocale(3)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 22 octobre 1996 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 catopen ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.