FTW(3)

NOM
ftw - Parcours d'arborescence de fichiers.

SYNOPSIS
#include <ftw.h>

int ftw (const char *directory, int (*funcptr )(const char *file, struct stat *sb, int flag), int depth);

DESCRIPTION
La fonction ftw() parcourt la hierarchie de fichiers commencant au repertoire directory. Pour chaque fichier rencontre, elle appelle funcptr avec le chemin d'acces du fichier relativement a directory, un pointeur sur une structure stat(2), et un entier dont la valeur signifie
    FTW_F	Fichier normal
    FTW_D	Repertoire
    FTW_NS	Echec de stat sur cet element
    FTW_DNR	Repertoire non lisible
ATTENTION : Tout ce qui n'est pas un repertoire (liens symboliques, ...) possede l'attribut FTW_F.

ftw() s'appelle lui-meme recursivement pour parcourir tous les repertoires trouves. Afin d'eviter d'utiliser tous les descripteurs de fichiers disponibles pour le programme, la profondeur depth limite le nombre de repertoires ouverts simultanement. Quand cette profondeur est atteinte, ftw() va ralentir, car des repertoires devront etre fermes puis reouverts.

Pour arreter le parcours des fichiers, la fonction funcptr peut renvoyer une valeur non-nulle, qui deviendra la valeur de retour de ftw(). Sinon, ftw() continuera jusqu'a atteindre la fin du parcours de l'arbre, et renverra zero, ou jusqu'a ce que se produise une erreur comme celles de malloc(3) et renverra -1.

Comme ftw() utilise des structures de donnees allouees dynamiquement, la seule maniere propre de sortir d'un parcours est de renvoyer une valeur non nulle. Pour traiter les interruptions, par exemple, notez le numero d'interruption survenue et renvoyez une valeur non nulle. N'utilisez jamais longjmp(3) a moins que le programme ne soit pret a se terminer.

VOIR AUSSI
stat(2)