glob   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 10 octobre 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
glob, globfree - Rechercher un chemin d'accès correspondant à un motif  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <glob.h>

         int (*errfunc) (const char *epath, int eerrno),

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



DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La fonction glob() recherche tous les chemins d'accès correspondants au motif pattern en utilisant les règles du shell (voir glob(7)). Aucun remplacement de tilde ou substitution 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. Cette structure est de type glob_t (définie 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, 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
Ajouter une barre oblique finale à chaque nom aboutissant à un répertoire.
GLOB_NOSORT
Ne pas trier les chemins d'accès renvoyés (ils le sont par défaut). La seule raison pour faire cela est d'économiser du temps de traitement.
GLOB_DOOFFS
Réserver 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
Ajouter les résultats au vecteur des 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 des contre oblique (« \  ») pour désactiver les méta-caractères. Normalement, une contre oblique peut être utilisée pour coter le caractère qui le suit, fournissant un mécanisme de désactivation du sens particulier des méta-caractères.

flags peut également inclure 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
Utilisera les fonctions alternatives pglob->gl_closedir, pglob->gl_readdir, pglob->gl_opendir, pglob->gl_lstat et pglob->gl_stat pour accéder au système de fichiers plutôt que les fonctions normales de la bibliothèque.
GLOB_BRACE
Développer dans le style csh(1) les expressions de type {a,b} qui 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 subsitué au tilde. Si un tilde en tête est suivi pas un nom d'utilisateur (par exemple, « ~alain/bin », le tilde et le nom d'utilisateur sont subsitué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 subsitution 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 valide 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 astuce de glob() pour que l'appelant ne s'intéresse qu'aux répétoires 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 errno 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 vers une liste de pointeurs sur les chemins qui correspondent. La liste des pointeurs est terminée par un pointeur 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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É   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
POSIX.2, POSIX.1-2001.  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La fonction glob() peut échouer en cas d'erreur dans un appel de fonction sous-jacente, comme malloc(3) ou opendir(3). Le code d'erreur sera alors stocké dans errno.  



EXEMPLE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
ls(1), sh(1), stat(2), exec(3), fnmatch(3), malloc(3), opendir(3), readdir(3), wordexp(3), glob(7)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 3 novembre 1996 et révisée le 29 décembre 2007.

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=C man 3 glob ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
CONFORMITÉ
NOTES
BOGUES
EXEMPLE
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
GLOB_ABORTEDVALEUR RENVOYÉE
GLOB_ALTDIRFUNCDESCRIPTION
GLOB_APPENDDESCRIPTION
GLOB_BRACEDESCRIPTION
GLOB_DOOFFSDESCRIPTION
GLOB_ERRDESCRIPTION
GLOB_MARKDESCRIPTION
GLOB_NOCHECKDESCRIPTION
GLOB_NOESCAPEDESCRIPTION
GLOB_NOMAGICDESCRIPTION
GLOB_NOMATCHVALEUR RENVOYÉE
GLOB_NOSORTDESCRIPTION
GLOB_NOSPACEVALEUR RENVOYÉE
GLOB_ONLYDIRDESCRIPTION
GLOB_PERIODDESCRIPTION
GLOB_TILDEDESCRIPTION
GLOB_TILDE_CHECKDESCRIPTION



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:50:20, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional