summaryrefslogtreecommitdiffstats
path: root/lib/util/tftw.h
blob: 0d3d007ad3b0ca7e1a22ecd290aeef240df0bb1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <talloc.h>

enum tftw_flags_e {
	/* Regular file.  */
	TFTW_FLAG_FILE,
	/* Directory.  */
	TFTW_FLAG_DIR,
	/* Unreadable directory.  */
	TFTW_FLAG_DNR,
	/* Unstatable file.  */
	TFTW_FLAG_NSTAT,
	/* Symbolic link.  */
	TFTW_FLAG_SLINK,
	/* Special file (fifo, ...).  */
	TFTW_FLAG_SPEC,

	/* Directory, all subdirs have been visited. */
	TFTW_FLAG_DP,
	/* Symbolic link naming non-existing file.  */
	TFTW_FLAG_SLN
};

/* Maximum number of subdirectories to descend into */
#define TFTW_MAX_DEPTH 50

typedef int (*tftw_walker_fn)(TALLOC_CTX *mem_ctx,
			      const char *fpath,
			      const struct stat *sb,
			      enum tftw_flags_e flag,
			      void *userdata);

int tftw(TALLOC_CTX *mem_ctx, const char *fpath, tftw_walker_fn fn, size_t depth, void *userdata);