stagit

Fork of hiltjo's stagit (see http://codemadness.org/stagit.html)
git clone git://git.vgx.fr/stagit
Log | Files | Refs | README | LICENSE

commit 462ba66ee7e0ae16f41d4fff9c8540913c3941a9
parent 7a1da0b9853093781dd1b130d63619b17ecc8c01
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sun,  1 May 2016 16:10:17 +0200

fix times (and timezone)

- in the index and log show the short time (GMT).
- in the Atom feed use GMT time.
- for commits show the time + offset.

Diffstat:
Mstagit-index.c | 12+++---------
Mstagit.c | 38+++++++++++++++++++++++++++-----------
2 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/stagit-index.c b/stagit-index.c @@ -42,25 +42,19 @@ xmlencode(FILE *fp, const char *s, size_t len) } void -printtimeformat(FILE *fp, const git_time *intime, const char *fmt) +printtimeshort(FILE *fp, const git_time *intime) { struct tm *intm; time_t t; char out[32]; - t = (time_t) intime->time + (intime->offset * 60); + t = (time_t)intime->time; if (!(intm = gmtime(&t))) return; - strftime(out, sizeof(out), fmt, intm); + strftime(out, sizeof(out), "%Y-%m-%d %H:%M", intm); fputs(out, fp); } -void -printtimeshort(FILE *fp, const git_time *intime) -{ - printtimeformat(fp, intime, "%Y-%m-%d %H:%M"); -} - int writeheader(FILE *fp) { diff --git a/stagit.c b/stagit.c @@ -268,35 +268,51 @@ mkdirp(const char *path) } void -printtimeformat(FILE *fp, const git_time *intime, const char *fmt) +printtimez(FILE *fp, const git_time *intime) { struct tm *intm; time_t t; char out[32]; - t = (time_t) intime->time + (intime->offset * 60); + t = (time_t)intime->time; if (!(intm = gmtime(&t))) return; - strftime(out, sizeof(out), fmt, intm); + strftime(out, sizeof(out), "%Y-%m-%dT%H:%M:%SZ", intm); fputs(out, fp); } void -printtimez(FILE *fp, const git_time *intime) -{ - printtimeformat(fp, intime, "%Y-%m-%dT%H:%M:%SZ"); -} - -void printtime(FILE *fp, const git_time *intime) { - printtimeformat(fp, intime, "%a %b %e %T %Y"); + struct tm *intm; + time_t t; + int offset, sign = '+'; + char out[32]; + + offset = intime->offset * 60; + t = (time_t)intime->time + offset; + if (!(intm = gmtime(&t))) + return; + strftime(out, sizeof(out), "%a %b %e %H:%M:%S", intm); + if (offset < 0) { + offset = -offset; + sign = '-'; + } + fprintf(fp, "%s %c%02d%02d", out, sign, offset / 60, offset % 60); } void printtimeshort(FILE *fp, const git_time *intime) { - printtimeformat(fp, intime, "%Y-%m-%d %H:%M"); + struct tm *intm; + time_t t; + char out[32]; + + t = (time_t)intime->time; + if (!(intm = gmtime(&t))) + return; + strftime(out, sizeof(out), "%Y-%m-%d %H:%M", intm); + fputs(out, fp); } int