From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v3 01/13] pretty: save commit encoding from logmsg_reencode if the caller needs it
Date: Tue, 16 Apr 2013 18:24:50 +1000 [thread overview]
Message-ID: <1366100702-31745-2-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1366100702-31745-1-git-send-email-pclouds@gmail.com>
The commit encoding is parsed by logmsg_reencode, there's no need for
the caller to re-parse it again. The reencoded message now has the new
encoding, not the original one. The caller would need to read commit
object again before parsing.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin/blame.c | 2 +-
builtin/commit.c | 2 +-
commit.h | 1 +
pretty.c | 16 ++++++++++++----
revision.c | 2 +-
5 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/builtin/blame.c b/builtin/blame.c
index 86100e9..104a948 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -1425,7 +1425,7 @@ static void get_commit_info(struct commit *commit,
commit_info_init(ret);
encoding = get_log_output_encoding();
- message = logmsg_reencode(commit, encoding);
+ message = logmsg_reencode(commit, NULL, encoding);
get_ac_line(message, "\nauthor ",
&ret->author, &ret->author_mail,
&ret->author_time, &ret->author_tz);
diff --git a/builtin/commit.c b/builtin/commit.c
index 4620437..d2f30d9 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -955,7 +955,7 @@ static const char *read_commit_message(const char *name)
if (!commit)
die(_("could not lookup commit %s"), name);
out_enc = get_commit_output_encoding();
- return logmsg_reencode(commit, out_enc);
+ return logmsg_reencode(commit, NULL, out_enc);
}
static int parse_and_validate_options(int argc, const char *argv[],
diff --git a/commit.h b/commit.h
index 87b4b6c..ad55213 100644
--- a/commit.h
+++ b/commit.h
@@ -101,6 +101,7 @@ struct userformat_want {
extern int has_non_ascii(const char *text);
struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */
extern char *logmsg_reencode(const struct commit *commit,
+ char **commit_encoding,
const char *output_encoding);
extern void logmsg_free(char *msg, const struct commit *commit);
extern void get_commit_format(const char *arg, struct rev_info *);
diff --git a/pretty.c b/pretty.c
index d3a82d2..c361b9b 100644
--- a/pretty.c
+++ b/pretty.c
@@ -594,6 +594,7 @@ static char *replace_encoding_header(char *buf, const char *encoding)
}
char *logmsg_reencode(const struct commit *commit,
+ char **commit_encoding,
const char *output_encoding)
{
static const char *utf8 = "UTF-8";
@@ -615,9 +616,15 @@ char *logmsg_reencode(const struct commit *commit,
sha1_to_hex(commit->object.sha1), typename(type));
}
- if (!output_encoding || !*output_encoding)
+ if (!output_encoding || !*output_encoding) {
+ if (commit_encoding)
+ *commit_encoding =
+ get_header(commit, msg, "encoding");
return msg;
+ }
encoding = get_header(commit, msg, "encoding");
+ if (commit_encoding)
+ *commit_encoding = encoding;
use_encoding = encoding ? encoding : utf8;
if (same_encoding(use_encoding, output_encoding)) {
/*
@@ -658,7 +665,8 @@ char *logmsg_reencode(const struct commit *commit,
if (out)
out = replace_encoding_header(out, output_encoding);
- free(encoding);
+ if (!commit_encoding)
+ free(encoding);
/*
* If the re-encoding failed, out might be NULL here; in that
* case we just return the commit message verbatim.
@@ -1288,7 +1296,7 @@ void format_commit_message(const struct commit *commit,
context.commit = commit;
context.pretty_ctx = pretty_ctx;
context.wrap_start = sb->len;
- context.message = logmsg_reencode(commit, output_enc);
+ context.message = logmsg_reencode(commit, NULL, output_enc);
strbuf_expand(sb, format, format_commit_item, &context);
rewrap_message_tail(sb, &context, 0, 0, 0);
@@ -1451,7 +1459,7 @@ void pretty_print_commit(const struct pretty_print_context *pp,
}
encoding = get_log_output_encoding();
- msg = reencoded = logmsg_reencode(commit, encoding);
+ msg = reencoded = logmsg_reencode(commit, NULL, encoding);
if (pp->fmt == CMIT_FMT_ONELINE || pp->fmt == CMIT_FMT_EMAIL)
indent = 0;
diff --git a/revision.c b/revision.c
index 71e62d8..2e77397 100644
--- a/revision.c
+++ b/revision.c
@@ -2314,7 +2314,7 @@ static int commit_match(struct commit *commit, struct rev_info *opt)
* in it.
*/
encoding = get_log_output_encoding();
- message = logmsg_reencode(commit, encoding);
+ message = logmsg_reencode(commit, NULL, encoding);
/* Copy the commit to temporary if we are using "fake" headers */
if (buf.len)
--
1.8.2.82.gc24b958
next prev parent reply other threads:[~2013-04-16 8:25 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-16 2:24 [PATCH 00/12] Layout control placeholders for pretty format Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 01/12] pretty-formats.txt: wrap long lines Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 02/12] pretty: share code between format_decoration and show_decorations Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 03/12] utf8.c: move display_mode_esc_sequence_len() for use by other functions Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 04/12] utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 05/12] pretty: save commit encoding from logmsg_reencode if the caller needs it Nguyễn Thái Ngọc Duy
2013-03-17 8:57 ` Eric Sunshine
2013-03-16 2:24 ` [PATCH 06/12] pretty: get the correct encoding for --pretty:format=%e Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 07/12] utf8: keep NULs in reencode_string() Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 08/12] pretty: two phase conversion for non utf-8 commits Nguyễn Thái Ngọc Duy
2013-03-16 2:24 ` [PATCH 09/12] pretty: add %C(auto) for auto-coloring on the next placeholder Nguyễn Thái Ngọc Duy
2013-03-17 8:59 ` Eric Sunshine
2013-03-16 2:24 ` [PATCH 10/12] pretty: support padding placeholders, %< %> and %>< Nguyễn Thái Ngọc Duy
2013-03-17 9:03 ` Eric Sunshine
2013-03-16 2:24 ` [PATCH 11/12] pretty: support truncating in %>, %< " Nguyễn Thái Ngọc Duy
2013-03-16 9:04 ` Paul Campbell
2013-03-16 2:24 ` [PATCH 12/12] pretty: support %>> that steal trailing spaces Nguyễn Thái Ngọc Duy
2013-03-17 9:06 ` Eric Sunshine
2013-03-30 9:31 ` Duy Nguyen
2013-03-30 9:35 ` [PATCH v2 00/12] Layout control placeholders for pretty format Nguyễn Thái Ngọc Duy
2013-03-30 9:35 ` [PATCH v2 01/12] pretty-formats.txt: wrap long lines Nguyễn Thái Ngọc Duy
2013-03-30 9:35 ` [PATCH v2 02/12] pretty: share code between format_decoration and show_decorations Nguyễn Thái Ngọc Duy
2013-04-01 17:53 ` Junio C Hamano
2013-04-05 7:57 ` Jakub Narębski
2013-04-12 23:36 ` Duy Nguyen
2013-04-12 23:34 ` Duy Nguyen
2013-03-30 9:35 ` [PATCH v2 03/12] utf8.c: move display_mode_esc_sequence_len() for use by other functions Nguyễn Thái Ngọc Duy
2013-03-30 9:35 ` [PATCH v2 04/12] utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences Nguyễn Thái Ngọc Duy
2013-04-01 18:04 ` Junio C Hamano
2013-03-30 9:35 ` [PATCH v2 05/12] pretty: save commit encoding from logmsg_reencode if the caller needs it Nguyễn Thái Ngọc Duy
2013-04-01 18:10 ` Junio C Hamano
2013-03-30 9:35 ` [PATCH v2 06/12] pretty: get the correct encoding for --pretty:format=%e Nguyễn Thái Ngọc Duy
2013-03-30 9:35 ` [PATCH v2 07/12] utf8: keep NULs in reencode_string() Nguyễn Thái Ngọc Duy
2013-03-30 17:06 ` Torsten Bögershausen
2013-03-31 0:23 ` Duy Nguyen
2013-03-30 9:35 ` [PATCH v2 08/12] pretty: two phase conversion for non utf-8 commits Nguyễn Thái Ngọc Duy
2013-03-30 9:35 ` [PATCH v2 09/12] pretty: add %C(auto) for auto-coloring on the next placeholder Nguyễn Thái Ngọc Duy
2013-04-01 18:26 ` Junio C Hamano
2013-04-05 2:21 ` Duy Nguyen
2013-04-05 17:13 ` Junio C Hamano
2013-04-15 9:54 ` Duy Nguyen
2013-03-30 9:35 ` [PATCH v2 10/12] pretty: support padding placeholders, %< %> and %>< Nguyễn Thái Ngọc Duy
2013-03-30 9:35 ` [PATCH v2 11/12] pretty: support truncating in %>, %< " Nguyễn Thái Ngọc Duy
2013-03-30 9:35 ` [PATCH v2 12/12] pretty: support %>> that steal trailing spaces Nguyễn Thái Ngọc Duy
2013-04-01 18:39 ` Junio C Hamano
2013-04-16 8:24 ` [PATCH v3 00/13] nd/pretty-formats Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` Nguyễn Thái Ngọc Duy [this message]
2013-04-16 8:24 ` [PATCH v3 02/13] pretty: get the correct encoding for --pretty:format=%e Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` [PATCH v3 03/13] pretty-formats.txt: wrap long lines Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` [PATCH v3 04/13] pretty: share code between format_decoration and show_decorations Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` [PATCH v3 05/13] utf8.c: move display_mode_esc_sequence_len() for use by other functions Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` [PATCH v3 06/13] utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` [PATCH v3 07/13] utf8.c: add reencode_string_len() that can handle NULs in string Nguyễn Thái Ngọc Duy
2013-04-16 8:30 ` Duy Nguyen
2013-04-18 17:25 ` Junio C Hamano
2013-04-16 8:24 ` [PATCH v3 08/13] pretty: two phase conversion for non utf-8 commits Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` [PATCH v3 09/13] pretty: split color parsing into a separate function Nguyễn Thái Ngọc Duy
2013-04-16 8:24 ` [PATCH v3 10/13] pretty: add %C(auto) for auto-coloring Nguyễn Thái Ngọc Duy
2013-04-16 21:33 ` Junio C Hamano
2013-04-17 9:55 ` Duy Nguyen
2013-04-17 15:28 ` Junio C Hamano
2013-04-16 21:37 ` Junio C Hamano
2013-04-16 8:25 ` [PATCH v3 11/13] pretty: support padding placeholders, %< %> and %>< Nguyễn Thái Ngọc Duy
2013-04-16 20:41 ` Junio C Hamano
2013-04-16 20:43 ` Junio C Hamano
2013-04-17 9:45 ` Duy Nguyen
2013-04-16 8:25 ` [PATCH v3 12/13] pretty: support truncating in %>, %< " Nguyễn Thái Ngọc Duy
2013-04-16 8:25 ` [PATCH v3 13/13] pretty: support %>> that steal trailing spaces Nguyễn Thái Ngọc Duy
[not found] ` <516D57BD.7080208@web.de>
2013-04-16 14:47 ` [PATCH v3 00/13] nd/pretty-formats Torsten Bögershausen
2013-04-18 23:08 ` [PATCH v4 " Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 01/13] pretty: save commit encoding from logmsg_reencode if the caller needs it Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 02/13] pretty: get the correct encoding for --pretty:format=%e Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 03/13] pretty-formats.txt: wrap long lines Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 04/13] pretty: share code between format_decoration and show_decorations Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 05/13] utf8.c: move display_mode_esc_sequence_len() for use by other functions Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 06/13] utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 07/13] utf8.c: add reencode_string_len() that can handle NULs in string Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 08/13] pretty: two phase conversion for non utf-8 commits Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 09/13] pretty: split color parsing into a separate function Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 10/13] pretty: add %C(auto) for auto-coloring Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 11/13] pretty: support padding placeholders, %< %> and %>< Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 12/13] pretty: support truncating in %>, %< " Nguyễn Thái Ngọc Duy
2013-04-18 23:08 ` [PATCH v4 13/13] pretty: support %>> that steal trailing spaces Nguyễn Thái Ngọc Duy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1366100702-31745-2-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.