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

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



 しらいです。

In Message-Id <OF36CCF945.5106D84D-ON49257150.0005DAF7@tky.lightwell.co.jp>
        SHIOTA Shoichi <Shoichi.Shiota@lightwell.co.jp>さんwrites:
> 潮田@(FreeBSD から乗り換える Linux を模索中)です。

 BSD 派の Linux ってことで SSD/Linux なんてのもありますけど、
あんまし使い勝手は良くないですね。


> >  この対応をし、更に printf() 側ももう少し丁寧に対応し直しま
> > したので、AIX 環境をお持ちの方は以下の patch を試してみて頂
> > けないでしょうか。
> 1) AIX 5L 5.1 ML 09 + vac.C 5.0.2.8
> 2) AIX 5L 5.2 TL 08 SP 01 + vac.C 7.0.0.5
> の2つの環境で試しましたが、変化がありませんでした。

 んー、HP-UX (PA-RISC) で NOLONGLONG を定義して確認した時は
うまく動いたんですけどねー。他に big endian な環境がないので
確認出来ないんですよ。
 archive していない一般の file size では問題なく表示されま
すよね?archive だけだとすると sscanf() の問題ですね。

 取り敢えず以下のテストプログラムを試して貰えないでしょうか。

---- Cut Here ----
#define	_LARGE_FILES
#undef	_LARGE_FILE_API

#include <stdio.h>
#include <sys/types.h>

main()
{
	unsigned char *cp;
	off_t ofs;
	int i;

	ofs = (off_t)0x0123456789;
	cp = (char *)(&ofs);
	for (i = 0; i < sizeof(ofs); i++) printf("%02 ", *(cp++));
	printf("\n");
}
---- Cut Here ----

 big endian だと 00 00 00 01 23 45 67 89 になる筈なんですが、
int 幅を越える型は CPU の endian とはまた別の枠組で実装され
てるでしょうから、判断が難しいですね。


> IBM 自体が、 5.1 の TL を出さないぐらいなので、 4.1 以降専用でも
> 十分ではないかと思いますが、困る方もいらっしゃるのでしょうね。
> (大学とかだと、そんなに前の ver でも動いていたりするのかな。)

 HAVELONGLONG で逃げちゃうと、AIX の他に似たような環境が出
て来た時に対応出来なくなっちゃうので、HAVELONGLONG を適用す
る前にこの問題は解決しておきたいと思います。

                                               しらい たかし