[PATCH 2/2] Accept the timezone specifiers [+-]hh:mm and [+-]hh in addition to [+-]hhmm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ISO 8601 specifies three syntaxes for timezones other than "Z".
git already supports the +-hhmm syntax.  This patch adds support
for the other two: +-hh:mm and +-hh.

Signed-off-by: Marcus Comstedt <marcus@xxxxxxxx>
---
:100644 100644 6bae49c... f83e46e... M	date.c
 date.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/date.c b/date.c
index 6bae49c..f83e46e 100644
--- a/date.c
+++ b/date.c
@@ -555,6 +555,18 @@ static int match_tz(const char *date, int *offp)
 	int min, hour;
 	int n = end - date - 1;
 
+	/* Check for HH:MM format, allowed by ISO 8601 */
+	if (n == 2 && date[3] == ':') {
+		char *end2;
+		min = strtoul(date+4, &end2, 10);
+		/* If we have two digits after the colon too, assume HH:MM */
+		if (end2 == date+6) {
+			offset = offset*100 + min;
+			end = end2;
+			n = end - date - 1;
+		}
+	}
+
 	min = offset % 100;
 	hour = offset / 100;
 
@@ -570,6 +582,17 @@ static int match_tz(const char *date, int *offp)
 
 		*offp = offset;
 	}
+	/*
+	 * Also accept just the hour, allowed by ISO 8601
+	 */
+	else if (n == 2 && hour == 0 && min < 24) {
+		offset = min*60;
+		if (*date == '-')
+			offset = -offset;
+
+		*offp = offset;
+	}
+
 	return end - date;
 }
 
-- 
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]