X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/10451797fa2370aab6f4146c86e0fa939a9a982b..865afe0eb1b5e6485fe0f65472e6635266e393b1:/parsing.c diff --git a/parsing.c b/parsing.c index 5b4b1f4..3dbd122 100644 --- a/parsing.c +++ b/parsing.c @@ -69,9 +69,9 @@ static char *substr(const char *head, const char *tail) return buf; } -static char *parse_user(char *t, char **name, char **email, unsigned long *date) +static const char *parse_user(const char *t, char **name, char **email, unsigned long *date) { - char *p = t; + const char *p = t; int mode = 1; while (p && *p) { @@ -132,7 +132,8 @@ static const char *reencode(char **txt, const char *src_enc, const char *dst_enc struct commitinfo *cgit_parse_commit(struct commit *commit) { struct commitinfo *ret; - char *p = commit->buffer, *t; + const char *p = get_cached_commit_buffer(commit, NULL); + const char *t; ret = xmalloc(sizeof(*ret)); ret->commit = commit; @@ -147,25 +148,25 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) if (p == NULL) return ret; - if (prefixcmp(p, "tree ")) + if (!starts_with(p, "tree ")) die("Bad commit: %s", sha1_to_hex(commit->object.sha1)); else p += 46; // "tree " + hex[40] + "\n" - while (!prefixcmp(p, "parent ")) + while (starts_with(p, "parent ")) p += 48; // "parent " + hex[40] + "\n" - if (p && !prefixcmp(p, "author ")) { + if (p && starts_with(p, "author ")) { p = parse_user(p + 7, &ret->author, &ret->author_email, &ret->author_date); } - if (p && !prefixcmp(p, "committer ")) { + if (p && starts_with(p, "committer ")) { p = parse_user(p + 10, &ret->committer, &ret->committer_email, &ret->committer_date); } - if (p && !prefixcmp(p, "encoding ")) { + if (p && starts_with(p, "encoding ")) { p += 9; t = strchr(p, '\n'); if (t) { @@ -223,7 +224,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag) void *data; enum object_type type; unsigned long size; - char *p; + const char *p; struct taginfo *ret; data = read_sha1_file(tag->object.sha1, &type, &size); @@ -244,7 +245,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag) if (*p == '\n') break; - if (!prefixcmp(p, "tagger ")) { + if (starts_with(p, "tagger ")) { p = parse_user(p + 7, &ret->tagger, &ret->tagger_email, &ret->tagger_date); } else {