dosfs: msdos_filename_utf8_to_short_name_for_save

Simplify.
This commit is contained in:
Sebastian Huber
2017-03-16 07:37:20 +01:00
parent b1daf0f095
commit e625a57ff8

View File

@@ -288,7 +288,13 @@ msdos_get_valid_utf16_filename_character (const uint16_t utf16_character)
static char static char
msdos_get_valid_codepage_filename_character (const uint8_t character) msdos_get_valid_codepage_filename_character (const uint8_t character)
{ {
return codepage_valid_char_map[(unsigned int)character]; char c = codepage_valid_char_map[character];
if (c == 0) {
c = '_';
}
return c;
} }
static ssize_t static ssize_t
@@ -556,7 +562,6 @@ msdos_filename_utf8_to_short_name_for_save (
size_t name_size = utf8_name_size; size_t name_size = utf8_name_size;
char *dest_ptr = (char*)short_name; char *dest_ptr = (char*)short_name;
unsigned int i; unsigned int i;
char c;
size_t name_size_tmp; size_t name_size_tmp;
char name_to_format_buf[MSDOS_SHORT_NAME_LEN +1]; char name_to_format_buf[MSDOS_SHORT_NAME_LEN +1];
@@ -606,10 +611,8 @@ msdos_filename_utf8_to_short_name_for_save (
dest_ptr[0] = '_'; dest_ptr[0] = '_';
else if ( 0xE5 == *name_ptr ) else if ( 0xE5 == *name_ptr )
dest_ptr[0] = 0x05; dest_ptr[0] = 0x05;
else if (0 != (c = msdos_get_valid_codepage_filename_character( *name_ptr ) ) )
dest_ptr[0] = c;
else else
dest_ptr[0] = '_'; dest_ptr[0] = msdos_get_valid_codepage_filename_character(*name_ptr);
++name_ptr; ++name_ptr;
++returned_size; ++returned_size;
--name_size; --name_size;
@@ -617,11 +620,7 @@ msdos_filename_utf8_to_short_name_for_save (
* Validate and assign all other characters of the name part * Validate and assign all other characters of the name part
*/ */
for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) { for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
c = msdos_get_valid_codepage_filename_character ( *name_ptr ); dest_ptr[i] = msdos_get_valid_codepage_filename_character(*name_ptr);
if (c != 0)
dest_ptr[i] = c;
else
dest_ptr[i] = '_';
++name_ptr; ++name_ptr;
++returned_size; ++returned_size;
--name_size; --name_size;
@@ -644,11 +643,7 @@ msdos_filename_utf8_to_short_name_for_save (
* Copy in the extension part of the name, if any. * Copy in the extension part of the name, if any.
*/ */
for (; i <= 10 && name_size ; i++) { for (; i <= 10 && name_size ; i++) {
c = msdos_get_valid_codepage_filename_character ( *name_ptr); dest_ptr[i] = msdos_get_valid_codepage_filename_character(*name_ptr);
if (c != 0)
dest_ptr[i] = c;
else
dest_ptr[i] = '_';
++name_ptr; ++name_ptr;
++returned_size; ++returned_size;
name_size--; name_size--;