Use tab not space
[oweals/busybox.git] / util-linux / mount.c
index d020056004916a9d2c71603b15c96cb40c6a4df2..35fd3032375330c27fb4ca0ba24968b62b7838f4 100644 (file)
@@ -3,7 +3,7 @@
  * Mini mount implementation for busybox
  *
  * Copyright (C) 1995, 1996 by Bruce Perens <bruce@pixar.com>.
- * Copyright (C) 1999-2002 by Erik Andersen <andersee@debian.org>
+ * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  *
  * 1999-04-17  Dave Cinege...Rewrote -t auto. Fixed ro mtab.
  *
- * 1999-10-07  Erik Andersen <andersee@debian.org>.
+ * 1999-10-07  Erik Andersen <andersen@codepoet.org>.
  *              Rewrite of a lot of code. Removed mtab usage (I plan on
- *              putting it back as a compile-time option some time), 
- *              major adjustments to option parsing, and some serious 
+ *              putting it back as a compile-time option some time),
+ *              major adjustments to option parsing, and some serious
  *              dieting all around.
  *
- * 1999-11-06  mtab suppport is back - andersee
+ * 1999-11-06  mtab support is back - andersee
  *
  * 2000-01-12   Ben Collins <bcollins@debian.org>, Borrowed utils-linux's
  *              mount to add loop support.
@@ -40,8 +40,8 @@
  *             Rewrote fstab while loop and lower mount section. Can now do
  *             single mounts from fstab. Can override fstab options for single
  *             mount. Common mount_one call for single mounts and 'all'. Fixed
- *             mtab updating and stale entries. Removed 'remount' default. 
- *     
+ *             mtab updating and stale entries. Removed 'remount' default.
+ *
  */
 
 #include <limits.h>
 #include <ctype.h>
 #include "busybox.h"
 
+#ifdef CONFIG_NFSMOUNT
+#if defined(__UCLIBC__) && ! defined(__UCLIBC_HAS_RPC__)
+#error "You need to build uClibc with UCLIBC_HAS_RPC for busybox mount with NFS support to compile."
+#endif
+#endif
+
 enum {
        MS_MGC_VAL = 0xc0ed0000,        /* Magic number indicatng "new" flags */
        MS_RDONLY = 1,          /* Mount read-only */
@@ -267,8 +273,7 @@ static int mount_one(char *blockDevice, char *directory, char *filesystemType,
                                        filesystemType = buf;
 
                                        if (bb_strlen(filesystemType)) {
-                                               status =
-                                                       do_mount(blockDevice, directory, filesystemType,
+                                               status = do_mount(blockDevice, directory, filesystemType,
                                                                         flags | MS_MGC_VAL, string_flags,
                                                                         useMtab, fakeIt, mtab_opts, mount_all);
                                                if (status) {
@@ -279,9 +284,12 @@ static int mount_one(char *blockDevice, char *directory, char *filesystemType,
                                }
                        }
                        fclose(f);
+               } else {
+                       read_proc = 1;
                }
 
-               if ((!f || read_proc) && !status) {
+               if (read_proc && !status) {
+
                        f = bb_xfopen("/proc/filesystems", "r");
 
                        while (fgets(buf, sizeof(buf), f) != NULL) {
@@ -297,8 +305,7 @@ static int mount_one(char *blockDevice, char *directory, char *filesystemType,
                                        filesystemType = buf;
                                        filesystemType++;       /* hop past tab */
 
-                                       status =
-                                               do_mount(blockDevice, directory, filesystemType,
+                                       status = do_mount(blockDevice, directory, filesystemType,
                                                                 flags | MS_MGC_VAL, string_flags, useMtab,
                                                                 fakeIt, mtab_opts, mount_all);
                                        if (status) {
@@ -306,11 +313,10 @@ static int mount_one(char *blockDevice, char *directory, char *filesystemType,
                                        }
                                }
                        }
+                       fclose(f);
                }
-               fclose(f);
        } else {
-               status =
-                       do_mount(blockDevice, directory, filesystemType,
+               status = do_mount(blockDevice, directory, filesystemType,
                                         flags | MS_MGC_VAL, string_flags, useMtab, fakeIt,
                                         mtab_opts, mount_all);
        }
@@ -334,7 +340,9 @@ static void show_mounts(char *onlytype)
                while ((m = getmntent(mountTable)) != 0) {
                        char *blockDevice = m->mnt_fsname;
 
-                       if (strcmp(blockDevice, "/dev/root") == 0) {
+                       if (strcmp(blockDevice, "rootfs") == 0) {
+                               continue;
+                       } else if (strcmp(blockDevice, "/dev/root") == 0) {
                                blockDevice = find_real_root_device_name(blockDevice);
                        }
                        if (!onlytype || (strcmp(m->mnt_type, onlytype) == 0)) {
@@ -394,11 +402,11 @@ extern int mount_main(int argc, char **argv)
                case 'f':
                        fakeIt = TRUE;
                        break;
-#ifdef CONFIG_FEATURE_MTAB_SUPPORT
                case 'n':
+#ifdef CONFIG_FEATURE_MTAB_SUPPORT
                        useMtab = FALSE;
-                       break;
 #endif
+                       break;
                case 'v':
                        break;          /* ignore -v */
                }