dwww Home | Manual pages | Find package

wordexp(3)                 Library Functions Manual                 wordexp(3)

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

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

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 pa-
       ramè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  commen-
       taires  « # »  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  carac-
       tère normal.

   L'expansion
       L'expansion  effectuée  consiste en les étapes suivantes : expansion du
       caractère tilde (remplacement de ~utilisateur par le répertoire person-
       nel  de  l'utilisateur), substitution de variable (remplacement de $FOO
       par la valeur de la variable d'environnement FOO), substitution de com-
       mande  (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 (quotes).

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

       Le  découpage  des champs est effectué en utilisant la variable d'envi-
       ronnement $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, 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 ap-
              pel.

       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  re-
              tourné).

       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 re-
              dirigée vers /dev/null. Cet attribut 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
       En cas de succès, wordexp() renvoie 0. En cas  d'échec,  wordexp()  une
       des valeurs suivantes différentes de zéro :

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

       WRDE_BADVAL
              Il y a une référence à une variable shell non définie, et  l'at-
              tribut  WRDE_UNDEF  nous demande de considérer que c'est une er-
              reur.

       WRDE_CMDSUB
              Une  substitution  de  commande  est  requise,  lais  l'attribut
              WRDE_NOCMD nous demande de considérer que c'est une erreur.

       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 depuis la glibc 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                           │
       └───────────┴──────────────────────┴───────────────────────────────────┘
       Dans le tableau ci-dessus, utent dans race:utent signifie que si unedes
       fonctions  setutent(3),  getutent(3) ou endutent(3) est utilisée en pa-
       rallèle dans différents threads d'un programme, des conditions de  com-
       pétition  de données peuvent survenir. wordexp() appelle ces fonctions,
       aussi race:utent est utilisé pour le rappeler aux utilisateurs.

STANDARDS
       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(void)
       {
           wordexp_t p;
           char **w;

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

VOIR AUSSI
       fnmatch(3), glob(3)

TRADUCTION
       La  traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David Prévot <david@tilapin.org>, Frédéric  Hantrais  <fhan-
       trais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

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

Pages du manuel de Linux 6.03   5 février 2023                      wordexp(3)

Generated by dwww version 1.15 on Sat Jun 29 00:41:27 CEST 2024.