diff options
author | Denys Vlasenko | 2009-07-05 03:34:12 +0200 |
---|---|---|
committer | Denys Vlasenko | 2009-07-05 03:34:12 +0200 |
commit | 9b1b62adc4e4c1e80d9f72180c6b7b1eaef9f95a (patch) | |
tree | 65a7b5ebb093903fd030aecda6ee204660d458d4 /libbb | |
parent | b22bbfffec182997827b0a71eeb93ddafbde602c (diff) | |
download | busybox-9b1b62adc4e4c1e80d9f72180c6b7b1eaef9f95a.zip busybox-9b1b62adc4e4c1e80d9f72180c6b7b1eaef9f95a.tar.gz |
Patches to enable FreeBSD build
platform.h: fix wrong check for endianness, fix lchown
aliasing to chown on uclibc.
Code seems to not be affected in my testing.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/bb_askpass.c | 3 | ||||
-rw-r--r-- | libbb/loop.c | 39 |
2 files changed, 26 insertions, 16 deletions
diff --git a/libbb/bb_askpass.c b/libbb/bb_askpass.c index c0dcf0c..073175c 100644 --- a/libbb/bb_askpass.c +++ b/libbb/bb_askpass.c @@ -37,6 +37,9 @@ char* FAST_FUNC bb_ask(const int fd, int timeout, const char *prompt) tcgetattr(fd, &oldtio); tcflush(fd, TCIFLUSH); tio = oldtio; +#ifndef IUCLC +# define IUCLC 0 +#endif tio.c_iflag &= ~(IUCLC|IXON|IXOFF|IXANY); tio.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|TOSTOP); tcsetattr_stdin_TCSANOW(&tio); 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; |