From d951286f645cc1d6f719c0c715620fc395c049d4 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 30 May 1997 01:37:13 +0000 Subject: Update. * io/Makefile (test-srcs): Add ftwtest. (distribute): Add ftwtest-sh. (tests): Call ftwtest-sh for this goal. * io/ftwtest-sh: New file. Sets up test environment, calls test program and compares the result. * io/ftwtest.c: Test program for ftw. * misc/search.h: Add comments. Declare tdestroy. * misc/tsearch.c (tdestroy): New function. --- io/ftwtest.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 io/ftwtest.c (limited to 'io/ftwtest.c') diff --git a/io/ftwtest.c b/io/ftwtest.c new file mode 100644 index 0000000000..6daa7e9eee --- /dev/null +++ b/io/ftwtest.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include +#include +#include +#include + + +int do_depth; +int do_chdir; +int do_phys; + +struct option options[] = +{ + { "depth", no_argument, &do_depth, 1 }, + { "chdir", no_argument, &do_chdir, 1 }, + { "phys", no_argument, &do_phys, 1 }, + { NULL, 0, NULL, 0 } +}; + +const char *flag2name[] = +{ + [FTW_F] = "FTW_F", + [FTW_D] = "FTW_D", + [FTW_DNR] = "FTW_DNR", + [FTW_NS] = "FTW_NS", + [FTW_SL] = "FTW_SL", + [FTW_DP] = "FTW_DP", + [FTW_SLN] = "FTW_SLN" +}; + + +int +cb (const char *name, const struct stat *st, int flag, struct FTW *f) +{ + printf ("base = \"%.*s\", file = \"%s\", flag = %s", + f->base, name, name + f->base, flag2name[flag]); + if (do_chdir) + { + char *cwd = getcwd (NULL, 0); + printf (", cwd = %s", cwd); + free (cwd); + } + puts (""); + return 0; +} + +int +main (int argc, char *argv[]) +{ + int opt; + int r; + int flag = 0; + mtrace (); + + while ((opt = getopt_long_only (argc, argv, "", options, NULL)) != -1) + ; + + if (do_chdir) + flag |= FTW_CHDIR; + if (do_depth) + flag |= FTW_DEPTH; + if (do_phys) + flag |= FTW_PHYS; + + r = nftw (optind < argc ? argv[optind] : ".", cb, 3, flag); + if (r) + perror ("nftw"); + return r; +} -- cgit v1.2.3