noble (3) newlocale.3.gz

Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       newlocale, freelocale - Créer, modifier et libérer un objet de paramètres régionaux

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <locale.h>

       locale_t newlocale(int category_mask, const char *locale,
                          locale_t base);
       void freelocale(locale_t locobj);

   Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

       newlocale(), freelocale() :
           Depuis la glibc 2.10 :
               _XOPEN_SOURCE >= 700
           Avant la glibc 2.10 :
               _GNU_SOURCE

DESCRIPTION

       La  fonction  newlocale()  crée  un nouvel objet de paramètres régionaux ou modifie un objet existant, en
       renvoyant une référence vers le nouvel objet ou l’objet modifié comme résultat de  la  fonction.  L’appel
       crée un nouvel objet ou modifie un objet existant en fonction de la valeur de base :

       -  si base est (locale_t) 0, un nouvel objet est créé ;

       -  si  base  indique un objet de paramètres régionaux valable existant (c’est-à-dire un objet renvoyé par
          un précédent appel de newlocale() ou duplocale(3)), alors  cet  objet  est  modifié  par  l’appel.  Si
          l’appel  réussit,  le  contenu  de  base  n’est  pas garanti (en particulier, l’objet indiqué par base
          pourrait être libéré et un nouvel objet créé). Par conséquent, l’appelant devrait s’assurer de ne plus
          utiliser  base avant l’appel de newlocale() et devrait ensuite se rapporter à l’objet modifié à l’aide
          de la référence renvoyée comme résultat de la fonction. Si l’appel échoue, le contenu  de  base  reste
          valable et sans modification.

       Si  base  est l’objet spécial de paramètres régionaux LC_GLOBAL_LOCALE (consultez duplocale(3)), ou n’est
       pas (locale_t) 0 ni un identifiant d’objet de paramètres  régionaux  valable,  le  comportement  est  non
       défini.

       L’argument category_mask est un masque binaire indiquant les catégories de paramètres régionaux à définir
       dans un objet de paramètres régionaux nouvellement créé ou modifié dans un objet existant. Le masque  est
       construit   avec   un   OU   binaire  des  constantes  LC_ADDRESS_MASK,  LC_CTYPE_MASK,  LC_COLLATE_MASK,
       LC_IDENTIFICATION_MASK,   LC_MEASUREMENT_MASK,   LC_MESSAGES_MASK,   LC_MONETARY_MASK,   LC_NUMERIC_MASK,
       LC_NAME_MASK,  LC_PAPER_MASK,  LC_TELEPHONE_MASK  et  LC_TIME_MASK.  Alternativement, le masque peut être
       défini comme LC_ALL_MASK, ce qui est équivalent à effectuer un  OU  binaire  sur  toutes  les  constantes
       précédentes.

       Pour  chaque  catégorie indiquée dans category_mask, les données de paramètres régionaux de locale seront
       utilisées dans l’objet renvoyé par newlocale(). Si un nouvel objet de paramètres régionaux est  en  cours
       de  création,  les données de toutes les catégories non indiquées dans category_mask sont prises dans les
       paramètres régionaux par défaut ("POSIX").

       Les valeurs prédéfinies suivantes de locale sont définies pour toutes les  catégories  qui  peuvent  être
       indiquées dans category_mask :

       "POSIX"
              Un environnement de paramètres régionaux minimal pour les programmes en langage C.

       "C"    Équivalent à "POSIX".

       ""     Un  environnement  natif  défini  pour  l’implémentation  correspondant  aux valeurs des variables
              d’environnement LC_* et LANG (consultez locale(7)).

   freelocale()
       La fonction freelocale() désalloue les ressources associées à locobj, un objet  de  paramètres  régionaux
       renvoyé  par  un  appel  à  newlocale()  ou  duplocale(3). Si locobj est LC_GLOBAL_LOCALE ou n’est pas un
       identifiant d’objet valable de paramètres régionaux, le résultat n’est pas défini.

       Une fois qu’un objet de paramètres régionaux a été libéré, le programme ne devrait plus l’utiliser.

VALEUR RENVOYÉE

       En cas de réussite, newlocale() renvoie  un  identifiant  qui  peut  être  utilisé  dans  les  appels  de
       duplocale(3),  freelocale()  et  d’autres  fonctions  qui prennent un argument locale_t. En cas d’erreur,
       newlocale() renvoie (locale_t) 0 et définit errno pour indiquer l’erreur.

ERREURS

       EINVAL Au moins un bit de  category_mask  ne  correspond  pas  à  une  catégorie  valable  de  paramètres
              régionaux.

       EINVAL locale est NULL.

       ENOENT locale n’est pas un pointeur de chaîne vers des paramètres régionaux valables.

       ENOMEM Pas assez de mémoire pour créer un objet de paramètres régionaux.

