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>
This commit is contained in:
Denys Vlasenko
2009-07-05 03:34:12 +02:00
parent b22bbfffec
commit 9b1b62adc4
10 changed files with 72 additions and 53 deletions

View File

@ -7,27 +7,35 @@
*
* Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
*/
#include "libbb.h"
#include <linux/version.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
/* 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>
/* 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
#else
/* 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
/* 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;