[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00509] Re: FDclone でファイルサイズが 0 と表示される
- Subject: [FDclone-users:00509] Re: FDclone でファイルサイズが 0 と表示される
- From: SHIOTA Shoichi <Shoichi.Shiota@lightwell.co.jp>
- Date: Mon, 24 Apr 2006 11:13:41 +0900
潮田です。
> ほぅ。こんなところで引っかかるとは、ひょっとして mask の値
> がおかしいんじゃないでしょうかね。
> ここで mask の値は sizeof(long long) - sizeof(off_t) bytes
> 分だけシフトして得られるんですが、AIX 環境ではこれが負数にな
> るんですね。
この部分を
else {
fprintf(stderr, "1 [%lld]\n", (long long)mask);fflush(stderr);
mask >>= 1;
fprintf(stderr, "2 [%lld]\n", (long long)mask);fflush(stderr);
if (n >= 0) {
fprintf(stderr, "3 [%ld]\n", n);fflush(stderr);
if ((u_long_t)n & ~mask) {
fprintf(stderr, "4 [%ld][%lld][%p]\n", n, (long long)mask, s);fflush(stderr);
s = NULL;
}
fprintf(stderr, "5 [%ld][%lld][%p]\n", n, (long long)mask, s);fflush(stderr);
}
else if (((u_long_t)n & ~mask) != ~mask) {
fprintf(stderr, "6 [%ld][%lld][%p]\n", n, (long long)mask, s);fflush(stderr);
s = NULL;
}
fprintf(stderr, "7 [%ld][%lld][%p]\n", n, (long long)mask, s);fflush(stderr);
if (!s) break;
fprintf(stderr, "8\n");fflush(stderr);
memcpy(&u, &n, sizeof(u));
}
fprintf(stderr, "9\n");fflush(stderr);
と、各時点での値をださせましたが、出力は以下の様になりました。
1 [0]
2 [0]
3 [2147483647]
4 [2147483647][0][2000e832]
5 [2147483647][0][0]
7 [2147483647][0][0]
何かの参考になれば良いのですが。
> 理屈はともかく、そういう特性を鑑みて [FDclone-users:00495]
> の patch を作り直すとこんな感じになるんじゃないでしょうか?
これは、素の FD-2.08b に適用して変化をみれば良いのですよね。
残念ながら変化が無いようにみえます。
いまさら火に油を注ぐような報告で、心苦しいのですが、
tar ファイル中の、サイズや日付がおかしいのは、ファイルサイズが
大きいから(だけ)ではなさそうです。
つなり小さなサイズでも同じで、サイズは 0 、日付は実行した
年の 1/1 00:00 と表示されているようです。
$ ls -l xx.tar
-rw-r--r-- 1 shiota staff 10240 Apr 24 09:13 xx.tar
$ tar tvf xx.tar
-rw-r--r-- 203 1 0 Apr 14 09:13:28 2006 ss
-rw-r--r-- 203 1 2 Apr 14 09:17:04 2006 sss
のファイルでも
ss 0 06-01-01 0:00
sss 0 06-01-01 0:00
と表示されています。
(最下行も同じです)
今過去の ver を 2.3 取り寄せて試しているのですが、ずっと
そうだったかもしれません。
(うーん、動いていた気がするんだけど)
2.04, 2.06b で試しましたが、この小さなサイズでもおかしいのは
同様でした。
ただ、 2.04 では大きなファイルのサイズ表示が
今とは異なり、最下行では正しく出ていました。
先に書きました、
2G 999999999 06-04-14 9:08
4Go 999999999 06-04-19 9:08
4G 999999999 06-04-19 9:07
3G 999999999 06-04-19 9:16
x.tar 999999999 06-04-14 9:18
ですと、最下行では
2147483648
4296015872
4294967296
3221225472
2147491840
と、 ls と同じ結果が表示されました。
こちは、なんとなく記憶にあって、
[FDclone-users:00503] で
> と異なるファイルサイズのファイルで試しましたが、最下行には全て
> 2147483647
> と表示されました。
と書いたとき、違和感がありました。
2.03 では、これらのファイルがリストの対象にならず
2.04? は、正しく、
2.05 - 2.06a では完全におかしく、
2.06b で今と同じ表示をしているように見えます。