summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2018-05-22 13:58:24 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2018-05-22 13:58:24 +0200
commit490cbaa97b6476d7103b82a26ef2c7c951c8ec5b (patch)
treee7ec7418bc44189c824bcdf316017480537f2baf
parent177dcfc702bd268a02db1d75c20e70cd3529a3b2 (diff)
downloadlibgit2-490cbaa97b6476d7103b82a26ef2c7c951c8ec5b.tar.gz
path: expose dotgit detection functions per filesystem
These will be used by the checkout code to detect them for the particular filesystem they're on.
-rw-r--r--src/path.c45
-rw-r--r--src/path.h42
2 files changed, 84 insertions, 3 deletions
diff --git a/src/path.c b/src/path.c
index cc4975c07..f8231e505 100644
--- a/src/path.c
+++ b/src/path.c
@@ -1850,17 +1850,56 @@ static int verify_dotgit_generic(const char *name, const char *dotgit_name, cons
return verify_dotgit_hfs_generic(name, strlen(name), dotgit_name, strlen(dotgit_name));
}
+int git_path_is_ntfs_dotgit_modules(const char *name)
+{
+ return !verify_dotgit_ntfs_generic(name, "gitmodules", "gi7eba");
+}
+
+int git_path_is_hfs_dotgit_modules(const char *name)
+{
+ return !verify_dotgit_hfs_generic(name, strlen(name), "gitmodules", CONST_STRLEN("gitmodules"));
+}
+
int git_path_is_dotgit_modules(const char *name)
{
- return !verify_dotgit_generic(name, "gitmodules", "gi7eba");
+ if (git_path_is_hfs_dotgit_modules(name))
+ return 1;
+
+ return git_path_is_ntfs_dotgit_modules(name);
+}
+
+int git_path_is_ntfs_dotgit_ignore(const char *name)
+{
+ return !verify_dotgit_ntfs_generic(name, "gitignore", "gi250a");
+}
+
+int git_path_is_hfs_dotgit_ignore(const char *name)
+{
+ return !verify_dotgit_hfs_generic(name, strlen(name), "gitignore", CONST_STRLEN("gitignore"));
}
int git_path_is_dotgit_ignore(const char *name)
{
- return !verify_dotgit_generic(name, "gitignore", "gi250a");
+ if (git_path_is_hfs_dotgit_ignore(name))
+ return 1;
+
+ return git_path_is_ntfs_dotgit_ignore(name);
+}
+
+int git_path_is_hfs_dotgit_attributes(const char *name)
+{
+ return !verify_dotgit_hfs_generic(name, strlen(name), "gitattributes", CONST_STRLEN("gitattributes"));
+}
+
+int git_path_is_ntfs_dotgit_attributes(const char *name)
+{
+ return !verify_dotgit_ntfs_generic(name, "gitattributes", "gi7d29");
}
int git_path_is_dotgit_attributes(const char *name)
{
- return !verify_dotgit_generic(name, "gitattributes", "gi7d29");
+ if (git_path_is_hfs_dotgit_attributes(name))
+ return 1;
+
+ return git_path_is_ntfs_dotgit_attributes(name);
}
diff --git a/src/path.h b/src/path.h
index b0c3975ad..e0812ec29 100644
--- a/src/path.h
+++ b/src/path.h
@@ -652,6 +652,20 @@ int git_path_normalize_slashes(git_buf *out, const char *path);
extern int git_path_is_dotgit_modules(const char *name);
/**
+ * Check whether a path component corresponds to a .gitmodules file in NTFS
+ *
+ * @param name the path component to check
+ */
+extern int git_path_is_ntfs_dotgit_modules(const char *name);
+
+/**
+ * Check whether a path component corresponds to a .gitmodules file in HFS+
+ *
+ * @param name the path component to check
+ */
+extern int git_path_is_hfs_dotgit_modules(const char *name);
+
+/**
* Check whether a path component corresponds to a .gitignore file
*
* @param name the path component to check
@@ -659,10 +673,38 @@ extern int git_path_is_dotgit_modules(const char *name);
extern int git_path_is_dotgit_ignore(const char *name);
/**
+ * Check whether a path component corresponds to a .gitignore file in NTFS
+ *
+ * @param name the path component to check
+ */
+extern int git_path_is_ntfs_dotgit_ignore(const char *name);
+
+/**
+ * Check whether a path component corresponds to a .gitignore file in HFS+
+ *
+ * @param name the path component to check
+ */
+extern int git_path_is_hfs_dotgit_ignore(const char *name);
+
+/**
* Check whether a path component corresponds to a .gitignore file
*
* @param name the path component to check
*/
extern int git_path_is_dotgit_attributes(const char *name);
+/**
+ * Check whether a path component corresponds to a .gitattributes file in NTFS
+ *
+ * @param name the path component to check
+ */
+extern int git_path_is_ntfs_dotgit_attributes(const char *name);
+
+/**
+ * Check whether a path component corresponds to a .gitattributes file in HFS+
+ *
+ * @param name the path component to check
+ */
+extern int git_path_is_hfs_dotgit_attributes(const char *name);
+
#endif