Code

Added support for displaying dates in localtime.
[tig.git] / tig.c
diff --git a/tig.c b/tig.c
index 47daba930c2831d267ad6665e3d0660a8027c719..7cdd3eaa3371202ed2016eec4cb2e9ec03545295 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -519,6 +519,7 @@ utf8_length(const char **start, size_t skip, int *width, size_t max_width, int *
 #define DATE_INFO \
        DATE_(NO), \
        DATE_(DEFAULT), \
+       DATE_(LOCAL), \
        DATE_(RELATIVE), \
        DATE_(SHORT)
 
@@ -583,7 +584,13 @@ mkdate(const struct time *time, enum date date)
                }
        }
 
-       gmtime_r(&time->sec, &tm);
+       if (date == DATE_LOCAL) {
+               time_t date = time->sec + time->tz;
+               localtime_r(&date, &tm);
+       }
+       else {
+               gmtime_r(&time->sec, &tm);
+       }
        return strftime(buf, sizeof(buf), DATE_FORMAT, &tm) ? buf : NULL;
 }
 
@@ -3896,8 +3903,8 @@ parse_timezone(struct time *time, const char *zone)
 
        tz  = ('0' - zone[1]) * 60 * 60 * 10;
        tz += ('0' - zone[2]) * 60 * 60;
-       tz += ('0' - zone[3]) * 60;
-       tz += ('0' - zone[4]);
+       tz += ('0' - zone[3]) * 60 * 10;
+       tz += ('0' - zone[4]) * 60;
 
        if (zone[0] == '-')
                tz = -tz;