Provided by: manpages-fr-dev_3.65d1p1-1_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   (consultez
   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_CTYPE_MASK,  LC_COLLATE_MASK,  LC_MESSAGES_MASK,  LC_MONETARY_MASK,  LC_NUMERIC_MASK et
       LC_TIME_MASK.

       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

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

EXEMPLE

       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");

           /* 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() a « 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 */

           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 3.65 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   par   un  rapport  de  bogue  sur  le  paquet
       manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».