summaryrefslogtreecommitdiff
path: root/utf8.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-05-13 14:05:51 -0700
committerJunio C Hamano <gitster@pobox.com>2015-05-13 14:05:51 -0700
commit8a1d89745d1b60d0d9e8bd91e4e9564673b6c22a (patch)
treeeef6bd2437ba2a1188dbe1b4023b27ef99531b65 /utf8.c
parentebb464f0cba9efcb5552fad02f452f09f68fc9b2 (diff)
parent27547e5fccda134560ad0441aa5bfa187387cec0 (diff)
downloadgit-8a1d89745d1b60d0d9e8bd91e4e9564673b6c22a.tar.xz
Merge branch 'cn/bom-in-gitignore' into maint
Teach the codepaths that read .gitignore and .gitattributes files that these files encoded in UTF-8 may have UTF-8 BOM marker at the beginning; this makes it in line with what we do for configuration files already. * cn/bom-in-gitignore: attr: skip UTF8 BOM at the beginning of the input file config: use utf8_bom[] from utf.[ch] in git_parse_source() utf8-bom: introduce skip_utf8_bom() helper add_excludes_from_file: clarify the bom skipping logic dir: allow a BOM at the beginning of exclude files
Diffstat (limited to 'utf8.c')
-rw-r--r--utf8.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/utf8.c b/utf8.c
index 520fbb4994..28e6d76a42 100644
--- a/utf8.c
+++ b/utf8.c
@@ -633,3 +633,14 @@ int is_hfs_dotgit(const char *path)
return 1;
}
+
+const char utf8_bom[] = "\357\273\277";
+
+int skip_utf8_bom(char **text, size_t len)
+{
+ if (len < strlen(utf8_bom) ||
+ memcmp(*text, utf8_bom, strlen(utf8_bom)))
+ return 0;
+ *text += strlen(utf8_bom);
+ return 1;
+}