Git development
 help / color / mirror / Atom feed
* Fix up some fallout from "setup_git_directory()" cleanups
@ 2006-07-31 20:13 Linus Torvalds
  2006-07-31 21:56 ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: Linus Torvalds @ 2006-07-31 20:13 UTC (permalink / raw)
  To: Junio C Hamano, Git Mailing List


git-ls-files was broken by the setup_git_directory() calling changes, 
because I had missed the fact that the "prefix" variable in that file was 
static to the whole file, and unlike git-ls-tree (where I had fixed it 
up), it ended up using two different variables with the same name 
depending on what the scoping happened to be.

This fixes it up properly (by just removing the static variable, and 
passing the automatic one around properly), and git-ls-files should work 
again.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---

Sorry about that.

diff --git a/builtin-ls-files.c b/builtin-ls-files.c
index 79ffe8f..11386c4 100644
--- a/builtin-ls-files.c
+++ b/builtin-ls-files.c
@@ -24,7 +24,6 @@ static int show_valid_bit = 0;
 static int line_terminator = '\n';
 
 static int prefix_len = 0, prefix_offset = 0;
-static const char *prefix = NULL;
 static const char **pathspec = NULL;
 static int error_unmatch = 0;
 static char *ps_matched = NULL;
@@ -207,7 +206,7 @@ static void show_ce_entry(const char *ta
 	}
 }
 
-static void show_files(struct dir_struct *dir)
+static void show_files(struct dir_struct *dir, const char *prefix)
 {
 	int i;
 
@@ -253,7 +252,7 @@ static void show_files(struct dir_struct
 /*
  * Prune the index to only contain stuff starting with "prefix"
  */
-static void prune_cache(void)
+static void prune_cache(const char *prefix)
 {
 	int pos = cache_name_pos(prefix, prefix_len);
 	unsigned int first, last;
@@ -276,7 +275,7 @@ static void prune_cache(void)
 	active_nr = last;
 }
 
-static void verify_pathspec(void)
+static const char *verify_pathspec(const char *prefix)
 {
 	const char **p, *n, *prev;
 	char *real_prefix;
@@ -313,7 +312,7 @@ static void verify_pathspec(void)
 		memcpy(real_prefix, prev, max);
 		real_prefix[max] = 0;
 	}
-	prefix = real_prefix;
+	return real_prefix;
 }
 
 static const char ls_files_usage[] =
@@ -453,7 +452,7 @@ int cmd_ls_files(int argc, const char **
 
 	/* Verify that the pathspec matches the prefix */
 	if (pathspec)
-		verify_pathspec();
+		prefix = verify_pathspec(prefix);
 
 	/* Treat unmatching pathspec elements as errors */
 	if (pathspec && error_unmatch) {
@@ -476,8 +475,8 @@ int cmd_ls_files(int argc, const char **
 
 	read_cache();
 	if (prefix)
-		prune_cache();
-	show_files(&dir);
+		prune_cache(prefix);
+	show_files(&dir, prefix);
 
 	if (ps_matched) {
 		/* We need to make sure all pathspec matched otherwise

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-08-01  5:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-31 20:13 Fix up some fallout from "setup_git_directory()" cleanups Linus Torvalds
2006-07-31 21:56 ` Junio C Hamano
2006-07-31 22:21   ` Linus Torvalds
2006-07-31 23:19     ` Johannes Schindelin
2006-08-01  5:15       ` Linus Torvalds

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox