From 3b9fa8b3619f0ef0ddd47efa6ab285682b686af1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20H=C3=A4rdeman?= Date: Fri, 18 May 2007 23:09:20 +0200 Subject: [PATCH] Make sure only initial paths are normalized --- metastore.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/metastore.c b/metastore.c index db95896..0948dbd 100644 --- a/metastore.c +++ b/metastore.c @@ -267,27 +267,26 @@ normalize_path(const char *orig) } void -mentries_recurse(const char *opath, struct metaentry **mhead) +mentries_recurse(const char *path, struct metaentry **mhead) { struct stat sbuf; struct metaentry *mentry; char tpath[PATH_MAX]; DIR *dir; struct dirent *dent; - char *path = normalize_path(opath); if (!path) return; if (lstat(path, &sbuf)) { printf("Failed to stat %s\n", path); - goto out; + return; } mentry = mentry_create(path); if (!mentry) { printf("Failed to get metadata for %s\n", path); - goto out; + return; } mentry_insert(mentry, mhead); @@ -309,8 +308,13 @@ mentries_recurse(const char *opath, struct metaentry **mhead) closedir(dir); } +} -out: +void +mentries_recurse_path(const char *opath, struct metaentry **mhead) +{ + char *path = normalize_path(opath); + mentries_recurse(path, mhead); free(path); } @@ -789,9 +793,9 @@ main(int argc, char **argv, char **envp) if (optind < argc) while (optind < argc) - mentries_recurse(argv[optind++], &mhead); + mentries_recurse_path(argv[optind++], &mhead); else - mentries_recurse(".", &mhead); + mentries_recurse_path(".", &mhead); if (!mhead) { fprintf(stderr, "Failed to load metadata from fs\n"); exit(EXIT_FAILURE); @@ -801,9 +805,9 @@ main(int argc, char **argv, char **envp) case ACTION_SAVE: if (optind < argc) while (optind < argc) - mentries_recurse(argv[optind++], &mhead); + mentries_recurse_path(argv[optind++], &mhead); else - mentries_recurse(".", &mhead); + mentries_recurse_path(".", &mhead); if (!mhead) { fprintf(stderr, "Failed to load metadata from fs\n"); exit(EXIT_FAILURE); @@ -819,9 +823,9 @@ main(int argc, char **argv, char **envp) if (optind < argc) while (optind < argc) - mentries_recurse(argv[optind++], &mhead); + mentries_recurse_path(argv[optind++], &mhead); else - mentries_recurse(".", &mhead); + mentries_recurse_path(".", &mhead); if (!mhead) { fprintf(stderr, "Failed to load metadata from fs\n"); exit(EXIT_FAILURE); -- 2.11.4.GIT