[netatalk-ja:0133] Re: 3.0.2でPhotoshop CS5で濁音のファイルがセーブできない

Hiroyuki Sato hiroysato @ gmail.com
2013年 3月 31日 (日) 23:01:00 JST


HATさん

ありがとうございます。

convert_stringの使い方がいまいち良くわかりませんが、
添付のパッチでどうでしょうか?
なお、developブランチで作業しました。

一応削除できるようになったと思います。

また、リネームの方は未検証です。
テストの仕方がまだわかりません。


% ls -l@
total 1688
-rw-r--r--@ 1 user1  netatalk  5  3 30 20:11 ほげ.txt
com.apple.FinderInfo 32
com.apple.ResourceFork 856644
com.apple.metadata:kMDLabel_veyixt7jjffe3g7nfailqcbxny 50



% xattr -d com.apple.ResourceFork *.txt


% ls -l@
total 16
-rw-r--r--@ 1 user1  netatalk  5  3 30 20:11 ほげ.txt
com.apple.FinderInfo 32
com.apple.metadata:kMDLabel_veyixt7jjffe3g7nfailqcbxny 50


佐藤メモ(of_allocに渡されるvolの値)

$2 = {v_next = 0x71a320, v_obj = 0x665ea0, v_vid = 1280, v_flags =
16908297, v_path = 0x71a9a0 "/home/netatalktest2", v_root =
    0x718fe0, v_mtime = 1364736769, v_volcharset = CH_UTF8, v_maccharset =
CH_MAC, v_mtou_flags = 0, v_utom_flags = 1,
  v_kTextEncoding = 16777216, max_filename = 255, v_veto = 0x0, v_adouble =
131074, v_ad_options = 4, ad_path =
    0x7febb7e811af <ad_path_osx>, v_cdb = 0x7190e0, v_stamp =
"-\302VQ\000\000\000", v_limitsize = 0, v_umask = 0, v_dperm = 504,
  v_fperm = 288, v_u8mname = 0x71a910, v_macname = 0x71a980, v_name =
0x71a910, v_ctime = 2541676824, v_dev = 64768, vfs =
    0x7febb80e23c0, vfs_modules = {0x7febb80e2500, 0x7febb80e26e0,
0x7febb80e25a0, 0x0}, v_vfs_ea = 2, v_gvs =
    0x7192c0 "/dev/mapper/VolGroup-lv_root", v_nfsclient = 0x0, v_nfs = 0,
v_tm_used = 0, v_tm_cachetime = 0, v_appended = 856649,
  v_casefold = 0, v_configname = 0x71a510 "testvolume2", v_localname =
0x71a8f0 "testvolume2", v_volcodepage = 0x71a530 "UTF8",
  v_maccodepage = 0x71a820 "MAC_JAPANESE", v_password = 0x0, v_cnidscheme =
0x71a840 "dbd", v_dbpath =
    0x71a940 "/usr/local/netatalk/var/netatalk/CNID//testvolume2/",
v_cnidserver = 0x71a8b0 "localhost", v_cnidport = 0x71a8d0 "4700",
  v_deleted = 0, v_root_preexec = 0x0, v_preexec = 0x0, v_root_postexec =
0x0, v_postexec = 0x0, v_root_preexec_close = 0,
  v_preexec_close = 0, v_uuid = 0x0, v_qfd = 0}











2013年3月31日 18:55 HAT <hat @ fa2.so-net.ne.jp>:

> HATです。
>
> > やっぱりof_allocにはNFDでpathが指定されていますね。
> > netatalkの他のところで、NFD -> NFCをしているところの関数がわかれば
> > 直せそうですけど...
> >
> > どこでやっているかまだよくわかってません。
>
> 文字コード変換でよく使うのは、libatalk/unicode/charcnv.cの中の
> 以下の2つです。
>
> convert_string()
> 単純に文字コード変換する。
>
> convert_charset()
> flagsによって変換するときの条件を色々設定できる。
>
> どちらの関数も、"from"文字コードをいったん内部コード(UTF-16)に変換して、
> 必要な処理を行ってから、"to"文字コードに変換しています。
>
> 今回の場合は、ファイルシステム上の実際の名前に変換するわけですから、
> 「/」と「:」の入れ替えとか諸々の処理が入るので、convert_charset()を
> 使うことになると思います。
>
> NFC/NFDの変換は、libatalk/unicode/util_unistr.cの中の
> precompose_w()とdecompose_w()です。
> 上記2つの関数も必要に応じてこれらを呼び出します。
>
> --
> HAT
>



-- 
Hiroyuki Sato
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: ofork.patch
型:         application/octet-stream
サイズ:     1076 バイト
説明:       無し
URL:        </mailman/archives/netatalk-ja/attachments/20130331/4d95dece/attachment.obj>


netatalk-ja メーリングリストの案内