diff options
author | das <das@FreeBSD.org> | 2004-07-05 23:13:16 +0000 |
---|---|---|
committer | das <das@FreeBSD.org> | 2004-07-05 23:13:16 +0000 |
commit | 5f3462eb0c959fbea2488300100b35c54ce33e34 (patch) | |
tree | cd23b58f1c6717bbb9d084260b3beb02efd1eb7b /include | |
parent | 629365ba47f92c56495e82b1ed53268e7fc99d8a (diff) | |
download | FreeBSD-src-5f3462eb0c959fbea2488300100b35c54ce33e34.zip FreeBSD-src-5f3462eb0c959fbea2488300100b35c54ce33e34.tar.gz |
Add implementations of ftw(3) and nftw(3) and the corresponding header
ftw.h. This is the implementation written by Joel Baker
<fenton@debian.org> for inclusion in NetBSD, but with several
bugfixes.
Obtained from: Debian
Diffstat (limited to 'include')
-rw-r--r-- | include/Makefile | 3 | ||||
-rw-r--r-- | include/ftw.h | 107 |
2 files changed, 109 insertions, 1 deletions
diff --git a/include/Makefile b/include/Makefile index 130e226..28b5294 100644 --- a/include/Makefile +++ b/include/Makefile @@ -7,7 +7,8 @@ CLEANFILES= osreldate.h version vers.c SUBDIR= arpa protocols rpcsvc rpc INCS= a.out.h ar.h assert.h bitstring.h complex.h cpio.h ctype.h db.h \ dirent.h dlfcn.h elf.h elf-hints.h err.h fmtmsg.h fnmatch.h fstab.h \ - fts.h getopt.h glob.h grp.h hesiod.h histedit.h ieeefp.h ifaddrs.h \ + fts.h ftw.h getopt.h glob.h grp.h \ + hesiod.h histedit.h ieeefp.h ifaddrs.h \ inttypes.h iso646.h kenv.h langinfo.h libgen.h limits.h link.h \ locale.h malloc.h memory.h monetary.h mpool.h ndbm.h netconfig.h \ netdb.h nl_types.h nlist.h nss.h nsswitch.h objformat.h paths.h \ diff --git a/include/ftw.h b/include/ftw.h new file mode 100644 index 0000000..e0cf085 --- /dev/null +++ b/include/ftw.h @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2003 by Joel Baker. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Author nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _FTW_H +#define _FTW_H + +#include <sys/stat.h> + +__BEGIN_DECLS + +/* Enumerated values for 'flag' when calling [n]ftw */ + +enum { + FTW_D, /* Directories */ + FTW_DNR, /* Unreadable directory */ + FTW_F, /* Regular files */ + FTW_SL, /* Symbolic link */ + FTW_NS, /* stat(2) failed */ + +#if __XSI_VISIBLE /* X/Open */ + +/* Flags for nftw only */ + + FTW_DP, /* Directory, subdirs visited */ + FTW_SLN, /* Dangling symlink */ + +#endif /* __XSI_VISIBLE */ +}; + +#if __XSI_VISIBLE /* X/Open */ + +/* Enumerated values for 'flags' when calling nftw */ + +enum { + FTW_CHDIR = 1, /* Do a chdir(2) when entering a directory */ + FTW_DEPTH = 2, /* Report files first (before directory) */ + FTW_MOUNT = 4, /* Single filesystem */ + FTW_PHYS = 8 /* Physical walk; ignore symlinks */ +}; + +#define FTW_PHYS FTW_PHYS +#define FTW_MOUNT FTW_MOUNT +#define FTW_CHDIR FTW_CHDIR +#define FTW_DEPTH FTW_DEPTH + +/* FTW struct for callbacks from nftw */ + +struct FTW { + int base; + int level; +}; + +#endif /* __XSI_VISIBLE */ + +/* Typecasts for callback functions */ + +typedef int (*__ftw_func_t) \ + (const char *file, const struct stat *status, int flag); + +/* ftw: walk a directory tree, calling a function for each element */ + +extern int ftw (const char *dir, __ftw_func_t func, int descr); + +#if __XSI_VISIBLE /* X/Open */ + +typedef int (*__nftw_func_t) \ + (const char *file, const struct stat *status, int flag, struct FTW *detail); + +/* nftw: walk a directory tree, calling a function for each element; much + * like ftw, but with behavior flags and minty freshness. + */ + +extern int nftw (const char *dir, __nftw_func_t func, int descr, int flags); + +#endif /* __XSI_VISIBLE */ + +__END_DECLS + +#endif /* _FTW_H */ |