From: Steve Dickson Date: Fri, 7 Aug 2009 18:29:07 +0000 (-0400) Subject: Added hooks to the mount command that allow X-Git-Tag: nfs-utils-1-2-1-rc4~5 X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=commitdiff_plain;h=9082582d6675e45067838805a65b6fcc07164557 Added hooks to the mount command that allow mount options to be set in a configuration file Signed-off-by: Steve Dickson --- 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 + * + * 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