From 6e6871c3b253d26ab31e328dd5f9b6996b75688c Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Wed, 20 Feb 2008 01:47:56 -0600 Subject: Add first pass at cp, totally untested, unlikely to work yet. :) --- lib/dirtree.c | 5 +++-- lib/lib.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/dirtree.c b/lib/dirtree.c index 71f64493..a2647ee2 100644 --- a/lib/dirtree.c +++ b/lib/dirtree.c @@ -50,7 +50,7 @@ struct dirtree *dirtree_add_node(char *path) // structures after use, and return NULL. struct dirtree *dirtree_read(char *path, struct dirtree *parent, - int (*callback)(struct dirtree *node)) + int (*callback)(struct dirtree *node, int after)) { struct dirtree *dt = NULL, **ddt = &dt; DIR *dir; @@ -72,9 +72,10 @@ struct dirtree *dirtree_read(char *path, struct dirtree *parent, *ddt = dirtree_add_node(path); if (!*ddt) continue; (*ddt)->parent = parent; - if (callback) callback(*ddt); + if (callback) callback(*ddt, 0); if (entry->d_type == DT_DIR) (*ddt)->child = dirtree_read(path, *ddt, callback); + if (callback) callback(*ddt, 1); if (callback) free(*ddt); else ddt = &((*ddt)->next); path[len]=0; diff --git a/lib/lib.h b/lib/lib.h index ee073e0c..21ef98ed 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -41,7 +41,7 @@ struct dirtree { struct dirtree *dirtree_add_node(char *path); struct dirtree *dirtree_read(char *path, struct dirtree *parent, - int (*callback)(struct dirtree *node)); + int (*callback)(struct dirtree *node, int after)); // lib.c void xstrcpy(char *dest, char *src, size_t size); -- cgit v1.2.3