Change the multibyte character set support so that
[kai/samba.git] / source3 / client / clitar.c
index 6a811f41c7db012806003b048f2c48a1c82e5a3a..ccaab486d0f6f4183031729650b60d17abe57b38 100644 (file)
@@ -322,33 +322,25 @@ static void fixtarname(char *tptr, char *fp, int l)
    * to lovely unix /'s :-} */
 
   *tptr++='.';
-  if(lp_client_code_page() == KANJI_CODEPAGE)
-  {
-    while (l > 0) {
-      if (is_shift_jis (*fp)) {
+
+  while (l > 0) {
+    int skip;
+    if((skip = skip_multibyte_char( *fp)) != 0) {
+      if (skip == 2) {
         *tptr++ = *fp++;
         *tptr++ = *fp++;
         l -= 2;
-      } else if (is_kana (*fp)) {
-        *tptr++ = *fp++;
-        l--;
-      } else if (*fp == '\\') {
-        *tptr++ = '/';
-        fp++;
-        l--;
-      } else {
+      } else if (skip == 1) {
         *tptr++ = *fp++;
         l--;
       }
-    }
-  }
-  else
-  {
-    while (l--)
-    {
-      *tptr=(*fp == '\\') ? '/' : *fp;
-      tptr++;
+    } else if (*fp == '\\') {
+      *tptr++ = '/';
       fp++;
+      l--;
+    } else {
+      *tptr++ = *fp++;
+      l--;
     }
   }
 }
@@ -1227,33 +1219,24 @@ static void unfixtarname(char *tptr, char *fp, int l)
   if (*fp == '.') fp++;
   if (*fp == '\\' || *fp == '/') fp++;
 
-  if(lp_client_code_page() == KANJI_CODEPAGE)
-  {
-    while (l > 0) {
-      if (is_shift_jis (*fp)) {
+  while (l > 0) {
+    int skip;
+    if(( skip = skip_multibyte_char( *fp )) != 0) {
+      if (skip == 2) {
         *tptr++ = *fp++;
         *tptr++ = *fp++;
         l -= 2;
-      } else if (is_kana (*fp)) {
-        *tptr++ = *fp++;
-        l--;
-      } else if (*fp == '/') {
-        *tptr++ = '\\';
-        fp++;
-        l--;
-      } else {
+      } else if (skip == 1) {
         *tptr++ = *fp++;
         l--;
       }
-    }
-  }
-  else
-  {
-    while (l--)
-    {
-      *tptr=(*fp == '/') ? '\\' : *fp;
-      tptr++;
+    } else if (*fp == '/') {
+      *tptr++ = '\\';
       fp++;
+      l--;
+    } else {
+      *tptr++ = *fp++;
+      l--;
     }
   }
 }