]> jfr.im git - irc/rqf/shadowircd.git/commitdiff
libratbox sync - r25796
authorValery Yatsko <redacted>
Tue, 29 Jul 2008 22:41:27 +0000 (02:41 +0400)
committerValery Yatsko <redacted>
Tue, 29 Jul 2008 22:41:27 +0000 (02:41 +0400)
24 files changed:
libratbox/ChangeLog
libratbox/acinclude.m4
libratbox/configure
libratbox/configure.ac
libratbox/include/arc4random.h [new file with mode: 0644]
libratbox/include/commio-int.h
libratbox/include/commio-ssl.h
libratbox/include/libratbox_config.h.in
libratbox/include/libratbox_config.h_vms [new file with mode: 0755]
libratbox/include/rb_commio.h
libratbox/include/rb_linebuf.h
libratbox/src/Makefile.am
libratbox/src/Makefile.in
libratbox/src/arc4random.c [new file with mode: 0644]
libratbox/src/balloc.c
libratbox/src/commio.c
libratbox/src/crypt.c
libratbox/src/descrip.mms [new file with mode: 0644]
libratbox/src/epoll.c
libratbox/src/export-syms.txt
libratbox/src/gnutls.c
libratbox/src/nossl.c
libratbox/src/openssl.c
libratbox/src/rawbuf.c

index 76e0b7d02022cfbfa340f09f251da0c150f13027..a31a4e856caf612ba4c3c60b1c9e8a0343315eab 100644 (file)
@@ -1,3 +1,157 @@
+androsyn    2008/07/29 15:26:55 UTC    (25795)
+  Log:
+  some sanity checks in the rb_open path
+
+  Modified:
+       libratbox/trunk/src/commio.c (File Modified) 
+
+
+androsyn    2008/07/29 14:47:48 UTC    (25793)
+  Log:
+  pass new_F along to rb_ssl_accept_setup instead of the fd itself
+
+  Modified:
+       libratbox/trunk/include/commio-ssl.h (File Modified) 
+       libratbox/trunk/src/commio.c (File Modified) 
+       libratbox/trunk/src/gnutls.c (File Modified) 
+       libratbox/trunk/src/nossl.c (File Modified) 
+       libratbox/trunk/src/openssl.c (File Modified) 
+
+
+androsyn    2008/07/28 23:14:29 UTC    (25791)
+  Log:
+  log if rb_open returns NULL on accept and close the fd..this shouldn't happen and the real cause needs to be found
+
+  Modified:
+       libratbox/trunk/src/commio.c (File Modified) 
+
+
+androsyn    2008/07/11 18:21:57 UTC    (25705)
+  Log:
+  add a newline at the end of arc4random.c
+
+  Modified:
+       libratbox/trunk/src/arc4random.c (File Modified) 
+
+
+androsyn    2008/07/10 18:34:03 UTC    (25699)
+  Log:
+  i'm doing good today..move the ifdefs down
+
+  Modified:
+       libratbox/trunk/src/arc4random.c (File Modified) 
+
+
+androsyn    2008/07/10 18:32:34 UTC    (25697)
+  Log:
+  remove some debugging code
+
+  Modified:
+       libratbox/trunk/src/arc4random.c (File Modified) 
+       libratbox/trunk/src/nossl.c (File Modified) 
+
+
+androsyn    2008/07/10 18:30:19 UTC    (25695)
+  Log:
+  add a missing ; and add arc4random.h too
+
+  Modified:
+       libratbox/trunk/include/arc4random.h (File Added) 
+       libratbox/trunk/src/openssl.c (File Modified) 
+
+
+androsyn    2008/07/10 18:27:23 UTC    (25693)
+  Log:
+  forgot a prototype for rb_get_pseudo_random
+
+  Modified:
+       libratbox/trunk/include/rb_commio.h (File Modified) 
+
+
+androsyn    2008/07/10 18:05:43 UTC    (25691)
+  Log:
+  fix a typo
+
+  Modified:
+       libratbox/trunk/src/nossl.c (File Modified) 
+
+
+androsyn    2008/07/10 17:13:27 UTC    (25689)
+  Log:
+  - Add arc4random as a source for random bytes in the nossl.c case.
+  - Add in a pseudo random source function as well. This is really only different on OpenSSL.
+  
+  
+
+  Modified:
+       libratbox/trunk/configure (File Modified) 
+       libratbox/trunk/configure.ac (File Modified) 
+       libratbox/trunk/include/libratbox_config.h.in (File Modified) 
+       libratbox/trunk/src/Makefile.am (File Modified) 
+       libratbox/trunk/src/Makefile.in (File Modified) 
+       libratbox/trunk/src/arc4random.c (File Added) 
+       libratbox/trunk/src/export-syms.txt (File Modified) 
+       libratbox/trunk/src/gnutls.c (File Modified) 
+       libratbox/trunk/src/nossl.c (File Modified) 
+       libratbox/trunk/src/openssl.c (File Modified) 
+
+
+androsyn    2008/07/06 18:57:15 UTC    (25683)
+  Log:
+  change a rb_uint8_t to uint8_t
+
+  Modified:
+       libratbox/trunk/configure (File Modified) 
+       libratbox/trunk/configure.ac (File Modified) 
+
+
+androsyn    2008/07/06 05:15:22 UTC    (25681)
+  Log:
+  fix the socklen_t stuff
+
+  Modified:
+       libratbox/trunk/configure (File Modified) 
+       libratbox/trunk/configure.ac (File Modified) 
+       libratbox/trunk/include/libratbox_config.h.in (File Modified) 
+
+
+androsyn    2008/07/06 04:33:03 UTC    (25679)
+  Log:
+  get rid of some testing code that snuck into the last commit
+
+  Modified:
+       libratbox/trunk/configure (File Modified) 
+       libratbox/trunk/configure.ac (File Modified) 
+
+
+androsyn    2008/07/06 04:13:05 UTC    (25675)
+  Log:
+  remove the rb_uint/rb_int stuff as we require a C99 compiler and this is standard now.  Also add a better check for socklen_t
+
+  Modified:
+       libratbox/trunk/acinclude.m4 (File Modified) 
+       libratbox/trunk/configure (File Modified) 
+       libratbox/trunk/configure.ac (File Modified) 
+       libratbox/trunk/include/commio-int.h (File Modified) 
+       libratbox/trunk/include/libratbox_config.h.in (File Modified) 
+       libratbox/trunk/include/rb_commio.h (File Modified) 
+       libratbox/trunk/include/rb_linebuf.h (File Modified) 
+       libratbox/trunk/src/Makefile.in (File Modified) 
+       libratbox/trunk/src/balloc.c (File Modified) 
+       libratbox/trunk/src/commio.c (File Modified) 
+       libratbox/trunk/src/crypt.c (File Modified) 
+       libratbox/trunk/src/epoll.c (File Modified) 
+       libratbox/trunk/src/rawbuf.c (File Modified) 
+
+
+androsyn    2008/07/06 03:10:23 UTC    (25673)
+  Log:
+  a few minor cleanups
+
+  Modified:
+       libratbox/trunk/src/commio.c (File Modified) 
+
+
 androsyn    2008/06/24 14:04:50 UTC    (25588)
   Log:
   move some of the common accept code into a function
index 3caeacae36746ee142492876fae96722496e1eac..7e963d5a4ee23ce9719f72e92e1f1e4696fd0fc2 100644 (file)
@@ -22,84 +22,6 @@ AC_DEFUN([AC_SUBST_DIR], [
 ])
 
 
-# RB_TYPE_INTMAX_T
-# -----------------
-AC_DEFUN([RB_TYPE_INTMAX_T],
-[
-  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
-  AC_CHECK_TYPE([intmax_t],
-    [AC_DEFINE([HAVE_INTMAX_T], 1,
-       [Define to 1 if the system has the type `intmax_t'.]) ac_cv_c_intmax_t=yes],
-    [test $ac_cv_type_long_long_int = yes \
-       && ac_type='long long int' \
-       || ac_type='long int'
-     AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
-       [Define to the widest signed integer type
-       if <stdint.h> and <inttypes.h> do not define.]) ac_cv_c_intmax_t="$ac_type"])
-])
-
-
-# RB_TYPE_UINTMAX_T
-# -----------------
-AC_DEFUN([RB_TYPE_UINTMAX_T],
-[
-  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
-  AC_CHECK_TYPE([uintmax_t],
-    [AC_DEFINE([HAVE_UINTMAX_T], 1,
-       [Define to 1 if the system has the type `uintmax_t'.]) ac_cv_c_uintmax_t=yes],
-    [test $ac_cv_type_unsigned_long_long_int = yes \
-       && ac_type='unsigned long long int' \
-       || ac_type='unsigned long int'
-     AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
-       [Define to the widest unsigned integer type
-       if <stdint.h> and <inttypes.h> do not define.]) ac_cv_c_uintmax_t="$ac_type"])
-])
-
-
-# RB_TYPE_INTPTR_T
-# -----------------
-AC_DEFUN([RB_TYPE_INTPTR_T],
-[
-  AC_CHECK_TYPE([intptr_t],
-    [AC_DEFINE([HAVE_INTPTR_T], 1,
-       [Define to 1 if the system has the type `intptr_t'.]) ac_cv_c_intptr_t=yes],
-    [for ac_type in 'int' 'long int' 'long long int'; do
-       AC_COMPILE_IFELSE(
-        [AC_LANG_BOOL_COMPILE_TRY(
-           [AC_INCLUDES_DEFAULT],
-           [[sizeof (void *) <= sizeof ($ac_type)]])],
-        [AC_DEFINE_UNQUOTED([intptr_t], [$ac_type],
-           [Define to the type of a signed integer type wide enough to
-            hold a pointer, if such a type exists, and if the system
-            does not define it.]) ac_cv_c_intptr_t="$ac_type"
-         ac_type=])
-       test -z "$ac_type" && break
-     done])
-])
-
-
-# RB_TYPE_UINTPTR_T
-# -----------------
-AC_DEFUN([RB_TYPE_UINTPTR_T],
-[
-  AC_CHECK_TYPE([uintptr_t],
-    [AC_DEFINE([HAVE_UINTPTR_T], 1,
-       [Define to 1 if the system has the type `uintptr_t'.]) ac_cv_c_uintptr_t=yes],
-    [for ac_type in 'unsigned int' 'unsigned long int' \
-       'unsigned long long int'; do
-       AC_COMPILE_IFELSE(
-        [AC_LANG_BOOL_COMPILE_TRY(
-           [AC_INCLUDES_DEFAULT],
-           [[sizeof (void *) <= sizeof ($ac_type)]])],
-        [AC_DEFINE_UNQUOTED([uintptr_t], [$ac_type],
-           [Define to the type of an unsigned integer type wide enough to
-            hold a pointer, if such a type exists, and if the system
-            does not define it.]) ac_cv_c_uintptr_t="$ac_type"
-         ac_type=])
-       test -z "$ac_type" && break
-     done])
-])
-
 dnl IPv6 support macros..pretty much swiped from wget
 
 dnl RB_PROTO_INET6
index e463495726945434928cd2abf60fee48a355a2bd..af408af2fcaded228669cf5e64cfc88055814a95 100755 (executable)
@@ -2,7 +2,7 @@
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for libratbox devel.
 #
-# $Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $
+# $Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -1616,7 +1616,7 @@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
-$Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $
+$Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
 _ACEOF
   exit
 fi
@@ -21382,1338 +21382,6 @@ if test "$libexecdir" = '${exec_prefix}/libexec' &&
        localstatedir='${prefix}'
 fi
 
-
-  { echo "$as_me:$LINENO: checking for int8_t" >&5
-echo $ECHO_N "checking for int8_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int8_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_int8_t=no
-     for ac_type in 'int8_t' 'int' 'long int' \
-        'long long int' 'short int' 'signed char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (8 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (8 - 2)) - 1) * 2 + 1)
-                < ($ac_type) (((($ac_type) 1 << (8 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       case $ac_type in
-  int8_t) ac_cv_c_int8_t=yes ;;
-  *) ac_cv_c_int8_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_int8_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int8_t" >&5
-echo "${ECHO_T}$ac_cv_c_int8_t" >&6; }
-  case $ac_cv_c_int8_t in #(
-  no|yes) ;; #(
-  *)
-
-cat >>confdefs.h <<_ACEOF
-#define int8_t $ac_cv_c_int8_t
-_ACEOF
-;;
-  esac
-
-
-  { echo "$as_me:$LINENO: checking for int16_t" >&5
-echo $ECHO_N "checking for int16_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_int16_t=no
-     for ac_type in 'int16_t' 'int' 'long int' \
-        'long long int' 'short int' 'signed char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (16 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (16 - 2)) - 1) * 2 + 1)
-                < ($ac_type) (((($ac_type) 1 << (16 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       case $ac_type in
-  int16_t) ac_cv_c_int16_t=yes ;;
-  *) ac_cv_c_int16_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_int16_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int16_t" >&5
-echo "${ECHO_T}$ac_cv_c_int16_t" >&6; }
-  case $ac_cv_c_int16_t in #(
-  no|yes) ;; #(
-  *)
-
-cat >>confdefs.h <<_ACEOF
-#define int16_t $ac_cv_c_int16_t
-_ACEOF
-;;
-  esac
-
-
-  { echo "$as_me:$LINENO: checking for int32_t" >&5
-echo $ECHO_N "checking for int32_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int32_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_int32_t=no
-     for ac_type in 'int32_t' 'int' 'long int' \
-        'long long int' 'short int' 'signed char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (32 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (32 - 2)) - 1) * 2 + 1)
-                < ($ac_type) (((($ac_type) 1 << (32 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       case $ac_type in
-  int32_t) ac_cv_c_int32_t=yes ;;
-  *) ac_cv_c_int32_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_int32_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int32_t" >&5
-echo "${ECHO_T}$ac_cv_c_int32_t" >&6; }
-  case $ac_cv_c_int32_t in #(
-  no|yes) ;; #(
-  *)
-
-cat >>confdefs.h <<_ACEOF
-#define int32_t $ac_cv_c_int32_t
-_ACEOF
-;;
-  esac
-
-
-  { echo "$as_me:$LINENO: checking for int64_t" >&5
-echo $ECHO_N "checking for int64_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int64_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_int64_t=no
-     for ac_type in 'int64_t' 'int' 'long int' \
-        'long long int' 'short int' 'signed char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 1)
-                < ($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       case $ac_type in
-  int64_t) ac_cv_c_int64_t=yes ;;
-  *) ac_cv_c_int64_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_int64_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int64_t" >&5
-echo "${ECHO_T}$ac_cv_c_int64_t" >&6; }
-  case $ac_cv_c_int64_t in #(
-  no|yes) ;; #(
-  *)
-
-cat >>confdefs.h <<_ACEOF
-#define int64_t $ac_cv_c_int64_t
-_ACEOF
-;;
-  esac
-
-
-  { echo "$as_me:$LINENO: checking for uint8_t" >&5
-echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint8_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_uint8_t=no
-     for ac_type in 'uint8_t' 'unsigned int' 'unsigned long int' \
-        'unsigned long long int' 'unsigned short int' 'unsigned char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (8 - 1) == 1)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  case $ac_type in
-  uint8_t) ac_cv_c_uint8_t=yes ;;
-  *) ac_cv_c_uint8_t=$ac_type ;;
-esac
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_uint8_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint8_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint8_t" >&6; }
-  case $ac_cv_c_uint8_t in #(
-  no|yes) ;; #(
-  *)
-
-cat >>confdefs.h <<\_ACEOF
-#define _UINT8_T 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint8_t $ac_cv_c_uint8_t
-_ACEOF
-;;
-  esac
-
-
-  { echo "$as_me:$LINENO: checking for uint16_t" >&5
-echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_uint16_t=no
-     for ac_type in 'uint16_t' 'unsigned int' 'unsigned long int' \
-        'unsigned long long int' 'unsigned short int' 'unsigned char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (16 - 1) == 1)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  case $ac_type in
-  uint16_t) ac_cv_c_uint16_t=yes ;;
-  *) ac_cv_c_uint16_t=$ac_type ;;
-esac
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_uint16_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint16_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint16_t" >&6; }
-  case $ac_cv_c_uint16_t in #(
-  no|yes) ;; #(
-  *)
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint16_t $ac_cv_c_uint16_t
-_ACEOF
-;;
-  esac
-
-
-  { echo "$as_me:$LINENO: checking for uint32_t" >&5
-echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint32_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_uint32_t=no
-     for ac_type in 'uint32_t' 'unsigned int' 'unsigned long int' \
-        'unsigned long long int' 'unsigned short int' 'unsigned char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (32 - 1) == 1)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  case $ac_type in
-  uint32_t) ac_cv_c_uint32_t=yes ;;
-  *) ac_cv_c_uint32_t=$ac_type ;;
-esac
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_uint32_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint32_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint32_t" >&6; }
-  case $ac_cv_c_uint32_t in #(
-  no|yes) ;; #(
-  *)
-
-cat >>confdefs.h <<\_ACEOF
-#define _UINT32_T 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint32_t $ac_cv_c_uint32_t
-_ACEOF
-;;
-  esac
-
-
-  { echo "$as_me:$LINENO: checking for uint64_t" >&5
-echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint64_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_uint64_t=no
-     for ac_type in 'uint64_t' 'unsigned int' 'unsigned long int' \
-        'unsigned long long int' 'unsigned short int' 'unsigned char'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (64 - 1) == 1)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  case $ac_type in
-  uint64_t) ac_cv_c_uint64_t=yes ;;
-  *) ac_cv_c_uint64_t=$ac_type ;;
-esac
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test "$ac_cv_c_uint64_t" != no && break
-     done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint64_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint64_t" >&6; }
-  case $ac_cv_c_uint64_t in #(
-  no|yes) ;; #(
-  *)
-
-cat >>confdefs.h <<\_ACEOF
-#define _UINT64_T 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint64_t $ac_cv_c_uint64_t
-_ACEOF
-;;
-  esac
-
-
-
-  { echo "$as_me:$LINENO: checking for intptr_t" >&5
-echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_intptr_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef intptr_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_intptr_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_intptr_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
-echo "${ECHO_T}$ac_cv_type_intptr_t" >&6; }
-if test $ac_cv_type_intptr_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INTPTR_T 1
-_ACEOF
- ac_cv_c_intptr_t=yes
-else
-  for ac_type in 'int' 'long int' 'long long int'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-
-cat >>confdefs.h <<_ACEOF
-#define intptr_t $ac_type
-_ACEOF
- ac_cv_c_intptr_t="$ac_type"
-         ac_type=
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test -z "$ac_type" && break
-     done
-fi
-
-
-
-  { echo "$as_me:$LINENO: checking for long long int" >&5
-echo $ECHO_N "checking for long long int... $ECHO_C" >&6; }
-if test "${ac_cv_type_long_long_int+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-long long int ll = 9223372036854775807ll;
-           long long int nll = -9223372036854775807LL;
-           typedef int a[((-9223372036854775807LL < 0
-                           && 0 < 9223372036854775807ll)
-                          ? 1 : -1)];
-           int i = 63;
-int
-main ()
-{
-long long int llmax = 9223372036854775807ll;
-           return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
-                   | (llmax / ll) | (llmax % ll));
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-                       if test "$cross_compiling" = yes; then
-  ac_cv_type_long_long_int=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <limits.h>
-              #ifndef LLONG_MAX
-              # define HALF \
-                       (1LL << (sizeof (long long int) * CHAR_BIT - 2))
-              # define LLONG_MAX (HALF - 1 + HALF)
-              #endif
-int
-main ()
-{
-long long int n = 1;
-              int i;
-              for (i = 0; ; i++)
-                {
-                  long long int m = n << i;
-                  if (m >> i != n)
-                    return 1;
-                  if (LLONG_MAX / 2 < m)
-                    break;
-                }
-              return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_long_long_int=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_type_long_long_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_long_long_int=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5
-echo "${ECHO_T}$ac_cv_type_long_long_int" >&6; }
-  if test $ac_cv_type_long_long_int = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LONG_LONG_INT 1
-_ACEOF
-
-  fi
-
-
-
-  { echo "$as_me:$LINENO: checking for intmax_t" >&5
-echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_intmax_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef intmax_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_intmax_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_intmax_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_intmax_t" >&6; }
-if test $ac_cv_type_intmax_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INTMAX_T 1
-_ACEOF
- ac_cv_c_intmax_t=yes
-else
-  test $ac_cv_type_long_long_int = yes \
-       && ac_type='long long int' \
-       || ac_type='long int'
-
-cat >>confdefs.h <<_ACEOF
-#define intmax_t $ac_type
-_ACEOF
- ac_cv_c_intmax_t="$ac_type"
-fi
-
-
-
-  { echo "$as_me:$LINENO: checking for unsigned long long int" >&5
-echo $ECHO_N "checking for unsigned long long int... $ECHO_C" >&6; }
-if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-unsigned long long int ull = 18446744073709551615ULL;
-           typedef int a[(18446744073709551615ULL <= (unsigned long long int) -1
-                          ? 1 : -1)];
-          int i = 63;
-int
-main ()
-{
-unsigned long long int ullmax = 18446744073709551615ull;
-           return (ull << 63 | ull >> 63 | ull << i | ull >> i
-                   | ullmax / ull | ullmax % ull);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_type_unsigned_long_long_int=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_unsigned_long_long_int=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long_int" >&5
-echo "${ECHO_T}$ac_cv_type_unsigned_long_long_int" >&6; }
-  if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UNSIGNED_LONG_LONG_INT 1
-_ACEOF
-
-  fi
-
-
-
-  { echo "$as_me:$LINENO: checking for uintmax_t" >&5
-echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_uintmax_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef uintmax_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_uintmax_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_uintmax_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_uintmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_uintmax_t" >&6; }
-if test $ac_cv_type_uintmax_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UINTMAX_T 1
-_ACEOF
- ac_cv_c_uintmax_t=yes
-else
-  test $ac_cv_type_unsigned_long_long_int = yes \
-       && ac_type='unsigned long long int' \
-       || ac_type='unsigned long int'
-
-cat >>confdefs.h <<_ACEOF
-#define uintmax_t $ac_type
-_ACEOF
- ac_cv_c_uintmax_t="$ac_type"
-fi
-
-
-
-  { echo "$as_me:$LINENO: checking for uintptr_t" >&5
-echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_uintptr_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef uintptr_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_uintptr_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_uintptr_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
-echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6; }
-if test $ac_cv_type_uintptr_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UINTPTR_T 1
-_ACEOF
- ac_cv_c_uintptr_t=yes
-else
-  for ac_type in 'unsigned int' 'unsigned long int' \
-       'unsigned long long int'; do
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-
-cat >>confdefs.h <<_ACEOF
-#define uintptr_t $ac_type
-_ACEOF
- ac_cv_c_uintptr_t="$ac_type"
-         ac_type=
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test -z "$ac_type" && break
-     done
-fi
-
-
-
 { echo "$as_me:$LINENO: checking for pid_t" >&5
 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; }
 if test "${ac_cv_type_pid_t+set}" = set; then
@@ -23559,18 +22227,8 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-
-
 
 typedef socklen_t ac__type_new_;
 int
 { echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
 echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; }
 if test $ac_cv_type_socklen_t = yes; then
-  :
+  rb_socklen_t=socklen_t
 else
 
-cat >>confdefs.h <<\_ACEOF
-#define socklen_t unsigned int
+       { echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5
+echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6; }
+       if test "${rb_socklen_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+       # Systems have either "struct sockaddr *" or
+       # "void *" as the second argument to getpeername
+       rb_socklen_t=
+       for arg2 in "struct sockaddr" void; do
+               for t in int size_t unsigned long "unsigned long"; do
+                       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int getpeername (int, $arg2 *, $t *);
+
+int
+main ()
+{
+
+$t len;
+getpeername(0,0,&len);
+
+  ;
+  return 0;
+}
 _ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+       rb_socklen_t="$t"
+       break
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+               done
+       done
+
+       if test "x$rb_socklen_t" = x; then
+               { { echo "$as_me:$LINENO: error: Cannot find a type to use in place of socklen_t" >&5
+echo "$as_me: error: Cannot find a type to use in place of socklen_t" >&2;}
+   { (exit 1); exit 1; }; }
+       fi
+
+fi
+
+       { echo "$as_me:$LINENO: result: $rb_socklen_t" >&5
+echo "${ECHO_T}$rb_socklen_t" >&6; }
 fi
 
 
+
+
+
+
 # Check whether --enable-ipv6 was given.
 if test "${enable_ipv6+set}" = set; then
   enableval=$enable_ipv6; ipv6=$enableval
@@ -24200,7 +22934,9 @@ fi
 
 
 
-for ac_func in socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl
+
+
+for ac_func in socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { echo "$as_me:$LINENO: checking for $ac_func" >&5
 
 
 
-for dtype in uint64_t uint32_t uint16_t uint8_t int64_t int32_t int16_t int8_t intmax_t intptr_t uintmax_t uintptr_t
-do
-       var="\$ac_cv_c_${dtype}"
-       t_type=$(eval echo $var);
-       if test "x$t_type" = "xyes"; then
-               eval rb_$dtype="\"$dtype\""
-       else
-               eval rb_$dtype="\"$t_type\""
-       fi
-done
-
 ac_config_commands="$ac_config_commands include/librb-config.h"
 
 
@@ -27087,18 +25812,6 @@ cat >>$CONFIG_STATUS <<_ACEOF
 #
 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 
-       rb_uint64_t="$rb_uint64_t"
-       rb_uint32_t="$rb_uint32_t"
-       rb_uint16_t="$rb_uint16_t"
-       rb_uint8_t="$rb_uint8_t"
-       rb_int64_t="$rb_int64_t"
-       rb_int32_t="$rb_int32_t"
-       rb_int16_t="$rb_int16_t"
-       rb_int8_t="$rb_int8_t"
-       rb_intmax_t="$rb_intmax_t"
-       rb_intptr_t="$rb_intptr_t"
-       rb_uintmax_t="$rb_uintmax_t"
-       rb_uintptr_t="$rb_uintptr_t"
        if test x$ac_cv_header_stdc = xyes; then
                rb_header_stdc=yes
        fi
@@ -27160,11 +25873,9 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
        if test x$ac_cv_header_winsock2_h = xyes; then
                rb_winsock2_h=yes
        fi
-       if test x$ac_cv_type_socklen_t = xyes; then
-               rb_socklen_t="socklen_t"
-       else
-               rb_socklen_t="unsigned int"
-       fi
+
+       rb_socklen_t=$rb_socklen_t
+
        if test "x$rb_have_sockaddr_storage" = "xyes"; then
                rb_sockaddr_storage="yes"
        else
@@ -28081,28 +26792,17 @@ if test "x$rb_errno_h" = "xyes"; then
        echo '#include <errno.h>' >> $outfile
 fi
 
+echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
+
+
 if test "x$rb_sockaddr_sa_len" = "xyes"; then
        echo '#define RB_SOCKADDR_HAS_SA_LEN 1' >> $outfile
 fi
 
-echo "typedef $rb_uint64_t rb_uint64_t;"  >> $outfile
-echo "typedef $rb_uint32_t rb_uint32_t;"  >> $outfile
-echo "typedef $rb_uint16_t rb_uint16_t;"  >> $outfile
-echo "typedef $rb_uint8_t rb_uint8_t;"  >> $outfile
-echo "typedef $rb_int64_t rb_int64_t;"  >> $outfile
-echo "typedef $rb_int32_t rb_int32_t;"  >> $outfile
-echo "typedef $rb_int16_t rb_int16_t;"  >> $outfile
-echo "typedef $rb_int8_t rb_int8_t;"  >> $outfile
-echo "typedef $rb_intmax_t rb_intmax_t;"  >> $outfile
-echo "typedef $rb_intptr_t rb_intptr_t;"  >> $outfile
-echo "typedef $rb_uintmax_t rb_uintmax_t;"  >> $outfile
-echo "typedef $rb_uintptr_t rb_uintptr_t;"  >> $outfile
-echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
-
 if test "x$rb_sockaddr_storage" = "xyes"; then
        echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile
 else
-       echo 'struct rb_sockaddr_storage { rb_uint8_t _padding128; };' >> $outfile
+       echo 'struct rb_sockaddr_storage { uint8_t _padding128; };' >> $outfile
 fi
 
 cat >> $outfile <<\_______EOF
index eb2b62073e28b855b26429dd50f02cb181569ca5..86588c89636375d059ca00ae2e66c762e1d71d17 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $
+dnl $Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
 dnl Process this file with autoconf to produce a configure script.
 
 dnl TODO: clean up all the OpenSSL and shared module checking stuff;
@@ -8,7 +8,7 @@ dnl said functions need to be just about as complex as they already are.
 AC_PREREQ(2.60)
 AUTOMAKE_OPTIONS = 1.10
 dnl Sneaky way to get an Id tag into the configure script
-AC_COPYRIGHT([$Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $])
+AC_COPYRIGHT([$Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $])
 AC_INIT([libratbox],[devel])
 AM_INIT_AUTOMAKE(AC_PACKAGE_TARNAME, AC_PACKAGE_VERSION, -)
 
@@ -99,20 +99,6 @@ if test "$libexecdir" = '${exec_prefix}/libexec' &&
        localstatedir='${prefix}'
 fi
 
-AC_TYPE_INT8_T
-AC_TYPE_INT16_T
-AC_TYPE_INT32_T
-AC_TYPE_INT64_T
-AC_TYPE_UINT8_T
-AC_TYPE_UINT16_T
-AC_TYPE_UINT32_T
-AC_TYPE_UINT64_T
-
-RB_TYPE_INTPTR_T
-RB_TYPE_INTMAX_T
-RB_TYPE_UINTMAX_T
-RB_TYPE_UINTPTR_T
-
 AC_TYPE_PID_T
 AC_TYPE_SIZE_T
 AC_TYPE_SSIZE_T
@@ -144,21 +130,41 @@ member.])],,[[
 #endif
 ]])
 
-AC_CHECK_TYPE(socklen_t, ,
-[AC_DEFINE([socklen_t], [unsigned int],
-[If we don't have a real socklen_t, unsigned int is good enough.])],
-[
-#ifdef HAVE_SYS_TYPES_H
+AC_CHECK_TYPE([socklen_t], rb_socklen_t=socklen_t,[
+       AC_MSG_CHECKING([for socklen_t equivalent])
+       AC_CACHE_VAL([rb_socklen_t],
+       [
+       # Systems have either "struct sockaddr *" or
+       # "void *" as the second argument to getpeername
+       rb_socklen_t=
+       for arg2 in "struct sockaddr" void; do
+               for t in int size_t unsigned long "unsigned long"; do
+                       AC_TRY_COMPILE([
 #include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
 
+int getpeername (int, $arg2 *, $t *);
+],[
+$t len;
+getpeername(0,0,&len);
+],[
+       rb_socklen_t="$t"
+       break
 ])
+               done
+       done
+
+       if test "x$rb_socklen_t" = x; then
+               AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
+       fi
+       ])
+       AC_MSG_RESULT($rb_socklen_t)],
+       [#include <sys/types.h>
+#include <sys/socket.h>])
+
+
+
+
 
 AC_ARG_ENABLE(ipv6,AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),[ipv6=$enableval],[ipv6=yes])
 
@@ -218,7 +224,7 @@ AC_CHECK_TYPE([sa_family_t], [],
 
 
 dnl check for various functions...
-AC_CHECK_FUNCS([socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl])  
+AC_CHECK_FUNCS([socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage])     
 
 AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep]))
 AC_SEARCH_LIBS(timer_create, rt, AC_DEFINE(HAVE_TIMER_CREATE, 1, [Define if you have timer_create]))
@@ -457,17 +463,6 @@ fi
 
 AC_SUBST(RB_PREFIX)
 
-for dtype in uint64_t uint32_t uint16_t uint8_t int64_t int32_t int16_t int8_t intmax_t intptr_t uintmax_t uintptr_t
-do
-       var="\$ac_cv_c_${dtype}"
-       t_type=$(eval echo $var);
-       if test "x$t_type" = "xyes"; then
-               eval rb_$dtype="\"$dtype\""
-       else
-               eval rb_$dtype="\"$t_type\""
-       fi
-done
-
 AC_CONFIG_COMMANDS([include/librb-config.h],
 [
        outfile=include/librb-config.h.tmp
@@ -552,28 +547,17 @@ if test "x$rb_errno_h" = "xyes"; then
        echo '#include <errno.h>' >> $outfile
 fi
 
+echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
+
+
 if test "x$rb_sockaddr_sa_len" = "xyes"; then
        echo '#define RB_SOCKADDR_HAS_SA_LEN 1' >> $outfile
 fi
 
-echo "typedef $rb_uint64_t rb_uint64_t;"  >> $outfile
-echo "typedef $rb_uint32_t rb_uint32_t;"  >> $outfile
-echo "typedef $rb_uint16_t rb_uint16_t;"  >> $outfile
-echo "typedef $rb_uint8_t rb_uint8_t;"  >> $outfile
-echo "typedef $rb_int64_t rb_int64_t;"  >> $outfile
-echo "typedef $rb_int32_t rb_int32_t;"  >> $outfile
-echo "typedef $rb_int16_t rb_int16_t;"  >> $outfile
-echo "typedef $rb_int8_t rb_int8_t;"  >> $outfile
-echo "typedef $rb_intmax_t rb_intmax_t;"  >> $outfile
-echo "typedef $rb_intptr_t rb_intptr_t;"  >> $outfile
-echo "typedef $rb_uintmax_t rb_uintmax_t;"  >> $outfile
-echo "typedef $rb_uintptr_t rb_uintptr_t;"  >> $outfile
-echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
-
 if test "x$rb_sockaddr_storage" = "xyes"; then
        echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile
 else
-       echo 'struct rb_sockaddr_storage { rb_uint8_t _padding[128]; };' >> $outfile
+       echo 'struct rb_sockaddr_storage { uint8_t _padding[128]; };' >> $outfile
 fi
 
 cat >> $outfile <<\_______EOF
@@ -588,18 +572,6 @@ else
 fi
 
 ],[
-       rb_uint64_t="$rb_uint64_t"
-       rb_uint32_t="$rb_uint32_t"
-       rb_uint16_t="$rb_uint16_t"
-       rb_uint8_t="$rb_uint8_t"
-       rb_int64_t="$rb_int64_t"
-       rb_int32_t="$rb_int32_t"
-       rb_int16_t="$rb_int16_t"
-       rb_int8_t="$rb_int8_t"
-       rb_intmax_t="$rb_intmax_t"
-       rb_intptr_t="$rb_intptr_t"
-       rb_uintmax_t="$rb_uintmax_t"
-       rb_uintptr_t="$rb_uintptr_t"
        if test x$ac_cv_header_stdc = xyes; then
                rb_header_stdc=yes
        fi
@@ -661,11 +633,9 @@ fi
        if test x$ac_cv_header_winsock2_h = xyes; then
                rb_winsock2_h=yes
        fi
-       if test x$ac_cv_type_socklen_t = xyes; then
-               rb_socklen_t="socklen_t"
-       else
-               rb_socklen_t="unsigned int"
-       fi
+
+       rb_socklen_t=$rb_socklen_t
+
        if test "x$rb_have_sockaddr_storage" = "xyes"; then
                rb_sockaddr_storage="yes" 
        else
diff --git a/libratbox/include/arc4random.h b/libratbox/include/arc4random.h
new file mode 100644 (file)
index 0000000..49e0a96
--- /dev/null
@@ -0,0 +1,7 @@
+
+
+#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM)
+void arc4random_stir(void);
+uint32_t arc4random(void);
+void arc4random_addrandom(uint8_t *dat, int datlen);
+#endif
\ No newline at end of file
index ad767dc9f4f36c92786b516b2317acea6cf366fd..d13d9eab53fff43053d44c98a3d20cf433fa16a0 100644 (file)
@@ -103,8 +103,8 @@ struct _fde
         */
        rb_dlink_node node;
        int fd;                 /* So we can use the rb_fde_t as a callback ptr */
-       rb_uint8_t flags;
-       rb_uint8_t type;
+       uint8_t flags;
+       uint8_t type;
        int pflags;
        char *desc;
        PF *read_handler;
index 93aeab205985861183ddb38ca4fe51e37089f31e..539210620b838a25496a7c90accfb0654e12b74a 100644 (file)
@@ -9,7 +9,7 @@ const char *rb_get_ssl_strerror(rb_fde_t *F);
 void rb_ssl_start_accepted(rb_fde_t *new_F, ACCB *cb, void *data, int timeout);
 void rb_ssl_start_connected(rb_fde_t *F, CNCB *callback, void *data, int timeout);
 void rb_connect_tcp_ssl(rb_fde_t *F, struct sockaddr *dest, struct sockaddr *clocal, int socklen, CNCB *callback, void *data, int timeout);
-void rb_ssl_accept_setup(rb_fde_t *F, int new_fd, struct sockaddr *st, int addrlen);
+void rb_ssl_accept_setup(rb_fde_t *F, rb_fde_t *new_F, struct sockaddr *st, int addrlen);
 void rb_ssl_shutdown(rb_fde_t *F);
 ssize_t rb_ssl_read(rb_fde_t *F, void *buf, size_t count);
 ssize_t rb_ssl_write(rb_fde_t *F, const void *buf, size_t count);
index 76b350174b282b6a422f358c1b628bedc4a25fe0..3f4fd7f532a3b9a331b5933db0ce06bee681908c 100644 (file)
@@ -18,6 +18,9 @@
    */
 #undef HAVE_ALLOCA_H
 
+/* Define to 1 if you have the `arc4random' function. */
+#undef HAVE_ARC4RANDOM
+
 /* Define to 1 if you have the <arpa/inet.h> header file. */
 #undef HAVE_ARPA_INET_H
 
@@ -45,6 +48,9 @@
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
+/* Define to 1 if you have the `getrusage' function. */
+#undef HAVE_GETRUSAGE
+
 /* Define to 1 if you have the `gettimeofday' function. */
 #undef HAVE_GETTIMEOFDAY
 
 /* Has GnuTLS */
 #undef HAVE_GNUTLS
 
-/* Define to 1 if the system has the type `intmax_t'. */
-#undef HAVE_INTMAX_T
-
-/* Define to 1 if the system has the type `intptr_t'. */
-#undef HAVE_INTPTR_T
-
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
 /* Define to 1 if you have the `kevent' function. */
 #undef HAVE_KEVENT
 
-/* Define to 1 if the system has the type `long long int'. */
-#undef HAVE_LONG_LONG_INT
-
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
 /* Define to 1 if you have the <time.h> header file. */
 #undef HAVE_TIME_H
 
-/* Define to 1 if the system has the type `uintmax_t'. */
-#undef HAVE_UINTMAX_T
-
-/* Define to 1 if the system has the type `uintptr_t'. */
-#undef HAVE_UINTPTR_T
-
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
-/* Define to 1 if the system has the type `unsigned long long int'. */
-#undef HAVE_UNSIGNED_LONG_LONG_INT
-
 /* Define to 1 if you have the `usleep' function. */
 #undef HAVE_USLEEP
 
 # undef _GNU_SOURCE
 #endif
 
-/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
-   #define below would cause a syntax error. */
-#undef _UINT32_T
-
-/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
-   #define below would cause a syntax error. */
-#undef _UINT64_T
-
-/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
-   #define below would cause a syntax error. */
-#undef _UINT8_T
-
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
 #undef inline
 #endif
 
-/* Define to the type of a signed integer type of width exactly 16 bits if
-   such a type exists and the standard includes do not define it. */
-#undef int16_t
-
-/* Define to the type of a signed integer type of width exactly 32 bits if
-   such a type exists and the standard includes do not define it. */
-#undef int32_t
-
-/* Define to the type of a signed integer type of width exactly 64 bits if
-   such a type exists and the standard includes do not define it. */
-#undef int64_t
-
-/* Define to the type of a signed integer type of width exactly 8 bits if such
-   a type exists and the standard includes do not define it. */
-#undef int8_t
-
-/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
-   not define. */
-#undef intmax_t
-
-/* Define to the type of a signed integer type wide enough to hold a pointer,
-   if such a type exists, and if the system does not define it. */
-#undef intptr_t
-
 /* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
 
 /* Define to `unsigned int' if <sys/types.h> does not define. */
 #undef size_t
 
-/* If we don't have a real socklen_t, unsigned int is good enough. */
-#undef socklen_t
-
 /* Define to `int' if <sys/types.h> does not define. */
 #undef ssize_t
 
 /* Define to `int' if <sys/types.h> doesn't define. */
 #undef uid_t
 
-/* Define to the type of an unsigned integer type of width exactly 16 bits if
-   such a type exists and the standard includes do not define it. */
-#undef uint16_t
-
-/* Define to the type of an unsigned integer type of width exactly 32 bits if
-   such a type exists and the standard includes do not define it. */
-#undef uint32_t
-
-/* Define to the type of an unsigned integer type of width exactly 64 bits if
-   such a type exists and the standard includes do not define it. */
-#undef uint64_t
-
-/* Define to the type of an unsigned integer type of width exactly 8 bits if
-   such a type exists and the standard includes do not define it. */
-#undef uint8_t
-
-/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
-   do not define. */
-#undef uintmax_t
-
-/* Define to the type of an unsigned integer type wide enough to hold a
-   pointer, if such a type exists, and if the system does not define it. */
-#undef uintptr_t
-
 /* Define as `fork' if `vfork' does not work. */
 #undef vfork
diff --git a/libratbox/include/libratbox_config.h_vms b/libratbox/include/libratbox_config.h_vms
new file mode 100755 (executable)
index 0000000..633ab64
--- /dev/null
@@ -0,0 +1,374 @@
+/* include/libratbox_config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* This is a Cygwin system */
+#undef CYGWIN
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <crypt.h> header file. */
+#undef HAVE_CRYPT_H
+
+/* Define to 1 if you have devpoll */
+#undef HAVE_DEVPOLL
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the `epoll_ctl' function. */
+#undef HAVE_EPOLL_CTL
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if you have the `fstat' function. */
+#define HAVE_FSTAT 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#define HAVE_GMTIME_R 1
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#define HAVE_INTPTR_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `kevent' function. */
+#undef HAVE_KEVENT
+
+/* Define to 1 if the system has the type `long long int'. */
+#define HAVE_LONG_LONG_INT 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define if you have nanosleep */
+#define HAVE_NANOSLEEP 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Has OpenSSL */
+#undef HAVE_OPENSSL
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define to 1 if you have the `port_create' function. */
+#undef HAVE_PORT_CREATE
+
+/* Define to 1 if you have the <port.h> header file. */
+#undef HAVE_PORT_H
+
+/* Define to 1 if you have the `posix_spawn' function. */
+#define HAVE_POSIX_SPAWN 1
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+#define HAVE_SENDMSG 1
+
+/* Define to 1 if you have the `signalfd' function. */
+#undef HAVE_SIGNALFD
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `socketpair' function. */
+#define HAVE_SOCKETPAIR 1
+
+/* Define to 1 if you have the <spawn.h> header file. */
+#undef HAVE_SPAWN_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strlcat' function. */
+#undef HAVE_STRLCAT
+
+/* Define to 1 if you have the `strlcpy' function. */
+#undef HAVE_STRLCPY
+
+/* Define to 1 if you have the `strnlen' function. */
+#define HAVE_STRNLEN 1
+
+/* Define to 1 if you have the `strtok_r' function. */
+#define HAVE_STRTOK_R 1
+
+/* Define to 1 if the system has the type `struct sockaddr_in6'. */
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+
+/* Define to 1 if the system has the type `struct sockaddr_storage'. */
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+
+/* Define to 1 if you have the <sys/devpoll.h> header file. */
+#undef HAVE_SYS_DEVPOLL_H
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+#undef HAVE_SYS_EPOLL_H
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+#undef HAVE_SYS_EVENT_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/signalfd.h> header file. */
+#undef HAVE_SYS_SIGNALFD_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define if you have timer_create */
+#undef HAVE_TIMER_CREATE
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if the system has the type `uintmax_t'. */
+#define HAVE_UINTMAX_T 1
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#define HAVE_UINTPTR_T 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+
+/* Define to 1 if you have the `usleep' function. */
+#define HAVE_USLEEP 1
+
+/* Define to 1 if you have the `vfork' function. */
+#define HAVE_VFORK 1
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you are on windows */
+#undef HAVE_WIN32
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#define HAVE_WORKING_VFORK 1
+
+/* Define to 1 if you have the `writev' function. */
+#define HAVE_WRITEV 1
+
+/* This is a MinGW system */
+#undef MINGW
+
+/* Define this to disable debugging support. */
+#undef NDEBUG
+
+/* Define if your system needs crypt. */
+#undef NEED_CRYPT
+
+/* Define to 1 if you wish to disable the block allocator. */
+#undef NOBALLOC
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Defined to mark profiling is enabled */
+#undef RATBOX_PROFILE
+
+/* Prefix where libratbox is installed. */
+#define RB_PREFIX "/ratbox"
+
+/* Define to 1 if sockaddr has a 'sa_len' member. */
+#undef SOCKADDR_IN_HAS_LEN
+
+/* Define this to enable soft asserts. */
+#undef SOFT_ASSERT
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to 1 if we can use timer_create(CLOCK_REALTIME,...) */
+#undef USE_TIMER_CREATE
+
+/* This is a Windows system */
+#undef WINDOWS
+
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT64_T
+
+/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT8_T
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#define inline inline
+#endif
+
+/* Define to the type of a signed integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int16_t
+
+/* Define to the type of a signed integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int32_t
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int64_t
+
+/* Define to the type of a signed integer type of width exactly 8 bits if such
+   a type exists and the standard includes do not define it. */
+#undef int8_t
+
+/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
+   not define. */
+#undef intmax_t
+
+/* Define to the type of a signed integer type wide enough to hold a pointer,
+   if such a type exists, and if the system does not define it. */
+#undef intptr_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* If system does not define sa_family_t, define it here. */
+#undef sa_family_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* If we don't have a real socklen_t, unsigned int is good enough. */
+#undef socklen_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef ssize_t
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to the type of an unsigned integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint16_t
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to the type of an unsigned integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint64_t
+
+/* Define to the type of an unsigned integer type of width exactly 8 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint8_t
+
+/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
+   do not define. */
+#undef uintmax_t
+
+/* Define to the type of an unsigned integer type wide enough to hold a
+   pointer, if such a type exists, and if the system does not define it. */
+#undef uintptr_t
+
+/* Define as `fork' if `vfork' does not work. */
+#define vfork fork
index cff8d02d205597efd703c72640503c256ba90288..9549aa501cdb1046c7281e44452afae0e0b961cd 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: rb_commio.h 25327 2008-05-08 19:32:13Z androsyn $
+ *  $Id: rb_commio.h 25693 2008-07-10 18:27:23Z androsyn $
  */
  
 #ifndef RB_LIB_H
@@ -88,7 +88,7 @@ struct rb_iovec
 
 void rb_fdlist_init(int closeall, int maxfds, size_t heapsize);
 
-rb_fde_t * rb_open(int, rb_uint8_t, const char *);
+rb_fde_t * rb_open(int, uint8_t, const char *);
 void rb_close(rb_fde_t *);
 void rb_dump_fd(DUMPCB *, void *xdata);
 void rb_note(rb_fde_t *, const char *);
@@ -148,8 +148,8 @@ rb_fde_t *rb_get_fde(int fd);
 int rb_send_fd_buf(rb_fde_t *xF, rb_fde_t **F, int count, void *data, size_t datasize);
 int rb_recv_fd_buf(rb_fde_t *F, void *data, size_t datasize, rb_fde_t **xF, int count);
 
-void rb_set_type(rb_fde_t *F, rb_uint8_t type);
-rb_uint8_t rb_get_type(rb_fde_t *F);
+void rb_set_type(rb_fde_t *F, uint8_t type);
+uint8_t rb_get_type(rb_fde_t *F);
 
 const char *rb_get_iotype(void);
 
@@ -164,6 +164,7 @@ typedef enum {
 
 int rb_init_prng(const char *path, prng_seed_t seed_type);
 int rb_get_random(void *buf, size_t len);
+int rb_get_pseudo_random(void *buf, size_t len);
 void  rb_ssl_start_accepted(rb_fde_t *new_F, ACCB *cb, void *data, int timeout);
 void rb_ssl_start_connected(rb_fde_t *F, CNCB *callback, void *data, int timeout);
 int rb_supports_ssl(void);
index 31b89c521b46a3c0561e1f8ed93de3f1a1cad01e..1d231e39d68b8e3d579cefc051cb6db6bedecc4c 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: rb_linebuf.h 25227 2008-04-12 22:20:43Z jilles $
+ *  $Id: rb_linebuf.h 25675 2008-07-06 04:13:05Z androsyn $
  */
 
 #ifndef RB_LIB_H
@@ -45,8 +45,8 @@ struct _buf_head;
 typedef struct _buf_line
 {
        char buf[BUF_DATA_SIZE + 2];
-       rb_uint8_t terminated;  /* Whether we've terminated the buffer */
-       rb_uint8_t raw; /* Whether this linebuf may hold 8-bit data */
+       uint8_t terminated;     /* Whether we've terminated the buffer */
+       uint8_t raw;    /* Whether this linebuf may hold 8-bit data */
        int len;                /* How much data we've got */
        int refcount;           /* how many linked lists are we in? */
 } buf_line_t;
index 55b5fed3d319b8a09c663e1b078d0ebcb848454f..03554349c5b4d66e35a39b950f742a774cf898e9 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.am 25532 2008-06-11 14:40:44Z androsyn $
+# $Id: Makefile.am 25689 2008-07-10 17:13:27Z androsyn $
 
 AUTOMAKE_OPTIONS = foreign
 
@@ -28,10 +28,11 @@ libratbox_la_SOURCES =                      \
        select.c                        \
        kqueue.c                        \
        rawbuf.c                        \
-       patricia.c
+       patricia.c                      \
+       arc4random.c                    
        
 
-libratbox_la_LDFLAGS = -version-info 3:0:0 -no-undefined -export-symbols export-syms.txt
+libratbox_la_LDFLAGS = -avoid-version -no-undefined -export-symbols export-syms.txt
 libratbox_la_LIBADD = @CRYPT_LIB@ @SSL_LIBS@ @GNUTLS_LIBS@
 lib_LTLIBRARIES = libratbox.la
 
index 16738f9c08ee0e1401f9d0af70c9521fb19a7179..52d824e7aa8f305dffd303ed3682e204b2429a23 100644 (file)
@@ -14,7 +14,7 @@
 
 @SET_MAKE@
 
-# $Id: Makefile.am 25532 2008-06-11 14:40:44Z androsyn $
+# $Id: Makefile.am 25689 2008-07-10 17:13:27Z androsyn $
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
@@ -58,7 +58,7 @@ am_libratbox_la_OBJECTS = unix.lo win32.lo crypt.lo balloc.lo \
        commio.lo openssl.lo gnutls.lo nossl.lo event.lo ratbox_lib.lo \
        rb_memory.lo linebuf.lo snprintf.lo tools.lo helper.lo \
        devpoll.lo epoll.lo poll.lo ports.lo sigio.lo select.lo \
-       kqueue.lo rawbuf.lo patricia.lo
+       kqueue.lo rawbuf.lo patricia.lo arc4random.lo
 libratbox_la_OBJECTS = $(am_libratbox_la_OBJECTS)
 libratbox_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
@@ -233,9 +233,10 @@ libratbox_la_SOURCES = \
        select.c                        \
        kqueue.c                        \
        rawbuf.c                        \
-       patricia.c
+       patricia.c                      \
+       arc4random.c                    
 
-libratbox_la_LDFLAGS = -version-info 3:0:0 -no-undefined -export-symbols export-syms.txt
+libratbox_la_LDFLAGS = -avoid-version -no-undefined -export-symbols export-syms.txt
 libratbox_la_LIBADD = @CRYPT_LIB@ @SSL_LIBS@ @GNUTLS_LIBS@
 lib_LTLIBRARIES = libratbox.la
 all: all-am
@@ -307,6 +308,7 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arc4random.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/balloc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commio.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypt.Plo@am__quote@
diff --git a/libratbox/src/arc4random.c b/libratbox/src/arc4random.c
new file mode 100644 (file)
index 0000000..534d223
--- /dev/null
@@ -0,0 +1,200 @@
+/* $Id: arc4random.c 25705 2008-07-11 18:21:57Z androsyn $ */
+/*     $$$: arc4random.c 2005/02/08 robert */
+/*     $NetBSD: arc4random.c,v 1.5.2.1 2004/03/26 22:52:50 jmc Exp $   */
+/*     $OpenBSD: arc4random.c,v 1.6 2001/06/05 05:05:38 pvalchev Exp $ */
+
+/*
+ * Arc4 random number generator for OpenBSD.
+ * Copyright 1996 David Mazieres <dm@lcs.mit.edu>.
+ *
+ * Modification and redistribution in source and binary forms is
+ * permitted provided that due credit is given to the author and the
+ * OpenBSD project by leaving this copyright notice intact.
+ */
+
+/*
+ * This code is derived from section 17.1 of Applied Cryptography,
+ * second edition, which describes a stream cipher allegedly
+ * compatible with RSA Labs "RC4" cipher (the actual description of
+ * which is a trade secret).  The same algorithm is used as a stream
+ * cipher called "arcfour" in Tatu Ylonen's ssh package.
+ *
+ * Here the stream cipher has been modified always to include the time
+ * when initializing the state.  That makes it impossible to
+ * regenerate the same random sequence twice, so this can't be used
+ * for encryption, but will generate good random numbers.
+ *
+ * RC4 is a registered trademark of RSA Laboratories.
+ */
+
+
+#include <libratbox_config.h>
+#include <ratbox_lib.h>
+
+#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM)
+
+#include "arc4random.h"
+
+#ifdef HAVE_GETRUSAGE
+#include <sys/resource.h>
+#endif
+
+
+
+struct arc4_stream {
+       uint8_t i;
+       uint8_t j;
+       uint8_t s[256];
+};
+
+
+static int    rs_initialized;
+static struct arc4_stream rs;
+
+static inline void arc4_init(struct arc4_stream *);
+static inline void arc4_addrandom(struct arc4_stream *, uint8_t *, int);
+static void arc4_stir(struct arc4_stream *);
+static inline uint8_t arc4_getbyte(struct arc4_stream *);
+static inline uint32_t arc4_getword(struct arc4_stream *);
+
+static inline void
+arc4_init(struct arc4_stream *as)
+{
+       int     n;
+
+       for (n = 0; n < 256; n++)
+               as->s[n] = n;
+       as->i = 0;
+       as->j = 0;
+}
+
+static inline void
+arc4_addrandom(struct arc4_stream *as, uint8_t *dat, int datlen)
+{
+       int     n;
+       uint8_t si;
+
+       as->i--;
+       for (n = 0; n < 256; n++) {
+               as->i = (as->i + 1);
+               si = as->s[as->i];
+               as->j = (as->j + si + dat[n % datlen]);
+               as->s[as->i] = as->s[as->j];
+               as->s[as->j] = si;
+       }
+       as->j = as->i;
+}
+
+static void
+arc4_stir(struct arc4_stream *as)
+{
+       struct timeval tv;
+       pid_t pid;
+       int n;
+       /* XXX this doesn't support egd sources or similiar */
+
+       pid = getpid();
+       arc4_addrandom(as, (void *)&pid, sizeof(pid));  
+
+       rb_gettimeofday(&tv, NULL);
+       arc4_addrandom(as, (void *)&tv.tv_sec, sizeof(&tv.tv_sec));
+       arc4_addrandom(as, (void *)&tv.tv_usec, sizeof(&tv.tv_usec));
+       rb_gettimeofday(&tv, NULL);
+       arc4_addrandom(as, (void *)&tv.tv_usec, sizeof(&tv.tv_usec));
+       
+#if defined(HAVE_GETRUSAGE) && RUSAGE_SELF
+       {
+               struct rusage buf;
+               getrusage(RUSAGE_SELF, &buf);
+               arc4_addrandom(as, (void *)&buf, sizeof(buf));
+               memset(&buf, 0, sizeof(buf))
+       }
+#endif 
+
+#if !defined(WIN32)
+       {
+               uint8_t rnd[128];
+               int fd;
+               fd = open("/dev/urandom", O_RDONLY);
+               if (fd != -1) 
+               {
+                       read(fd, rnd, sizeof(rnd));
+                       close(fd);
+                       arc4_addrandom(as, (void *)rnd, sizeof(rnd));
+               }
+       }
+#else
+       {
+               LARGE_INTEGER performanceCount;
+               if (QueryPerformanceCounter (&performanceCount))
+               {
+                       arc4_addrandom(as, (void *)&performanceCount, sizeof(performanceCount));
+               }
+       }
+#endif
+
+
+       /*
+        * Throw away the first N words of output, as suggested in the
+        * paper "Weaknesses in the Key Scheduling Algorithm of RC4"
+        * by Fluher, Mantin, and Shamir.
+        * http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Rc4_ksa.ps
+        * N = 256 in our case.
+        */
+       for (n = 0; n < 256 * 4; n++)
+               arc4_getbyte(as);
+}
+
+static inline uint8_t
+arc4_getbyte(struct arc4_stream *as)
+{
+       uint8_t si, sj;
+
+       as->i = (as->i + 1);
+       si = as->s[as->i];
+       as->j = (as->j + si);
+       sj = as->s[as->j];
+       as->s[as->i] = sj;
+       as->s[as->j] = si;
+       return (as->s[(si + sj) & 0xff]);
+}
+
+static inline uint32_t
+arc4_getword(struct arc4_stream *as)
+{
+       uint32_t val;
+       val = arc4_getbyte(as) << 24;
+       val |= arc4_getbyte(as) << 16;
+       val |= arc4_getbyte(as) << 8;
+       val |= arc4_getbyte(as);
+       return val;
+}
+
+void
+arc4random_stir(void)
+{
+       if (!rs_initialized) {
+               arc4_init(&rs);
+               rs_initialized = 1;
+       }
+       arc4_stir(&rs);
+}
+
+void
+arc4random_addrandom(uint8_t *dat, int datlen)
+{
+       if (!rs_initialized)
+               arc4random_stir();
+       arc4_addrandom(&rs, dat, datlen);
+}
+
+uint32_t
+arc4random(void)
+{
+       if (!rs_initialized)
+               arc4random_stir();
+       return arc4_getword(&rs);
+}
+
+#endif
+
index 86d521efb0e66715a46cb84bf398f337c8c37e4b..19e9a256e8fd6a4db91b7bc2abb29b2d8cc5adc6 100644 (file)
@@ -28,7 +28,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: balloc.c 25375 2008-05-16 15:19:51Z androsyn $
+ *  $Id: balloc.c 25675 2008-07-06 04:13:05Z androsyn $
  */
 
 /* 
@@ -225,7 +225,7 @@ newblock(rb_bh * bh)
 {
        rb_heap_block *b;
        unsigned long i;
-       rb_uintptr_t offset;
+       uintptr_t offset;
 
        /* Setup the initial data structure. */
        b = rb_malloc(sizeof(rb_heap_block));
@@ -237,7 +237,7 @@ newblock(rb_bh * bh)
        {
                return (1);
        }
-       offset = (rb_uintptr_t)b->elems;
+       offset = (uintptr_t)b->elems;
        /* Setup our blocks now */
        for (i = 0; i < bh->elemsPerBlock; i++, offset += (bh->elemSize + sizeof(rb_heap_block *)))
        {
index 5f677289187e1b15709172c22151a678d7deb9bf..59eb02dd654f82aae46cc32e42a9cbad6c036527 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: commio.c 25375 2008-05-16 15:19:51Z androsyn $
+ *  $Id: commio.c 25795 2008-07-29 15:26:55Z androsyn $
  */
 #include <libratbox_config.h>
 #include <ratbox_lib.h>
@@ -80,7 +80,6 @@ static inline rb_fde_t *
 add_fd(int fd)
 {
        rb_fde_t *F = rb_find_fd(fd);
-       rb_dlink_list *list;
 
        /* look up to see if we have it already */
        if(F != NULL)
@@ -88,21 +87,17 @@ add_fd(int fd)
        
        F = rb_bh_alloc(fd_heap);
        F->fd = fd;
-       list = &rb_fd_table[rb_hash_fd(fd)];
-       rb_dlinkAdd(F, &F->node, list);
+       rb_dlinkAdd(F, &F->node, &rb_fd_table[rb_hash_fd(fd)]);
        return(F);
 }
 
 static inline void
 remove_fd(rb_fde_t *F)
 {
-       rb_dlink_list *list;
-       
        if(F == NULL || !IsFDOpen(F))
                return;
        
-       list = &rb_fd_table[rb_hash_fd(F->fd)];
-       rb_dlinkMoveNode(&F->node, list, &closed_list);
+       rb_dlinkMoveNode(&F->node, &rb_fd_table[rb_hash_fd(F->fd)], &closed_list);
 }
 
 static void 
@@ -368,6 +363,13 @@ rb_accept_tryaccept(rb_fde_t *F, void *data)
 
                new_F = rb_open(new_fd, RB_FD_SOCKET, "Incoming Connection");
 
+               if(new_F == NULL)
+               {
+                       rb_lib_log("rb_accept: new_F == NULL on incoming connection. Closing new_fd == %d\n", new_fd);
+                       close(new_fd);
+                       continue;
+               }
+
                if(rb_unlikely(!rb_set_nb(new_F)))
                {
                        rb_get_errno();
@@ -387,7 +389,7 @@ rb_accept_tryaccept(rb_fde_t *F, void *data)
 #ifdef HAVE_SSL
                if(F->type & RB_FD_SSL)
                {
-                       rb_ssl_accept_setup(F, new_fd, (struct sockaddr *)&st, addrlen);                
+                       rb_ssl_accept_setup(F, new_F, (struct sockaddr *)&st, addrlen);
                } 
                else
 #endif /* HAVE_SSL */
@@ -715,8 +717,11 @@ rb_socket(int family, int sock_type, int proto, const char *note)
 
        F = rb_open(fd, RB_FD_SOCKET, note);
        if(F == NULL)
+       {
+               rb_lib_log("rb_socket: rb_open returns NULL on FD %d: %s, closing fd", fd, strerror(errno));
+               close(fd);
                return NULL;
-
+       }
        /* Set the socket non-blocking, and other wonderful bits */
        if(rb_unlikely(!rb_set_nb(F)))
        {
@@ -747,7 +752,7 @@ mangle_mapped_sockaddr(struct sockaddr *in)
                memset(&in4, 0, sizeof(struct sockaddr_in));
                in4.sin_family = AF_INET;
                in4.sin_port = in6->sin6_port;
-               in4.sin_addr.s_addr = ((rb_uint32_t *) & in6->sin6_addr)[3];
+               in4.sin_addr.s_addr = ((uint32_t *) & in6->sin6_addr)[3];
                memcpy(in, &in4, sizeof(struct sockaddr_in));
        }
        return;
@@ -796,16 +801,24 @@ rb_fdlist_init(int closeall, int maxfds, size_t heapsize)
 
 /* Called to open a given filedescriptor */
 rb_fde_t *
-rb_open(int fd, rb_uint8_t type, const char *desc)
+rb_open(int fd, uint8_t type, const char *desc)
 {
-       rb_fde_t *F = add_fd(fd);
+       rb_fde_t *F;
        lrb_assert(fd >= 0);
 
+       F = add_fd(fd);
+
+       lrb_assert(!IsFDOpen(F));
        if(rb_unlikely(IsFDOpen(F)))
        {
+               const char *fdesc;
+               if(F != NULL && F->desc != NULL)
+                       fdesc = F->desc;
+               else
+                       fdesc = "NULL";
+               rb_lib_log("Trying to rb_open an already open FD: %d desc: %d", fd, fdesc);
                return NULL;
        }
-       lrb_assert(!IsFDOpen(F));
        F->fd = fd;
        F->type = type;
        SetFDOpen(F);
@@ -913,14 +926,14 @@ rb_note(rb_fde_t *F, const char *string)
 }
 
 void
-rb_set_type(rb_fde_t *F, rb_uint8_t type)
+rb_set_type(rb_fde_t *F, uint8_t type)
 {
        /* if the caller is calling this, lets assume they have a clue */
        F->type = type;
        return;
 }
 
-rb_uint8_t
+uint8_t
 rb_get_type(rb_fde_t *F)
 {
        return F->type;
@@ -2002,7 +2015,7 @@ rb_recv_fd_buf(rb_fde_t *F, void *data, size_t datasize, rb_fde_t **xF, int nfds
        struct cmsghdr *cmsg;
        struct iovec iov[1];
        struct stat st;
-       rb_uint8_t stype = RB_FD_UNKNOWN;
+       uint8_t stype = RB_FD_UNKNOWN;
        const char *desc;
        int fd, len, x, rfds;
 
index 5088bfe6e2663417002db6a8a4d8238ba343a4b0..58e054ba9485decd66ef9821bf31dba3a500170d 100644 (file)
@@ -110,7 +110,7 @@ rb_crypt(const char *key, const char *salt)
  *
  * ARCHITECTURE ASSUMPTIONS:
  *     It is assumed that the 8-byte arrays passed by reference can be
- *     addressed as arrays of rb_uint32_t's (ie. the CPU is not picky about
+ *     addressed as arrays of uint32_t's (ie. the CPU is not picky about
  *     alignment).
  */
 
@@ -121,15 +121,15 @@ static u_char     inv_key_perm[64];
 static u_char  inv_comp_perm[56];
 static u_char  u_sbox[8][64];
 static u_char  un_pbox[32];
-static rb_uint32_t en_keysl[16], en_keysr[16];
-static rb_uint32_t de_keysl[16], de_keysr[16];
-static rb_uint32_t ip_maskl[8][256], ip_maskr[8][256];
-static rb_uint32_t fp_maskl[8][256], fp_maskr[8][256];
-static rb_uint32_t key_perm_maskl[8][128], key_perm_maskr[8][128];
-static rb_uint32_t comp_maskl[8][128], comp_maskr[8][128];
-static rb_uint32_t saltbits;
-static rb_uint32_t old_salt;
-static rb_uint32_t old_rawkey0, old_rawkey1;
+static uint32_t en_keysl[16], en_keysr[16];
+static uint32_t de_keysl[16], de_keysr[16];
+static uint32_t ip_maskl[8][256], ip_maskr[8][256];
+static uint32_t fp_maskl[8][256], fp_maskr[8][256];
+static uint32_t key_perm_maskl[8][128], key_perm_maskr[8][128];
+static uint32_t comp_maskl[8][128], comp_maskr[8][128];
+static uint32_t saltbits;
+static uint32_t old_salt;
+static uint32_t old_rawkey0, old_rawkey1;
 
 
 /* Static stuff that stays resident and doesn't change after 
@@ -137,7 +137,7 @@ static rb_uint32_t old_rawkey0, old_rawkey1;
  * reentrant. */
 static u_char  init_perm[64], final_perm[64];
 static u_char  m_sbox[4][4096];
-static rb_uint32_t psbox[4][256];
+static uint32_t psbox[4][256];
 
 
 
@@ -230,7 +230,7 @@ static const u_char pbox[32] = {
         2,  8, 24, 14, 32, 27,  3,  9, 19, 13, 30,  6, 22, 11,  4, 25
 };
 
-static const rb_uint32_t bits32[32] =
+static const uint32_t bits32[32] =
 {
        0x80000000, 0x40000000, 0x20000000, 0x10000000,
        0x08000000, 0x04000000, 0x02000000, 0x01000000,
@@ -243,7 +243,7 @@ static const rb_uint32_t bits32[32] =
 };
 
 static const u_char    bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
-static const rb_uint32_t *bits28, *bits24;
+static const uint32_t *bits28, *bits24;
 
 
 static int 
@@ -268,7 +268,7 @@ static void
 des_init(void)
 {
        int     i, j, b, k, inbit, obit;
-       rb_uint32_t     *p, *il, *ir, *fl, *fr;
+       uint32_t        *p, *il, *ir, *fl, *fr;
        static int des_initialised = 0;
 
        if (des_initialised==1)
@@ -401,7 +401,7 @@ des_init(void)
 static void
 setup_salt(long salt)
 {
-       rb_uint32_t     obit, saltbit;
+       uint32_t        obit, saltbit;
        int     i;
 
        if (salt == (long)old_salt)
@@ -423,13 +423,13 @@ setup_salt(long salt)
 static int
 des_setkey(const char *key)
 {
-       rb_uint32_t     k0, k1, rawkey0, rawkey1;
+       uint32_t        k0, k1, rawkey0, rawkey1;
        int             shifts, round;
 
        des_init();
 
-       rawkey0 = ntohl(*(const rb_uint32_t *) key);
-       rawkey1 = ntohl(*(const rb_uint32_t *) (key + 4));
+       rawkey0 = ntohl(*(const uint32_t *) key);
+       rawkey1 = ntohl(*(const uint32_t *) (key + 4));
 
        if ((rawkey0 | rawkey1)
            && rawkey0 == old_rawkey0
@@ -469,7 +469,7 @@ des_setkey(const char *key)
         */
        shifts = 0;
        for (round = 0; round < 16; round++) {
-               rb_uint32_t     t0, t1;
+               uint32_t        t0, t1;
 
                shifts += key_shifts[round];
 
@@ -501,13 +501,13 @@ des_setkey(const char *key)
 
 
 static int
-do_des(        rb_uint32_t l_in, rb_uint32_t r_in, rb_uint32_t *l_out, rb_uint32_t *r_out, int count)
+do_des(        uint32_t l_in, uint32_t r_in, uint32_t *l_out, uint32_t *r_out, int count)
 {
        /*
         *      l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format.
         */
-       rb_uint32_t     l, r, *kl, *kr, *kl1, *kr1;
-       rb_uint32_t     f, r48l, r48r;
+       uint32_t        l, r, *kl, *kr, *kl1, *kr1;
+       uint32_t        f, r48l, r48r;
        int             round;
 
        if (count == 0) {
@@ -619,12 +619,12 @@ do_des(   rb_uint32_t l_in, rb_uint32_t r_in, rb_uint32_t *l_out, rb_uint32_t *r_o
 
 #if 0
 static int
-des_cipher(const char *in, char *out, rb_uint32_t salt, int count)
+des_cipher(const char *in, char *out, uint32_t salt, int count)
 {
-       rb_uint32_t     l_out, r_out, rawl, rawr;
+       uint32_t        l_out, r_out, rawl, rawr;
        int             retval;
        union {
-               rb_uint32_t     *ui32;
+               uint32_t        *ui32;
                const char      *c;
        } trans;
 
@@ -650,7 +650,7 @@ void
 setkey(const char *key)
 {
        int     i, j;
-       rb_uint32_t     packed_keys[2];
+       uint32_t        packed_keys[2];
        u_char  *p;
 
        p = (u_char *) packed_keys;
@@ -668,7 +668,7 @@ setkey(const char *key)
 void
 encrypt(char *block, int flag)
 {
-       rb_uint32_t     io[2];
+       uint32_t        io[2];
        u_char  *p;
        int     i, j;
 
@@ -692,7 +692,7 @@ encrypt(char *block, int flag)
 static char *
 __des_crypt(const char *key, const char *setting)
 {
-       rb_uint32_t     count, salt, l, r0, r1, keybuf[2];
+       uint32_t        count, salt, l, r0, r1, keybuf[2];
        u_char          *p, *q;
        static char     output[21];
 
@@ -885,8 +885,8 @@ __des_crypt(const char *key, const char *setting)
 
 /* MD5 context. */
 struct MD5Context {
-  rb_uint32_t state[4];        /* state (ABCD) */
-  rb_uint32_t count[2];        /* number of bits, modulo 2^64 (lsb first) */
+  uint32_t state[4];   /* state (ABCD) */
+  uint32_t count[2];   /* number of bits, modulo 2^64 (lsb first) */
   unsigned char buffer[64];    /* input buffer */
 };
 
@@ -894,7 +894,7 @@ static void   __md5_Init (struct MD5Context *);
 static void   __md5_Update (struct MD5Context *, const char *, unsigned int);
 static void   __md5_Pad (struct MD5Context *);
 static void   __md5_Final (char [16], struct MD5Context *);
-static void __md5_Transform (rb_uint32_t [4], const unsigned char [64]);
+static void __md5_Transform (uint32_t [4], const unsigned char [64]);
 
 
 static const char __md5__magic[] = "$1$";      /* This string is magic for this algorithm.  Having 
@@ -910,12 +910,12 @@ static const unsigned char __md5_itoa64[] =               /* 0 ... 63 => ascii - 64 */
 #else /* i386 */
 
 /*
- * __md5_Encodes input (rb_uint32_t) into output (unsigned char). Assumes len is
+ * __md5_Encodes input (uint32_t) into output (unsigned char). Assumes len is
  * a multiple of 4.
  */
 
 static void
-__md5_Encode (unsigned char *output, rb_uint32_t *input, unsigned int len)
+__md5_Encode (unsigned char *output, uint32_t *input, unsigned int len)
 {
        unsigned int i, j;
 
@@ -928,18 +928,18 @@ __md5_Encode (unsigned char *output, rb_uint32_t *input, unsigned int len)
 }
 
 /*
- * __md5_Decodes input (unsigned char) into output (rb_uint32_t). Assumes len is
+ * __md5_Decodes input (unsigned char) into output (uint32_t). Assumes len is
  * a multiple of 4.
  */
 
 static void
-__md5_Decode (rb_uint32_t *output, const unsigned char *input, unsigned int len)
+__md5_Decode (uint32_t *output, const unsigned char *input, unsigned int len)
 {
        unsigned int i, j;
 
        for (i = 0, j = 0; j < len; i++, j += 4)
-               output[i] = ((rb_uint32_t)input[j]) | (((rb_uint32_t)input[j+1]) << 8) |
-                   (((rb_uint32_t)input[j+2]) << 16) | (((rb_uint32_t)input[j+3]) << 24);
+               output[i] = ((uint32_t)input[j]) | (((uint32_t)input[j+1]) << 8) |
+                   (((uint32_t)input[j+2]) << 16) | (((uint32_t)input[j+3]) << 24);
 }
 #endif /* i386 */
 
@@ -957,22 +957,22 @@ __md5_Decode (rb_uint32_t *output, const unsigned char *input, unsigned int len)
  * Rotation is separate from addition to prevent recomputation.
  */
 #define FF(a, b, c, d, x, s, ac) { \
-       (a) += F ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+       (a) += F ((b), (c), (d)) + (x) + (uint32_t)(ac); \
        (a) = ROTATE_LEFT ((a), (s)); \
        (a) += (b); \
        }
 #define GG(a, b, c, d, x, s, ac) { \
-       (a) += G ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+       (a) += G ((b), (c), (d)) + (x) + (uint32_t)(ac); \
        (a) = ROTATE_LEFT ((a), (s)); \
        (a) += (b); \
        }
 #define HH(a, b, c, d, x, s, ac) { \
-       (a) += H ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+       (a) += H ((b), (c), (d)) + (x) + (uint32_t)(ac); \
        (a) = ROTATE_LEFT ((a), (s)); \
        (a) += (b); \
        }
 #define II(a, b, c, d, x, s, ac) { \
-       (a) += I ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+       (a) += I ((b), (c), (d)) + (x) + (uint32_t)(ac); \
        (a) = ROTATE_LEFT ((a), (s)); \
        (a) += (b); \
        }
@@ -1004,10 +1004,10 @@ static void __md5_Update ( struct MD5Context *context, const char *xinput, unsig
        lindex = (unsigned int)((context->count[0] >> 3) & 0x3F);
 
        /* Update number of bits */
-       if ((context->count[0] += ((rb_uint32_t)inputLen << 3))
-           < ((rb_uint32_t)inputLen << 3))
+       if ((context->count[0] += ((uint32_t)inputLen << 3))
+           < ((uint32_t)inputLen << 3))
                context->count[1]++;
-       context->count[1] += ((rb_uint32_t)inputLen >> 29);
+       context->count[1] += ((uint32_t)inputLen >> 29);
 
        partLen = 64 - lindex;
 
@@ -1077,13 +1077,13 @@ static void __md5_Final ( char xdigest[16], struct MD5Context *context)
 
 static void
 __md5_Transform (state, block)
-       rb_uint32_t state[4];
+       uint32_t state[4];
        const unsigned char block[64];
 {
-       rb_uint32_t a, b, c, d, x[16];
+       uint32_t a, b, c, d, x[16];
 
 #if MD5_SIZE_OVER_SPEED > 1
-       rb_uint32_t temp;
+       uint32_t temp;
        const char *ps;
 
        static const char S[] = {
@@ -1095,11 +1095,11 @@ __md5_Transform (state, block)
 #endif /* MD5_SIZE_OVER_SPEED > 1 */
 
 #if MD5_SIZE_OVER_SPEED > 0
-       const rb_uint32_t *pc;
+       const uint32_t *pc;
        const char *pp;
        int i;
 
-       static const rb_uint32_t C[] = {
+       static const uint32_t C[] = {
                                                                /* round 1 */
                0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
                0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
diff --git a/libratbox/src/descrip.mms b/libratbox/src/descrip.mms
new file mode 100644 (file)
index 0000000..1c61ad7
--- /dev/null
@@ -0,0 +1,10 @@
+CFLAGS=                /INCLUDE=([-.INCLUDE])/ERROR_LIMIT=5/DEFINE=(_XOPEN_SOURCE_EXTENDED)/NOANSI_ALIAS
+OBJECTS=       balloc.obj,     commio.obj,     crypt.obj,      event.obj, -
+               helper.obj,     linebuf.obj,    nossl.obj,      patricia.obj, -
+               poll.obj,       ratbox_lib.obj, rawbuf.obj,     rb_memory.obj, -
+               snprintf.obj,   tools.obj,      unix.obj
+
+DEFAULT : RATBOX.OLB($(OBJECTS))
+
+CLEAN :
+       - DELETE *.OBJ;*, *.OLB;*
index 25d68b9bf5bfbf60826464ca6faf88a08e0997a7..1f99568309dcb5ada9fd661ba4379f7f502b93a0 100644 (file)
@@ -23,7 +23,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: epoll.c 25038 2008-01-23 16:03:08Z androsyn $
+ *  $Id: epoll.c 25675 2008-07-06 04:13:05Z androsyn $
  */
 #define _GNU_SOURCE 1
 
@@ -282,23 +282,23 @@ rb_epoll_supports_event(void)
 
 /* bleh..work around a glibc header bug on 32bit systems */
 struct our_signalfd_siginfo {
-        rb_uint32_t signo;
-        rb_int32_t err;
-        rb_int32_t code;
-        rb_uint32_t pid;
-        rb_uint32_t uid;
-        rb_int32_t fd;
-        rb_uint32_t tid;
-        rb_uint32_t band;
-        rb_uint32_t overrun;
-        rb_uint32_t trapno;
-        rb_int32_t status;
-        rb_int32_t svint;
-        rb_uint64_t svptr;
-        rb_uint64_t utime;
-        rb_uint64_t stime;
-        rb_uint64_t addr;
-        rb_uint8_t pad[48];
+        uint32_t signo;
+        int32_t err;
+        int32_t code;
+        uint32_t pid;
+        uint32_t uid;
+        int32_t fd;
+        uint32_t tid;
+        uint32_t band;
+        uint32_t overrun;
+        uint32_t trapno;
+        int32_t status;
+        int32_t svint;
+        uint64_t svptr;
+        uint64_t utime;
+        uint64_t stime;
+        uint64_t addr;
+        uint8_t pad[48];
 };
 
 
index 378a44db03af0200273622d8717c39bcc0385e17..d74285036133f7242a44ef3a58a47729b5fc73fc 100644 (file)
@@ -145,3 +145,4 @@ rb_spawn_process
 rb_supports_ssl
 rb_ssl_handshake_count
 rb_ssl_clear_handshake_count
+rb_get_pseudo_random
index cd279b35c4c3b256eeb42558e77dd3c7206ee7d1..217dc54d07b5174b6cfd3572c68b005bc55908f6 100644 (file)
@@ -20,7 +20,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: gnutls.c 25568 2008-06-20 18:46:08Z androsyn $
+ *  $Id: gnutls.c 25793 2008-07-29 14:47:48Z androsyn $
  */
 
 #include <libratbox_config.h>
@@ -164,11 +164,8 @@ rb_ssl_start_accepted(rb_fde_t * new_F, ACCB * cb, void *data, int timeout)
 
 
 void
-rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
+rb_ssl_accept_setup(rb_fde_t * F, rb_fde_t *new_F, struct sockaddr *st, int addrlen)
 {
-       rb_fde_t *new_F;
-
-       new_F = rb_find_fd(new_fd);
        new_F->type |= RB_FD_SSL;
        new_F->ssl = rb_malloc(sizeof(gnutls_session_t));
        new_F->accept = rb_malloc(sizeof(struct acceptdata));
@@ -183,7 +180,7 @@ rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
        gnutls_set_default_priority(SSL_P(new_F));
        gnutls_credentials_set(SSL_P(new_F), GNUTLS_CRD_CERTIFICATE, x509);
        gnutls_dh_set_prime_bits(SSL_P(new_F), 1024);
-       gnutls_transport_set_ptr(SSL_P(new_F), (gnutls_transport_ptr_t) (long int)new_fd);
+       gnutls_transport_set_ptr(SSL_P(new_F), (gnutls_transport_ptr_t) (long int)rb_get_fd(new_F));
        if(do_ssl_handshake(F, rb_ssl_tryaccept))
        {
                struct acceptdata *ad = F->accept;
@@ -485,6 +482,12 @@ rb_get_random(void *buf, size_t length)
        return 1;
 }
 
+int
+rb_get_pseudo_random(void *buf, size_t length)
+{
+       gcry_randomize(buf, length, GCRY_WEAK_RANDOM);
+       return 1;
+}
 
 const char *
 rb_get_ssl_strerror(rb_fde_t * F)
index eed302e125ec4a5ddb95c2fcd13b3073e24a5fbe..f3758c5ec93ac4d9b2a8c41f97c186bf980e98c2 100644 (file)
 
 #include <libratbox_config.h>
 #include <ratbox_lib.h>
-
 #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS)
 
+#include "arc4random.h"
+
 #include <commio-int.h>
 #include <commio-ssl.h>
 
@@ -54,17 +55,43 @@ rb_ssl_listen(rb_fde_t *F, int backlog)
        return -1;
 }
 
+static void
+rb_stir_arc4random(void *unused)
+{
+       arc4random_stir();
+}
+        
+
 int rb_init_prng(const char *path, prng_seed_t seed_type)
 {
-       return -1;
+       /* xxx this ignores the parameters above */
+       arc4random_stir();
+       rb_event_addish("rb_stir_arc4random", rb_stir_arc4random, NULL, 300);
+       return 1;
 }
 
 int
 rb_get_random(void *buf, size_t length)
 {
-       return -1;
+       uint32_t rnd = 0, i;
+       uint8_t *xbuf = buf;    
+       for (i = 0; i < sizeof(length); i++) 
+       {
+               if(i % 4 == 0)
+                       rnd = arc4random();
+               xbuf[i] = rnd;
+               rnd >>= 8;
+       }
+       return 1;
+}
+
+int
+rb_get_pseudo_random(void *buf, size_t length)
+{
+       return rb_get_random(buf, length);  
 }
 
+
 const char *
 rb_get_ssl_strerror(rb_fde_t *F)
 {
@@ -104,7 +131,7 @@ rb_ssl_shutdown(rb_fde_t * F)
 }        
 
 void
-rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
+rb_ssl_accept_setup(rb_fde_t * F, rb_fde_t *new_F, struct sockaddr *st, int addrlen)
 {
        return;
 }
index 9188c4421958e3e8ce0f8a0b842b1e1d7cb018dd..d8efaa7b12d127b59a422e8f814b93f2ee2f8eea 100644 (file)
@@ -204,13 +204,8 @@ rb_ssl_start_accepted(rb_fde_t * new_F, ACCB * cb, void *data, int timeout)
 
 
 void
-rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
+rb_ssl_accept_setup(rb_fde_t * F, rb_fde_t *new_F, struct sockaddr *st, int addrlen)
 {
-       rb_fde_t *new_F;
-
-       new_F = rb_find_fd(new_fd);
-       if(new_F == NULL)
-               return;
        new_F->type |= RB_FD_SSL;
        new_F->ssl = SSL_new(ssl_server_ctx);
        new_F->accept = rb_malloc(sizeof(struct acceptdata));
@@ -221,7 +216,7 @@ rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
        memcpy(&new_F->accept->S, st, addrlen);
        new_F->accept->addrlen = addrlen;
 
-       SSL_set_fd((SSL *) new_F->ssl, new_fd);
+       SSL_set_fd((SSL *) new_F->ssl, rb_get_fd(new_F));
        rb_setup_ssl_cb(new_F);
        rb_ssl_accept_common(new_F);
 }
@@ -578,19 +573,25 @@ rb_init_prng(const char *path, prng_seed_t seed_type)
 int
 rb_get_random(void *buf, size_t length)
 {
-       if(RAND_status())
-       {
-               if(RAND_bytes(buf, length) > 0)
-                       return 1;
-       }
-       else
+       int ret;
+       
+       if((ret = RAND_bytes(buf, length)) == 0)
        {
-               if(RAND_pseudo_bytes(buf, length) >= 0)
-                       return 1;
+               /* remove the error from the queue */
+               ERR_get_error();                        
        }
-       return 0;
+       return ret;
 }
 
+int
+rb_get_pseudo_random(void *buf, size_t length)
+{
+       int ret;
+       ret = RAND_pseudo_bytes(buf, length);
+       if(ret < 0)
+               return 0;
+       return 1;
+}
 
 const char *
 rb_get_ssl_strerror(rb_fde_t * F)
index 6a53acb00199c8b77ab36a6ca977ef932b38523c..edc29584ed200329d15381a91edeb508f956e9b3 100644 (file)
@@ -30,9 +30,9 @@
 struct _rawbuf
 {
        rb_dlink_node node;
-       rb_uint8_t data[RAWBUF_SIZE];
+       uint8_t data[RAWBUF_SIZE];
        int len;
-       rb_uint8_t flushing;
+       uint8_t flushing;
 };
 
 struct _rawbuf_head