From 175a494823c1eacd4da9c4a5b90ec0668f7051c0 Mon Sep 17 00:00:00 2001 From: Alex Riesen Date: Sat, 27 Sep 2008 00:59:14 +0200 Subject: Use remove_path from dir.c instead of own implementation Besides, it fixes a memleak (builtin-rm.c) and accidental change of the input const argument (builtin-merge-recursive.c). Signed-off-by: Alex Riesen Signed-off-by: Shawn O. Pearce --- builtin-rm.c | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) (limited to 'builtin-rm.c') diff --git a/builtin-rm.c b/builtin-rm.c index fdac34f242..50ae6d5401 100644 --- a/builtin-rm.c +++ b/builtin-rm.c @@ -29,26 +29,6 @@ static void add_list(const char *name) list.name[list.nr++] = name; } -static int remove_file(const char *name) -{ - int ret; - char *slash; - - ret = unlink(name); - if (ret && errno == ENOENT) - /* The user has removed it from the filesystem by hand */ - ret = errno = 0; - - if (!ret && (slash = strrchr(name, '/'))) { - char *n = xstrdup(name); - do { - n[slash - name] = 0; - name = n; - } while (!rmdir(name) && (slash = strrchr(name, '/'))); - } - return ret; -} - static int check_local_mod(unsigned char *head, int index_only) { /* items in list are already sorted in the cache order, @@ -239,7 +219,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix) int removed = 0; for (i = 0; i < list.nr; i++) { const char *path = list.name[i]; - if (!remove_file(path)) { + if (!remove_path(path)) { removed = 1; continue; } -- cgit v1.2.3