15e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich/* $NetBSD: ftw.h,v 1.1 2005/12/30 23:07:33 agc Exp $ */
25e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
35e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich/*	From OpenBSD: ftw.h,v 1.1 2003/07/21 21:13:18 millert Exp 	*/
45e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
55e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich/*
65e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
75e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich *
85e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * Permission to use, copy, modify, and distribute this software for any
95e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * purpose with or without fee is hereby granted, provided that the above
105e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * copyright notice and this permission notice appear in all copies.
115e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich *
125e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
135e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
145e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
155e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
165e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
175e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
185e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
195e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich *
205e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * Sponsored in part by the Defense Advanced Research Projects
215e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * Agency (DARPA) and Air Force Research Laboratory, Air Force
225e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * Materiel Command, USAF, under agreement number F39502-99-1-0512.
235e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich */
245e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
255e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#ifndef	_FTW_H
265e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	_FTW_H
275e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
285e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#include <sys/types.h>
295e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#include <sys/stat.h>
305e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
315e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich/*
325e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * Valid flags for the 3rd argument to the function that is passed as the
335e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * second argument to ftw(3) and nftw(3).  Say it three times fast!
345e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich */
355e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_F		0	/* File.  */
365e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_D		1	/* Directory.  */
375e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_DNR		2	/* Directory without read permission.  */
385e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_DP		3	/* Directory with subdirectories visited.  */
395e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_NS		4	/* Unknown type; stat() failed.  */
405e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_SL		5	/* Symbolic link.  */
415e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_SLN		6	/* Sym link that names a nonexistent file.  */
425e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
435e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich/*
445e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich * Flags for use as the 4th argument to nftw(3).  These may be ORed together.
455e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich */
465e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_PHYS	0x01	/* Physical walk, don't follow sym links.  */
475e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_MOUNT	0x02	/* The walk does not cross a mount point.  */
485e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_DEPTH	0x04	/* Subdirs visited before the dir itself. */
495e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#define	FTW_CHDIR	0x08	/* Change to a directory before reading it. */
505e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
515e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevichstruct FTW {
525e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich	int base;
535e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich	int level;
545e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich};
555e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
565e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich__BEGIN_DECLS
575e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevichint	ftw(const char *, int (*)(const char *, const struct stat *, int), int);
585e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevichint	nftw(const char *, int (*)(const char *, const struct stat *, int,
595e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich	    struct FTW *), int, int);
605e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich__END_DECLS
615e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich
625e58ea07d47c175abf8285ff67e3e9bc0b3a9e8eNick Kralevich#endif	/* !_FTW_H */
63