Provided by:
manpages-es_1.55-10_all 
NOMBRE
glob, globfree - encuentra nombres de caminos que concuerdan con un
patron, libera la memoria ocupada por glob()
SINOPSIS
#include <glob.h>
int glob(const char *patron, int flags,
int funcerr(const char * epath, int eerrno),
glob_t *pglob);
void globfree(glob_t *pglob);
DESCRIPCI'ON
La funcion glob() busca todos los nombres de camino de los ficheros que
concuerden con patron segun las reglas usadas por el interprete de
ordenes o shell. No se realiza ni expansion de la tilde (~) ni
sustitucion de parametros; si quiere esto, use wordexp(3).
La funcion globfree() libera el almacenamiento alojado dinamicamente en
una llamada anterior a glob().
Los resultados de una llamada a glob() se guardan en la estructura a la
que apunte pglob, que es un glob_t que se declara en <glob.h> e incluye
los siguientes elementos definidos por POSIX.2 (se pueden presentar mas
como extensiones):
typedef struct
{
size_t gl_pathc; /* No de caminos concordantes hasta ahora */
char **gl_pathv; /* Lista de los caminos concordantes. */
size_t gl_offs; /* Sitios a reservar en `gl_pathv'. */
} glob_t;
Los resultados se almacenan en memoria obtenida dinamicamente.
El parametro flags se construye mediante un O-logico de cero o mas de
las constantes simbolicas siguientes, que modifican el comportamiento
de glob():
GLOB_ERR
que significa regresar en cuanto haya un error de lectura
(porque un directorio no haya concedido permiso de lectura, por
ejemplo),
GLOB_MARK
que quiere decir anadir una barra inclinada a cada camino que
corresponda a un directorio,
GLOB_NOSORT
que quiere decir no ordenar los nombres de caminos devueltos (se
ordenan si no se dice nada),
GLOB_DOOFFS
que quiere decir que se reservaran pglob->gl_offs sitios al
principio de la lista de cadenas de caracteres en pglob->pathv,
GLOB_NOCHECK
que quiere decir que, si ningun patron concuerda, hay que
devolver el patron original.
GLOB_APPEND
que quiere decir anadir a los resultados de una llamada
anterior. No active esta opcion la primera vez que llame a
glob().
GLOB_NOESCAPE
que quiere decir que los meta-caracteres no pueden ser
protegidos por barras inclinadas invertidas.
Las opciones tambien pueden incluir algunas de las siguientes
constantes, que son extensiones GNU no definidar por POSIX.2:
GLOB_PERIOD
que quiere decir que un punto inicial puede concordar con meta-
caracteres,
GLOB_ALTDIRFUNC
que quiere decir que se usen las funciones alternativas
pglob->gl_closedir, pglob->gl_readdir, pglob->gl_opendir,
pglob->gl_lstat y pglob->gl_stat para acceder al sistema de
ficheros, en lugar de las funciones normales de biblioteca,
GLOB_BRACE
que quiere decir que se expandan las expresiones de llaves {a,b}
al estilo csh(1).
GLOB_NOMAGIC
que quiere decir que se devuelva el patron si no contiene meta-
caracteres,
GLOB_TILDE
que indica que se lleve a cabo la expansion de la tilde (~), y
GLOB_ONLYDIR
que significa que solo se tengan en cuenta los directorios.
Si funcerr no es NULL, se llamara en caso de error con los argumentos
epath, un puntero al camino que ha fallado, y eerrno, el valor de errno
segun es devuelto por una de las llamadas a opendir(), readdir(), o
stat(). Si funcerr devuelve no cero, o si GLOB_ERR esta activado,
glob() terminara justo tras la llamada a funcerr.
Tras un regreso con exito de la funcion, pglob->gl_pathc contiene el
numero de nombres de caminos que han concordado y pglob->gl_pathv un
puntero a la lista de nombres de caminos que han concordado. El primer
puntero tras el ultimo nombre de camino es NULL.
Es posible el llamar a glob() varias veces. En ese caso, la opcion
GLOB_APPEND tiene que estar activa en flags en la segunda llamada y
posteriores.
Como extension GNU, a pglob->gl_flags se le asignan las opciones
especificadas, operadas mediante un O-logico con GLOB_MAGCHAR si se
encontro cualquier meta-caracter.
VALOR DEVUELTO
Tras una terminacion con exito, glob() devuelve cero. Otras posibles
devoluciones son:
GLOB_NOSPACE
si no tenemos bastante memoria,
GLOB_ABORT
para un error de lectura, y
GLOB_NOMATCH
si no se ha encontrado nada.
EJEMPLOS
Un ejemplo del modo de empleo es el siguiente codigo, que simula la
orden ls -l *.c ../*.c en el shell.
glob_t globbuf;
globbuf.gl_offs = 2;
glob("*.c", GLOB_DOOFFS, NULL, &globbuf);
glob("../*.c", GLOB_DOOFFS | GLOB_APPEND, NULL, &globbuf);
globbuf.gl_pathv[0] = "ls";
globbuf.gl_pathv[1] = "-l";
execvp("ls", &globbuf.gl_pathv[0]);
CONFORME A
POSIX.2
FALLOS
La funcion glob() puede fallar debido a un error en las funciones
subyacentes, como malloc() u opendir(). Estas guardaran su codigo de
error en errno.
NOTA
Los elementos de estructura gl_pathc y gl_offs se declaran como size_t
en glibc 2.1, como deberian de acuerdo a POSIX.2, pero se declaran como
int en libc4, libc5 y glibc 2.0.
V'EASE TAMBI'EN
ls(1), sh(1), stat(2), exec(3), malloc(3), opendir(3), readdir(3),
wordexp(3),