From 988abb33a5c9d8023a8e1bd5535a75a16e5d9e46 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Mon, 12 May 2008 00:52:27 -0500 Subject: Update mdev to work around the newest sysfs api breakage in the 2.6.25 kernel. (Yeah, I know sysfs hasn't actually got an API, but I like to pretend...) --- lib/dirtree.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/dirtree.c') diff --git a/lib/dirtree.c b/lib/dirtree.c index 45ee139c..a695bb36 100644 --- a/lib/dirtree.c +++ b/lib/dirtree.c @@ -58,6 +58,7 @@ struct dirtree *dirtree_read(char *path, struct dirtree *parent, if (!(dir = opendir(path))) perror_msg("No %s", path); else for (;;) { + int norecurse = 0; struct dirent *entry = readdir(dir); if (!entry) { closedir(dir); @@ -74,8 +75,9 @@ struct dirtree *dirtree_read(char *path, struct dirtree *parent, *ddt = dirtree_add_node(path); if (!*ddt) continue; (*ddt)->parent = parent; - if (callback) callback(path, *ddt); - if (entry->d_type == DT_DIR) + (*ddt)->depth = parent ? parent->depth + 1 : 1; + if (callback) norecurse = callback(path, *ddt); + if (!norecurse && entry->d_type == DT_DIR) (*ddt)->child = dirtree_read(path, *ddt, callback); if (callback) free(*ddt); else ddt = &((*ddt)->next); -- cgit v1.2.3