Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       wordexp, wordfree - Effectuer l'expansion de mots à la manière d'un shell POSIX

SYNOPSIS

       #include <wordexp.h>

       int wordexp(const char *restrict s, wordexp_t *restrict p, int flags);
       void wordfree(wordexp_t *p);

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

       wordexp(), wordfree():
           _XOPEN_SOURCE

DESCRIPTION

       La fonction wordexp() effectue une expansion de type shell de la chaîne s et  retourne  le
       résultat  dans  la structure pointée par p. Le type de données wordexp_t est une structure
       qui possède au moins les membres we_wordc, we_wordv, et we_offs. Le membre we_wordc est de
       type  size_t  et  donne le nombre de mots dans l'expansion de s. Le membre we_wordv est de
       type char ** et pointe sur le tableau des mots trouvés. Le membre we_offs de  type  size_t
       est quelquefois (suivant flags, voir plus loin) utilisé pour indiquer le nombre d'éléments
       du tableau we_wordv qui devraient être remplis initialement avec le caractère NULL.

       La fonction wordfree() libère la mémoire nouvellement allouée. Plus précisément,  elle  ne
       libère  pas  son  argument  mais  libère  le  tableau  we_wordv ainsi que les chaînes vers
       lesquelles il pointe.

   L'argument chaîne
       Puisque l'expansion est effectuée de la même manière que le shell  (consultez  sh(1))  sur
       les paramètres d'une commande, la chaîne s ne doit pas contenir de caractères qui seraient
       illégaux dans les paramètres d'une commande shell. En particulier, il ne doit pas y  avoir
       de  caractères  nouvelle  ligne  ou  |, &, ;, <, >, (, ), {, } non protégés en dehors d'un
       contexte de substitution de commande ou de paramètre.

       Si l'argument s contient un mot qui débute par un caractère de commentaires « # » hors  de
       tous  guillemets, il n'est pas spécifié si ce mot et les suivants sont ignorés, ou si le #
       est considéré comme un caractère normal.

   L'expansion
       The expansion done consists of the following stages: tilde expansion (replacing  ~user  by
       user's  home  directory),  variable  substitution  (replacing  $FOO  by  the  value of the
       environment variable FOO), command substitution (replacing $(command) or `command` by  the
       output  of  command),  arithmetic  expansion,  field  splitting, wildcard expansion, quote
       removal.

       Le résultat de l'expansion de caractères spéciaux ($@, $*, $#, $?, $-, $$, $!,  $0)  n'est
       pas spécifié.

       Field  splitting  is done using the environment variable $IFS. If it is not set, the field
       separators are space, tab, and newline.

   Le tableau de sortie
       Le tableau we_wordv contient les mots trouvés, suivis par le caractère NULL.

   Le paramètre des attributs
       L'argument flag est un OU inclusif bit à bit des valeurs suivantes :

       WRDE_APPEND
              Ajouter les mots trouvés au tableau résultant d'un précédent appel.

       WRDE_DOOFFS
              Insérer we_offs caractères initiaux NULL dans le tableau we_wordv  (ils  ne  seront
              pas comptés dans le membre we_wordc retourné).

       WRDE_NOCMD
              Ne pas effectuer la substitution de commande.

       WRDE_REUSE
              Le  paramètre p résulte d'un précédent appel à wordexp(), et wordfree() n'a pas été
              appelé. Réutiliser l'espace de stockage alloué.

       WRDE_SHOWERR
              Normalement, lors  d'une  substitution  de  commande,  stderr  est  redirigée  vers
              /dev/null. Ce drapeau spécifie que stderr ne sera pas redirigé.

       WRDE_UNDEF
              Considérer  comme  une  erreur  le  fait  qu'une  variable  shell  non définie soit
              développée.

VALEUR RENVOYÉE

       On success, wordexp()  returns 0. On failure, wordexp()   returns  one  of  the  following
       nonzero values:

       WRDE_BADCHAR
              Occurrence  illégale d'un caractère nouvelle ligne ou d'un caractère parmi |, &, ;,
              <, >, (, ), {, }.

       WRDE_BADVAL
              Il y a une référence à une variable shell non définie,  et  le  drapeau  WRDE_UNDEF
              nous demande de considérer que c'est une erreur.

       WRDE_CMDSUB
              Command substitution requested, but the WRDE_NOCMD flag told us to consider this an
              error.

       WRDE_NOSPACE
              Plus assez de mémoire.

       WRDE_SYNTAX
              Erreur de syntaxe shell, comme des parenthèses ou des guillemets non appariés.

VERSIONS

       wordexp() et wordfree() sont fournies par la glibc depuis la version 2.1.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌───────────┬──────────────────────┬──────────────────────────────────────────────────────┐
       │InterfaceAttributValeur                                               │
       ├───────────┼──────────────────────┼──────────────────────────────────────────────────────┤
       │wordexp()  │ Sécurité des threads │ MT-Unsafe race:utent const:env env sig:ALRM timer    │
       │           │                      │ locale                                               │
       ├───────────┼──────────────────────┼──────────────────────────────────────────────────────┤
       │wordfree() │ Sécurité des threads │ MT-Safe                                              │
       └───────────┴──────────────────────┴──────────────────────────────────────────────────────┘
       In  the  above  table,  utent  in  race:utent  signifies  that  if  any  of  the functions
       setutent(3), getutent(3), or endutent(3)  are used in parallel in different threads  of  a
       program,  then  data  races  could  occur.  wordexp()   calls  those  functions, so we use
       race:utent to remind users.

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008.

EXEMPLES

       La sortie du programme d'exemple suivant est approximativement celle de « ls [a-c]*.c ».

       #include <stdio.h>
       #include <stdlib.h>
       #include <wordexp.h>

       int
       main(int argc, char *argv[])
       {
           wordexp_t p;
           char **w;

           wordexp("[a-c]*.c", &p, 0);
           w = p.we_wordv;
           for (int i = 0; i < p.we_wordc; i++)
               printf("%s\n", w[i]);
           wordfree(&p);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       fnmatch(3), glob(3)

COLOPHON

       Cette page fait partie de la publication 5.13 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>,  David  Prévot  <david@tilapin.org>  et  Frédéric  Hantrais
       <fhantrais@gmail.com>

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

                                           27 août 2021                                WORDEXP(3)