summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--parsing.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/parsing.c b/parsing.c
index ddbafd5..30e7648 100644
--- a/parsing.c
+++ b/parsing.c
@@ -213,72 +213,72 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
213 213
214 if (!strncmp(p, "author ", 7)) { 214 if (!strncmp(p, "author ", 7)) {
215 p += 7; 215 p += 7;
216 t = strchr(p, '<') - 1; 216 t = strchr(p, '<') - 1;
217 ret->author = substr(p, t); 217 ret->author = substr(p, t);
218 p = t; 218 p = t;
219 t = strchr(t, '>') + 1; 219 t = strchr(t, '>') + 1;
220 ret->author_email = substr(p, t); 220 ret->author_email = substr(p, t);
221 ret->author_date = atol(++t); 221 ret->author_date = atol(++t);
222 p = strchr(t, '\n') + 1; 222 p = strchr(t, '\n') + 1;
223 } 223 }
224 224
225 if (!strncmp(p, "committer ", 9)) { 225 if (!strncmp(p, "committer ", 9)) {
226 p += 9; 226 p += 9;
227 t = strchr(p, '<') - 1; 227 t = strchr(p, '<') - 1;
228 ret->committer = substr(p, t); 228 ret->committer = substr(p, t);
229 p = t; 229 p = t;
230 t = strchr(t, '>') + 1; 230 t = strchr(t, '>') + 1;
231 ret->committer_email = substr(p, t); 231 ret->committer_email = substr(p, t);
232 ret->committer_date = atol(++t); 232 ret->committer_date = atol(++t);
233 p = strchr(t, '\n') + 1; 233 p = strchr(t, '\n') + 1;
234 } 234 }
235 235
236 while (*p && (*p != '\n')) 236 while (*p && (*p != '\n'))
237 p = strchr(p, '\n') + 1; // skip unknown header fields 237 p = strchr(p, '\n') + 1; // skip unknown header fields
238 238
239 while (*p == '\n') 239 while (*p == '\n')
240 p = strchr(p, '\n') + 1; 240 p = strchr(p, '\n') + 1;
241 241
242 t = strchr(p, '\n'); 242 t = strchr(p, '\n');
243 if (t) { 243 if (t) {
244 if (*t == '\0') 244 if (*t == '\0')
245 ret->subject = strdup("** empty **"); 245 ret->subject = "** empty **";
246 else 246 else
247 ret->subject = substr(p, t); 247 ret->subject = substr(p, t);
248 p = t + 1; 248 p = t + 1;
249 249
250 while (*p == '\n') 250 while (*p == '\n')
251 p = strchr(p, '\n') + 1; 251 p = strchr(p, '\n') + 1;
252 ret->msg = p; 252 ret->msg = xstrdup(p);
253 } else 253 } else
254 ret->subject = substr(p, p+strlen(p)); 254 ret->subject = substr(p, p+strlen(p));
255 255
256 return ret; 256 return ret;
257} 257}
258 258
259 259
260struct taginfo *cgit_parse_tag(struct tag *tag) 260struct taginfo *cgit_parse_tag(struct tag *tag)
261{ 261{
262 void *data; 262 void *data;
263 enum object_type type; 263 enum object_type type;
264 unsigned long size; 264 unsigned long size;
265 char *p, *t; 265 char *p, *t;
266 struct taginfo *ret; 266 struct taginfo *ret;
267 267
268 data = read_sha1_file(tag->object.sha1, &type, &size); 268 data = read_sha1_file(tag->object.sha1, &type, &size);
269 if (!data || type != OBJ_TAG) { 269 if (!data || type != OBJ_TAG) {
270 free(data); 270 free(data);
271 return 0; 271 return 0;
272 } 272 }
273 273
274 ret = xmalloc(sizeof(*ret)); 274 ret = xmalloc(sizeof(*ret));
275 ret->tagger = NULL; 275 ret->tagger = NULL;
276 ret->tagger_email = NULL; 276 ret->tagger_email = NULL;
277 ret->tagger_date = 0; 277 ret->tagger_date = 0;
278 ret->msg = NULL; 278 ret->msg = NULL;
279 279
280 p = data; 280 p = data;
281 281
282 while (p && *p) { 282 while (p && *p) {
283 if (*p == '\n') 283 if (*p == '\n')
284 break; 284 break;