Provided by:
manpages-pt-dev_20040726-4_all 
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)