[netatalk-ja:0279] Re: OS9からコピーした項目が消える

HAT hat @ fa2.so-net.ne.jp
2013年 8月 20日 (火) 00:04:58 JST


HATです。

> 再度確認しましたら、
> 問題のファイル2つは半角英数にリネームすると
> フォルダの表示などに問題ありませんでした。

etc/cnid_dbd/pack.cの中の関数idxname()で文字コード変換の関数
convert_charset()を呼び出していますが、ここではファイル名をvol charsetで
渡すことになっています。
しかしながら、調べてみるとUTF8で渡している場合とMAC_JAPANESEで渡している場合
がありました。前者のときは問題ありませんが、後者のときに、
cnid_dbd[21904] {charcnv.c:1002} (E:Default): Conversion failed ( UTF8 to CH_UCS2 )
cnid_dbd[21904] {pack.c:91} (E:CNID): idxname: conversion error
のエラーが発生しています。

つまり文字コードの扱いの間違いです。
ファイル名がASCIIだけの場合、UTF8でもMAC_JAPANESEでも同じ文字列になるので、
問題が発生しないわけです。

cnid_dbdはafpdから依頼されたファイル名について処理してるわけですが、
クライアントがOS XなのかOS 9なのか知らない筈です。
だから、afpdがちゃんとMAC_JAPANESEをUTF8に変換してからcnid_dbdに
依頼するのが正しい筈です。
エラーを発しているのはcnid_dbdですが、悪いのはafpdです。たぶん。

具体的にafpdのどこが間違っているのかは、まだ調べていません。

> ファイルは2つ
> 「なっとく牛丼.eps」と「なっとく親子丼.eps」とありますが、
> 
> 「なっとく牛丼.eps」を「abcd.eps」にリネーム
> 「なっとく親子丼.eps」をそのままの組み合わせでコピーし、そのフォルダを開
> くとエラーログはでますが
> ファイルも表示されて、アクセスは出来ました。
> 
> 逆に、
> 
> 「なっとく親子丼.eps」を「abcd.eps」にリネーム
> 「なっとく牛丼.eps」をそのままの組み合わせでコピーし、そのフォルダを開く
> とエラーログは
> 何も出ませんでいた。アクセスもできます
> 
> 2つのファイルをそのままコピーすると、やはり
> フォルダを開いた瞬間だけ表示されて、ファイルが見えなくなってしまいます。
> それぞれを「あ」、「い」など日本語でリネームしても同じでした。
> 
> フォルダに「なっとく牛丼.eps」だけを入れてコピーすると、エラーログはでま
> すが
> ファイルの表示、アクセスは問題ありません。
> 「なっとく親子丼.eps」だけを入れてコピーすると、、エラーログも出ず
> アクセスも問題ありません。
> 
> なっとく牛丼.epsのファイルに問題があるのかしら...

たぶん微妙なタイミングか何かで見えたり見えなかったりしているのだと
思います。
どっちのファイルでもログにエラーが出てませんか?

-- 
HAT


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