summaryrefslogtreecommitdiffstats
path: root/cython/plist.pyx
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2020-04-13 23:21:15 +0200
committerGravatar Nikias Bassen2020-04-13 23:21:15 +0200
commite7355a408a305d0a9aba7c30bbd5a33d978a03c7 (patch)
treeb004c0a4ce6f1a5629dca2be01ec99242df08645 /cython/plist.pyx
parent25ab3ae7a474e4d7f165d62865552359b8773860 (diff)
downloadlibplist-e7355a408a305d0a9aba7c30bbd5a33d978a03c7.tar.gz
libplist-e7355a408a305d0a9aba7c30bbd5a33d978a03c7.tar.bz2
cython: Fix handling of Date nodes (needs MACH_EPOCH)
Diffstat (limited to 'cython/plist.pyx')
-rw-r--r--cython/plist.pyx4
1 files changed, 4 insertions, 0 deletions
diff --git a/cython/plist.pyx b/cython/plist.pyx
index 0149ffa..be3fe8a 100644
--- a/cython/plist.pyx
+++ b/cython/plist.pyx
@@ -457,6 +457,8 @@ cdef String String_factory(plist_t c_node, bint managed=True):
457 instance._c_node = c_node 457 instance._c_node = c_node
458 return instance 458 return instance
459 459
460MAC_EPOCH = 978307200
461
460cdef extern from "plist_util.h": 462cdef extern from "plist_util.h":
461 void datetime_to_ints(object obj, int32_t* sec, int32_t* usec) 463 void datetime_to_ints(object obj, int32_t* sec, int32_t* usec)
462 object ints_to_datetime(int32_t sec, int32_t usec) 464 object ints_to_datetime(int32_t sec, int32_t usec)
@@ -470,6 +472,7 @@ cdef plist_t create_date_plist(value=None):
470 node = plist_new_date(0, 0) 472 node = plist_new_date(0, 0)
471 elif check_datetime(value): 473 elif check_datetime(value):
472 datetime_to_ints(value, &secs, &usecs) 474 datetime_to_ints(value, &secs, &usecs)
475 secs -= MAC_EPOCH
473 node = plist_new_date(secs, usecs) 476 node = plist_new_date(secs, usecs)
474 return node 477 return node
475 478
@@ -500,6 +503,7 @@ cdef class Date(Node):
500 cdef int32_t secs = 0 503 cdef int32_t secs = 0
501 cdef int32_t usecs = 0 504 cdef int32_t usecs = 0
502 plist_get_date_val(self._c_node, &secs, &usecs) 505 plist_get_date_val(self._c_node, &secs, &usecs)
506 secs += MAC_EPOCH
503 return ints_to_datetime(secs, usecs) 507 return ints_to_datetime(secs, usecs)
504 508
505 cpdef set_value(self, object value): 509 cpdef set_value(self, object value):