[tor-commits] [tor/master] Remove support for unsigned time_t

nickm at torproject.org nickm at torproject.org
Wed Feb 10 20:37:57 UTC 2016


commit 5f7df92571ec5a2d1eddb257e22f5489acc4fc83
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri Jan 29 09:18:59 2016 -0500

    Remove support for unsigned time_t
    
    We've never actually tested this support, and we should probably assume
    it's broken.
    
    To the best of my knowledge, only OpenVMS has this, and even on
    OpenVMS it's a compile-time option to disable it.  And I don't think
    we build on openvms anyway.  (Everybody else seems to be working
    around the 2038 problem by using a 64-bit time_t, which won't expire
    for roughly 292 billion years.)
    
    Closes ticket 18184.
---
 changes/bug18184     |  5 +++++
 configure.ac         |  4 ++--
 src/common/torint.h  | 28 ++--------------------------
 src/test/test_dir.c  |  2 --
 src/win32/orconfig.h |  3 ---
 5 files changed, 9 insertions(+), 33 deletions(-)

diff --git a/changes/bug18184 b/changes/bug18184
new file mode 100644
index 0000000..af493df
--- /dev/null
+++ b/changes/bug18184
@@ -0,0 +1,5 @@
+  o Removed platform support:
+    - Tor no longer attempts to support platforms where the "time_t" type
+      is unsigned.  (To the best of our knowledge, only OpenVMS does this,
+      and Tor has never actually built on OpenVMS.)  Closes ticket 18184.
+
diff --git a/configure.ac b/configure.ac
index 6d2312d..de7221d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1176,7 +1176,7 @@ AC_CHECK_TYPES([rlim_t], , ,
 ])
 
 AX_CHECK_SIGN([time_t],
-       [ AC_DEFINE(TIME_T_IS_SIGNED, 1, [Define if time_t is signed]) ],
+       [ : ],
        [ : ], [
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -1190,7 +1190,7 @@ AX_CHECK_SIGN([time_t],
 ])
 
 if test "$ax_cv_decl_time_t_signed" = no; then
-  AC_MSG_WARN([You have an unsigned time_t; some things will probably break. Please tell the Tor developers about your interesting platform.])
+  AC_MSG_ERROR([You have an unsigned time_t; Tor does not support that. Please tell the Tor developers about your interesting platform.])
 fi
 
 AX_CHECK_SIGN([size_t],
diff --git a/src/common/torint.h b/src/common/torint.h
index 418fe0f..480ba1a 100644
--- a/src/common/torint.h
+++ b/src/common/torint.h
@@ -312,8 +312,6 @@ typedef uint32_t uintptr_t;
 
 #ifndef TIME_MAX
 
-#ifdef TIME_T_IS_SIGNED
-
 #if (SIZEOF_TIME_T == SIZEOF_INT)
 #define TIME_MAX ((time_t)INT_MAX)
 #elif (SIZEOF_TIME_T == SIZEOF_LONG)
@@ -321,25 +319,13 @@ typedef uint32_t uintptr_t;
 #elif (SIZEOF_TIME_T == 8)
 #define TIME_MAX ((time_t)INT64_MAX)
 #else
-#error "Can't define (signed) TIME_MAX"
+#error "Can't define TIME_MAX"
 #endif
 
-#else
-/* Unsigned case */
-#if (SIZEOF_TIME_T == 4)
-#define TIME_MAX ((time_t)UINT32_MAX)
-#elif (SIZEOF_TIME_T == 8)
-#define TIME_MAX ((time_t)UINT64_MAX)
-#else
-#error "Can't define (unsigned) TIME_MAX"
-#endif
-#endif /* time_t_is_signed */
 #endif /* ifndef(TIME_MAX) */
 
 #ifndef TIME_MIN
 
-#ifdef TIME_T_IS_SIGNED
-
 #if (SIZEOF_TIME_T == SIZEOF_INT)
 #define TIME_MIN ((time_t)INT_MIN)
 #elif (SIZEOF_TIME_T == SIZEOF_LONG)
@@ -347,19 +333,9 @@ typedef uint32_t uintptr_t;
 #elif (SIZEOF_TIME_T == 8)
 #define TIME_MIN ((time_t)INT64_MIN)
 #else
-#error "Can't define (signed) TIME_MIN"
+#error "Can't define TIME_MIN"
 #endif
 
-#else
-/* Unsigned case */
-#if (SIZEOF_TIME_T == 4)
-#define TIME_MIN ((time_t)UINT32_MIN)
-#elif (SIZEOF_TIME_T == 8)
-#define TIME_MIN ((time_t)UINT64_MIN)
-#else
-#error "Can't define (unsigned) TIME_MIN"
-#endif
-#endif /* time_t_is_signed */
 #endif /* ifndef(TIME_MIN) */
 
 #ifndef SIZE_MAX
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 4824a94..83a8b8c 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -3312,7 +3312,6 @@ test_dir_download_status_schedule(void *arg)
   tt_assert(increment == expected_increment);
   tt_assert(dls_failure.next_attempt_at == TIME_MIN + expected_increment);
 
-#if TIME_T_IS_SIGNED
   delay1 = INT_MAX;
   increment =  download_status_schedule_get_delay(&dls_failure,
                                                   schedule,
@@ -3320,7 +3319,6 @@ test_dir_download_status_schedule(void *arg)
   expected_increment = delay1;
   tt_assert(increment == expected_increment);
   tt_assert(dls_failure.next_attempt_at == TIME_MAX);
-#endif
 
   delay1 = 0;
   increment = download_status_schedule_get_delay(&dls_attempt,
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index c0b14e5..f381152 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -220,9 +220,6 @@
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS
 
-/* Define to 1 if time_t is signed. */
-#define TIME_T_IS_SIGNED
-
 /* Define to 1 iff unaligned int access is allowed */
 #define UNALIGNED_INT_ACCESS_OK
 





More information about the tor-commits mailing list