[rtems commit] dosfs: msdos_filename_utf8_to_short_name_for_save

Sebastian Huber sebh at rtems.org
Thu Mar 16 14:35:52 UTC 2017


Module:    rtems
Branch:    master
Commit:    e625a57ff86683f731ef8b9ffe9c28e43d5ddd3c
Changeset: http://git.rtems.org/rtems/commit/?id=e625a57ff86683f731ef8b9ffe9c28e43d5ddd3c

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Mar 16 07:37:20 2017 +0100

dosfs: msdos_filename_utf8_to_short_name_for_save

Simplify.

---

 cpukit/libfs/src/dosfs/msdos_conv.c | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/cpukit/libfs/src/dosfs/msdos_conv.c b/cpukit/libfs/src/dosfs/msdos_conv.c
index 98f2e9b..d7ef97a 100644
--- a/cpukit/libfs/src/dosfs/msdos_conv.c
+++ b/cpukit/libfs/src/dosfs/msdos_conv.c
@@ -288,7 +288,13 @@ msdos_get_valid_utf16_filename_character (const uint16_t utf16_character)
 static char
 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
@@ -556,7 +562,6 @@ msdos_filename_utf8_to_short_name_for_save (
   size_t         name_size               = utf8_name_size;
   char          *dest_ptr                = (char*)short_name;
   unsigned int   i;
-  char           c;
   size_t         name_size_tmp;
   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] = '_';
         else if ( 0xE5 == *name_ptr )
           dest_ptr[0] = 0x05;
-        else if (0 != (c = msdos_get_valid_codepage_filename_character( *name_ptr ) ) )
-          dest_ptr[0] = c;
         else
-          dest_ptr[0] = '_';
+          dest_ptr[0] = msdos_get_valid_codepage_filename_character(*name_ptr);
         ++name_ptr;
         ++returned_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
          */
         for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
-          c = msdos_get_valid_codepage_filename_character ( *name_ptr );
-          if (c != 0)
-            dest_ptr[i] = c;
-          else
-            dest_ptr[i] = '_';
+          dest_ptr[i] = msdos_get_valid_codepage_filename_character(*name_ptr);
           ++name_ptr;
           ++returned_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.
          */
         for (; i <= 10 && name_size ; i++) {
-          c = msdos_get_valid_codepage_filename_character ( *name_ptr);
-          if (c != 0)
-            dest_ptr[i] = c;
-          else
-            dest_ptr[i] = '_';
+          dest_ptr[i] = msdos_get_valid_codepage_filename_character(*name_ptr);
           ++name_ptr;
           ++returned_size;
           name_size--;




More information about the vc mailing list