summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbb/Makefile.in6
-rw-r--r--libbb/loop.c35
-rwxr-xr-xlibbb/mk_loop_h.sh37
-rw-r--r--libbb/real_loop.h37
4 files changed, 34 insertions, 81 deletions
diff --git a/libbb/Makefile.in b/libbb/Makefile.in
index 979419b..a656a5a 100644
--- a/libbb/Makefile.in
+++ b/libbb/Makefile.in
@@ -96,9 +96,3 @@ $(LIBBB_MOBJS2): $(LIBBB_MSRC2)
$(LIBBB_MOBJS3): $(LIBBB_MSRC3)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
-$(LIBBB_DIR)loop.o: $(LIBBB_DIR)loop.h
-
-$(LIBBB_DIR)loop.h: $(LIBBB_DIR)mk_loop_h.sh
- @ $(SHELL) $< > $@
-
-
diff --git a/libbb/loop.c b/libbb/loop.c
index 7dba3e2..4d73dc4 100644
--- a/libbb/loop.c
+++ b/libbb/loop.c
@@ -26,7 +26,40 @@
#include <unistd.h>
#include <sys/ioctl.h>
#include "libbb.h"
-#include "loop.h" /* Pull in loop device support */
+
+/* Grumble... The 2.6.x kernel breaks asm/posix_types.h
+ * so we get to try and cope as best we can... */
+#include <linux/version.h>
+#include <asm/posix_types.h>
+#if LINUX_VERSION_CODE >= 132608
+#define __bb_kernel_dev_t __kernel_old_dev_t
+#elif LINUX_VERSION_CODE >= 0x20600
+#define __bb_kernel_dev_t __kernel_dev_t
+#else
+#define __bb_kernel_dev_t unsigned short
+#endif
+
+/* Stuff stolen from linux/loop.h */
+#define LO_NAME_SIZE 64
+#define LO_KEY_SIZE 32
+#define LOOP_SET_FD 0x4C00
+#define LOOP_CLR_FD 0x4C01
+#define LOOP_SET_STATUS 0x4C02
+#define LOOP_GET_STATUS 0x4C03
+struct loop_info {
+ int lo_number;
+ __bb_kernel_dev_t lo_device;
+ unsigned long lo_inode;
+ __bb_kernel_dev_t lo_rdevice;
+ int lo_offset;
+ int lo_encrypt_type;
+ int lo_encrypt_key_size;
+ int lo_flags;
+ char lo_name[LO_NAME_SIZE];
+ unsigned char lo_encrypt_key[LO_KEY_SIZE];
+ unsigned long lo_init[2];
+ char reserved[4];
+};
extern int del_loop(const char *device)
{
diff --git a/libbb/mk_loop_h.sh b/libbb/mk_loop_h.sh
deleted file mode 100755
index 71c9873..0000000
--- a/libbb/mk_loop_h.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-#
-# Figure out (i) the type of dev_t (ii) the defines for loop stuff
-#
-# Output of this script is normally redirected to "loop.h".
-
-# Since 1.3.79 there is an include file <asm/posix_types.h>
-# that defines __kernel_dev_t.
-# (The file itself appeared in 1.3.78, but there it defined __dev_t.)
-# If it exists, we use it, or, rather, <linux/posix_types.h> which
-# avoids namespace pollution. Otherwise we guess that __kernel_dev_t
-# is an unsigned short (which is true on i386, but false on alpha).
-
-# BUG: This test is actually broken if your gcc is not configured to
-# search /usr/include, as may well happen with cross-compilers.
-# It would be better to ask $(CC) if these files can be found.
-
-if [ -f /usr/include/linux/posix_types.h ]; then
- echo '#include <linux/posix_types.h>'
- echo '#undef dev_t'
- echo '#define dev_t __kernel_dev_t'
-else
- echo '#undef dev_t'
- echo '#define dev_t unsigned short'
-fi
-
-# Next we have to find the loop stuff itself.
-# First try kernel source, then a private version.
-
-if [ -f /usr/include/linux/loop.h ]; then
- echo '#include <linux/loop.h>'
-else
- echo '#include "real_loop.h"'
-fi
-
-echo '#undef dev_t'
-
diff --git a/libbb/real_loop.h b/libbb/real_loop.h
deleted file mode 100644
index 1bd7fa8..0000000
--- a/libbb/real_loop.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * include/linux/loop.h
- *
- * Written by Theodore Ts'o, 3/29/93.
- *
- * Copyright 1993 by Theodore Ts'o. Redistribution of this file is
- * permitted under the GNU Public License.
- */
-
-#define LO_NAME_SIZE 64
-#define LO_KEY_SIZE 32
-
-struct loop_info {
- int lo_number; /* ioctl r/o */
- dev_t lo_device; /* ioctl r/o */
- unsigned long lo_inode; /* ioctl r/o */
- dev_t lo_rdevice; /* ioctl r/o */
- int lo_offset;
- int lo_encrypt_type;
- int lo_encrypt_key_size; /* ioctl w/o */
- int lo_flags; /* ioctl r/o */
- char lo_name[LO_NAME_SIZE];
- unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
- unsigned long lo_init[2];
- char reserved[4];
-};
-
-#define LO_CRYPT_NONE 0
-#define LO_CRYPT_XOR 1
-#define LO_CRYPT_DES 2
-#define LO_CRYPT_IDEA 3
-#define MAX_LO_CRYPT 4
-
-#define LOOP_SET_FD 0x4C00
-#define LOOP_CLR_FD 0x4C01
-#define LOOP_SET_STATUS 0x4C02
-#define LOOP_GET_STATUS 0x4C03