Code

rename pathspec_prefix() to common_prefix() and move to dir.[ch]
authorClemens Buchacher <drizzd@aon.at>
Sun, 4 Sep 2011 10:42:01 +0000 (12:42 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 12 Sep 2011 21:38:32 +0000 (14:38 -0700)
Also make common_prefix_len() static as this refactoring makes dir.c
itself the only caller of this helper function.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/commit.c
builtin/ls-files.c
cache.h
dir.c
dir.h
setup.c

index 50bacd68e2103de9f976fecd9ac2bc0ef737884a..1e8e0acb534c142c0d91bd7f8560d2d5ddbfc3fa 100644 (file)
@@ -257,7 +257,7 @@ static int list_paths(struct string_list *list, const char *with_tree,
        m = xcalloc(1, i);
 
        if (with_tree) {
-               char *max_prefix = pathspec_prefix(pattern);
+               char *max_prefix = common_prefix(pattern);
                overlay_tree_on_cache(with_tree, max_prefix ? max_prefix : prefix);
                free(max_prefix);
        }
index 19e53cc881b41881ff5f92581ce2f8541b399ffa..0956bb51b95be497831979a7ed3dccc0c141bad2 100644 (file)
@@ -541,7 +541,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
                strip_trailing_slash_from_submodules();
 
        /* Find common prefix for all pathspec's */
-       max_prefix = pathspec_prefix(pathspec);
+       max_prefix = common_prefix(pathspec);
        max_prefix_len = max_prefix ? strlen(max_prefix) : 0;
 
        /* Treat unmatching pathspec elements as errors */
diff --git a/cache.h b/cache.h
index a3462bafce407bbad79d8f0121b5bbff3f304316..e11cf6ab1c73ac97c94e76e8c8699d55af95b978 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -426,7 +426,6 @@ extern void set_git_work_tree(const char *tree);
 #define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES"
 
 extern const char **get_pathspec(const char *prefix, const char **pathspec);
-extern char *pathspec_prefix(const char **pathspec);
 extern void setup_work_tree(void);
 extern const char *setup_git_directory_gently(int *);
 extern const char *setup_git_directory(void);
diff --git a/dir.c b/dir.c
index 7bc75c94486b0419039e54185c29ae2657e26d6b..6c0d7825799f6c35a2c1f1830767ab6203e2da92 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -34,7 +34,7 @@ int fnmatch_icase(const char *pattern, const char *string, int flags)
        return fnmatch(pattern, string, flags | (ignore_case ? FNM_CASEFOLD : 0));
 }
 
-size_t common_prefix_len(const char **pathspec)
+static size_t common_prefix_len(const char **pathspec)
 {
        const char *n, *first;
        size_t max = 0;
@@ -61,6 +61,17 @@ size_t common_prefix_len(const char **pathspec)
        return max;
 }
 
+/*
+ * Returns a copy of the longest leading path common among all
+ * pathspecs.
+ */
+char *common_prefix(const char **pathspec)
+{
+       unsigned long len = common_prefix_len(pathspec);
+
+       return len ? xmemdupz(*pathspec, len) : NULL;
+}
+
 int fill_directory(struct dir_struct *dir, const char **pathspec)
 {
        const char *path;
diff --git a/dir.h b/dir.h
index 467d197984ed0fb960ff4900851680c14cc8f5ea..dd6947e1d46098732ff1d8c3f23087c1e7163fe9 100644 (file)
--- a/dir.h
+++ b/dir.h
@@ -64,7 +64,7 @@ struct dir_struct {
 #define MATCHED_RECURSIVELY 1
 #define MATCHED_FNMATCH 2
 #define MATCHED_EXACTLY 3
-extern size_t common_prefix_len(const char **pathspec);
+extern char *common_prefix(const char **pathspec);
 extern int match_pathspec(const char **pathspec, const char *name, int namelen, int prefix, char *seen);
 extern int match_pathspec_depth(const struct pathspec *pathspec,
                                const char *name, int namelen,
diff --git a/setup.c b/setup.c
index 70b887fe683b4fa72d20066c42a50b7ca34bc458..ce87900ce3c68ace0f231827bdda0e9a65ef15b3 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -264,13 +264,6 @@ const char **get_pathspec(const char *prefix, const char **pathspec)
        return pathspec;
 }
 
-char *pathspec_prefix(const char **pathspec)
-{
-       size_t len = common_prefix_len(pathspec);
-
-       return len ? xmemdupz(*pathspec, len) : NULL;
-}
-
 /*
  * Test if it looks like we're at a git directory.
  * We want to see: