summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-06-09 04:11:25 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-06-09 04:11:25 (GMT)
commit7612a1efdb0c0806b43db10ce784707aae874340 (patch)
tree9e664ed75be002a4457db4a5843820149fa860df
parent2048bb00ee3937808ce9f0c8f59d71a9b46ab56f (diff)
downloadgit-7612a1efdb0c0806b43db10ce784707aae874340.zip
git-7612a1efdb0c0806b43db10ce784707aae874340.tar.gz
git-7612a1efdb0c0806b43db10ce784707aae874340.tar.bz2
git-rm: honor -n flag.
Even when invoked with -n flag, git-rm removed the matching paths anyway. Also includes the missing check spotted by SungHyun Nam, which caused it to segfault. Now we refuse to run without any paths. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--builtin-rm.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/builtin-rm.c b/builtin-rm.c
index ef2f8b5..4d56a1f 100644
--- a/builtin-rm.c
+++ b/builtin-rm.c
@@ -83,15 +83,15 @@ int cmd_rm(int argc, const char **argv, char **envp)
}
die(builtin_rm_usage);
}
- pathspec = get_pathspec(prefix, argv + i);
+ if (argc <= i)
+ usage(builtin_rm_usage);
+ pathspec = get_pathspec(prefix, argv + i);
seen = NULL;
- if (pathspec) {
- for (i = 0; pathspec[i] ; i++)
- /* nothing */;
- seen = xmalloc(i);
- memset(seen, 0, i);
- }
+ for (i = 0; pathspec[i] ; i++)
+ /* nothing */;
+ seen = xmalloc(i);
+ memset(seen, 0, i);
for (i = 0; i < active_nr; i++) {
struct cache_entry *ce = active_cache[i];
@@ -121,6 +121,9 @@ int cmd_rm(int argc, const char **argv, char **envp)
cache_tree_invalidate_path(active_cache_tree, path);
}
+ if (show_only)
+ return 0;
+
/*
* Then, if we used "-f", remove the filenames from the
* workspace. If we fail to remove the first one, we