author | Rémi Lagacé <rlagace@cld.ca> | 2010-07-13 17:15:09 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2010-07-13 17:24:55 (UTC) |
commit | 73ac0fb6f217addbcd7878828407392418c973de (patch) (side-by-side diff) | |
tree | 022166308396b5ef351f98a44390248f08cfd268 /parsing.c | |
parent | f072bc55b08675db93b2f892016e83d9f975dea2 (diff) | |
download | cgit-73ac0fb6f217addbcd7878828407392418c973de.zip cgit-73ac0fb6f217addbcd7878828407392418c973de.tar.gz cgit-73ac0fb6f217addbcd7878828407392418c973de.tar.bz2 |
Reencode author and committer
When a commit has a specific encoding, this encoding also applies to
the author and committer name and email.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | parsing.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -161,64 +161,68 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) } // skip unknown header fields while (p && *p && (*p != '\n')) { p = strchr(p, '\n'); if (p) p++; } // skip empty lines between headers and message while (p && *p == '\n') p++; if (!p) return ret; t = strchr(p, '\n'); if (t) { ret->subject = substr(p, t); p = t + 1; while (p && *p == '\n') { p = strchr(p, '\n'); if (p) p++; } if (p) ret->msg = xstrdup(p); } else ret->subject = xstrdup(p); if (ret->msg_encoding) { + reencode(&ret->author, PAGE_ENCODING, ret->msg_encoding); + reencode(&ret->author_email, PAGE_ENCODING, ret->msg_encoding); + reencode(&ret->committer, PAGE_ENCODING, ret->msg_encoding); + reencode(&ret->committer_email, PAGE_ENCODING, ret->msg_encoding); reencode(&ret->subject, PAGE_ENCODING, ret->msg_encoding); reencode(&ret->msg, PAGE_ENCODING, ret->msg_encoding); } return ret; } struct taginfo *cgit_parse_tag(struct tag *tag) { void *data; enum object_type type; unsigned long size; char *p; struct taginfo *ret; data = read_sha1_file(tag->object.sha1, &type, &size); if (!data || type != OBJ_TAG) { free(data); return 0; } ret = xmalloc(sizeof(*ret)); ret->tagger = NULL; ret->tagger_email = NULL; ret->tagger_date = 0; ret->msg = NULL; p = data; while (p && *p) { if (*p == '\n') |