Provided by: manpages-fr-dev_4.27.0-1_all bug

NOM

       glob, globfree - Rechercher un chemin d'accès correspondant à un motif

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <glob.h>

       int glob(const char *restrict pattern, int flags,
                int (*errfunc)(const char *epath, int eerrno),
                glob_t *restrict pglob);
       void globfree(glob_t *pglob);

DESCRIPTION

       La  fonction  glob()  recherche  tous les chemins d'accès correspondant au motif pattern en utilisant les
       règles du shell (consultez glob(7)). Aucun remplacement de  tilde  ou  substitution  de  paramètre  n'est
       effectué. Si vous avez besoin de ces fonctionnalités, utilisez wordexp(3).

       La fonction globfree() libère la mémoire allouée dynamiquement lors d'un appel précédent à glob().

       Les  résultats d'un appel à glob() sont stockés dans une structure pointée par pglob. Cette structure est
       de type glob_t (défini dans <glob.h>) et inclut les éléments définis par POSIX.2 (il peut y en avoir plus
       sous forme d'extension GNU) :

           typedef struct {
               size_t   gl_pathc;    /* Nombre de chemins correspondant  */
               char   **gl_pathv;    /* Liste des chemins correspondant  */
               size_t   gl_offs;     /* Entrées à réserver dans gl_pathv. */
           } glob_t;

       Les résultats sont sauvés dans une zone allouée dynamiquement.

       Le paramètre flags est constitué d'un OU binaire « | » entre zéro  ou  plus  des  constantes  symboliques
       suivantes, modifiant le comportement de glob() :

       GLOB_ERR
              Terminer dès qu'une erreur se produit (par exemple, un répertoire non lisible). Par défaut, glob()
              tente, malgré les erreurs, de lire tous les répertoires qu'il peut.

       GLOB_MARK
              Ajoute une barre oblique finale à chaque nom correspondant à un répertoire.

       GLOB_NOSORT
              Ne  pas  trier  les  chemins d'accès renvoyés. La seule raison pour faire cela est d'économiser du
              temps de traitement. Par défaut, les chemins d'accès renvoyés sont triés.

       GLOB_DOOFFS
              Réserve pglob->gl_offs points d'entrée au début de la liste  de  chaînes  dans  pglob->pathv.  Les
              points d'entrée réservés contiennent des pointeurs NULL.

       GLOB_NOCHECK
              Si  aucun motif ne correspond, renvoyer le motif original. Par défaut, glob() renvoie GLOB_NOMATCH
              s'il n'y a pas de correspondance.

       GLOB_APPEND
              Ajoute les résultats de cet appel au tableau de résultats renvoyé par un appel précédent à glob().
              Ne pas indiquer cet attribut lors du premier appel de glob().

       GLOB_NOESCAPE
              Ne pas permettre l'utilisation de barre oblique inverse (« \ »)  pour  désactiver  les  caractères
              d'échappement.  Normalement,  une  barre  oblique  inverse  peut  être  utilisée  pour échapper le
              caractère qui le  suit,  fournissant  un  mécanisme  de  désactivation  du  sens  particulier  des
              méta-caractères.

       flags  peut  également  utiliser les constantes suivantes, qui sont des extensions GNU, non définies dans
       POSIX.2 :

       GLOB_PERIOD
              Permettre à un point en tête de chemin de  correspondre  à  un  méta-caractère.  Par  défaut,  les
              méta-caractères ne peuvent pas correspondre à un point en tête de chemin.

       GLOB_ALTDIRFUNC
              Utiliser  les  fonctions  alternatives  pglob->gl_closedir,  pglob->gl_readdir, pglob->gl_opendir,
              pglob->gl_lstat et pglob->gl_stat pour l'accès au  système  de  fichiers  au  lieu  des  fonctions
              normales de bibliothèque.

       GLOB_BRACE
              Développer  dans  le  style  csh(1) les expressions de type {a,b}. Les expressions entre accolades
              peuvent être  imbriquées.  Ainsi,  par  exemple,  spécifier  le  motif  «  {foo/{,cat,dog},bar}  »
              retournera  le  même résultat que quatre appels à glob() séparés utilisant les chaînes : « foo/ »,
              « foo/cat », « foo/dog », et « bar ».

       GLOB_NOMAGIC
              Si le motif renvoyé  ne  contient  pas  de  méta-caractères,  il  sera  retourné  comme  seul  mot
              correspondant, même s'il n'existe pas de fichier avec ce nom.

       GLOB_TILDE
              Prendre  en charge l'expansion du tilde. Si un tilde (« ~ ») est le seul caractère du motif, ou si
              un tilde en tête est suivi par une barre oblique (« / »), le répertoire  personnel  de  l'appelant
              sera  substitué  au  tilde.  Si  un tilde en tête est suivi par un nom d'utilisateur (par exemple,
              « ~alain/bin », le tilde et le nom d'utilisateur sont substitués par le  répertoire  personnel  de
              cet  utilisateur.  Si  le nom d'utilisateur n'est pas valide ou si le répertoire personnel ne peut
              pas être déterminé, la substitution n'est pas effectuée.

       GLOB_TILDE_CHECK
              Fournit un comportement similaire à  celui  de  GLOB_TILDE.  La  différence  est  que  si  le  nom
              d'utilisateur  n'est  pas valable ou si le répertoire personnel ne peut pas être déterminé, plutôt
              que d'utiliser le motif lui-même comme nom, glob() renvoie GLOB_NOMATCH pour indiquer l'erreur.

       GLOB_ONLYDIR
              C'est une indication pour glob()  indiquant  que  l'appelant  ne  s'intéresse  qu'aux  répertoires
              correspondant  au  motif.  Si  l'implémentation peut facilement déterminer le type de fichier, les
              fichiers qui ne sont pas des répertoires ne sont pas renvoyés à l'appelant. Toutefois,  l'appelant
              doit  toujours vérifier que les fichiers renvoyés sont des répertoires (le but de cet attribut est
              simplement d'optimiser les performances lorsque l'appelant ne s'intéresse qu'aux répertoires).

       Si errfunc n'est pas NULL, elle sera appelée en cas d'erreur, avec les arguments epath un pointeur sur le
       chemin qui a échoué, et eerrno la valeur de errno telle qu'elle a été renvoyée par un appel à opendir(3),
       readdir(3) ou stat(2). Si errfunc renvoie une valeur non nulle, ou si GLOB_ERR est positionné, glob()  se
       terminera après l'appel de errfunc.

       Si  glob()  réussit complètement, pglob->gl_pathc contient le nombre de chemins d'accès correspondants et
       pglob->gl_pathv contient un pointeur sur une liste des chemins. Le  premier  pointeur  après  le  dernier
       chemin vaut NULL.

       Il  est  possible  d'appeler glob() plusieurs fois. Dans ce cas, l'attribut GLOB_APPEND doit être indiqué
       dans flags durant le second appel et les suivants.

       En tant qu'extension GNU, le champ pglob->gl_flags contient les attributs indiqués liés par  un  OU  avec
       GLOB_MAGCHAR si un méta-caractère a été trouvé.

VALEUR RENVOYÉE

       S'il réussit complètement glob() renvoie zéro. Les autres valeurs renvoyées peuvent être :

       GLOB_NOSPACE
              pas assez de mémoire,

       GLOB_ABORTED
              erreur de lecture, et

       GLOB_NOMATCH
              aucune correspondance trouvée.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌────────────┬──────────────────────┬───────────────────────────────────────────────────────────────────┐
       │ InterfaceAttributValeur                                                            │
       ├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
       │ glob()     │ Sécurité des threads │ MT-Unsafe race:utent env sig:ALRM timer locale                    │
       ├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
       │ globfree() │ Sécurité des threads │ MT-Safe                                                           │
       └────────────┴──────────────────────┴───────────────────────────────────────────────────────────────────┘

       Dans  le  tableau  ci-dessus,  utent  dans  race:utent  signifie  que si des fonctions parmi setutent(3),
       getutent(3) ou endutent(3)  sont utilisées en parallèle  dans  différents  threads  d'un  programme,  des
       situations  de  compétition  entre  données  pourraient  apparaître.  glob()  appelle ces fonctions, nous
       utilisons donc race:utent pour le rappeler aux utilisateurs.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, POSIX.2.

NOTES

       Les éléments de la structure gl_pathc et gl_offs sont déclarés comme des  size_t dans  glibc  2.1,  comme
       préconisé dans POSIX.2, mais sont déclarés sous forme de int dans glibc 2.0.

BOGUES

       La fonction glob() peut échouer en cas d'erreur dans un appel de fonction sous-jacent, comme malloc(3) ou
       opendir(3). Le code d'erreur sera alors stocké dans errno.

EXEMPLES

       L'exemple d'utilisation suivant simule la frappe de

           ls -l *.c ../*.c

       dans un shell :

           glob_t globbuf;

           globbuf.gl_offs = 2;
           glob("*.c", GLOB_DOOFS, NULL, &globbuf);
           glob("../*.c", GLOB_DOOFS | GLOB_APPEND, NULL, &globbuf);
           globbuf.gl_pathv[0] = "ls";
           globbuf.gl_pathv[1] = "-l";
           execvp("ls", &globbuf.gl_pathv[0]);

VOIR AUSSI

       ls(1), sh(1), stat(2), exec(3), fnmatch(3), malloc(3), opendir(3), readdir(3), wordexp(3), glob(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>,    David    Prévot
       <david@tilapin.org>,   Frédéric   Hantrais   <fhantrais@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 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.9.1                    15 juin 2024                                           glob(3)