diff options
-rw-r--r-- | configure.ac | 16 | ||||
-rw-r--r-- | tools/idevicebackup.c | 12 | ||||
-rw-r--r-- | tools/idevicebackup2.c | 15 |
3 files changed, 40 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac index 66f6b4b..5a976c9 100644 --- a/configure.ac +++ b/configure.ac @@ -84,8 +84,24 @@ if test "x$ac_cv_have_endian_h" = "xno"; then fi fi +CACHED_CFLAGS="$CFLAGS" +CFLAGS+=" $libplist_CFLAGS -Werror" + AC_CHECK_DECL([plist_from_json], [AC_DEFINE([HAVE_PLIST_JSON], [1], [Define if libplist has JSON support])], [], [[#include <plist/plist.h>]]) +# check if libplist has plist_new_unix_date() +AC_CACHE_CHECK(for plist_new_unix_date, ac_cv_plist_unix_date, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <plist/plist.h> + ]], [[ + return plist_new_unix_date(0) ? 0 : 1 + ]])],[ac_cv_plist_unix_date=yes],[ac_cv_plist_unix_date=no])) +if test "$ac_cv_plist_unix_date" = "yes"; then + AC_DEFINE(HAVE_PLIST_UNIX_DATE, 1, [Define if libplist has new unix date API (>= 2.7.0)]) +fi + +CFLAGS="$CACHED_CFLAGS" + # Check for operating system AC_MSG_CHECKING([for platform-specific build settings]) case ${host_os} in diff --git a/tools/idevicebackup.c b/tools/idevicebackup.c index c2ff6a3..363abad 100644 --- a/tools/idevicebackup.c +++ b/tools/idevicebackup.c @@ -176,7 +176,13 @@ static plist_t mobilebackup_factory_info_plist_new(const char* udid) if (value_node) plist_dict_set_item(ret, "IMEI", plist_copy(value_node)); - plist_dict_set_item(ret, "Last Backup Date", plist_new_date(time(NULL) - MAC_EPOCH, 0)); + plist_dict_set_item(ret, "Last Backup Date", +#ifdef HAVE_PLIST_UNIX_DATE + plist_new_unix_date(time(NULL)) +#else + plist_new_date(time(NULL) - MAC_EPOCH, 0) +#endif + ); value_node = plist_dict_get_item(root_node, "ProductType"); plist_dict_set_item(ret, "Product Type", plist_copy(value_node)); @@ -213,7 +219,11 @@ static void mobilebackup_info_update_last_backup_date(plist_t info_plist) return; node = plist_dict_get_item(info_plist, "Last Backup Date"); +#ifdef HAVE_PLIST_UNIX_DATE + plist_set_unix_date_val(node, time(NULL)); +#else plist_set_date_val(node, time(NULL) - MAC_EPOCH, 0); +#endif node = NULL; } diff --git a/tools/idevicebackup2.c b/tools/idevicebackup2.c index 34b9739..cdce515 100644 --- a/tools/idevicebackup2.c +++ b/tools/idevicebackup2.c @@ -460,7 +460,13 @@ static plist_t mobilebackup_factory_info_plist_new(const char* udid, idevice_t d /* Installed Applications */ plist_dict_set_item(ret, "Installed Applications", installed_apps); - plist_dict_set_item(ret, "Last Backup Date", plist_new_date(time(NULL) - MAC_EPOCH, 0)); + plist_dict_set_item(ret, "Last Backup Date", +#ifdef HAVE_PLIST_UNIX_DATE + plist_new_unix_date(time(NULL)) +#else + plist_new_date(time(NULL) - MAC_EPOCH, 0) +#endif + ); value_node = plist_dict_get_item(root_node, "MobileEquipmentIdentifier"); if (value_node) @@ -1223,7 +1229,12 @@ static void mb2_handle_list_directory(mobilebackup2_client_t mobilebackup2, plis plist_dict_set_item(fdict, "DLFileType", plist_new_string(ftype)); plist_dict_set_item(fdict, "DLFileSize", plist_new_uint(st.st_size)); plist_dict_set_item(fdict, "DLFileModificationDate", - plist_new_date(st.st_mtime - MAC_EPOCH, 0)); +#ifdef HAVE_PLIST_UNIX_DATE + plist_new_unix_date(st.st_mtime) +#else + plist_new_date(st.st_mtime - MAC_EPOCH, 0) +#endif + ); plist_dict_set_item(dirlist, ep->d_name, fdict); free(fpath); |