|
NAMEftw , nftw —
traverse (walk) a file tree
SYNOPSIS#include <ftw.h>
int
int
DESCRIPTIONTheftw () and nftw () functions
traverse (walk) the directory hierarchy rooted in path.
For each object in the hierarchy, these functions call the function pointed to
by fn. The ftw () function passes
this function a pointer to a NUL -terminated string
containing the name of the object, a pointer to a stat
structure corresponding to the object, and an integer flag. The
nftw () function passes the aforementioned arguments
plus a pointer to a FTW structure as defined by
<ftw.h> (shown below):
struct FTW { int base; /* offset of basename into pathname */ int level; /* directory depth relative to starting point */ }; Possible values for the flag passed to fn are:
The The maxfds argument specifies the maximum number of file descriptors to keep open while traversing the tree. It has no effect in this implementation. The
RETURN VALUESIf the tree was traversed successfully, theftw () and
nftw () functions return 0. If the function pointed to
by fn returns a non-zero value,
ftw () and nftw () will stop
processing the tree and return the value from fn. Both
functions return -1 if an error is detected.
EXAMPLESFollowing there is an example that shows hownftw can be
used. It traverses the file tree starting at the directory pointed by the only
program argument and shows the complete path and a brief indicator about the
file type.
#include <ftw.h> #include <stdio.h> #include <sysexits.h> int nftw_callback(const char *path, const struct stat *sb, int typeflag, struct FTW *ftw) { char type; switch(typeflag) { case FTW_F: type = 'F'; break; case FTW_D: type = 'D'; break; case FTW_DNR: type = '-'; break; case FTW_DP: type = 'd'; break; case FTW_NS: type = 'X'; break; case FTW_SL: type = 'S'; break; case FTW_SLN: type = 's'; break; default: type = '?'; break; } printf("[%c] %s\n", type, path); return (0); } int main(int argc, char **argv) { if (argc != 2) { printf("Usage %s <directory>\n", argv[0]); return (EX_USAGE); } else return (nftw(argv[1], nftw_callback, /* UNUSED */ 1, 0)); } ERRORSTheftw () and nftw () functions
may fail and set errno for any of the errors specified
for the library functions
close(2),
open(2),
stat(2),
malloc(3),
opendir(3)
and
readdir(3).
If the FTW_CHDIR flag is set, the
nftw () function may fail and set
errno for any of the errors specified for
chdir(2).
In addition, either function may fail and set errno as
follows:
SEE ALSOchdir(2), close(2), open(2), stat(2), fts(3), malloc(3), opendir(3), readdir(3)STANDARDSTheftw () and nftw () functions
conform to IEEE Std 1003.1-2001
(“POSIX.1”).
HISTORYThese functions first appeared in AT&T System V Release 3 UNIX. Their first FreeBSD appearance was in FreeBSD 5.3.BUGSThe maxfds argument is currently ignored.
Visit the GSP FreeBSD Man Page Interface. |