Provided by: manpages-pt-dev_20040726-4_all bug

NOME

       ftw, nftw - caminha pela árvore de arquivos

SINOPSE

       #include <ftw.h>

       int ftw (const char *dir, int (*fn)(const char *file, const struct stat
       *sb, int flag), int depth);

       int nftw (const char *dir, int (*fn)(const  char  *file,  const  struct
       stat *sb, int flag, struct FTW *s), int depth, int flags);

DESCRIÇÃO

       ftw()  caminha  através  da árvore de diretório, começando do diretório
       dir indicado. Para cada entrada encontrada na árvore,  ela  chama  fn()
       com  o  caminho  de  diretório  completo da entrada, um ponteiro para a
       estrutura stat(2) da  entrada,  e  um  int,  cujo  valor  será  um  dos
       seguintes:

       FTW_F  O item é um arquivo normal

       FTW_D  O item é um diretório

       FTW_DNR
              O item é um diretório que não pode ser lido

       FTW_SL O item é uma ligação simbólica

       FTW_NS

       Se  o  item  é uma ligação simbólica e ’stat’ falhou, XPG4v2 afirma que
       ele é indefinido se FTW_NS ou FTW_SL é usado.

       ftw() chama  recursivamente  a  si  mesmo  para  atravessar  diretórios
       encontrados,  manipulando  um  diretório  antes  do  seus  arquivos  ou
       subdiretórios. Para evitar o uso de todos os descritores de arquivos do
       programa,   o   depth   especifica   o  número  de  diretórios  abertos
       simultaneamente.  Quando a profundidade é excedida,  ftw()  se  tornará
       mais lenta porque os diretórios têm que ser fechados e reabertos. ftw()
       usa no máximo um descritor de arquivos para cada nível na hierarquia de
       arquivos.

       Para  parar  a  caminhada na árvore, fn() retorna um valor diferente de
       zero; este  valor  se  tornará  o  valor  de  retorno  de  ftw().  Caso
       contrário, ftw() continuará até que tenha atravessado a árvore inteira,
       em cujo caso retornará zero, ou até que ele encontre um erro  diferente
       de  EACCES  (tal  como uma falha de malloc(3) ), em cujo caso retornará
       -1.

       Como ftw() usa estruturas de dados dinâmicas, a única maneira segura de
       sair  de uma caminhada na árvore é retornar um valor diferente de zero.
       Para manipular interrupções, por  exemplo,  indica  que  a  interrupção
       ocorreu  e  retorna  um  valor  diferente de zero —não use longjmp(3) a
       menos que o programa vá terminar.

       A função nftw() faz precisamente a mesma coisa que ftw(),  exceto  pelo
       fato  de  que  ela  tem um argumento adicional, flags (e chama a função
       fornecida com mais um argumento).  Este argumento flags é uma  operação
       OU de zero ou mais das seguintes flags:

       FTW_CHDIR
              Se setado, faz um chdir() para cada diretório antes de manipular
              seu conteúdo.

       FTW_DEPTH
              Se setado, faz uma busca primeiro  por  profundidade,  ou  seja,
              chama  a  função  para  o  próprio  diretório  somente depois de
              manipular os conteúdos do diretório e seus subdiretórios.

       FTW_MOUNT
              Se setado, fica dentro do mesmo sistema de arquivos.

       FTW_PHYS
              Se setado, não segue ligações simbólicas.  (Isto é  o  que  você
              quer.)   Se não setado, as ligações simbólicas são seguidas, mas
              nenhum arquivo é relatado duas vezes.

       Se FTW_PHYS não é setado, mas FTW_DEPTH é setado, então a  função  fn()
       nunca  é chamada para um diretório que seria um descendente dele mesmo.

       A função fn() é chamada com quatro argumentos: o caminho  de  diretório
       da  entrada  relatada,  um  ponteiro  para  uma  estrutura ’stat’ desta
       entrada, um inteiro descrevendo  seu  tipo,  e  um  ponteiro  para  uma
       estrutura  FTW.  O  tipo  será um dos seguintes: FTW_F, FTW_D, FTW_DNR,
       FTW_SL, FTW_NS ( com o significado acima;  FTW_SL  ocorre  somente  com
       FTW_PHYS setado) ou

       FTW_DP O  item  é  um  diretório  e todos os seus descendentes já foram
              manipulados. (Isto ocorre somente com FTW_DEPTH setado.)

       FTW_SLN
              O item é uma ligação simbólica apontando  para  um  arquivo  não
              existente.  (Isto ocorre somente com FTW_PHYS não setado.)

       A estrutura FTW apontada pelo quarto argumento para fn() tem pelo menos
       os campos base, o offset do nome de  arquivo  do  item  no  caminho  de
       diretório dado como primeiro argumento de fn(), e level, a profundidade
       do item em relação ao ponto inicial (que tem profundidade 0).

NOTAS

       A função nftw() e o uso de  FTW_SL  com  ftw()  foram  introduzidos  em
       XPG4v2.   Sob Linux, libc4, libc5 e glibc 2.0.6 usarão FTW_F para todos
       os objetos (arquivos, ligações simbólicas, fifos, etc)  que  podem  ser
       receber um ’stat’ mas não são diretórios.  A primeira glibc 2.1 suporta
       FTW_SL e nftw().

CONFORME

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

VEJA TAMBÉM

       stat(2)

TRADUÇÃO PARA A LÍNGUA PORTUGUESA

       RUBENS DE JESUS  NOGUEIRA  <darkseid99@usa.net>  (tradução)  XXXXXX  XX
       XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisão)