John,
I think the patch attached to this email (hopfully uploaded properly) will
fix the Alpha problem.
I've finally decided it was better to add detection code because various
machines use long unsigned int and others use int for the ioctl(fd,
req, ...) req argument. In addition, at least on my machine, the man pages
say it is int, but /usr/include/sys/ioctl.h says it is unsigned long
int ...
Kern
commit 78c64f1757419550411778b75f1018727d8f4e18
Author: Kern Sibbald k...@sibbald.com
Date: Sat Dec 26 14:50:29 2009 +0100
Attempt to autoconfig ioctl_req_t
diff --git a/bacula/autoconf/config.h.in b/bacula/autoconf/config.h.in
index 632f9c0..754a44d 100644
--- a/bacula/autoconf/config.h.in
+++ b/bacula/autoconf/config.h.in
@@ -452,6 +452,9 @@
declares uintmax_t. */
#undef HAVE_INTTYPES_H_WITH_UINTMAX
+/* Set if ioctl request is unsigned long int */
+#undef HAVE_IOCTL_ULINT_REQUEST
+
/* Whether to enable IPv6 support */
#undef HAVE_IPV6
@@ -617,6 +620,9 @@
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
+/* Set if socklen_t exists */
+#undef HAVE_SOCKLEN_T
+
/* Define to 1 if you have the stdarg.h header file. */
#undef HAVE_STDARG_H
diff --git a/bacula/autoconf/configure.in b/bacula/autoconf/configure.in
index 8a91a31..3147036 100644
--- a/bacula/autoconf/configure.in
+++ b/bacula/autoconf/configure.in
@@ -1859,7 +1859,31 @@ AC_CACHE_CHECK(for socklen_t, ba_cv_header_socklen_t,
)
]
)
-test $ba_cv_header_socklen_t = yes AC_DEFINE(HAVE_SOCKLEN_T)
+test $ba_cv_header_socklen_t = yes AC_DEFINE(HAVE_SOCKLEN_T, 1, [Set if socklen_t exists])
+
+dnl --
+dnl Check for ioctl request type
+dnl --
+AC_CACHE_CHECK(for ioctl_req_t, ba_cv_header_ioctl_req_t,
+ [
+ AC_TRY_COMPILE(
+ [
+ #include sys/types.h
+ #include sys/ioctl.h
+ ], [
+ unsigned long int req;
+ int fd;
+ ioctl(fd, req);
+ ], [
+ ba_cv_header_ioctl_req_t=yes
+ ], [
+ ba_cv_header_ioct_req_t_t=no
+ ]
+ )
+ ]
+)
+test $ba_cv_header_ioctl_req_t = yes AC_DEFINE(HAVE_IOCTL_ULINT_REQUEST, 1, [Set if ioctl request is unsigned long int])
+
dnl --
dnl Check for bigendian
diff --git a/bacula/configure b/bacula/configure
index b9c4dce..65d7dd1 100755
--- a/bacula/configure
+++ b/bacula/configure
@@ -32468,11 +32468,83 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ echo $as_me:$LINENO: result: $ba_cv_header_socklen_t 5
echo ${ECHO_T}$ba_cv_header_socklen_t 6; }
-test $ba_cv_header_socklen_t = yes cat confdefs.h \_ACEOF
+test $ba_cv_header_socklen_t = yes
+cat confdefs.h \_ACEOF
#define HAVE_SOCKLEN_T 1
_ACEOF
+{ echo $as_me:$LINENO: checking for ioctl_req_t 5
+echo $ECHO_N checking for ioctl_req_t... $ECHO_C 6; }
+if test ${ba_cv_header_ioctl_req_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. */
+
+ #include sys/types.h
+ #include sys/ioctl.h
+
+int
+main ()
+{
+
+ unsigned long int req;
+ int fd;
+ ioctl(fd, req);
+
+ ;
+ 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) 2conftest.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
+
+ ba_cv_header_ioctl_req_t=yes
+
+else
+ echo $as_me: failed program was: 5
+sed 's/^/| /' conftest.$ac_ext 5
+
+
+ ba_cv_header_ioct_req_t_t=no
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+fi
+{ echo $as_me:$LINENO: result: $ba_cv_header_ioctl_req_t 5
+echo ${ECHO_T}$ba_cv_header_ioctl_req_t 6; }
+test $ba_cv_header_ioctl_req_t = yes
+cat confdefs.h \_ACEOF
+#define HAVE_IOCTL_ULINT_REQUEST 1
+_ACEOF
+
+
+
{ echo $as_me:$LINENO: checking for bigendian 5
echo $ECHO_N checking for bigendian... $ECHO_C 6; }
if test ${ba_cv_bigendian+set} = set; then
diff --git a/bacula/src/baconfig.h b/bacula/src/baconfig.h
index f725630..e93c98c 100644
--- a/bacula/src/baconfig.h
+++ b/bacula/src/baconfig.h
@@ -53,7 +53,11 @@
#define ETIME ETIMEDOUT
#endif
-#define ioctl_req_t long unsigned int
+#ifdef HAVE_IOCTL_ULINT_REQUEST
+#define ioctl_req_t unsigned long int
+#else
+#define ioctl_req_t int
+#endif
#ifdef PROTOTYPES
# define __PROTO(p) p
@@ -643,16 +647,9 @@ int m_msg(const char *file, int line,