From d5e1de67fc641a1b85c9185e504d1488820ca02c Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Thu, 22 May 2014 20:25:30 +0200 Subject: xplist: Fix PLIST_DATE handling to respect the Mac epoch --- src/xplist.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/xplist.c b/src/xplist.c index 200d942..a21ae7f 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -51,6 +51,8 @@ #define XPLIST_ARRAY BAD_CAST("array") #define XPLIST_DICT BAD_CAST("dict") +#define MAC_EPOCH 978307200 + static const char *plist_base = "\n\ \n\ \n\ @@ -222,7 +224,7 @@ static void node_to_xml(node_t* node, void *xml_struct) case PLIST_DATE: tag = XPLIST_DATE; { - time_t timev = (time_t)node_data->timeval.tv_sec; + time_t timev = (time_t)node_data->timeval.tv_sec + MAC_EPOCH; struct tm *btime = gmtime(&timev); if (btime) { val = (char*)malloc(24); @@ -404,7 +406,7 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node) tm_utc = gmtime(&timev); timev -= (mktime(tm_utc) - timev); } - data->timeval.tv_sec = (long)timev; + data->timeval.tv_sec = (long)(timev - MAC_EPOCH); data->timeval.tv_usec = 0; data->type = PLIST_DATE; data->length = sizeof(struct timeval); -- cgit v1.1-32-gdbae