Provided by: manpages-es_1.55-10_all bug

NOMBRE

       ftw, nftw - recorre un arbol de ficheros

SINOPSIS

       #include  <ftw.h> int ftw (const char *directorio, int (*fn)(const char
       *fichero, const struct stat *sb, int flag), int profun);

       int nftw (const char *directorio, int (*fn)(const char *fichero,  const
       struct stat *sb, int flag, struct FTW *s), int profun, int flags);

DESCRIPCI'ON

       ftw()  recorre  un  arbol  de  directorios  empezando por el directorio
       indicado.  Para cada entrada encontrada en el arbol, llama a  fn()  con
       el  nombre de camino completo de la entrada, un puntero a la estructura
       stat(2) para la entrada, y un int flag, cuyo  valor  sera  uno  de  los
       siguientes:

       FTW_F  El item es un fichero normal

       FTW_D  El item es un directorio

       FTW_DNR
              El item es un directorio que no se puede leer

       FTW_SL El item es un enlace simbolico

       FTW_NS stat ha fallado en el item que no es un enlace simbolico

       Si el item es un enlace simbolico y `stat' ha fallado, XPG4v2 establece
       que el estado queda indefinido si se usa FTW_NS o FTW_SL.

       ftw() se llama a si misma recursivamente para atravesar los directorios
       que  encuentra,  tratando  un  directorio  antes  que  sus  ficheros  o
       subdirectorios.  Para evitar  el  uso  de  todos  los  descriptores  de
       fichero  de  un  programa,  el argumento profun especifica el numero de
       directorios  abiertos  simultaneamente.  Cuando   la   profundidad   es
       sobrepasada,  ftw()  se  ralentizara  porque  los  directorios  deberan
       cerrarse y volverse a abrir. ftw() usa, como mucho,  un  descriptor  de
       fichero para cada nivel de la jerarquia de ficheros.

       Para detener el recorrido por el arbol, fn() devuelve un valor no-cero.
       Este valor se convertira en el devuelto por ftw().  De otro modo, ftw()
       continuara  hasta  que  haya  recorrido  el  arbol entero, en cuyo caso
       devolvera cero, o hasta que ocurra un error distinto de EACCES (como un
       fallo de malloc(3)), en cuyo caso devolvera -1.

       Puesto  que   ftw()  usa estructuras de datos dinamicas, la unica forma
       segura de salir de un recorrido por un arbol es devolver  un  valor  no
       cero.  Para manejar interrupciones, por ejemplo, marque que ha ocurrido
       una interrupcion y devuelva un valor no-cero (no  emplee  longjmp(3)  a
       menos que el programa vaya a terminar).

       La  funcion  nftw()  hace  precisamente lo mismo que ftw(), excepto que
       tiene un argumento flags adicional (y llama a la funcion  proporcionada
       con  un  argumento mas).  Este argumento flags es un O-logico de cero o
       mas de las siguientes opciones:

       FTW_CHDIR
              Llama a chdir() para moverse a un directorio antes de manejar su
              contenido.

       FTW_DEPTH
              Realiza  una  busqueda primero en profundidad, es decir, llama a
              la funcion para el propio directorio solo despues de  tratar  el
              contenido del directorio y de sus subdirectorios.

       FTW_MOUNT
              Permanece dentro del mismo sistema de ficheros.

       FTW_PHYS
              No  sigas  enlaces  simbolicos (esto es lo que desea). Cuando no
              esta activa, se  siguen  los  enlaces  simbolicos,  pero  ningun
              fichero aparece dos veces.

       Si la opcion FTW_PHYS no esta activa, pero FTW_DEPTH si, entonces nunca
       se llama a la funcion fn() para un directorio que seria descendiente de
       si mismo.

       La  funcion  fn() se llama con cuatro argumentos: la ruta de la entrada
       encontrada, un puntero a una estructura `stat'  para  esa  entrada,  un
       entero  que describe su tipo y un puntero a una estructura FTW. El tipo
       sera uno de los siguientes: FTW_F, FTW_D, FTW_DNR, FTW_SL, FTW_NS  (con
       el significado de antes. FTW_SL se da solo con FTW_PHYS activa) o

       FTW_DP El  item  es un directorio y todos sus descendientes ya han sido
              tratados.  (Esto solo ocurre cuando FTW_DEPTH esta activa).

       FTW_SLN
              El  item  es  un  enlace  simbolico  que  apunta  a  un  fichero
              inexistente.  (Esto ocurre solo cuando FTW_PHYS no esta activa.)

       La  estructura  FTW  apuntada  por el cuarto argumento de fn() tiene al
       menos los campos base, el desplazamiento del nombre de fichero del item
       en  la ruta dada como primer argumento de fn(), y level, la profundidad
       del item relativo al punto de comienzo (que tiene profundidad 0).

NOTA

       La funcion nftw() y el uso de  FTW_SL  con  ftw()  se  introdujeron  en
       XPG4v2.

       En  algunos  sistemas  ftw()  no  usara nunca FTW_SL, en otros sistemas
       FTW_SL se usa solo para enlaces simbolicos que no apuntan a un  fichero
       existente,  y  de nuevo en otros sistemas, ftw() usara FTW_SL para cada
       enlace simbolico. Si quiere un uso determinista, use nftw().

       Bajo Linux, libc4, libc5 y glibc 2.0.6  usaran  FTW_F  para  todos  los
       objetos  (ficheros,  enlaces  simbolicos,  FIFOs, etc) sobre los que se
       pueda aplicar la funcion stat(2), y que  no  sean  un  directorio.   La
       funcion nftw() esta disponible desde glibc 2.1.

CONFORME A

       AES, SVID2, SVID3, XPG2, XPG3, XPG4 y XPG4v2.

V'EASE TAMBI'EN

       stat(2)