diff --git a/fts.c b/fts.c new file mode 100644 --- /dev/null +++ b/fts.c @@ -0,0 +1,59 @@ +/** + * fts.c file hierarchy browser + */ + +#include +#include + +#include +#include + +#include + +int compare (const FTSENT ** a, const FTSENT ** b) +{ + return 0; +} + +int main (int argc, char **argv) +{ + FTS *fts; + FTSENT *current = NULL; + + char **paths; + + int i; + + if (argc < 2) { + printf ("Usage: %s [dir]...\n", argv[0]); + return EXIT_FAILURE; + } + + if ((paths = calloc (argc + 1, sizeof (char *))) == NULL) { + perror ("CALLOC"); + return EXIT_FAILURE; + } + + for (i = 1; i < argc; i++) { + paths[i - 1] = argv[i]; + } + + paths[i] = NULL; + + if ((fts = fts_open (paths, FTS_NOSTAT, &compare)) == NULL) { + perror ("fts_open"); + return EXIT_FAILURE; + } + + while ((current = fts_read (fts)) != NULL) { + printf ("%s/%s\n", current->fts_path, current->fts_name); + } + + if (fts_close (fts) < 0) + perror ("fts_close"); + + if (paths != NULL) + free (paths); + + return EXIT_SUCCESS; +}