X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/ff13396926f3352d9e29c0663154918297dc5af7..edf0ae3bd7565b39c47fb2b7e0637bcc770c2e43:/parsing.c diff --git a/parsing.c b/parsing.c index 2c05c09..55a485d 100644 --- a/parsing.c +++ b/parsing.c @@ -218,7 +218,7 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) p = t; t = strchr(t, '>') + 1; ret->author_email = substr(p, t); - ret->author_date = atol(++t); + ret->author_date = atol(t+1); p = strchr(t, '\n') + 1; } @@ -229,24 +229,27 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) p = t; t = strchr(t, '>') + 1; ret->committer_email = substr(p, t); - ret->committer_date = atol(++t); + ret->committer_date = atol(t+1); p = strchr(t, '\n') + 1; } + while (*p && (*p != '\n')) + p = strchr(p, '\n') + 1; // skip unknown header fields + while (*p == '\n') p = strchr(p, '\n') + 1; t = strchr(p, '\n'); if (t) { if (*t == '\0') - ret->subject = strdup("** empty **"); + ret->subject = "** empty **"; else ret->subject = substr(p, t); p = t + 1; while (*p == '\n') p = strchr(p, '\n') + 1; - ret->msg = p; + ret->msg = xstrdup(p); } else ret->subject = substr(p, p+strlen(p)); @@ -287,11 +290,14 @@ struct taginfo *cgit_parse_tag(struct tag *tag) p = t; t = strchr(t, '>') + 1; ret->tagger_email = substr(p, t); - ret->tagger_date = atol(++t); + ret->tagger_date = atol(t+1); } p = strchr(p, '\n') + 1; } + while (p && *p && (*p != '\n')) + p = strchr(p, '\n') + 1; // skip unknown tag fields + while (p && (*p == '\n')) p = strchr(p, '\n') + 1; if (p && *p)