summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2009-08-07 14:29:07 -0400
committerSteve Dickson <steved@redhat.com>2009-08-16 16:53:53 -0400
commit9082582d6675e45067838805a65b6fcc07164557 (patch)
tree334623dc651259d2989a6bc55c4277e6af9e9629 /utils
parent0cdb36e69a51eabc119de314e43d40daf6ee49ab (diff)
downloadnfs-utils-9082582d6675e45067838805a65b6fcc07164557.tar.gz
nfs-utils-9082582d6675e45067838805a65b6fcc07164557.tar.xz
nfs-utils-9082582d6675e45067838805a65b6fcc07164557.zip
Added hooks to the mount command that allow
mount options to be set in a configuration file Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'utils')
-rw-r--r--utils/mount/Makefile.am3
-rw-r--r--utils/mount/mount.c7
-rw-r--r--utils/mount/mount_config.h47
3 files changed, 56 insertions, 1 deletions
diff --git a/utils/mount/Makefile.am b/utils/mount/Makefile.am
index a1b56ca..db7778f 100644
--- a/utils/mount/Makefile.am
+++ b/utils/mount/Makefile.am
@@ -15,7 +15,8 @@ mount_nfs_SOURCES = mount.c error.c network.c fstab.c token.c \
nfsumount.c \
mount_constants.h error.h network.h fstab.h token.h \
parse_opt.h parse_dev.h \
- nfs4_mount.h nfs_mount4.h stropts.h version.h
+ nfs4_mount.h nfs_mount4.h stropts.h version.h \
+ mount_config.h
if MOUNT_CONFIG
mount_nfs_SOURCES += configfile.c
diff --git a/utils/mount/mount.c b/utils/mount/mount.c
index a668cd9..909fedf 100644
--- a/utils/mount/mount.c
+++ b/utils/mount/mount.c
@@ -37,6 +37,7 @@
#include "xcommon.h"
#include "nls.h"
#include "mount_constants.h"
+#include "mount_config.h"
#include "nfs_paths.h"
#include "nfs_mntent.h"
@@ -474,6 +475,8 @@ int main(int argc, char *argv[])
spec = argv[1];
mount_point = argv[2];
+ mount_config_init();
+
argv[2] = argv[0]; /* so that getopt error messages are correct */
while ((c = getopt_long(argc - 2, argv + 2, "rvVwfno:hs",
longopts, NULL)) != -1) {
@@ -559,6 +562,10 @@ int main(int argc, char *argv[])
mnt_err = EX_USAGE;
goto out;
}
+ /*
+ * Concatenate mount options from the configuration file
+ */
+ mount_opts = mount_config_opts(spec, mount_point, mount_opts);
parse_opts(mount_opts, &flags, &extra_opts);
diff --git a/utils/mount/mount_config.h b/utils/mount/mount_config.h
new file mode 100644
index 0000000..2af9f9d
--- /dev/null
+++ b/utils/mount/mount_config.h
@@ -0,0 +1,47 @@
+#ifndef _LINUX_MOUNT__CONFIG_H
+#define _LINUX_MOUNT_CONFIG__H
+/*
+ * mount_config.h -- mount configuration file routines
+ * Copyright (C) 2008 Red Hat, Inc <nfs@redhat.com>
+ *
+ * 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
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+inline void mount_config_init(void);
+
+#ifdef MOUNT_CONFIG
+#include "conffile.h"
+extern char *conf_get_mntopts(char *, char *, char *);
+
+inline void mount_config_init()
+{
+ /*
+ * Read the the default mount options
+ */
+ conf_init();
+}
+inline char *mount_config_opts(char *spec,
+ char *mount_point, char *mount_opts)
+{
+ return conf_get_mntopts(spec, mount_point, mount_opts);
+}
+#else /* MOUNT_CONFIG */
+
+inline void mount_config_init() { }
+
+inline char *mount_config_opts(char *spec,
+ char *mount_point, char *mount_opts)
+{
+ return mount_opts;
+}
+#endif /* MOUNT_CONFIG */
+#endif