summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mount.c26
-rw-r--r--umount.c23
-rw-r--r--util-linux/mount.c26
-rw-r--r--util-linux/umount.c23
-rw-r--r--utility.c17
5 files changed, 66 insertions, 49 deletions
diff --git a/mount.c b/mount.c
index 01e9b3d..72734ae 100644
--- a/mount.c
+++ b/mount.c
@@ -43,27 +43,41 @@
#include <string.h>
#include <stdio.h>
#include <mntent.h>
-#include <sys/mount.h>
#include <ctype.h>
#if defined BB_FEATURE_USE_DEVPS_PATCH
#include <linux/devmtab.h>
#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 <fcntl.h>
#include <sys/ioctl.h>
-
-
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 4f6edc2..fc9b466 100644
--- a/umount.c
+++ b/umount.c
@@ -26,31 +26,18 @@
#include <stdio.h>
#include <mntent.h>
#include <errno.h>
-#include <linux/unistd.h>
-#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 <sys/mount.h>, 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 01e9b3d..72734ae 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -43,27 +43,41 @@
#include <string.h>
#include <stdio.h>
#include <mntent.h>
-#include <sys/mount.h>
#include <ctype.h>
#if defined BB_FEATURE_USE_DEVPS_PATCH
#include <linux/devmtab.h>
#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 <fcntl.h>
#include <sys/ioctl.h>
-
-
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 4f6edc2..fc9b466 100644
--- a/util-linux/umount.c
+++ b/util-linux/umount.c
@@ -26,31 +26,18 @@
#include <stdio.h>
#include <mntent.h>
#include <errno.h>
-#include <linux/unistd.h>
-#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 <sys/mount.h>, 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 271b101..3dedc2c 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 <sys/syscall.h>
+#include <linux/unistd.h>
+
+#ifndef __NR_umount2
+#define __NR_umount2 52
+#endif
+
+/* Include our own version of <sys/mount.h>, 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)