[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:4288] Re: Write file: ダイアログボックスで文字欠落?



>>>>> [meadow-users-jp : No.4463] にて
>>>>> "山根" = Osamu Yamane <yamane@xxxxxxxxxxxxxxx> さんは書きました:
山根> Save Buffer As...で出てくる Write file:  ダイアログボックスで、
山根> 表示されるファイル名に日本語文字が混じっていると、そのファイル名
山根> の文字が一部削られたようになる事があるようです。

山根> 具体的に書くと、
山根> 1234申5678.txt という名前のファイルを編集した後
山根>   File → Save Buffer As ...
山根> とすると、

山根> Write file:  ダイアログボックスで
山根>   ディレクトリの表示は正常
山根>   ファイル名 5678.txt
山根> となり、ファイル名の文字が一部削られてしまう

これどうしたらいいんでしょうか?

full_path_name がマルチバイト文字列であると仮定すれば、下記の修正
で対応できます。はたしてこの仮定は正しいものでしょうか?
;; これに加えて strncpy() を使っているところもありますね。

本格的には、
Lisp_Object から取り出した文字列を C で操作するのではなくて、
Lisp_Object のまま操作した後で、最後に文字列を取り出すのがいいん
でしょうか?


--- ./mw32fns.c.orig	2003-03-09 01:45:48.000000000 +0900
+++ ./mw32fns.c	2003-03-09 01:46:09.000000000 +0900
@@ -8953,7 +8953,7 @@
 
       unixtodos_filename (full_path_name);
 
-      file_name_only = strrchr (full_path_name,  '\\');
+      file_name_only = _mbsrchr (full_path_name, '\\');
       if (!file_name_only)
         file_name_only = full_path_name;
       else

--
三好 雅則 mailto:miyoshi@xxxxxxxxxxxxxxxx
          http://www.boreas.dti.ne.jp/~miyoshi/ (Meadow2 のページ始めました)