diff options
Diffstat (limited to 'third_party/git/convert.c')
-rw-r--r-- | third_party/git/convert.c | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/third_party/git/convert.c b/third_party/git/convert.c index 5ead3ce678bb..94ff83764922 100644 --- a/third_party/git/convert.c +++ b/third_party/git/convert.c @@ -8,7 +8,6 @@ #include "pkt-line.h" #include "sub-process.h" #include "utf8.h" -#include "ll-merge.h" /* * convert.c - convert a file when checking it out and checking it in. @@ -270,12 +269,8 @@ static int will_convert_lf_to_crlf(struct text_stat *stats, static int validate_encoding(const char *path, const char *enc, const char *data, size_t len, int die_on_error) { - const char *stripped; - /* We only check for UTF here as UTF?? can be an alias for UTF-?? */ - if (skip_iprefix(enc, "UTF", &stripped)) { - skip_prefix(stripped, "-", &stripped); - + if (istarts_with(enc, "UTF")) { /* * Check for detectable errors in UTF encodings */ @@ -289,10 +284,15 @@ static int validate_encoding(const char *path, const char *enc, */ const char *advise_msg = _( "The file '%s' contains a byte order " - "mark (BOM). Please use UTF-%.*s as " + "mark (BOM). Please use UTF-%s as " "working-tree-encoding."); - int stripped_len = strlen(stripped) - strlen("BE"); - advise(advise_msg, path, stripped_len, stripped); + const char *stripped = NULL; + char *upper = xstrdup_toupper(enc); + upper[strlen(upper)-2] = '\0'; + if (!skip_prefix(upper, "UTF-", &stripped)) + skip_prefix(stripped, "UTF", &stripped); + advise(advise_msg, path, stripped); + free(upper); if (die_on_error) die(error_msg, path, enc); else { @@ -307,7 +307,12 @@ static int validate_encoding(const char *path, const char *enc, "mark (BOM). Please use UTF-%sBE or UTF-%sLE " "(depending on the byte order) as " "working-tree-encoding."); + const char *stripped = NULL; + char *upper = xstrdup_toupper(enc); + if (!skip_prefix(upper, "UTF-", &stripped)) + skip_prefix(stripped, "UTF", &stripped); advise(advise_msg, path, stripped, stripped); + free(upper); if (die_on_error) die(error_msg, path, enc); else { @@ -412,7 +417,7 @@ static int encode_to_git(const char *path, const char *src, size_t src_len, if (!dst) { /* * We could add the blob "as-is" to Git. However, on checkout - * we would try to re-encode to the original encoding. This + * we would try to reencode to the original encoding. This * would fail and we would leave the user with a messed-up * working tree. Let's try to avoid this by screaming loud. */ @@ -1146,7 +1151,7 @@ static int ident_to_worktree(const char *src, size_t len, /* are we "faking" in place editing ? */ if (src == buf->buf) to_free = strbuf_detach(buf, NULL); - hash_object_file(the_hash_algo, src, len, "blob", &oid); + hash_object_file(src, len, "blob", &oid); strbuf_grow(buf, len + cnt * (the_hash_algo->hexsz + 3)); for (;;) { @@ -1288,11 +1293,10 @@ struct conv_attrs { const char *working_tree_encoding; /* Supported encoding or default encoding if NULL */ }; -static struct attr_check *check; - static void convert_attrs(const struct index_state *istate, struct conv_attrs *ca, const char *path) { + static struct attr_check *check; struct attr_check_item *ccheck = NULL; if (!check) { @@ -1335,23 +1339,6 @@ static void convert_attrs(const struct index_state *istate, ca->crlf_action = CRLF_AUTO_INPUT; } -void reset_parsed_attributes(void) -{ - struct convert_driver *drv, *next; - - attr_check_free(check); - check = NULL; - reset_merge_attributes(); - - for (drv = user_convert; drv; drv = next) { - next = drv->next; - free((void *)drv->name); - free(drv); - } - user_convert = NULL; - user_convert_tail = NULL; -} - int would_convert_to_git_filter_fd(const struct index_state *istate, const char *path) { struct conv_attrs ca; @@ -1940,7 +1927,7 @@ static struct stream_filter *ident_filter(const struct object_id *oid) * the contents cannot be filtered without reading the whole thing * in-core. * - * Note that you would be crazy to set CRLF, smudge/clean or ident to a + * Note that you would be crazy to set CRLF, smuge/clean or ident to a * large binary blob you would want us not to slurp into the memory! */ struct stream_filter *get_stream_filter(const struct index_state *istate, |