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

NOME

       ftw, nftw - caminha pela arvore 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,C~AO

       ftw()  caminha  atraves  da arvore de diretorio, comecando do diretorio
       dir indicado. Para cada entrada encontrada na arvore,  ela  chama  fn()
       com  o  caminho  de  diretorio  completo da entrada, um ponteiro para a
       estrutura stat(2) da  entrada,  e  um  int,  cujo  valor  sera  um  dos
       seguintes:

       FTW_F  O item e um arquivo normal

       FTW_D  O item e um diretorio

       FTW_DNR
              O item e um diretorio que nao pode ser lido

       FTW_SL O item e uma ligacao simbolica

       FTW_NS

       Se  o  item  e uma ligacao simbolica e 'stat' falhou, XPG4v2 afirma que
       ele e indefinido se FTW_NS ou FTW_SL e usado.

       ftw() chama  recursivamente  a  si  mesmo  para  atravessar  diretorios
       encontrados,  manipulando  um  diretorio  antes  do  seus  arquivos  ou
       subdiretorios. Para evitar o uso de todos os descritores de arquivos do
       programa,   o   depth   especifica   o  numero  de  diretorios  abertos
       simultaneamente.  Quando a profundidade e excedida,  ftw()  se  tornara
       mais lenta porque os diretorios tem que ser fechados e reabertos. ftw()
       usa no maximo um descritor de arquivos para cada nivel na hierarquia de
       arquivos.

       Para  parar  a  caminhada na arvore, fn() retorna um valor diferente de
       zero; este  valor  se  tornara  o  valor  de  retorno  de  ftw().  Caso
       contrario, ftw() continuara ate que tenha atravessado a arvore inteira,
       em cujo caso retornara zero, ou ate que ele encontre um erro  diferente
       de  EACCES  (tal  como uma falha de malloc(3) ), em cujo caso retornara
       -1.

       Como ftw() usa estruturas de dados dinamicas, a unica maneira segura de
       sair  de uma caminhada na arvore e retornar um valor diferente de zero.
       Para manipular interrupcoes, por  exemplo,  indica  que  a  interrupcao
       ocorreu  e  retorna  um  valor diferente de zero --nao use longjmp(3) a
       menos que o programa va terminar.

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

       FTW_CHDIR
              Se setado, faz um chdir() para cada diretorio antes de manipular
              seu conteudo.

       FTW_DEPTH
              Se setado, faz uma busca primeiro  por  profundidade,  ou  seja,
              chama  a  funcao  para  o  proprio  diretorio  somente depois de
              manipular os conteudos do diretorio e seus subdiretorios.

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

       FTW_PHYS
              Se setado, nao segue ligacoes simbolicas.  (Isto e  o  que  voce
              quer.)   Se nao setado, as ligacoes simbolicas sao seguidas, mas
              nenhum arquivo e relatado duas vezes.

       Se FTW_PHYS nao e setado, mas FTW_DEPTH e setado, entao a  funcao  fn()
       nunca e chamada para um diretorio que seria um descendente dele mesmo.

       A  funcao  fn() e chamada com quatro argumentos: o caminho de diretorio
       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 sera 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 e um diretorio e todos  os  seus  descendentes  ja  foram
              manipulados. (Isto ocorre somente com FTW_DEPTH setado.)

       FTW_SLN
              O  item  e  uma  ligacao simbolica apontando para um arquivo nao
              existente.  (Isto ocorre somente com FTW_PHYS nao 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
       diretorio dado como primeiro argumento de fn(), e level, a profundidade
       do item em relacao ao ponto inicial (que tem profundidade 0).

NOTAS

       A  funcao  nftw()  e  o  uso  de FTW_SL com ftw() foram introduzidos em
       XPG4v2.  Sob Linux, libc4, libc5 e glibc 2.0.6 usarao FTW_F para  todos
       os  objetos  (arquivos,  ligacoes simbolicas, fifos, etc) que podem ser
       receber um 'stat' mas nao sao diretorios.  A primeira glibc 2.1 suporta
       FTW_SL e nftw().

CONFORME

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

VEJA TAMB'EM

       stat(2)

TRADU,C~AO PARA A L'INGUA PORTUGUESA

       RUBENS  DE  JESUS  NOGUEIRA  <darkseid99@usa.net>  (traducao) XXXXXX XX
       XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisao)