]> granicus.if.org Git - cgit/commitdiff
Handle missing timestamp in commit/tag objects
authorLars Hjemli <hjemli@gmail.com>
Sun, 2 Dec 2007 21:11:35 +0000 (22:11 +0100)
committerLars Hjemli <hjemli@gmail.com>
Sun, 2 Dec 2007 21:27:07 +0000 (22:27 +0100)
When a commit or tag lacks author/committer/tagger timestamp, do not skip
the next line in the commit/tag object.

Also, do not bother to print timestamps with value 0 as it is close to certain
to be bogus.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
parsing.c
ui-shared.c

index 30e7648958789fb72930c405d1ba8d8c5a382f27..55a485da0411b442034e217d43e6180f7568c1da 100644 (file)
--- 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,7 +229,7 @@ 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;
        }
 
@@ -290,7 +290,7 @@ 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;
        }
index 72a7b44472ddb483b9bc6640d029380ac11afd8b..4944dfd2e9676dfadbd0ba916c347af1b1751e08 100644 (file)
@@ -304,6 +304,8 @@ void cgit_print_date(time_t secs, char *format)
        char buf[64];
        struct tm *time;
 
+       if (!secs)
+               return;
        time = gmtime(&secs);
        strftime(buf, sizeof(buf)-1, format, time);
        html_txt(buf);
@@ -313,6 +315,8 @@ void cgit_print_age(time_t t, time_t max_relative, char *format)
 {
        time_t now, secs;
 
+       if (!t)
+               return;
        time(&now);
        secs = now - t;