+static void parse_opts(const char *options, int *flags, char **extra_opts);
+
+/*
+ * Choose the version of the nfs_mount_data structure that is appropriate
+ * for the kernel that is doing the mount.
+ *
+ * NFS_MOUNT_VERSION: maximum version supported by these sources
+ * nfs_mount_data_version: maximum version supported by the running kernel
+ */
+static void discover_nfs_mount_data_version(void)
+{
+ int kernel_version = linux_version_code();
+
+ if (kernel_version) {
+ if (kernel_version < MAKE_VERSION(2, 1, 32))
+ nfs_mount_data_version = 1;
+ else if (kernel_version < MAKE_VERSION(2, 2, 18))
+ nfs_mount_data_version = 3;
+ else if (kernel_version < MAKE_VERSION(2, 3, 0))
+ nfs_mount_data_version = 4;
+ else if (kernel_version < MAKE_VERSION(2, 3, 99))
+ nfs_mount_data_version = 3;
+ else if (kernel_version < MAKE_VERSION(2, 6, 3))
+ nfs_mount_data_version = 4;
+ else
+ nfs_mount_data_version = 6;
+ }
+ if (nfs_mount_data_version > NFS_MOUNT_VERSION)
+ nfs_mount_data_version = NFS_MOUNT_VERSION;
+ else
+ if (kernel_version > MAKE_VERSION(2, 6, 22))
+ string++;
+}
+
+static void print_one(char *spec, char *node, char *type, char *opts)
+{
+ if (!verbose)
+ return;
+
+ if (opts)
+ printf(_("%s on %s type %s (%s)\n"), spec, node, type, opts);
+ else
+ printf(_("%s on %s type %s\n"), spec, node, type);
+}
+
+/*
+ * Build a canonical mount option string for /etc/mtab.
+ */
+static char *fix_opts_string(int flags, const char *extra_opts)
+{