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

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



潮田です。

>  ほぅ。こんなところで引っかかるとは、ひょっとして 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 で今と同じ表示をしているように見えます。