GLOB(3)            Manuel du programmeur Linux            GLOB(3)


NOM
       glob,  globfree  - Rechercher un chemin d'accès correspon­
       dant à un motif.

SYNOPSIS
       #include <glob.h>

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

DESCRIPTION
       La fonction glob() recherche tous les chemins d'accès cor­
       respondants  au  motif  pattern en utilisant les règles du
       shell (voir glob(7)).  Aucun remplacement de tilde ou sub­
       stitution  de  paramètre  n'est  effectué.   Si  vous avez
       besoin de ces fonctionnalités, voyez 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, qui est du type glob_t défini
       dans <glob.h> en incluant les éléments définis par POSIX.2
       (il peut y en avoir plus sous forme d'extension GNU) :

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

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

       GLOB_ERR
              demande à glob() de se terminer dès  qu'une  erreur
              se produit (par exemple un répertoire non lisible).

       GLOB_MARK
              Ajouter un slash final à chaque nom  aboutissant  à
              un répertoire.

       GLOB_NOSORT
              Ne  pas  trier les chemins d'accès renvoyés (ils le
              sont par défaut).

       GLOB_DOOFS
              signifie que pglob->gl_offs points d'entrée  seront
              réservés  au  début  de  la  liste  de chaînes dans
              pglob->pathv.



GNU                      14 Décembre 1998                       1





GLOB(3)            Manuel du programmeur Linux            GLOB(3)


       GLOB_NOCHECK
              demande à glob() de renvoyer le motif  original  si
              aucune correspondance n'est possible.

       GLOB_APPEND
              ajoute  les  résultats à ceux d'un appel précédent.
              Ne pas indiquer cet attribut lors du premier  appel
              de glob().

       GLOB_NOESCAPE
              Les  méta-caractères ne peuvent pas être désactivés
              par un backslash.

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

       GLOB_PERIOD
              Un  point  en tête de chemin peut correspondre à un
              méta-caractère.

       GLOB_ALTDIRFUNC
              On utilisera comme alternatives aux fonctions  nor­
              males     de     bibliothèque     les     fonctions
              pglob->gl_closedir,              pglob->gl_readdir,
              pglob->gl_opendir,        pglob->gl_lstat,       et
              pglob->gl_stat.

       GLOB_BRACE
              Les expressions de type {a,b} sont développées avec
              le style csh(1).

       GLOB_NOMAGIC
              Le  motif est renvoyé s'il ne contient pas de méta-
              caractères.

       GLOB_TILDE
              L'expansion du tilde est prise en charge.

       GLOB_ONLYDIR
              Seuls les répertoires sont mis en correspondance.

       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(), read­
       dir(), ou stat().   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 est un pointeur sur une liste des chemins.
       Le premier pointeur après le dernier chemin vaut NULL.




GNU                      14 Décembre 1998                       2





GLOB(3)            Manuel du programmeur Linux            GLOB(3)


       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 con­
       tient  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,

       GLOB_NOMATCH
              aucune correspondance trouvée.

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

CONFORMITÉ
       POSIX.2

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

       Les membres gl_pathc et gl_offs  de  la  structure  glob_t
       devraient  normalement  être  des  size_t d'après POSIX.2,
       mais sont déclarés en fait sous forme int.

VOIR AUSSI
       ls(1), sh(1),  stat(2),  exec(3),  malloc(3),  opendir(3),
       readdir(3), wordexp(3), glob(7)


TRADUCTION
       Christophe Blaess, 1997.




GNU                      14 Décembre 1998                       3