diff options
| -rw-r--r-- | src/xplist.c | 6 |
1 files 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 @@ | |||
| 51 | #define XPLIST_ARRAY BAD_CAST("array") | 51 | #define XPLIST_ARRAY BAD_CAST("array") |
| 52 | #define XPLIST_DICT BAD_CAST("dict") | 52 | #define XPLIST_DICT BAD_CAST("dict") |
| 53 | 53 | ||
| 54 | #define MAC_EPOCH 978307200 | ||
| 55 | |||
| 54 | static const char *plist_base = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\ | 56 | static const char *plist_base = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\ |
| 55 | <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n\ | 57 | <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n\ |
| 56 | <plist version=\"1.0\">\n\ | 58 | <plist version=\"1.0\">\n\ |
| @@ -222,7 +224,7 @@ static void node_to_xml(node_t* node, void *xml_struct) | |||
| 222 | case PLIST_DATE: | 224 | case PLIST_DATE: |
| 223 | tag = XPLIST_DATE; | 225 | tag = XPLIST_DATE; |
| 224 | { | 226 | { |
| 225 | time_t timev = (time_t)node_data->timeval.tv_sec; | 227 | time_t timev = (time_t)node_data->timeval.tv_sec + MAC_EPOCH; |
| 226 | struct tm *btime = gmtime(&timev); | 228 | struct tm *btime = gmtime(&timev); |
| 227 | if (btime) { | 229 | if (btime) { |
| 228 | val = (char*)malloc(24); | 230 | val = (char*)malloc(24); |
| @@ -404,7 +406,7 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node) | |||
| 404 | tm_utc = gmtime(&timev); | 406 | tm_utc = gmtime(&timev); |
| 405 | timev -= (mktime(tm_utc) - timev); | 407 | timev -= (mktime(tm_utc) - timev); |
| 406 | } | 408 | } |
| 407 | data->timeval.tv_sec = (long)timev; | 409 | data->timeval.tv_sec = (long)(timev - MAC_EPOCH); |
| 408 | data->timeval.tv_usec = 0; | 410 | data->timeval.tv_usec = 0; |
| 409 | data->type = PLIST_DATE; | 411 | data->type = PLIST_DATE; |
| 410 | data->length = sizeof(struct timeval); | 412 | data->length = sizeof(struct timeval); |
