diff options
Diffstat (limited to 'libbb/loop.c')
-rw-r--r-- | libbb/loop.c | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/libbb/loop.c b/libbb/loop.c index 7d2b420..24dab1a 100644 --- a/libbb/loop.c +++ b/libbb/loop.c @@ -7,27 +7,35 @@ * * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. */ - #include "libbb.h" - -/* For 2.6, use the cleaned up header to get the 64 bit API. */ #include <linux/version.h> + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) -#include <linux/loop.h> + +/* For 2.6, use the cleaned up header to get the 64 bit API. */ +/* linux/loop.h relies on __u64. Make sure we have that as a proper type + * until userspace is widely fixed. */ +# if (defined __INTEL_COMPILER && !defined __GNUC__) \ + || (defined __GNUC__ && defined __STRICT_ANSI__) +__extension__ typedef long long __s64; +__extension__ typedef unsigned long long __u64; +# endif +# include <linux/loop.h> typedef struct loop_info64 bb_loop_info; -#define BB_LOOP_SET_STATUS LOOP_SET_STATUS64 -#define BB_LOOP_GET_STATUS LOOP_GET_STATUS64 +# define BB_LOOP_SET_STATUS LOOP_SET_STATUS64 +# define BB_LOOP_GET_STATUS LOOP_GET_STATUS64 -/* For 2.4 and earlier, use the 32 bit API (and don't trust the headers) */ #else -/* Stuff stolen from linux/loop.h for 2.4 and earlier kernels*/ -#include <linux/posix_types.h> -#define LO_NAME_SIZE 64 -#define LO_KEY_SIZE 32 -#define LOOP_SET_FD 0x4C00 -#define LOOP_CLR_FD 0x4C01 -#define BB_LOOP_SET_STATUS 0x4C02 -#define BB_LOOP_GET_STATUS 0x4C03 + +/* For 2.4 and earlier, use the 32 bit API (and don't trust the headers) */ +/* Stuff stolen from linux/loop.h for 2.4 and earlier kernels */ +# include <linux/posix_types.h> +# define LO_NAME_SIZE 64 +# define LO_KEY_SIZE 32 +# define LOOP_SET_FD 0x4C00 +# define LOOP_CLR_FD 0x4C01 +# define BB_LOOP_SET_STATUS 0x4C02 +# define BB_LOOP_GET_STATUS 0x4C03 typedef struct { int lo_number; __kernel_dev_t lo_device; @@ -60,7 +68,6 @@ char* FAST_FUNC query_loop(const char *device) return dev; } - int FAST_FUNC del_loop(const char *device) { int fd, rc; |