]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
m4: Add PRIdTIME_T and PRIxTIME_T format specifiers
authorMartti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
Tue, 19 Sep 2017 16:39:19 +0000 (19:39 +0300)
committerTimo Sirainen <tss@dovecot.fi>
Fri, 6 Oct 2017 13:04:28 +0000 (16:04 +0300)
configure.ac
m4/time_t.m4 [new file with mode: 0644]
m4/time_t_signed.m4 [deleted file]

index 39cb824ca2de4ea10a6e7b5cb8e0b054cc5bd242..51eeb5cc1036b74426006c2568d70a62e127495a 100644 (file)
@@ -473,7 +473,7 @@ fi
 
 DOVECOT_TM_GMTOFF
 DOVECOT_GMTIME_MAX
-DOVECOT_TIME_T_SIGNED
+DOVECOT_TIME_T
 
 DOVECOT_C_STATIC_ARRAY
 DOVECOT_C_FLEXIBLE_ARRAY_MEMBER
diff --git a/m4/time_t.m4 b/m4/time_t.m4
new file mode 100644 (file)
index 0000000..24a0242
--- /dev/null
@@ -0,0 +1,42 @@
+AC_DEFUN([DOVECOT_TIME_T], [
+  AC_TYPEOF(time_t, long int long-long unsigned-int unsigned-long unsigned-long-long)
+  case "$typeof_time_t" in
+    long)
+      timet_len="l"
+      i_cv_signed_time_t=yes
+      ;;
+    int)
+      timet_len=""
+      i_cv_signed_time_t=yes
+      ;;
+    "long long")
+      timet_len="ll"
+      i_cv_signed_time_t=yes
+      ;;
+    "unsigned int")
+      timet_len=""
+      i_cv_signed_time_t=no
+      ;;
+    "unsigned long")
+      timet_len="l"
+      i_cv_signed_time_t=no
+      ;;
+    "unsigned long long")
+      timet_len="ll"
+      i_cv_signed_time_t=no
+      ;;
+    *)
+      AC_MSG_ERROR([Unsupported time_t type])
+      ;;
+  esac
+  if test $i_cv_signed_time_t = yes; then
+    AC_DEFINE(TIME_T_SIGNED,, [Define if your time_t is signed])
+    timet_d_fmt="$timet_len"d
+  else
+    timet_d_fmt="$timet_len"u
+  fi
+  timet_x_fmt="$timet_len"x
+
+  AC_DEFINE_UNQUOTED(PRIdTIME_T, "$timet_d_fmt", [printf() fmt for dec time_t])
+  AC_DEFINE_UNQUOTED(PRIxTIME_T, "$timet_x_fmt", [printf() fmt for hex time_t])
+])
diff --git a/m4/time_t_signed.m4 b/m4/time_t_signed.m4
deleted file mode 100644 (file)
index 336fff8..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-AC_DEFUN([DOVECOT_TIME_T_SIGNED], [
-  AC_CACHE_CHECK([whether time_t is signed],i_cv_signed_time_t,[
-    AC_RUN_IFELSE([AC_LANG_SOURCE([[
-      #include <sys/types.h>
-      #include <stdlib.h>
-      int main() {
-        /* return 0 if we're signed */
-        exit((time_t)(int)-1 <= 0 ? 0 : 1);
-      }
-    ]])],[
-      i_cv_signed_time_t=yes
-    ], [
-      i_cv_signed_time_t=no
-    ])
-  ])
-  if test $i_cv_signed_time_t = yes; then
-    AC_DEFINE(TIME_T_SIGNED,, [Define if your time_t is signed])
-  fi
-])