HATです。

netatalk2.0-beta2はafp3.1対応でOSXからの利用が便利になり、
samba3との相性も良くなったのですが、
逆にOS9からafp2.2で接続したときには、トレードマーク等のMacJapanese特有の
文字の入ったファイル名が扱えなくなってしまいました。
これを解決する方法をさっき思い付いたので御報告。

(問題点)
netatalk2はafp2.2で接続したときにはlibiconvでファイル名の文字コードを
変換をしているわけですが、Shift_JISで扱っているので、MacJapanese特有の
文字が扱えません。

(1) libiconvにパッチを当てる
    http://hosho.ees.hokudai.ac.jp/~kato/unix/mj.html
    ここに、libiconv-1.8をMacJapaneseに対応させるパッチがあるのを
    発見しました。これをありがたく使わせて頂きます。

(2) netatalkにパッチを当てる
    MACJAPANESEという名前を認識するように、libatalk/unicode/iconv.c に
    変更を加えます。

        {"SHIFT_JIS", 1568, NULL, NULL, CHARSET_ICONV | CHARSET_PRECOMPOSED | CHARSET_CLIENT},

    という行があるので、その次に

        {"MACJAPANESE", 1568, NULL, NULL, CHARSET_ICONV | CHARSET_PRECOMPOSED | CHARSET_CLIENT},

    を加えました。
    ここで、1568という数字の意味がわかりません。誰か教えて下さい。
    取り敢えず、SHIFT_JISと同じ数字を入れました。

(3) netatalkの設定
    afpd.confで、
    -unixcodepage UTF8 -maccodepage MACJAPANESE
    にします。

    netatalk.confでも、
    ATALK_MAC_CHARSET='MACJAPANESE'
    ATALK_UNIX_CHARSET='UTF-8'
    にします。

以上で、トレードマーク等のMacJapaneseの文字が使えます。
マルイチ、マルニとかの文字もsamba3と相性良く使えます。

(残る問題)
samba3側から以下の文字を含むファイル名を作った場合、OS9から
見ると化けます。これはWindowsのutf-8の実装が変だからですね。

―〜‖−¢£¬

うーん。
MACJAPANESE-MSという、怪しい文字コードを作らなければならないのか。

-- 
HAT