Skip to content

Commit

Permalink
rename pathspec_prefix() to common_prefix() and move to dir.[ch]
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Clemens Buchacher authored and gitster committed Sep 12, 2011
1 parent 4a085b1 commit f950eb9
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 12 deletions.
2 changes: 1 addition & 1 deletion builtin/commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion builtin/ls-files.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
1 change: 0 additions & 1 deletion cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
13 changes: 12 additions & 1 deletion dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion dir.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
7 changes: 0 additions & 7 deletions setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit f950eb9

Please sign in to comment.