[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00590] Re: 結果報告
- Subject: [FDclone-users:00590] Re: 結果報告
- From: yuji tamura <yuji@isis.ocn.ne.jp>
- Date: Sat, 30 Sep 2006 18:30:38 +0900
こんばんは田村です。
結果報告です。
On Sat, 30 Sep 2006 03:24:10 +0900, Takashi SHIRAI wrote:
> Xreaddir() の後半部に convget() という関数を呼び出している
>箇所があります。_NOKANJIFCONV を有効にするとこの辺りのコード
>が無効になるので、comment out して同じ状況を生み出しましょう。
> comment out するのは以下の 4 行です。各行の行頭に「//」を
>挿入すれば comment out 出来ます。
> if (convget(conv, path, dos) == conv) {
> if ((src = strrdelim(conv, 0))) src++;
> else src = conv;
> }
> まずはこの状態で compile して再現性を確認して下さい。念の
>ため、漢字関連の変数値は「utf8-mac」にせず空にしておいて下さ
>い。
strcatdelim2(path, dirpathlist[i].path, src);
//if (convget(conv, path, dos) == conv) {
// if ((src = strrdelim(conv, 0))) src++;
// else src = conv;
//}
strcpy(dest, src);
上記のような事で良いでしょうか?
この状態でコンパイルした状態では再現しないようです。
strcatdelim2(path, dirpathlist[i].path, src);
if (convget(conv, path, dos) == conv) {
if ((src = strrdelim(conv, 0))) src++;
else src = conv;
}
元に戻します。
> 再現しなかった場合は少しずつ範囲を狭めていって元凶を特定し
>ます。この場合、怪しい箇所は convget() になります。この実体
>は kanji.c にあるので、次はそちらに移りましょう。
> Xreaddir() の comment out は元に戻しておいて下さい。
>
> convget() は kanji.c の最後の方にあり、この関数の先頭には
>以下の記述があります。
> if (noconv) return(path);
> まずはこの行の直前に以下の一行を追加して下さい。それで改め
>て再現性を確認します。
> return(path);
こうで良いのでしょうか?
return(path);
if (noconv) return(path);
再現しません。
> 再現したら検証は終わりです。再現しなかったらその追加行を削
>除して元の状態に戻し、今度はその次の行の直前に同じ一行を追加
>して下さい。これを延々と繰返します。
こうでしょうか?
return(path);
fgetok = (nokanjifconv) ? 0 : 1;
再現せず。
return(path);
cp = path;
再現せず。
return(path);
if (!norockridge) cp = transpath(cp, rbuf);
再現せず。
return(path);
if (dos) {
再現せず。
return(path);
buf[sjis2ujis(buf, (u_char *)cp, MAXPATHLEN - 1)] =
ここで再現確認しました。ここに挿入して再コンパイルしてから
表示自体が変わったのであれっ、と言う感じでした。
日本語の文字化け具合が違うのです。
念のため、
return(path);
cp = buf;
でも再現します。
return(path);
fgetok = 0;
再現します。
return(path);
}
再現します。
> 私の予想では次の 3 行の前に置くと再現しなくなり、後ろに置
>くと再現するようになるんじゃないかと思っています。
> if (fgetok)
> cp = kanjiconv2(buf, cp,
> MAXPATHLEN - 1, getkcode(cp), DEFCODE, L_FNAME);
こうかな
return(path);
if (fgetok)
cp = kanjiconv2(buf, cp,
MAXPATHLEN - 1, getkcode(cp), DEFCODE,
再現せず、ここからまた文字化け具合が変わり、まえのようになります。
次に。
if (fgetok)
cp = kanjiconv2(buf, cp,
MAXPATHLEN - 1, getkcode(cp), DEFCODE, L_FNAME);
return(path);
やはり再現せず。
と言う結果になりました。
---
yuji tamura