diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-08-11 01:39:00 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-08-11 01:39:00 +0000 |
commit | 90ed80e67073551a6016a57cbfb8d9804446e173 (patch) | |
tree | 160b5cae65563d5ef1a1bf210af187f268fa4c8c /test-fts.c | |
parent | 542b6aa18abe9cadcf68c4a5c88bde4353e5eac9 (diff) | |
download | mandoc-90ed80e67073551a6016a57cbfb8d9804446e173.tar.gz mandoc-90ed80e67073551a6016a57cbfb8d9804446e173.tar.zst mandoc-90ed80e67073551a6016a57cbfb8d9804446e173.zip |
Provide a fallback version of fts(3) for systems lacking it.
I chose the OpenBSD version because it apparently contains various
bugfixes that never made it into libnbcompat. To reduce size and
complexity, i stripped out the features we don't need.
Diffstat (limited to 'test-fts.c')
-rw-r--r-- | test-fts.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test-fts.c b/test-fts.c new file mode 100644 index 00000000..5c6fc2d0 --- /dev/null +++ b/test-fts.c @@ -0,0 +1,42 @@ +#include <sys/types.h> +#include <sys/stat.h> +#include <fts.h> +#include <stdio.h> + +int +main(void) +{ + const char *argv[2]; + FTS *ftsp; + FTSENT *entry; + + argv[0] = "."; + argv[1] = (char *)NULL; + + ftsp = fts_open((char * const *)argv, + FTS_PHYSICAL | FTS_NOCHDIR, NULL); + + if (ftsp == NULL) { + perror("fts_open"); + return(1); + } + + entry = fts_read(ftsp); + + if (entry == NULL) { + perror("fts_read"); + return(1); + } + + if (fts_set(ftsp, entry, FTS_SKIP) != 0) { + perror("fts_set"); + return(1); + } + + if (fts_close(NULL) != 0) { + perror("fts_close"); + return(1); + } + + return(0); +} |