xref: /netbsd-src/external/bsd/mdocml/dist/test-fts.c (revision 9508192e445c6bc8463a56d16765781892ab889e)
1fec65c98Schristos #include <sys/types.h>
2fec65c98Schristos #include <sys/stat.h>
3fec65c98Schristos #include <fts.h>
4fec65c98Schristos #include <stdio.h>
5*9508192eSchristos #include <string.h>
6*9508192eSchristos 
7*9508192eSchristos #ifdef FTS_COMPARE_CONST
8*9508192eSchristos int fts_compare(const FTSENT *const *, const FTSENT *const *);
9*9508192eSchristos #else
10*9508192eSchristos int fts_compare(const FTSENT **, const FTSENT **);
11*9508192eSchristos #endif
12fec65c98Schristos 
13fec65c98Schristos int
main(void)14fec65c98Schristos main(void)
15fec65c98Schristos {
16fec65c98Schristos 	const char	*argv[2];
17fec65c98Schristos 	FTS		*ftsp;
18fec65c98Schristos 	FTSENT		*entry;
19fec65c98Schristos 
20fec65c98Schristos 	argv[0] = ".";
21fec65c98Schristos 	argv[1] = (char *)NULL;
22fec65c98Schristos 
23fec65c98Schristos 	ftsp = fts_open((char * const *)argv,
24*9508192eSchristos 	    FTS_PHYSICAL | FTS_NOCHDIR, fts_compare);
25fec65c98Schristos 
26fec65c98Schristos 	if (ftsp == NULL) {
27fec65c98Schristos 		perror("fts_open");
289ff1f2acSchristos 		return 1;
29fec65c98Schristos 	}
30fec65c98Schristos 
31fec65c98Schristos 	entry = fts_read(ftsp);
32fec65c98Schristos 
33fec65c98Schristos 	if (entry == NULL) {
34fec65c98Schristos 		perror("fts_read");
359ff1f2acSchristos 		return 1;
36fec65c98Schristos 	}
37fec65c98Schristos 
38fec65c98Schristos 	if (fts_set(ftsp, entry, FTS_SKIP) != 0) {
39fec65c98Schristos 		perror("fts_set");
409ff1f2acSchristos 		return 1;
41fec65c98Schristos 	}
42fec65c98Schristos 
43fec65c98Schristos 	if (fts_close(ftsp) != 0) {
44fec65c98Schristos 		perror("fts_close");
459ff1f2acSchristos 		return 1;
46fec65c98Schristos 	}
47fec65c98Schristos 
489ff1f2acSchristos 	return 0;
49fec65c98Schristos }
50*9508192eSchristos 
51*9508192eSchristos int
52*9508192eSchristos #ifdef FTS_COMPARE_CONST
fts_compare(const FTSENT * const * a,const FTSENT * const * b)53*9508192eSchristos fts_compare(const FTSENT *const *a, const FTSENT *const *b)
54*9508192eSchristos #else
55*9508192eSchristos fts_compare(const FTSENT **a, const FTSENT **b)
56*9508192eSchristos #endif
57*9508192eSchristos {
58*9508192eSchristos 	return strcmp((*a)->fts_name, (*b)->fts_name);
59*9508192eSchristos }
60