Provided by: manpages-fr_1.67.0-1_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 *s, wordexp_t *p, int flags);

       void wordfree(wordexp_t *p);

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.

EXEMPLE

       D’abord un petit exemple. La sortie est approximativement celle de « ls
       [a-c]*.c ».

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

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

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

DÉTAILS

   Largument chaîne
       Puisque  l’expansion  est effectuée de la même manière que par le shell
       (voir 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 (banalisés) en
       dehors d’un contexte de substitution de commande ou de substitution  de
       paramètres.

       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 (Ndt : donc pas comme le caractère qui indique que  ce
       qui le suit doit être considéré comme du commentaire).

   Lexpansion
       L’expansion  effectuée  consiste en les étapes suivantes : expansion du
       caractère  tilde  (remplacement  de  ~utilisateur  par  le   répertoire
       personnel  de l’utilisateur), substitution de variable (remplacement de
       $FOO par la valeur de la variable d’environnement FOO), substitution de
       commande (remplacement de $(commande) ou ‘commande‘ par la sortie de la
       commande), expansion arithmétique, découpage de champs,  expansion  des
       caractères  de  remplacement  (wildcard), suppression des caractères de
       citation.

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

       Le   splittage   de  champs  est  effectué  en  utilisant  la  variable
       d’environnement $IFS. Si elle n’est pas positionnée, les séparateurs de
       champs sont l’espace, la tabulation et le caractère nouvelle ligne.

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

   Largument flags
       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ésultant 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 expansée.

VALEUR RENVOYÉE

       Si elle réussit, la fonction renvoie 0. Si elle  échoue,  elle  renvoie
       l’une des cinq valeurs suivantes.

       WRDE_BADCHAR
              Occurence   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
              Une  substitution  de  commande  est  apparue,  et  le   drapeau
              WRDE_NOCMD nous demande de considérer que c’est une erreur.

       WRDE_NOSPACE
              Pas assez de mémoire.

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

CONFORMITÉ

       XPG4, POSIX 1003.1-2003

VOIR AUSSI

       fnmatch(3), glob(3)

TRADUCTION

       Ce document est une traduction réalisée par Alain  Portal  <aportal  AT
       univ-montp2 DOT fr> le 4 juillet 2005 et révisée le 14 décembre 2005.

       L’équipe  de  traduction a fait le maximum pour réaliser une adaptation
       française de qualité. La version anglaise la plus à jour de ce document
       est  toujours  consultable via la commande : « LANG=en man 3 wordexp ».
       N’hésitez pas à signaler à l’auteur ou au  traducteur,  selon  le  cas,
       toute erreur dans cette page de manuel.

                               11 novembre 2003                     WORDEXP(3)