]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Remove support for unsigned time_t
authorNick Mathewson <nickm@torproject.org>
Fri, 29 Jan 2016 14:18:59 +0000 (09:18 -0500)
committerNick Mathewson <nickm@torproject.org>
Fri, 29 Jan 2016 14:18:59 +0000 (09:18 -0500)
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 [new file with mode: 0644]
configure.ac
src/common/torint.h
src/test/test_dir.c
src/win32/orconfig.h

diff --git a/changes/bug18184 b/changes/bug18184
new file mode 100644 (file)
index 0000000..af493df
--- /dev/null
@@ -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.
+
index 6d2312d15996b3137a56e8c9d532e96e36760301..de7221dc902d5bb64a8cd1fbcb79d36cdf5cd4de 100644 (file)
@@ -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],
index 418fe0fabfe04fac2b628416a157561f525f0ca6..480ba1a5966512a53bea0cbe997ebe9e3f7abfcb 100644 (file)
@@ -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
index 4824a94132032cd90f86c0e928a7f172faec8c0b..83a8b8ccc65cb62bf54428f3d17962ffff6e70d0 100644 (file)
@@ -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,
index c0b14e53045950465a7e078412f1be53c88be77d..f381152a11935473482876111f52a1f213e6ac06 100644 (file)
 /* 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