]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
Use LONG_LONG_MAX and friends if available.
authorDarren Tucker <dtucker@dtucker.net>
Fri, 1 May 2020 08:32:25 +0000 (18:32 +1000)
committerDarren Tucker <dtucker@dtucker.net>
Fri, 1 May 2020 08:41:40 +0000 (18:41 +1000)
If we don't have LLONG_{MIN,MAX} but do have LONG_LONG_{MIN,MAX}
then use those instead.  We do calculate these values in configure,
but it turns out that at least one compiler (old HP ANSI C) can't
parse "-9223372036854775808LL" without mangling it. (It can parse
"-9223372036854775807LL" which is presumably why its limits.h defines
LONG_LONG_MIN as the latter minus 1.)

Fixes rekey test when compiled with the aforementioned compiler.

configure.ac
defines.h

index e696ac7510fe01beac98c48f3af3cd31858dbd7e..e89d4f17f99f95129e6a81bf09bf5769d9285224 100644 (file)
@@ -93,6 +93,7 @@ AC_SUBST([LD])
 AC_C_INLINE
 
 AC_CHECK_DECL([LLONG_MAX], [have_llong_max=1], , [#include <limits.h>])
+AC_CHECK_DECL([LONG_LONG_MAX], [have_long_long_max=1], , [#include <limits.h>])
 AC_CHECK_DECL([SYSTR_POLICY_KILL], [have_systr_policy_kill=1], , [
        #include <sys/types.h>
        #include <sys/param.h>
@@ -3611,7 +3612,7 @@ if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then
 fi
 
 # compute LLONG_MIN and LLONG_MAX if we don't know them.
-if test -z "$have_llong_max"; then
+if test -z "$have_llong_max" && test -z "$have_long_long_max"; then
        AC_MSG_CHECKING([for max value of long long])
        AC_RUN_IFELSE(
                [AC_LANG_PROGRAM([[
index a347a44ff0df19fdf151e04780cb6eab51ba3e79..b8ea88b2d21cbc873f5da3b65773de26346c5d5e 100644 (file)
--- a/defines.h
+++ b/defines.h
@@ -254,6 +254,13 @@ typedef unsigned int u_int32_t;
 #define __BIT_TYPES_DEFINED__
 #endif
 
+#if !defined(LLONG_MIN) && defined(LONG_LONG_MIN)
+#define LLONG_MIN LONG_LONG_MIN
+#endif
+#if !defined(LLONG_MAX) && defined(LONG_LONG_MAX)
+#define LLONG_MAX LONG_LONG_MAX
+#endif
+
 #ifndef UINT32_MAX
 # if defined(HAVE_DECL_UINT32_MAX) && (HAVE_DECL_UINT32_MAX == 0)
 #  if (SIZEOF_INT == 4)