mount: with -vv -f, say what mount() calls we were going to make

782357     728    7476  790561   c1021 busybox_old
 782429     728    7476  790633   c1069 busybox_unstripped
This commit is contained in:
Denis Vlasenko 2008-02-18 13:05:38 +00:00
parent f732e96757
commit b4133683a4

View File

@ -216,7 +216,11 @@ struct globals {
}; };
#define G (*(struct globals*)&bb_common_bufsiz1) #define G (*(struct globals*)&bb_common_bufsiz1)
#define nfs_mount_version (G.nfs_mount_version) #define nfs_mount_version (G.nfs_mount_version)
#if ENABLE_FEATURE_MOUNT_VERBOSE
#define verbose (G.verbose ) #define verbose (G.verbose )
#else
#define verbose 0
#endif
#define fslist (G.fslist ) #define fslist (G.fslist )
#define getmntent_buf (G.getmntent_buf ) #define getmntent_buf (G.getmntent_buf )
@ -231,9 +235,10 @@ static int verbose_mount(const char *source, const char *target,
errno = 0; errno = 0;
rc = mount(source, target, filesystemtype, mountflags, data); rc = mount(source, target, filesystemtype, mountflags, data);
if (verbose >= 2) if (verbose >= 2)
bb_perror_msg("mount('%s','%s','%s',0x%08lx,'%s'):%d", bb_perror_msg("would do mount('%s','%s','%s',0x%08lx,'%s'):%d"
source, target, filesystemtype, + (sizeof("would do ")-1),
mountflags, (char*)data, rc); source, target, filesystemtype,
mountflags, (char*)data, rc);
return rc; return rc;
} }
#else #else
@ -274,9 +279,9 @@ static void append_mount_options(char **oldopts, const char *newopts)
/* Use the mount_options list to parse options into flags. /* Use the mount_options list to parse options into flags.
* Also return list of unrecognized options if unrecognized!=NULL */ * Also return list of unrecognized options if unrecognized!=NULL */
static int parse_mount_options(char *options, char **unrecognized) static long parse_mount_options(char *options, char **unrecognized)
{ {
int flags = MS_SILENT; long flags = MS_SILENT;
// Loop through options // Loop through options
for (;;) { for (;;) {
@ -360,11 +365,17 @@ void delete_block_backed_filesystems(void);
// Perform actual mount of specific filesystem at specific location. // Perform actual mount of specific filesystem at specific location.
// NB: mp->xxx fields may be trashed on exit // NB: mp->xxx fields may be trashed on exit
static int mount_it_now(struct mntent *mp, int vfsflags, char *filteropts) static int mount_it_now(struct mntent *mp, long vfsflags, char *filteropts)
{ {
int rc = 0; int rc = 0;
if (fakeIt) goto mtab; if (fakeIt) {
if (verbose >= 2)
bb_error_msg("would do mount('%s','%s','%s',0x%08lx,'%s')",
mp->mnt_fsname, mp->mnt_dir, mp->mnt_type,
vfsflags, filteropts);
goto mtab;
}
// Mount, with fallback to read-only if necessary. // Mount, with fallback to read-only if necessary.
for (;;) { for (;;) {
@ -898,7 +909,7 @@ static void error_msg_rpc(const char *msg)
} }
// NB: mp->xxx fields may be trashed on exit // NB: mp->xxx fields may be trashed on exit
static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts) static int nfsmount(struct mntent *mp, long vfsflags, char *filteropts)
{ {
CLIENT *mclient; CLIENT *mclient;
char *hostname; char *hostname;
@ -1507,7 +1518,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts)
#else /* !ENABLE_FEATURE_MOUNT_NFS */ #else /* !ENABLE_FEATURE_MOUNT_NFS */
/* Never called. Call should be optimized out. */ /* Never called. Call should be optimized out. */
int nfsmount(struct mntent *mp, int vfsflags, char *filteropts); int nfsmount(struct mntent *mp, long vfsflags, char *filteropts);
#endif /* !ENABLE_FEATURE_MOUNT_NFS */ #endif /* !ENABLE_FEATURE_MOUNT_NFS */
@ -1516,7 +1527,8 @@ int nfsmount(struct mntent *mp, int vfsflags, char *filteropts);
// NB: mp->xxx fields may be trashed on exit // NB: mp->xxx fields may be trashed on exit
static int singlemount(struct mntent *mp, int ignore_busy) static int singlemount(struct mntent *mp, int ignore_busy)
{ {
int rc = -1, vfsflags; int rc = -1;
long vfsflags;
char *loopFile = 0, *filteropts = 0; char *loopFile = 0, *filteropts = 0;
llist_t *fl = 0; llist_t *fl = 0;
struct stat st; struct stat st;
@ -1702,9 +1714,8 @@ int mount_main(int argc, char **argv)
unsigned opt; unsigned opt;
struct mntent mtpair[2], *mtcur = mtpair; struct mntent mtpair[2], *mtcur = mtpair;
SKIP_DESKTOP(const int nonroot = 0;) SKIP_DESKTOP(const int nonroot = 0;)
USE_DESKTOP( int nonroot = (getuid() != 0);)
sanitize_env_if_suid(); USE_DESKTOP( int nonroot = ) sanitize_env_if_suid();
// Parse long options, like --bind and --move. Note that -o option // Parse long options, like --bind and --move. Note that -o option
// and --option are synonymous. Yes, this means --remount,rw works. // and --option are synonymous. Yes, this means --remount,rw works.
@ -1774,7 +1785,7 @@ int mount_main(int argc, char **argv)
goto clean_up; goto clean_up;
} }
i = parse_mount_options(cmdopts, 0); i = parse_mount_options(cmdopts, 0); // FIXME: should be "long", not "int"
if (nonroot && (i & ~MS_SILENT)) // Non-root users cannot specify flags if (nonroot && (i & ~MS_SILENT)) // Non-root users cannot specify flags
bb_error_msg_and_die(must_be_root); bb_error_msg_and_die(must_be_root);