diff options
-rw-r--r-- | sbin/mount/getmntopts.c | 11 | ||||
-rw-r--r-- | sbin/mount/mntopts.h | 4 | ||||
-rw-r--r-- | sbin/mount/mount_ufs.c | 2 | ||||
-rw-r--r-- | sbin/mount_ifs/getmntopts.c | 11 | ||||
-rw-r--r-- | sbin/mount_ifs/mntopts.h | 4 | ||||
-rw-r--r-- | sbin/mount_ifs/mount_ufs.c | 2 |
6 files changed, 28 insertions, 6 deletions
diff --git a/sbin/mount/getmntopts.c b/sbin/mount/getmntopts.c index 2c84ae5..1af5e0f 100644 --- a/sbin/mount/getmntopts.c +++ b/sbin/mount/getmntopts.c @@ -53,7 +53,7 @@ getmntopts(options, m0, flagp) int *flagp; { const struct mntopt *m; - int negative; + int negative, len; char *opt, *optbuf; /* Copy option string, since it is about to be torn asunder... */ @@ -69,9 +69,14 @@ getmntopts(options, m0, flagp) negative = 0; /* Scan option table. */ - for (m = m0; m->m_option != NULL; ++m) - if (strcasecmp(opt, m->m_option) == 0) + for (m = m0; m->m_option != NULL; ++m) { + len = strlen(m->m_option); + if (strncasecmp(opt, m->m_option, len) == 0) + if ( m->m_option[len] == '\0' + || m->m_option[len] == '=' + ) break; + } /* Save flag, or fail if option is not recognised. */ if (m->m_option) { diff --git a/sbin/mount/mntopts.h b/sbin/mount/mntopts.h index a89f63d..ec2c6d0 100644 --- a/sbin/mount/mntopts.h +++ b/sbin/mount/mntopts.h @@ -48,6 +48,10 @@ struct mntopt { #define MOPT_SYNC { "sync", 0, MNT_SYNCHRONOUS } #define MOPT_UNION { "union", 0, MNT_UNION } +/* Skip this options without any action (needed for checkquota/quotaon) */ +#define MOPT_UQUOTA { "userquota", 0, 0 } +#define MOPT_GQUOTA { "groupquota", 0, 0 } + /* Control flags. */ #define MOPT_FORCE { "force", 1, MNT_FORCE } #define MOPT_UPDATE { "update", 0, MNT_UPDATE } diff --git a/sbin/mount/mount_ufs.c b/sbin/mount/mount_ufs.c index 43dfb05..37d4756 100644 --- a/sbin/mount/mount_ufs.c +++ b/sbin/mount/mount_ufs.c @@ -60,6 +60,8 @@ static struct mntopt mopts[] = { MOPT_ASYNC, MOPT_SYNC, MOPT_UPDATE, + MOPT_UQUOTA, + MOPT_GQUOTA, { NULL } }; diff --git a/sbin/mount_ifs/getmntopts.c b/sbin/mount_ifs/getmntopts.c index 2c84ae5..1af5e0f 100644 --- a/sbin/mount_ifs/getmntopts.c +++ b/sbin/mount_ifs/getmntopts.c @@ -53,7 +53,7 @@ getmntopts(options, m0, flagp) int *flagp; { const struct mntopt *m; - int negative; + int negative, len; char *opt, *optbuf; /* Copy option string, since it is about to be torn asunder... */ @@ -69,9 +69,14 @@ getmntopts(options, m0, flagp) negative = 0; /* Scan option table. */ - for (m = m0; m->m_option != NULL; ++m) - if (strcasecmp(opt, m->m_option) == 0) + for (m = m0; m->m_option != NULL; ++m) { + len = strlen(m->m_option); + if (strncasecmp(opt, m->m_option, len) == 0) + if ( m->m_option[len] == '\0' + || m->m_option[len] == '=' + ) break; + } /* Save flag, or fail if option is not recognised. */ if (m->m_option) { diff --git a/sbin/mount_ifs/mntopts.h b/sbin/mount_ifs/mntopts.h index a89f63d..ec2c6d0 100644 --- a/sbin/mount_ifs/mntopts.h +++ b/sbin/mount_ifs/mntopts.h @@ -48,6 +48,10 @@ struct mntopt { #define MOPT_SYNC { "sync", 0, MNT_SYNCHRONOUS } #define MOPT_UNION { "union", 0, MNT_UNION } +/* Skip this options without any action (needed for checkquota/quotaon) */ +#define MOPT_UQUOTA { "userquota", 0, 0 } +#define MOPT_GQUOTA { "groupquota", 0, 0 } + /* Control flags. */ #define MOPT_FORCE { "force", 1, MNT_FORCE } #define MOPT_UPDATE { "update", 0, MNT_UPDATE } diff --git a/sbin/mount_ifs/mount_ufs.c b/sbin/mount_ifs/mount_ufs.c index 43dfb05..37d4756 100644 --- a/sbin/mount_ifs/mount_ufs.c +++ b/sbin/mount_ifs/mount_ufs.c @@ -60,6 +60,8 @@ static struct mntopt mopts[] = { MOPT_ASYNC, MOPT_SYNC, MOPT_UPDATE, + MOPT_UQUOTA, + MOPT_GQUOTA, { NULL } }; |