Provided by: manpages-fr-dev_4.13-4_all bug

NOM

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

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 à é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
       la cause de 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
       version 2.3 de la bibliothèque C de GNU.

CONFORMITÉ

       POSIX.1-2008.

NOTES

       Each locale object created by newlocale()  should be deallocated using 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 <stdio.h>
       #include <stdlib.h>
       #include <locale.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");

           /* If a second command-line argument was specified, modify the
              locale object to take the LC_TIME settings from the locale
              specified in argv[2]. We assign the result of this newlocale()
              call to 'nloc' rather than 'loc', since in some cases, we might
              want to preserve 'loc' if this call fails. */

           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_HANDLE);    /* So 'loc' is no longer in use */
           freelocale(loc);

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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 ⟨⟩.