diff options
-rw-r--r-- | libbb/Makefile.in | 6 | ||||
-rw-r--r-- | libbb/loop.c | 35 | ||||
-rwxr-xr-x | libbb/mk_loop_h.sh | 37 | ||||
-rw-r--r-- | libbb/real_loop.h | 37 |
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 |