]> granicus.if.org Git - strace/commitdiff
Fix build with <linux/loop.h> from 2.6.18 kernel headers
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 2 May 2012 10:21:49 +0000 (10:21 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 2 May 2012 10:21:49 +0000 (10:21 +0000)
* configure.ac: Check for LO_FLAGS_AUTOCLEAR and LO_FLAGS_PARTSCAN
declarations.
* loop.c (loop_flags_options): Use LO_FLAGS_AUTOCLEAR and
LO_FLAGS_PARTSCAN only when appropriate declarations are available.
(loop_ioctl): Use LOOP_SET_CAPACITY only when it is defined.

configure.ac
loop.c

index ec8db2d1e5adde4537b5426a613226acc0c472ce..82c8e876953f955f4e315f674d63059dac889186 100644 (file)
@@ -254,6 +254,11 @@ AC_CHECK_DECLS(m4_normalize([
        PTRACE_SETOPTIONS
 ]),,, [#include <sys/ptrace.h>])
 
+AC_CHECK_DECLS(m4_normalize([
+       LO_FLAGS_AUTOCLEAR,
+       LO_FLAGS_PARTSCAN
+]),,, [#include <linux/loop.h>])
+
 AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
        [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
 #include <stdlib.h>
diff --git a/loop.c b/loop.c
index a350135491d7d7be52c9469549cc44602b78569c..83d91527ea258a118054d2366d67e462b2ee7f45 100644 (file)
--- a/loop.c
+++ b/loop.c
 
 static const struct xlat loop_flags_options[] = {
        { LO_FLAGS_READ_ONLY,   "LO_FLAGS_READ_ONLY"    },
+#if HAVE_DECL_LO_FLAGS_AUTOCLEAR
        { LO_FLAGS_AUTOCLEAR,   "LO_FLAGS_AUTOCLEAR"    },
-#ifdef LO_FLAGS_PARTSCAN
+#endif
+#if HAVE_DECL_LO_FLAGS_PARTSCAN
        { LO_FLAGS_PARTSCAN,    "LO_FLAGS_PARTSCAN"     },
 #endif
        { 0,                    NULL                    },
@@ -164,7 +166,9 @@ int loop_ioctl(struct tcb *tcp, long code, long arg)
                return 1;
 
        case LOOP_CLR_FD:
+#ifdef LOOP_SET_CAPACITY
        case LOOP_SET_CAPACITY:
+#endif
 #ifdef LOOP_CTL_GET_FREE
        /* newer loop-control stuff */
        case LOOP_CTL_GET_FREE: