diff -Naur busybox-1.13.3.orig/include/platform.h busybox-1.13.3/include/platform.h --- busybox-1.13.3.orig/include/platform.h 2009-06-03 02:24:03.000000000 +0200 +++ busybox-1.13.3/include/platform.h 2009-06-03 02:18:00.000000000 +0200 @@ -361,6 +361,28 @@ #if !defined(BLKGETSIZE64) #define BLKGETSIZE64 _IOR(0x12,114,size_t) #endif + +#elif defined(__FreeBSD_kernel__) +#include +#define MS_NOSUID MNT_NOSUID +#define MS_NOEXEC MNT_NOEXEC +#define MS_SYNCHRONOUS MNT_SYNCHRONOUS +#define MS_NOATIME MNT_NOATIME +#define MS_RDONLY MNT_RDONLY +#define MS_NODEV 0 +#define MS_DIRSYNC 0 +#define MS_NODIRATIME 0 +#define MS_MANDLOCK 0 +#define MS_RELATIME 0 +#define MS_SILENT 0 +#define MS_BIND 0 +#define MS_MOVE 0 +#define MS_SHARED 0 +#define MS_SLAVE 0 +#define MS_PRIVATE 0 +#define MS_UNBINDABLE 0 +#define MS_RECURSIVE 0 +#define MS_REMOUNT 0 #endif /* TIOCGSERIAL, CBAUD and CBAUDEX are Linux specific. */ diff -Naur busybox-1.13.3.orig/util-linux/mount.c busybox-1.13.3/util-linux/mount.c --- busybox-1.13.3.orig/util-linux/mount.c 2009-02-26 12:47:43.000000000 +0100 +++ busybox-1.13.3/util-linux/mount.c 2009-06-03 02:12:39.000000000 +0200 @@ -34,6 +34,7 @@ #include #include +#if defined(__linux__) #ifndef MS_SILENT #define MS_SILENT (1 << 15) #endif @@ -41,6 +42,7 @@ #ifndef MS_DIRSYNC #define MS_DIRSYNC 128 /* Directory modifications are synchronous */ #endif +#endif #if defined(__dietlibc__) @@ -254,8 +256,52 @@ return rc; } #else +#if defined(__FreeBSD_kernel__) +static void +build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, + size_t len) +{ + int i; + + if (*iovlen < 0) + return; + i = *iovlen; + *iov = realloc(*iov, sizeof **iov * (i + 2)); + if (*iov == NULL) { + *iovlen = -1; + return; + } + (*iov)[i].iov_base = strdup(name); + (*iov)[i].iov_len = strlen(name) + 1; + i++; + (*iov)[i].iov_base = val; + if (len == (size_t)-1) { + if (val != NULL) + len = strlen(val) + 1; + else + len = 0; + } + (*iov)[i].iov_len = (int)len; + *iovlen = ++i; +} + +int verbose_mount(const char *source, const char *target, + const char *filesystemtype, + unsigned long mountflags, const void *data) +{ + struct iovec *iov = NULL; + int iovlen = 0; + + build_iovec(&iov, &iovlen, "fstype", filesystemtype, (size_t)-1); + build_iovec(&iov, &iovlen, "fspath", target, (size_t)-1); + build_iovec(&iov, &iovlen, "from", source, (size_t)-1); + + return nmount(iov, iovlen, mountflags); +} +#else #define verbose_mount(...) mount(__VA_ARGS__) #endif +#endif static int resolve_mount_spec(char **fsname) {