+
+static void setup_crlf_check(struct git_attr_check *check)
+{
+ static struct git_attr *attr_crlf;
+
+ if (!attr_crlf)
+ attr_crlf = git_attr("crlf", 4);
+ check->attr = attr_crlf;
+}
+
+static int git_path_is_binary(const char *path)
+{
+ struct git_attr_check attr_crlf_check;
+
+ setup_crlf_check(&attr_crlf_check);
+
+ /*
+ * If crlf is not mentioned, default to autocrlf;
+ * disable autocrlf only when crlf attribute is explicitly
+ * unset.
+ */
+ return (!git_checkattr(path, 1, &attr_crlf_check) &&
+ (0 == attr_crlf_check.isset));
+}
+
+int convert_to_git(const char *path, char **bufp, unsigned long *sizep)
+{
+ if (git_path_is_binary(path))
+ return 0;
+ return autocrlf_to_git(path, bufp, sizep);
+}
+
+int convert_to_working_tree(const char *path, char **bufp, unsigned long *sizep)
+{
+ if (git_path_is_binary(path))
+ return 0;
+ return autocrlf_to_working_tree(path, bufp, sizep);
+}