VERSIONS

       Les fonctions newlocale() et freelocale() sont apparues pour la première fois dans la glibc 2.3.

STANDARDS

       POSIX.1-2008.

NOTES

       Chaque  objet  de  paramètres  régionaux  créé  par  newlocale()  devrait  être  désalloué  en  utilisant
       freelocale().

EXEMPLES

       Le programme suivant prend jusqu’à deux arguments en ligne de commande, identifiant chacun des paramètres
       régionaux.  Le premier argument est nécessaire et sert à définir le catégorie LC_NUMERIC dans un objet de
       paramètres régionaux créé avec newlocale(). Le second argument  est  facultatif  et  sert  à  définir  la
       catégorie LC_TIME de l’objet de paramètres régionaux s’il est présent.

       Après création et initialisation de l’objet de paramètres régionaux, le programme l’applique en utilisant
       uselocale(3) et teste ensuite l’effet de la modification de paramètres régionaux en :

       (1)  affichant un nombre à virgule avec une partie décimale. Cette sortie sera affectée  par  le  réglage
            LC_NUMERIC.  Dans  de  nombreux  paramètres  régionaux de langues européennes, le partie décimale du
            nombre est séparée de la partie entière par une virgule, plutôt que par un point ;

       (2)  affichant la date. Le format et la langue de sortie seront affectés par le réglage LC_TIME.

       Les sessions suivantes d’interpréteur de commandes montrent des exemples d’exécution de ce programme.

       Définir la catégorie LC_NUMERIC à fr_FR (français) :

           $ ./a.out fr_FR
           123456,789
           Fri Mar  7 00:25:08 2014

       Définir la catégorie LC_NUMERIC à fr_FR (français) et la catégorie LC_TIME à it_IT (italien) :

           $ ./a.out fr_FR it_IT
           123456,789
           ven 07 mar 2014 00:26:01 CET

       Indiquer un réglage LC_TIME de chaîne vide, ce qui force la valeur  à  être  prise  des  réglages  de  la
       variable d’environnement (qui est ici indiquée par mi_NZ, maori de Nouvelle-Zélande) :

           $ LC_ALL=mi_NZ ./a.out fr_FR ""
           123456,789
           Te Paraire, te 07 o Poutū-te-rangi, 2014 00:38:44 CET

   Source du programme
       #define _XOPEN_SOURCE 700
       #include <locale.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <time.h>

       #define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \
                               } while (0)

       int
       main(int argc, char *argv[])
       {
           char buf[100];
           time_t t;
           size_t s;
           struct tm *tm;
           locale_t loc, nloc;

           if (argc < 2) {
               fprintf(stderr, "Utilisation : %s locale1 [locale2]\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           /* Créer un nouvel objet de paramètres régionaux, prenant le réglage
              LC_NUMERIC des paramètres régionaux indiqués par argv[1]. */

           loc = newlocale(LC_NUMERIC_MASK, argv[1], (locale_t) 0);
           if (loc == (locale_t) 0)
               errExit("newlocale");

           /* Si un deuxième argument de ligne de commande à été indiqué,
              modifier l’objet de paramètres régionaux pour prendre le
              réglage LC_TIME des paramètres régionaux indiqués par argv[2].
              Assignation du résultat de cet appel à newlocale() à « nloc »
              plutôt que « loc » afin de pouvoir préserver « loc » si cet
              appel échoue. */

           if (argc > 2) {
               nloc = newlocale(LC_TIME_MASK, argv[2], loc);
               if (nloc == (locale_t) 0)
                   errExit("newlocale");
               loc = nloc;
           }

           /* Appliquer les paramètres régionaux nouvellement créé à
              ce thread. */

           uselocale(loc);

           /* Tester l’effet de LC_NUMERIC. */

           printf("%8.3f\n", 123456.789);

           /* Tester l’effet de LC_TIME. */

           t = time(NULL);
           tm = localtime(&t);
           if (tm == NULL)
               errExit("time");

           s = strftime(buf, sizeof(buf), "%c", tm);
           if (s == 0)
               errExit("strftime");

           printf("%s\n", buf);

           /* Libérer l’objet de paramètres régionaux. */

           uselocale(LC_GLOBAL_LOCALE);    /* Ainsi 'loc' n'est plus utilisé */
           freelocale(loc);

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       locale(1), duplocale(3), setlocale(3), uselocale(3), locale(5), locale(7)

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier   <barbier@debian.org>   et   David   Prévot
       <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à la  GNU  General  Public  License
       version 3   ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les  conditions  de  copie  et  de
       distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       ⟨debian-l10n-french@lists.debian.org⟩.