Add git_path_is_dot_or_dotdot. Also, remove some duplication in the clone test suite.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
diff --git a/src/clone.c b/src/clone.c
index 9e52728..3f161c8 100644
--- a/src/clone.c
+++ b/src/clone.c
@@ -24,6 +24,7 @@
#include "remote.h"
#include "fileops.h"
#include "refs.h"
+#include "path.h"
GIT_BEGIN_DECL
@@ -191,13 +192,6 @@ static int setup_remotes_and_fetch(git_repository *repo,
}
-static bool is_dot_or_dotdot(const char *name)
-{
- return (name[0] == '.' &&
- (name[1] == '\0' ||
- (name[1] == '.' && name[2] == '\0')));
-}
-
/* TODO: p_opendir, p_closedir */
static bool path_is_okay(const char *path)
{
@@ -238,7 +232,7 @@ static bool path_is_okay(const char *path)
}
while ((e = readdir(dir)) != NULL) {
- if (!is_dot_or_dotdot(e->d_name)) {
+ if (!git_path_is_dot_or_dotdot(e->d_name)) {
giterr_set(GITERR_INVALID,
"'%s' exists and is not an empty directory", path);
retval = false;
diff --git a/src/path.c b/src/path.c
index a6574b3..3de4b11 100644
--- a/src/path.c
+++ b/src/path.c
@@ -488,14 +488,6 @@ int git_path_cmp(
return (c1 < c2) ? -1 : (c1 > c2) ? 1 : 0;
}
-/* Taken from git.git */
-GIT_INLINE(int) is_dot_or_dotdot(const char *name)
-{
- return (name[0] == '.' &&
- (name[1] == '\0' ||
- (name[1] == '.' && name[2] == '\0')));
-}
-
int git_path_direach(
git_buf *path,
int (*fn)(void *, git_buf *),
@@ -524,7 +516,7 @@ int git_path_direach(
while (p_readdir_r(dir, de_buf, &de) == 0 && de != NULL) {
int result;
- if (is_dot_or_dotdot(de->d_name))
+ if (git_path_is_dot_or_dotdot(de->d_name))
continue;
if (git_buf_puts(path, de->d_name) < 0) {
@@ -583,7 +575,7 @@ int git_path_dirload(
char *entry_path;
size_t entry_len;
- if (is_dot_or_dotdot(de->d_name))
+ if (git_path_is_dot_or_dotdot(de->d_name))
continue;
entry_len = strlen(de->d_name);
diff --git a/src/path.h b/src/path.h
index fd76805..76e01fc 100644
--- a/src/path.h
+++ b/src/path.h
@@ -80,6 +80,14 @@ extern int git_path_to_dir(git_buf *path);
*/
extern void git_path_string_to_dir(char* path, size_t size);
+/* Taken from git.git */
+GIT_INLINE(int) git_path_is_dot_or_dotdot(const char *name)
+{
+ return (name[0] == '.' &&
+ (name[1] == '\0' ||
+ (name[1] == '.' && name[2] == '\0')));
+}
+
#ifdef GIT_WIN32
/**
* Convert backslashes in path to forward slashes.