Commit 38739380 authored by Maciej S. Szmigiero's avatar Maciej S. Szmigiero Committed by Linus Torvalds

fat: add config option to set UTF-8 mount option by default

FAT has long supported its own default file name encoding config
setting, separate from CONFIG_NLS_DEFAULT.

However, if UTF-8 encoded file names are desired FAT character set
should not be set to utf8 since this would make file names case
sensitive even if case insensitive matching is requested.  Instead,
"utf8" mount options should be provided to enable UTF-8 file names in
FAT file system.

Unfortunately, there was no possibility to set the default value of this
option so on UTF-8 system "utf8" mount option had to be added manually
to most FAT mounts.

This patch adds config option to set such default value.
Signed-off-by: default avatarMaciej S. Szmigiero <mail@maciej.szmigiero.name>
Acked-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f970165b
...@@ -56,9 +56,10 @@ iocharset=<name> -- Character set to use for converting between the ...@@ -56,9 +56,10 @@ iocharset=<name> -- Character set to use for converting between the
you should consider the following option instead. you should consider the following option instead.
utf8=<bool> -- UTF-8 is the filesystem safe version of Unicode that utf8=<bool> -- UTF-8 is the filesystem safe version of Unicode that
is used by the console. It can be enabled for the is used by the console. It can be enabled or disabled
filesystem with this option. If 'uni_xlate' gets set, for the filesystem with this option.
UTF-8 gets disabled. If 'uni_xlate' gets set, UTF-8 gets disabled.
By default, FAT_DEFAULT_UTF8 setting is used.
uni_xlate=<bool> -- Translate unhandled Unicode characters to special uni_xlate=<bool> -- Translate unhandled Unicode characters to special
escaped sequences. This would let you backup and escaped sequences. This would let you backup and
......
...@@ -93,8 +93,24 @@ config FAT_DEFAULT_IOCHARSET ...@@ -93,8 +93,24 @@ config FAT_DEFAULT_IOCHARSET
that most of your FAT filesystems use, and can be overridden that most of your FAT filesystems use, and can be overridden
with the "iocharset" mount option for FAT filesystems. with the "iocharset" mount option for FAT filesystems.
Note that "utf8" is not recommended for FAT filesystems. Note that "utf8" is not recommended for FAT filesystems.
If unsure, you shouldn't set "utf8" here. If unsure, you shouldn't set "utf8" here - select the next option
instead if you would like to use UTF-8 encoded file names by default.
See <file:Documentation/filesystems/vfat.txt> for more information. See <file:Documentation/filesystems/vfat.txt> for more information.
Enable any character sets you need in File Systems/Native Language Enable any character sets you need in File Systems/Native Language
Support. Support.
config FAT_DEFAULT_UTF8
bool "Enable FAT UTF-8 option by default"
depends on VFAT_FS
default n
help
Set this if you would like to have "utf8" mount option set
by default when mounting FAT filesystems.
Even if you say Y here can always disable UTF-8 for
particular mount by adding "utf8=0" to mount options.
Say Y if you use UTF-8 encoding for file names, N otherwise.
See <file:Documentation/filesystems/vfat.txt> for more information.
...@@ -1127,7 +1127,7 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat, ...@@ -1127,7 +1127,7 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
} }
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->unicode_xlate = 0;
opts->numtail = 1; opts->numtail = 1;
opts->usefree = opts->nocase = 0; opts->usefree = opts->nocase = 0;
opts->tz_set = 0; opts->tz_set = 0;
...@@ -1135,6 +1135,8 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat, ...@@ -1135,6 +1135,8 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
opts->errors = FAT_ERRORS_RO; opts->errors = FAT_ERRORS_RO;
*debug = 0; *debug = 0;
opts->utf8 = IS_ENABLED(CONFIG_FAT_DEFAULT_UTF8) && is_vfat;
if (!options) if (!options)
goto out; goto out;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment