More portable handling of loop header files, as done in util-linux
This commit is contained in:
parent
8847b9a03a
commit
624cc771da
21
Makefile
21
Makefile
@ -42,7 +42,7 @@ DODMALLOC = false
|
|||||||
|
|
||||||
# If you are running a cross compiler, you may want to set this
|
# If you are running a cross compiler, you may want to set this
|
||||||
# to something more interesting...
|
# to something more interesting...
|
||||||
CROSS =
|
CROSS = #powerpc-linux-
|
||||||
CC = $(CROSS)gcc
|
CC = $(CROSS)gcc
|
||||||
STRIPTOOL = $(CROSS)strip
|
STRIPTOOL = $(CROSS)strip
|
||||||
|
|
||||||
@ -83,12 +83,13 @@ else
|
|||||||
ifeq ($(DOSTATIC),true)
|
ifeq ($(DOSTATIC),true)
|
||||||
LDFLAGS += --static
|
LDFLAGS += --static
|
||||||
#
|
#
|
||||||
#use '-ffunction-sections -fdata-sections' and '--gc-sections' if they work
|
#use '-ffunction-sections -fdata-sections' and '--gc-sections' (if they
|
||||||
#to try and strip out any unused junk. Doesn't do much for me, but you may
|
# work) to try and strip out any unused junk. Doesn't do much for me,
|
||||||
#want to give it a shot...
|
# but you may want to give it a shot...
|
||||||
#
|
#
|
||||||
#ifeq ($(shell $(CC) -ffunction-sections -fdata-sections -S \
|
#ifeq ($(shell $(CC) -ffunction-sections -fdata-sections -S \
|
||||||
# -o /dev/null -xc /dev/null 2>/dev/null && $(LD) --gc-sections -v >/dev/null && echo 1),1)
|
# -o /dev/null -xc /dev/null 2>/dev/null && $(LD) \
|
||||||
|
# --gc-sections -v >/dev/null && echo 1),1)
|
||||||
# CFLAGS += -ffunction-sections -fdata-sections
|
# CFLAGS += -ffunction-sections -fdata-sections
|
||||||
# LDFLAGS += --gc-sections
|
# LDFLAGS += --gc-sections
|
||||||
#endif
|
#endif
|
||||||
@ -106,7 +107,8 @@ ifdef BB_INIT_SCRIPT
|
|||||||
CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
|
CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: busybox busybox.links doc
|
|
||||||
|
all: loop.h busybox busybox.links doc
|
||||||
|
|
||||||
doc: olddoc
|
doc: olddoc
|
||||||
|
|
||||||
@ -154,7 +156,7 @@ docs/busybox/busybox.html: docs/busybox.sgml
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
busybox: $(OBJECTS)
|
busybox: $(OBJECTS)
|
||||||
$(CC) $(LDFLAGS) -o $@ $^ $(LIBRARIES)
|
$(CC) $(LDFLAGS) -o $@ $^ $(LIBRARIES)
|
||||||
$(STRIP)
|
$(STRIP)
|
||||||
|
|
||||||
@ -164,6 +166,11 @@ busybox.links: busybox.def.h
|
|||||||
nfsmount.o cmdedit.o: %.o: %.h
|
nfsmount.o cmdedit.o: %.o: %.h
|
||||||
$(OBJECTS): %.o: busybox.def.h internal.h %.c Makefile
|
$(OBJECTS): %.o: busybox.def.h internal.h %.c Makefile
|
||||||
|
|
||||||
|
utility.o:
|
||||||
|
|
||||||
|
loop.h:
|
||||||
|
@./mk_loop_h.sh
|
||||||
|
|
||||||
test tests:
|
test tests:
|
||||||
cd tests && $(MAKE) all
|
cd tests && $(MAKE) all
|
||||||
|
|
||||||
|
34
libbb/mk_loop_h.sh
Executable file
34
libbb/mk_loop_h.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Figure out (i) the type of dev_t (ii) the defines for loop stuff
|
||||||
|
#
|
||||||
|
|
||||||
|
rm -f 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).
|
||||||
|
|
||||||
|
if [ -f /usr/include/linux/posix_types.h ]; then
|
||||||
|
echo '#include <linux/posix_types.h>' >> loop.h
|
||||||
|
echo '#undef dev_t' >> loop.h
|
||||||
|
echo '#define dev_t __kernel_dev_t' >> loop.h
|
||||||
|
else
|
||||||
|
echo '#undef dev_t' >> loop.h
|
||||||
|
echo '#define dev_t unsigned short' >> loop.h
|
||||||
|
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>' >> loop.h
|
||||||
|
else
|
||||||
|
echo '#include "real_loop.h"' >> loop.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo '#undef dev_t' >> loop.h
|
||||||
|
|
34
mk_loop_h.sh
Executable file
34
mk_loop_h.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Figure out (i) the type of dev_t (ii) the defines for loop stuff
|
||||||
|
#
|
||||||
|
|
||||||
|
rm -f 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).
|
||||||
|
|
||||||
|
if [ -f /usr/include/linux/posix_types.h ]; then
|
||||||
|
echo '#include <linux/posix_types.h>' >> loop.h
|
||||||
|
echo '#undef dev_t' >> loop.h
|
||||||
|
echo '#define dev_t __kernel_dev_t' >> loop.h
|
||||||
|
else
|
||||||
|
echo '#undef dev_t' >> loop.h
|
||||||
|
echo '#define dev_t unsigned short' >> loop.h
|
||||||
|
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>' >> loop.h
|
||||||
|
else
|
||||||
|
echo '#include "real_loop.h"' >> loop.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo '#undef dev_t' >> loop.h
|
||||||
|
|
37
real_loop.h
Normal file
37
real_loop.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
@ -53,11 +53,6 @@
|
|||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/utsname.h> /* for uname(2) */
|
#include <sys/utsname.h> /* for uname(2) */
|
||||||
|
|
||||||
#if defined BB_FEATURE_MOUNT_LOOP
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <linux/loop.h> /* Pull in loop device support */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Busybox mount uses either /proc/filesystems or /dev/mtab to get the
|
/* Busybox mount uses either /proc/filesystems or /dev/mtab to get the
|
||||||
* list of available filesystems used for the -t auto option */
|
* list of available filesystems used for the -t auto option */
|
||||||
#if defined BB_FEATURE_USE_PROCFS && defined BB_FEATURE_USE_DEVPS_PATCH
|
#if defined BB_FEATURE_USE_PROCFS && defined BB_FEATURE_USE_DEVPS_PATCH
|
||||||
@ -1459,7 +1454,11 @@ extern int vdprintf(int d, const char *format, va_list ap)
|
|||||||
}
|
}
|
||||||
#endif /* BB_SYSLOGD */
|
#endif /* BB_SYSLOGD */
|
||||||
|
|
||||||
|
|
||||||
#if defined BB_FEATURE_MOUNT_LOOP
|
#if defined BB_FEATURE_MOUNT_LOOP
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "loop.h" /* Pull in loop device support */
|
||||||
|
|
||||||
extern int del_loop(const char *device)
|
extern int del_loop(const char *device)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
Loading…
Reference in New Issue
Block a user