[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00665] Re: Linux 2.6.18 で dosdisk.c コンパイルエラー (_syscall5 マクロ)
- Subject: [FDclone-users:00665] Re: Linux 2.6.18 で dosdisk.c コンパイルエラー (_syscall5 マクロ)
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Sun, 10 Dec 2006 01:27:12 +0900
しらいです。
In Message-Id <061209163656.M0132555@mix.syd.odn.ne.jp>
<hma@syd.odn.ne.jp>さんwrites:
> 濱崎です。
> _FILE_OFFSET_BITS=64 なら、USELLSEEK を無効にしてもいいんでしょうか?
_FILE_OFFSET_BITS が「定義されていること」と「有効であるこ
と」とは別の話です。定義すれば何でも有効になるんだったら嬉し
いんですけどねー。「バグがない」とか「大金持ち」とか。
定義されているか否かの判別は簡単ですけど、有効か否かの判別
は困難です。実際に 64bits 長の offset 値が扱えるのかどうかは、
少なくとも compile 時には判らないでしょうね。
configure で判別するという手もあるかも知れませんが、実際に
2GB 超のファイルを作って確認するなんてのは非現実的ですよね。
> 対処として合っていますか?
USELLSEEK を #undef しても何の解決にもなっていないので、現
行で考えられる対処は __KERNEL__ の定義しかないと思います。
---- Cut Here ----
diff -u ../old/FD-2.09a/dosdisk.c ./dosdisk.c
--- ../old/FD-2.09a/dosdisk.c Tue Oct 31 00:00:00 2006
+++ ./dosdisk.c Fri Dec 8 22:26:52 2006
@@ -10,8 +10,14 @@
#include <errno.h>
#include <fcntl.h>
+#ifdef USELLSEEK
+#define __KERNEL__
+#endif
#ifndef NOUNISTDH
#include <unistd.h>
+#endif
+#ifdef USELLSEEK
+#undef __KERNEL__
#endif
#ifndef NOSTDLIBH
---- Cut Here ----
別解としては man page にあるという syscall(2) を使うという
手なんでしょうが、その記述ではどういう手順で使うことになって
いますか?
syscall(2) は下手に使うと library 依存になったりして、全て
の Linux で有効なコードを書くのは難しいんですよ。
しらい たかし