]> git.decadent.org.uk Git - nfs-utils.git/commitdiff
Added hooks to the mount command that allow
authorSteve Dickson <steved@redhat.com>
Fri, 7 Aug 2009 18:29:07 +0000 (14:29 -0400)
committerSteve Dickson <steved@redhat.com>
Sun, 16 Aug 2009 20:53:53 +0000 (16:53 -0400)
mount options to be set in a configuration file

Signed-off-by: Steve Dickson <steved@redhat.com>
utils/mount/Makefile.am
utils/mount/mount.c
utils/mount/mount_config.h [new file with mode: 0644]

index a1b56ca67e51b0180d6851e6b41b570e68bd3eba..db7778f96674317fd660021efb2beb08f1582d3f 100644 (file)
@@ -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
index a668cd97c673f0aff792aaec3e5e99e415eec8d7..909fedf8e0d2ba3abe96267170844efbb8bfa70f 100644 (file)
@@ -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 (file)
index 0000000..2af9f9d
--- /dev/null
@@ -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