glob, globfree
Rechercher un chemin d'accès correspondant à un motif
- Provided by: manpages-fr-dev (Version: 3.65d1p1-1)
- Source: manpages-fr
- Report a bug
Rechercher un chemin d'accès correspondant à un motif
#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);
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() :
flags peut également utiliser les constantes suivantes, qui sont des extensions GNU, non définies dans POSIX.2 :
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é.
S'il réussit complètement glob() renvoie zéro. Les autres valeurs renvoyées peuvent être :
POSIX.2, POSIX.1-2001.
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.
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.
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]);
ls(1), sh(1), stat(2), exec(3), fnmatch(3), malloc(3), opendir(3), readdir(3), wordexp(3), glob(7)
Cette page fait partie de la publication 3.65 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/.
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 à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».