stagit-responsive

My mobile friendly fork of 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