From 9b1b62adc4e4c1e80d9f72180c6b7b1eaef9f95a Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 5 Jul 2009 03:34:12 +0200 Subject: 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 --- libbb/bb_askpass.c | 3 +++ libbb/loop.c | 39 +++++++++++++++++++++++---------------- 2 files changed, 26 insertions(+), 16 deletions(-) (limited to 'libbb') diff --git a/libbb/bb_askpass.c b/libbb/bb_askpass.c index c0dcf0c5f..073175c1f 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 7d2b420be..24dab1ac0 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 + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) -#include + +/* 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 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 -#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 +# 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; -- cgit v1.2.3