lkml.org 
[lkml]   [2003]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH] Fix unrecognized option of fat (3/6)
From
Date
Hi,

vfat doesn't recognize the msdos option. Also msdos doesn't recognize
vfat option.

And this separates fat/vfat/msdos option structures. I think this
looks more good as document.

Please apply.

linux-2.6.0-test6-hirofumi/fs/fat/inode.c | 114 +++++++++++++-----------------
1 files changed, 52 insertions(+), 62 deletions(-)

diff -puN fs/fat/inode.c~fat_unrecognized fs/fat/inode.c
--- linux-2.6.0-test6/fs/fat/inode.c~fat_unrecognized 2003-10-07 01:51:34.000000000 +0900
+++ linux-2.6.0-test6-hirofumi/fs/fat/inode.c 2003-10-07 01:51:34.000000000 +0900
@@ -267,7 +267,7 @@ enum {
Opt_nonumtail_on, Opt_nonumtail_yes, Opt_nonumtail_true, Opt_nonumtail_opt,
};

-static match_table_t FAT_tokens = {
+static match_table_t fat_tokens = {
{Opt_check_r, "check=relaxed"},
{Opt_check_s, "check=strict"},
{Opt_check_n, "check=normal"},
@@ -280,10 +280,6 @@ static match_table_t FAT_tokens = {
{Opt_conv_b, "conv=b"},
{Opt_conv_t, "conv=t"},
{Opt_conv_a, "conv=a"},
- {Opt_nodots, "nodots"},
- {Opt_nodots, "dotsOK=no"},
- {Opt_dots, "dotsOK=yes"},
- {Opt_dots, "dots"},
{Opt_uid, "uid=%d"},
{Opt_gid, "gid=%d"},
{Opt_umask, "umask=%o"},
@@ -291,11 +287,26 @@ static match_table_t FAT_tokens = {
{Opt_fmask, "fmask=%o"},
{Opt_fat, "fat=%d"},
{Opt_codepage, "codepage=%d"},
- {Opt_charset, "iocharset=%s"},
{Opt_blocksize, "blocksize=%d"},
{Opt_nocase, "nocase"},
{Opt_cvf_format, "cvf_format=%20s"},
{Opt_cvf_options, "cvf_options=%100s"},
+ {Opt_quiet, "quiet"},
+ {Opt_showexec, "showexec"},
+ {Opt_debug, "debug"},
+ {Opt_immutable, "sys_immutable"},
+ {Opt_posix, "posix"},
+ {Opt_err, NULL}
+};
+static match_table_t msdos_tokens = {
+ {Opt_nodots, "nodots"},
+ {Opt_nodots, "dotsOK=no"},
+ {Opt_dots, "dotsOK=yes"},
+ {Opt_dots, "dots"},
+ {Opt_err, NULL}
+};
+static match_table_t vfat_tokens = {
+ {Opt_charset, "iocharset=%s"},
{Opt_shortname_lower, "shortname=lower"},
{Opt_shortname_win95, "shortname=win95"},
{Opt_shortname_winnt, "shortname=winnt"},
@@ -321,11 +332,6 @@ static match_table_t FAT_tokens = {
{Opt_nonumtail_yes, "nonumtail=yes"},
{Opt_nonumtail_true, "nonumtail=true"},
{Opt_nonumtail_opt, "nonumtail"},
- {Opt_quiet, "quiet"},
- {Opt_showexec, "showexec"},
- {Opt_debug, "debug"},
- {Opt_immutable, "sys_immutable"},
- {Opt_posix, "posix"},
{Opt_err, NULL}
};

@@ -362,7 +368,13 @@ static int parse_options(char *options,
if (!*p)
continue;

- token = match_token(p, FAT_tokens, args);
+ token = match_token(p, fat_tokens, args);
+ if (token == Opt_err) {
+ if (is_vfat)
+ token = match_token(p, vfat_tokens, args);
+ else
+ token = match_token(p, msdos_tokens, args);
+ }
switch (token) {
case Opt_check_s:
opts->name_check = 's';
@@ -373,14 +385,6 @@ static int parse_options(char *options,
case Opt_check_n:
opts->name_check = 'n';
break;
- case Opt_dots: /* msdos specific */
- if (!is_vfat)
- opts->dotsOK = 1;
- break;
- case Opt_nodots: /* msdos specific */
- if (!is_vfat)
- opts->dotsOK = 0;
- break;
case Opt_nocase:
if (!is_vfat)
opts->nocase = 1;
@@ -435,85 +439,71 @@ static int parse_options(char *options,
opts->codepage);
break;

+ /* msdos specific */
+ case Opt_dots:
+ opts->dotsOK = 1;
+ break;
+ case Opt_nodots:
+ opts->dotsOK = 0;
+ break;
+
/* vfat specific */
case Opt_charset:
- if (is_vfat) {
- kfree(opts->iocharset);
- opts->iocharset = match_strdup(&args[0]);
- if (!opts->iocharset)
- return 0;
- printk("MSDOS FS: IO charset %s\n",
- opts->iocharset);
- }
+ kfree(opts->iocharset);
+ opts->iocharset = match_strdup(&args[0]);
+ if (!opts->iocharset)
+ return 0;
+ printk("MSDOS FS: IO charset %s\n",
+ opts->iocharset);
break;
case Opt_shortname_lower:
- if (is_vfat) {
- opts->shortname = VFAT_SFN_DISPLAY_LOWER
- | VFAT_SFN_CREATE_WIN95;
- }
+ opts->shortname = VFAT_SFN_DISPLAY_LOWER
+ | VFAT_SFN_CREATE_WIN95;
break;
case Opt_shortname_win95:
- if (is_vfat) {
- opts->shortname = VFAT_SFN_DISPLAY_WIN95
- | VFAT_SFN_CREATE_WIN95;
- }
+ opts->shortname = VFAT_SFN_DISPLAY_WIN95
+ | VFAT_SFN_CREATE_WIN95;
break;
case Opt_shortname_winnt:
- if (is_vfat) {
- opts->shortname = VFAT_SFN_DISPLAY_WINNT
- | VFAT_SFN_CREATE_WINNT;
- }
+ opts->shortname = VFAT_SFN_DISPLAY_WINNT
+ | VFAT_SFN_CREATE_WINNT;
break;
case Opt_shortname_mixed:
- if (is_vfat) {
- opts->shortname = VFAT_SFN_DISPLAY_WINNT
- | VFAT_SFN_CREATE_WIN95;
- }
+ opts->shortname = VFAT_SFN_DISPLAY_WINNT
+ | VFAT_SFN_CREATE_WIN95;
break;
case Opt_utf8_off: /* 0 or no or false */
case Opt_utf8_no:
case Opt_utf8_false:
- if (is_vfat) {
- opts->utf8 = 0;
- }
+ opts->utf8 = 0;
break;
case Opt_utf8_on: /* empty or 1 or yes or true */
case Opt_utf8_opt:
case Opt_utf8_yes:
case Opt_utf8_true:
- if (is_vfat) {
- opts->utf8 = 1;
- }
+ opts->utf8 = 1;
break;
case Opt_uni_xl_off: /* 0 or no or false */
case Opt_uni_xl_no:
case Opt_uni_xl_false:
- if (is_vfat) {
- opts->unicode_xlate = 0;
- }
+ opts->unicode_xlate = 0;
break;
case Opt_uni_xl_on: /* empty or 1 or yes or true */
case Opt_uni_xl_yes:
case Opt_uni_xl_true:
case Opt_uni_xl_opt:
- if (is_vfat) {
- opts->unicode_xlate = 1;
- }
+ opts->unicode_xlate = 1;
break;
case Opt_nonumtail_off: /* 0 or no or false */
case Opt_nonumtail_no:
case Opt_nonumtail_false:
- if (is_vfat) {
- opts->numtail = 1; /* negated option */
- }
+ opts->numtail = 1; /* negated option */
break;
case Opt_nonumtail_on: /* empty or 1 or yes or true */
case Opt_nonumtail_yes:
case Opt_nonumtail_true:
case Opt_nonumtail_opt:
- if (is_vfat) {
- opts->numtail = 0; /* negated option */
- }
+ opts->numtail = 0; /* negated option */
break;

/* obsolete mount options */
_

--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:49    [W:0.171 / U:0.172 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site