Commit e7355a40 authored by Nikias Bassen's avatar Nikias Bassen

cython: Fix handling of Date nodes (needs MACH_EPOCH)

parent 25ab3ae7
...@@ -457,6 +457,8 @@ cdef String String_factory(plist_t c_node, bint managed=True): ...@@ -457,6 +457,8 @@ cdef String String_factory(plist_t c_node, bint managed=True):
instance._c_node = c_node instance._c_node = c_node
return instance return instance
MAC_EPOCH = 978307200
cdef extern from "plist_util.h": cdef extern from "plist_util.h":
void datetime_to_ints(object obj, int32_t* sec, int32_t* usec) void datetime_to_ints(object obj, int32_t* sec, int32_t* usec)
object ints_to_datetime(int32_t sec, int32_t usec) object ints_to_datetime(int32_t sec, int32_t usec)
...@@ -470,6 +472,7 @@ cdef plist_t create_date_plist(value=None): ...@@ -470,6 +472,7 @@ cdef plist_t create_date_plist(value=None):
node = plist_new_date(0, 0) node = plist_new_date(0, 0)
elif check_datetime(value): elif check_datetime(value):
datetime_to_ints(value, &secs, &usecs) datetime_to_ints(value, &secs, &usecs)
secs -= MAC_EPOCH
node = plist_new_date(secs, usecs) node = plist_new_date(secs, usecs)
return node return node
...@@ -500,6 +503,7 @@ cdef class Date(Node): ...@@ -500,6 +503,7 @@ cdef class Date(Node):
cdef int32_t secs = 0 cdef int32_t secs = 0
cdef int32_t usecs = 0 cdef int32_t usecs = 0
plist_get_date_val(self._c_node, &secs, &usecs) plist_get_date_val(self._c_node, &secs, &usecs)
secs += MAC_EPOCH
return ints_to_datetime(secs, usecs) return ints_to_datetime(secs, usecs)
cpdef set_value(self, object value): cpdef set_value(self, object value):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment