author | Lars Hjemli <hjemli@gmail.com> | 2010-07-13 19:55:47 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2010-07-13 19:55:47 (UTC) |
commit | 60fcf600f5010701c20b63867999a802ca0e05c0 (patch) (side-by-side diff) | |
tree | d46f660ec5c72bb3efe65ea5039386714da2e71e | |
parent | 6654d5b7bdc1d775cf09ca6690b1fc5ecea4696d (diff) | |
parent | 73ac0fb6f217addbcd7878828407392418c973de (diff) | |
download | cgit-60fcf600f5010701c20b63867999a802ca0e05c0.zip cgit-60fcf600f5010701c20b63867999a802ca0e05c0.tar.gz cgit-60fcf600f5010701c20b63867999a802ca0e05c0.tar.bz2 |
Merge branch 'stable'
-rw-r--r-- | parsing.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -145,96 +145,100 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) p = parse_user(p + 7, &ret->author, &ret->author_email, &ret->author_date); } if (p && !strncmp(p, "committer ", 9)) { p = parse_user(p + 9, &ret->committer, &ret->committer_email, &ret->committer_date); } if (p && !strncmp(p, "encoding ", 9)) { p += 9; t = strchr(p, '\n'); if (t) { ret->msg_encoding = substr(p, t + 1); p = t + 1; } } // 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') break; if (!strncmp(p, "tagger ", 7)) { p = parse_user(p + 7, &ret->tagger, &ret->tagger_email, &ret->tagger_date); } else { p = strchr(p, '\n'); if (p) p++; } } // skip empty lines between headers and message while (p && *p == '\n') p++; |