[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00507] Re: FDclone でファイルサイズが 0 と表示される
- Subject: [FDclone-users:00507] Re: FDclone でファイルサイズが 0 と表示される
- From: SHIOTA Shoichi <Shoichi.Shiota@lightwell.co.jp>
- Date: Fri, 21 Apr 2006 10:12:18 +0900
潮田です。
> 今度は 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)