[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00518] Re: FDclone でファイルサイズが 0 と表示される
- Subject: [FDclone-users:00518] Re: FDclone でファイルサイズが 0 と表示される
- From: SHIOTA Shoichi <Shoichi.Shiota@lightwell.co.jp>
- Date: Mon, 15 May 2006 17:17:48 +0900
潮田です。
> > その上、今回のメールは内容が無くて、白旗宣言だったりします。
> そんなことおっしゃらずにもう少しおつき合い下さい。
分かりました。
ただ、反応がかなり鈍くなりますので、ご了承ください。
> いや、その位置はまずいでしょう。引用部分の直前に「else」が
> ある筈で、「else」と「if」の途中に printf() を挿入してしまう
> と流れが変わってしまいます。
仰るとおりです。
頭がまだお休みモードになってますね。
# 普段のソースが、必ず {} をつける冗長なものなので・・・
> CFLAGS をいじったという話ですが、「-D_LARGE_FILES」まで消
> してしまっていませんか?空の directory に FD-2.08b を展開し
> てから [FDclone-users:00510] を当てて再挑戦してみて下さい。
今度は、 Makefile.tmp は触らない方向で挑戦です。
どうせ、 sscanf2() の中の動きは理解できないので、 I/O から
なにか分からないと眺めているのですが、この場合の呼び出し側は
readfileent() の理解であってますでしょうか。
また、ここの
while (l--) switch (s[l]) {
で、 case を基本的に上から下へ処理しているイメージでしょうか。
case g:
sscanf2("", "%-*d%$", )
case s:
sscanf2("", "%qd", )
と buf が "" で sscanf2() に来ているので、その前の case u が
何かをしてそうだなというところまでは見ました。
case u:
cp = sscanf2("203 1 0 Apr 14 09:13:28 2006 ss",
"%-*d%$",
sizeof(uid_t), &uid);
この部分ですが、 uid には 203 が戻りますが、 cp は NULL が
戻ります。
("%-*d%$" が '$' で終わっているから?)
この為、次の if (cp) に入れず、 else if へ行くのですが、
finduid() の戻り (up) も NULL で戻るようで、結果的に
tmp -> st_uid には何も入らず -1 がセットされた状態になる
様です。
( sscanf2() に %u/%g が来てましたが、 AIX の tar は
ブランク区切りみたいです)
普段、2列表示にしていたので気が付きませんでしたが、
1列表示にすると
$ 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:00 daemon system -rw-r--r--
sss 0 06-01-01 0:00:00 daemon bin -rw-r--r--
とUID, GID とも違うものが表示されています。
# uid 203 = shiota, gid 1 = staff
(ファイル名とサイズの部分のブランクを削ってます)