aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/test-fts.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-08-11 01:39:00 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-08-11 01:39:00 +0000
commit90ed80e67073551a6016a57cbfb8d9804446e173 (patch)
tree160b5cae65563d5ef1a1bf210af187f268fa4c8c /test-fts.c
parent542b6aa18abe9cadcf68c4a5c88bde4353e5eac9 (diff)
downloadmandoc-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.c42
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);
+}