|
@@ -797,8 +797,10 @@ static int fat_show_options(struct seq_file *m, struct vfsmount *mnt)
|
|
seq_puts(m, ",uni_xlate");
|
|
seq_puts(m, ",uni_xlate");
|
|
if (!opts->numtail)
|
|
if (!opts->numtail)
|
|
seq_puts(m, ",nonumtail");
|
|
seq_puts(m, ",nonumtail");
|
|
|
|
+ if (opts->rodir)
|
|
|
|
+ seq_puts(m, ",rodir");
|
|
}
|
|
}
|
|
- if (sbi->options.flush)
|
|
|
|
|
|
+ if (opts->flush)
|
|
seq_puts(m, ",flush");
|
|
seq_puts(m, ",flush");
|
|
if (opts->tz_utc)
|
|
if (opts->tz_utc)
|
|
seq_puts(m, ",tz=UTC");
|
|
seq_puts(m, ",tz=UTC");
|
|
@@ -814,7 +816,7 @@ enum {
|
|
Opt_charset, Opt_shortname_lower, Opt_shortname_win95,
|
|
Opt_charset, Opt_shortname_lower, Opt_shortname_win95,
|
|
Opt_shortname_winnt, Opt_shortname_mixed, Opt_utf8_no, Opt_utf8_yes,
|
|
Opt_shortname_winnt, Opt_shortname_mixed, Opt_utf8_no, Opt_utf8_yes,
|
|
Opt_uni_xl_no, Opt_uni_xl_yes, Opt_nonumtail_no, Opt_nonumtail_yes,
|
|
Opt_uni_xl_no, Opt_uni_xl_yes, Opt_nonumtail_no, Opt_nonumtail_yes,
|
|
- Opt_obsolate, Opt_flush, Opt_tz_utc, Opt_err,
|
|
|
|
|
|
+ Opt_obsolate, Opt_flush, Opt_tz_utc, Opt_rodir, Opt_err,
|
|
};
|
|
};
|
|
|
|
|
|
static const match_table_t fat_tokens = {
|
|
static const match_table_t fat_tokens = {
|
|
@@ -886,6 +888,7 @@ static const match_table_t vfat_tokens = {
|
|
{Opt_nonumtail_yes, "nonumtail=yes"},
|
|
{Opt_nonumtail_yes, "nonumtail=yes"},
|
|
{Opt_nonumtail_yes, "nonumtail=true"},
|
|
{Opt_nonumtail_yes, "nonumtail=true"},
|
|
{Opt_nonumtail_yes, "nonumtail"},
|
|
{Opt_nonumtail_yes, "nonumtail"},
|
|
|
|
+ {Opt_rodir, "rodir"},
|
|
{Opt_err, NULL}
|
|
{Opt_err, NULL}
|
|
};
|
|
};
|
|
|
|
|
|
@@ -905,10 +908,13 @@ static int parse_options(char *options, int is_vfat, int silent, int *debug,
|
|
opts->allow_utime = -1;
|
|
opts->allow_utime = -1;
|
|
opts->codepage = fat_default_codepage;
|
|
opts->codepage = fat_default_codepage;
|
|
opts->iocharset = fat_default_iocharset;
|
|
opts->iocharset = fat_default_iocharset;
|
|
- if (is_vfat)
|
|
|
|
|
|
+ if (is_vfat) {
|
|
opts->shortname = VFAT_SFN_DISPLAY_LOWER|VFAT_SFN_CREATE_WIN95;
|
|
opts->shortname = VFAT_SFN_DISPLAY_LOWER|VFAT_SFN_CREATE_WIN95;
|
|
- else
|
|
|
|
|
|
+ opts->rodir = 0;
|
|
|
|
+ } else {
|
|
opts->shortname = 0;
|
|
opts->shortname = 0;
|
|
|
|
+ opts->rodir = 1;
|
|
|
|
+ }
|
|
opts->name_check = 'n';
|
|
opts->name_check = 'n';
|
|
opts->quiet = opts->showexec = opts->sys_immutable = opts->dotsOK = 0;
|
|
opts->quiet = opts->showexec = opts->sys_immutable = opts->dotsOK = 0;
|
|
opts->utf8 = opts->unicode_xlate = 0;
|
|
opts->utf8 = opts->unicode_xlate = 0;
|
|
@@ -1059,6 +1065,9 @@ static int parse_options(char *options, int is_vfat, int silent, int *debug,
|
|
case Opt_nonumtail_yes: /* empty or 1 or yes or true */
|
|
case Opt_nonumtail_yes: /* empty or 1 or yes or true */
|
|
opts->numtail = 0; /* negated option */
|
|
opts->numtail = 0; /* negated option */
|
|
break;
|
|
break;
|
|
|
|
+ case Opt_rodir:
|
|
|
|
+ opts->rodir = 1;
|
|
|
|
+ break;
|
|
|
|
|
|
/* obsolete mount options */
|
|
/* obsolete mount options */
|
|
case Opt_obsolate:
|
|
case Opt_obsolate:
|