summaryrefslogtreecommitdiff
path: root/util-linux/mount.c
diff options
context:
space:
mode:
authorRobert Griebl2002-07-25 14:17:19 +0000
committerRobert Griebl2002-07-25 14:17:19 +0000
commitd0dd3d31e282b9aafaf499e4378cc2f691fea30a (patch)
tree09a40d61d5a3b5733aba2ee235e9c82af85d8449 /util-linux/mount.c
parent2a4a8d8ffb67407d4701e3501ec680e9a26f99f6 (diff)
downloadbusybox-d0dd3d31e282b9aafaf499e4378cc2f691fea30a.zip
busybox-d0dd3d31e282b9aafaf499e4378cc2f691fea30a.tar.gz
Fix for bug #1255 -- support for mount -t <type>
Diffstat (limited to 'util-linux/mount.c')
-rw-r--r--util-linux/mount.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c
index f6c6472..df6b3a8 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -347,7 +347,7 @@ mount_one(char *blockDevice, char *directory, char *filesystemType,
return (TRUE);
}
-static void show_mounts(void)
+static void show_mounts(char *onlytype)
{
#if defined CONFIG_FEATURE_USE_DEVPS_PATCH
int fd, i, numfilesystems;
@@ -371,10 +371,12 @@ static void show_mounts(void)
perror_msg_and_die( "\nDEVMTAB_GET_MOUNTS");
for( i = 0 ; i < numfilesystems ; i++) {
- printf( "%s %s %s %s %d %d\n", mntentlist[i].mnt_fsname,
- mntentlist[i].mnt_dir, mntentlist[i].mnt_type,
- mntentlist[i].mnt_opts, mntentlist[i].mnt_freq,
- mntentlist[i].mnt_passno);
+ if ( !onlytype || ( strcmp ( mntentlist[i].mnt_type, onlytype ) == 0 )) {
+ printf( "%s %s %s %s %d %d\n", mntentlist[i].mnt_fsname,
+ mntentlist[i].mnt_dir, mntentlist[i].mnt_type,
+ mntentlist[i].mnt_opts, mntentlist[i].mnt_freq,
+ mntentlist[i].mnt_passno);
+ }
}
#ifdef CONFIG_FEATURE_CLEAN_UP
/* Don't bother to close files or free memory. Exit
@@ -394,8 +396,10 @@ static void show_mounts(void)
if (strcmp(blockDevice, "/dev/root") == 0) {
blockDevice = find_real_root_device_name(blockDevice);
}
- printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir,
- m->mnt_type, m->mnt_opts);
+ if ( !onlytype || ( strcmp ( m-> mnt_type, onlytype ) == 0 )) {
+ printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir,
+ m->mnt_type, m->mnt_opts);
+ }
#ifdef CONFIG_FEATURE_CLEAN_UP
if(blockDevice != m->mnt_fsname)
free(blockDevice);
@@ -416,6 +420,7 @@ extern int mount_main(int argc, char **argv)
char *extra_opts;
int flags = 0;
char *filesystemType = "auto";
+ int got_filesystemType = 0;
char *device = xmalloc(PATH_MAX);
char *directory = xmalloc(PATH_MAX);
struct mntent *m = NULL;
@@ -437,6 +442,7 @@ extern int mount_main(int argc, char **argv)
break;
case 't':
filesystemType = optarg;
+ got_filesystemType = 1;
break;
case 'w':
flags &= ~MS_RDONLY;
@@ -458,7 +464,7 @@ extern int mount_main(int argc, char **argv)
}
if (!all && optind == argc)
- show_mounts();
+ show_mounts(got_filesystemType ? filesystemType : 0);
if (optind < argc) {
/* if device is a filename get its real path */