glob

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



NOM
       glob, globfree - Rechercher un chemin d'accès correspondant à 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 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,

       GLOB_NOMATCH
              aucune correspondance trouvée.

CONFORMITÃ
       POSIX.2, POSIX.1-2001.

NOTES
       Les membres gl_pathc et gl_offs de la structure glob_t sont des size_t
       dans glibc 2.1, comme indiqué dans POSIX.2, mais sont déclarés sous
       forme de int dans libc4, libc5 et 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.

EXEMPLE
       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)

COLOPHON
       Cette page fait partie de la publication 3.70 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler des
       anomalies peuvent être trouvées à l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION
       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction
       francophone au sein du projet perkamon
       <http://perkamon.alioth.debian.org/>.

       Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain
       Portal <http://manpagesfr.free.fr/> (2003-2006).  Florentin Duneau et
       l'équipe francophone de traduction de Debian (2006-2009).

       Veuillez signaler toute erreur de traduction en écrivant Ã
       <perkamon-fr@traduc.org>.

       Vous pouvez toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».



GNU                             10 octobre 2007                        GLOB(3)