From cd095eb9b66bb3925c7a55b763cbe81bba5d55d9 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Fri, 16 May 2025 11:38:20 +0200 Subject: Use plist_new_unix_date API when available --- src/opack.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/opack.c') diff --git a/src/opack.c b/src/opack.c index 8a9264a..e0fe9cb 100644 --- a/src/opack.c +++ b/src/opack.c @@ -140,12 +140,18 @@ static void opack_encode_node(plist_t node, struct char_buf* cbuf) } } break; case PLIST_DATE: { +#ifdef HAVE_PLIST_UNIX_DATE + int64_t sec = 0; + plist_get_unix_date_val(node, &sec); + sec -= MAC_EPOCH; + double dval = (double)sec; +#else int32_t sec = 0; int32_t usec = 0; plist_get_date_val(node, &sec, &usec); time_t tsec = sec; - tsec -= MAC_EPOCH; double dval = (double)tsec + ((double)usec / 1000000); +#endif uint8_t blen = 0x06; char_buf_append(cbuf, 1, &blen); uint64_t u64val = 0; @@ -272,10 +278,14 @@ static int opack_decode_obj(unsigned char** p, unsigned char* end, plist_t* plis (*p)++; double value = *(double*)*p; time_t sec = (time_t)value; +#ifdef HAVE_PLIST_UNIX_DATE + *plist_out = plist_new_unix_date(sec + MAC_EPOCH); +#else value -= sec; uint32_t usec = value * 1000000; - (*p)+=8; *plist_out = plist_new_date(sec, usec); +#endif + (*p)+=8; } else if (type >= 0x08 && type <= 0x36) { /* numerical type */ (*p)++; -- cgit v1.1-32-gdbae