Thread (25 messages) 25 messages, 7 authors, 2018-02-27

Re: [PATCH v1] convert: add support for 'encoding' attribute

From: Lars Schneider <hidden>
Date: 2017-12-12 10:59:03

On 12 Dec 2017, at 00:58, Eric Sunshine [off-list ref] wrote:

On Mon, Dec 11, 2017 at 6:47 PM, Lars Schneider
[off-list ref] wrote:
quoted
On 11 Dec 2017, at 19:39, Eric Sunshine [off-list ref] wrote:
quoted
On Mon, Dec 11, 2017 at 10:50 AM,  [off-list ref] wrote:
quoted
From: Lars Schneider <redacted>

Git and its tools (e.g. git diff) expect all text files in UTF-8
encoding. Git will happily accept content in all other encodings, too,
but it might not be able to process the text (e.g. viewing diffs or
changing line endings).

Add an attribute to tell Git what encoding the user has defined for a
given file. If the content is added to the index, then Git converts the
content to a canonical UTF-8 representation. On checkout Git will
reverse the conversion.

Reviewed-by: Patrick Lühne <redacted>
Signed-off-by: Lars Schneider <redacted>
---
+static int encode_to_git(const char *path, const char *src, size_t src_len,
+                        struct strbuf *buf, struct encoding *enc)
+{
+       if (enc->to_git == invalid_conversion) {
+               enc->to_git = iconv_open(default_encoding, encoding->name);
+               if (enc->to_git == invalid_conversion)
+                       warning(_("unsupported encoding %s"), encoding->name);
+       }
+
+       if (enc->to_worktree == invalid_conversion)
+               enc->to_worktree = iconv_open(encoding->name, default_encoding);
Do you need to be calling iconv_close() somewhere on the result of the
iconv_open() calls? [Answering myself after reading the rest of the
patch: You're caching these opened 'iconv' descriptors, so you don't
plan on closing them.]
Should this information go into the commit message to avoid confusing
future readers? I think, yes.
Maybe. However, the code which does the actual caching is so distant
from these iconv_open() invocations that it might be more helpful to
have an in-code comment here saying that the "missing" iconv_close()
invocations is intentional.
Agreed. I will add that in v2.

Thanks,
Lars
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help