X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmount%2Fconfigfile.c;h=d3285f8bf0cac5f9ebcdc2cbfd7609d163cdf4bf;hp=cad8c52f7ef72e112e529ea5860558a95b7ecf8f;hb=f87ae8235ae6042c0e514ba03e4eee7782d5bc6e;hpb=0cdb36e69a51eabc119de314e43d40daf6ee49ab diff --git a/utils/mount/configfile.c b/utils/mount/configfile.c index cad8c52..d3285f8 100644 --- a/utils/mount/configfile.c +++ b/utils/mount/configfile.c @@ -37,11 +37,11 @@ #define NFSMOUNT_GLOBAL_OPTS "NFSMount_Global_Options" #endif -#ifndef NFSMOUNT_MOUNTPOINT "MountPoint" +#ifndef NFSMOUNT_MOUNTPOINT #define NFSMOUNT_MOUNTPOINT "MountPoint" #endif -#ifndef NFSMOUNT_SERVER "Server" +#ifndef NFSMOUNT_SERVER #define NFSMOUNT_SERVER "Server" #endif @@ -83,6 +83,9 @@ char *mountopts_alias(char *opt, int *argtype) *argtype = mnt_alias_tab[i].argtype; return mnt_alias_tab[i].opt; } + /* Make option names case-insensitive */ + upper2lower(opt); + return opt; } /* @@ -182,6 +185,18 @@ void free_all(void) free(entry); } } +static char *versions[] = {"v2", "v3", "v4", "vers", "nfsvers", NULL}; +int inline check_vers(char *mopt, char *field) +{ + int i; + + if (strncmp("mountvers", field, strlen("mountvers")) != 0) { + for (i=0; versions[i]; i++) + if (strcasestr(mopt, versions[i]) != NULL) + return 1; + } + return 0; +} /* * Parse the given section of the configuration * file to if there are any mount options set. @@ -202,8 +217,14 @@ conf_parse_mntopts(char *section, char *arg, char *opts) * Do not overwrite options if already exists */ snprintf(buf, BUFSIZ, "%s=", node->field); - if (opts && strstr(opts, buf) != NULL) + if (opts && strcasestr(opts, buf) != NULL) continue; + /* + * Protocol verions can be set in a number of ways + */ + if (opts && check_vers(opts, node->field)) + continue; + if (lookup_entry(node->field) != NULL) continue; buf[0] = '\0';