Commit c3b5099fe46e1191784cc1890cd35f167305f47a

Ben Straub 2012-07-11T10:10:31

Add git_path_is_dot_or_dotdot. Also, remove some duplication in the clone test suite.

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.