[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00507] Re: FDclone でファイルサイズが 0 と表示される



潮田です。

>  今度は main() と sscanf() の両方にテストプログラムを仕込ん
> でみました。素の FD-2.08b に戻してからこの patch を試して下
> さい。
va_dcl の後ろのセミコロンを外したもので、以下の様に
なりました。

$ ./fd
offset = 2ff22a80
 01 23 45 67 89 ab cd ef
value = 0x123456789abcdef

offset = 2ff22a80
 01 23 45 67 89 ab cd ef
value = 81985529216486895

$

> 	sizeof(off_t) = 8, sizeof(u_long_t) = 4
に対応する行がないので、少し追ってみましたが、
直前にある

                else {
                        mask >>= 1;
                        if (n >= 0) {
                                if ((u_long_t)n & ~mask) s = NULL;
                        }
                        else if (((u_long_t)n & ~mask) != ~mask) s = NULL;
                        if (!s) break;
                        memcpy(&u, &n, sizeof(u));
                }

の break に該当しているようです。
そこに
  fprintf(stderr, "%p %lld\n", s, (long long)n);fflush(stderr);
を仕込むと、
0 2147483647
と表示されました。


3回目、4回目の offset = ... の出力は、
> 	sizeof(off_t) = 8, sizeof(u_long_t) = 4
となる環境でだけ出力されるものなのでしょうか。
他の環境でも試してみましたが、どこも双方が 8 と出力される
環境ゆえか、この部分の出力がありませんでした。
(Linux/i386, FreeBSD/i386, HP-UX 11)