diff --git a/mount.c b/mount.c index 01e9b3d67..72734ae62 100644 --- a/mount.c +++ b/mount.c @@ -43,27 +43,41 @@ #include #include #include -#include #include #if defined BB_FEATURE_USE_DEVPS_PATCH #include #endif -/* 2.0.x. kernels don't know about MS_NODIRATIME */ -#ifndef MS_NODIRATIME + +#define MS_MGC_VAL 0xc0ed0000 /* Magic number indicatng "new" flags */ +#define MS_RDONLY 1 /* Mount read-only */ +#define MS_NOSUID 2 /* Ignore suid and sgid bits */ +#define MS_NODEV 4 /* Disallow access to device special files */ +#define MS_NOEXEC 8 /* Disallow program execution */ +#define MS_SYNCHRONOUS 16 /* Writes are synced at once */ +#define MS_REMOUNT 32 /* Alter flags of a mounted FS */ +#define MS_MANDLOCK 64 /* Allow mandatory locks on an FS */ +#define S_QUOTA 128 /* Quota initialized for file/directory/symlink */ +#define S_APPEND 256 /* Append-only file */ +#define S_IMMUTABLE 512 /* Immutable file */ +#define MS_NOATIME 1024 /* Do not update access times. */ #define MS_NODIRATIME 2048 /* Do not update directory access times */ -#endif #if defined BB_FEATURE_MOUNT_LOOP #include #include - - static int use_loop = FALSE; #endif +extern int mount (__const char *__special_file, __const char *__dir, + __const char *__fstype, unsigned long int __rwflag, + __const void *__data); +extern int umount (__const char *__special_file); +extern int umount2 (__const char *__special_file, int __flags); + + extern const char mtab_file[]; /* Defined in utility.c */ static const char mount_usage[] = diff --git a/umount.c b/umount.c index 4f6edc2e5..fc9b466c6 100644 --- a/umount.c +++ b/umount.c @@ -26,31 +26,18 @@ #include #include #include -#include -#ifndef MNT_FORCE #define MNT_FORCE 1 -#endif -#ifndef MS_MGC_VAL #define MS_MGC_VAL 0xc0ed0000 /* Magic number indicatng "new" flags */ -#endif -#ifndef MS_REMOUNT #define MS_REMOUNT 32 /* Alter flags of a mounted FS. */ -#endif -#ifndef MS_RDONLY #define MS_RDONLY 1 /* Mount read-only. */ -#endif -#ifndef __NR_umount2 -#define __NR_umount2 52 -#endif -/* Include our own version of , since libc5 doesn't - * know about umount2 */ -static _syscall1(int, umount, const char *, special_file); -static _syscall2(int, umount2, const char *, special_file, int, flags); -static _syscall5(int, mount, const char *, special_file, const char *, dir, - const char *, fstype, unsigned long int, rwflag, const void *, data); +extern int mount (__const char *__special_file, __const char *__dir, + __const char *__fstype, unsigned long int __rwflag, + __const void *__data); +extern int umount (__const char *__special_file); +extern int umount2 (__const char *__special_file, int __flags); diff --git a/util-linux/mount.c b/util-linux/mount.c index 01e9b3d67..72734ae62 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -43,27 +43,41 @@ #include #include #include -#include #include #if defined BB_FEATURE_USE_DEVPS_PATCH #include #endif -/* 2.0.x. kernels don't know about MS_NODIRATIME */ -#ifndef MS_NODIRATIME + +#define MS_MGC_VAL 0xc0ed0000 /* Magic number indicatng "new" flags */ +#define MS_RDONLY 1 /* Mount read-only */ +#define MS_NOSUID 2 /* Ignore suid and sgid bits */ +#define MS_NODEV 4 /* Disallow access to device special files */ +#define MS_NOEXEC 8 /* Disallow program execution */ +#define MS_SYNCHRONOUS 16 /* Writes are synced at once */ +#define MS_REMOUNT 32 /* Alter flags of a mounted FS */ +#define MS_MANDLOCK 64 /* Allow mandatory locks on an FS */ +#define S_QUOTA 128 /* Quota initialized for file/directory/symlink */ +#define S_APPEND 256 /* Append-only file */ +#define S_IMMUTABLE 512 /* Immutable file */ +#define MS_NOATIME 1024 /* Do not update access times. */ #define MS_NODIRATIME 2048 /* Do not update directory access times */ -#endif #if defined BB_FEATURE_MOUNT_LOOP #include #include - - static int use_loop = FALSE; #endif +extern int mount (__const char *__special_file, __const char *__dir, + __const char *__fstype, unsigned long int __rwflag, + __const void *__data); +extern int umount (__const char *__special_file); +extern int umount2 (__const char *__special_file, int __flags); + + extern const char mtab_file[]; /* Defined in utility.c */ static const char mount_usage[] = diff --git a/util-linux/umount.c b/util-linux/umount.c index 4f6edc2e5..fc9b466c6 100644 --- a/util-linux/umount.c +++ b/util-linux/umount.c @@ -26,31 +26,18 @@ #include #include #include -#include -#ifndef MNT_FORCE #define MNT_FORCE 1 -#endif -#ifndef MS_MGC_VAL #define MS_MGC_VAL 0xc0ed0000 /* Magic number indicatng "new" flags */ -#endif -#ifndef MS_REMOUNT #define MS_REMOUNT 32 /* Alter flags of a mounted FS. */ -#endif -#ifndef MS_RDONLY #define MS_RDONLY 1 /* Mount read-only. */ -#endif -#ifndef __NR_umount2 -#define __NR_umount2 52 -#endif -/* Include our own version of , since libc5 doesn't - * know about umount2 */ -static _syscall1(int, umount, const char *, special_file); -static _syscall2(int, umount2, const char *, special_file, int, flags); -static _syscall5(int, mount, const char *, special_file, const char *, dir, - const char *, fstype, unsigned long int, rwflag, const void *, data); +extern int mount (__const char *__special_file, __const char *__dir, + __const char *__fstype, unsigned long int __rwflag, + __const void *__data); +extern int umount (__const char *__special_file); +extern int umount2 (__const char *__special_file, int __flags); diff --git a/utility.c b/utility.c index 271b101ec..3dedc2c71 100644 --- a/utility.c +++ b/utility.c @@ -80,7 +80,6 @@ const char mtab_file[] = "/dev/mtab"; # endif #endif - extern void usage(const char *usage) { fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n\n", @@ -139,6 +138,22 @@ extern int get_kernel_revision(void) _syscall1(int, sysinfo, struct sysinfo *, info); #endif /* BB_INIT */ +#if defined BB_MOUNT || defined BB_UMOUNT +#include +#include + +#ifndef __NR_umount2 +#define __NR_umount2 52 +#endif + +/* Include our own version of , since libc5 doesn't + * know about umount2 */ +extern _syscall1(int, umount, const char *, special_file); +extern _syscall2(int, umount2, const char *, special_file, int, flags); +extern _syscall5(int, mount, const char *, special_file, const char *, dir, + const char *, fstype, unsigned long int, rwflag, const void *, data); +#endif + #if defined (BB_CP_MV) || defined (BB_DU)