dir: expose cmp_name() and check_contains()
We want to use cmp_name() and check_contains() (which both compare `struct dir_entry`s, the former in terms of the sort order, the latter in terms of whether one lexically contains another) outside of dir.c, so we have to (1) change their linkage and (2) rename them as appropriate for the global namespace. The second is achieved by renaming cmp_name() to cmp_dir_entry() and check_contains() to check_dir_entry_contains(). Signed-off-by: Samuel Lijin <sxlijin@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Samuel Lijin committed
May 18, 2017 at 04:21 UTC
bbf504a9957e8a2a262619641ffa30348d71a76f
2 files changed
+9
-5
dir.c
+6
-5
@@ -1805,7 +1805,7 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
1805
return dir_state;
1806
}
1807
1808
-static int cmp_name(const void *p1, const void *p2)
1808
+int cmp_dir_entry(const void *p1, const void *p2)
1809
{
1810
const struct dir_entry *e1 = *(const struct dir_entry **)p1;
1811
const struct dir_entry *e2 = *(const struct dir_entry **)p2;
@@ -1814,7 +1814,7 @@ static int cmp_name(const void *p1, const void *p2)
1814
}
1815
1816
/* check if *out lexically strictly contains *in */
1817
-static int check_contains(const struct dir_entry *out, const struct dir_entry *in)
1817
+int check_dir_entry_contains(const struct dir_entry *out, const struct dir_entry *in)
1818
{
1819
return (out->len < in->len) &&
1820
(out->name[out->len - 1] == '/') &&
@@ -2034,8 +2034,8 @@ int read_directory(struct dir_struct *dir, const char *path,
2034
dir->untracked = NULL;
2035
if (!len || treat_leading_path(dir, path, len, pathspec))
2036
read_directory_recursive(dir, path, len, untracked, 0, pathspec);
2037
- QSORT(dir->entries, dir->nr, cmp_name);
2038
- QSORT(dir->ignored, dir->ignored_nr, cmp_name);
2037
+ QSORT(dir->entries, dir->nr, cmp_dir_entry);
2038
+ QSORT(dir->ignored, dir->ignored_nr, cmp_dir_entry);
2039
2040
/*
2041
* If DIR_SHOW_IGNORED_TOO is set, read_directory_recursive() will
@@ -2048,7 +2048,8 @@ int read_directory(struct dir_struct *dir, const char *path,
2048
2049
/* remove from dir->entries untracked contents of untracked dirs */
2050
for (i = j = 0; j < dir->nr; j++) {
2051
- if (i && check_contains(dir->entries[i - 1], dir->entries[j])) {
2051
+ if (i &&
2052
+ check_dir_entry_contains(dir->entries[i - 1], dir->entries[j])) {
2053
free(dir->entries[j]);
2054
dir->entries[j] = NULL;
2055
} else {
dir.h
+3
@@ -327,6 +327,9 @@ static inline int dir_path_match(const struct dir_entry *ent,
327
has_trailing_dir);
328
}
329
330
+int cmp_dir_entry(const void *p1, const void *p2);
331
+int check_dir_entry_contains(const struct dir_entry *out, const struct dir_entry *in);
332
+
333
void untracked_cache_invalidate_path(struct index_state *, const char *);
334
void untracked_cache_remove_from_index(struct index_state *, const char *);
335
void untracked_cache_add_to_index(struct index_state *, const char *);