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