[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00869] Re: NetBSD 5.0.2でコンパイルエラー
- Subject: [FDclone-users:00869] Re: NetBSD 5.0.2でコンパイルエラー
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Tue, 15 Jun 2010 21:12:20 +0900
しらいです。
In Message-Id <AANLkTinqK5izPoGYVk78_GSaxrRXLBplHSI3wE4Rdanf@mail.gmail.com>
toyota <ug110@drive.co.jp>さんwrites:
> とよたです。
> リリースして間もなくで、申し訳ないのですが、
> NetBSD 5.0.2 (+ gcc 4.1.3) 環境でコンパイルエラーに
> なってしまいます。
Install にも書いてありますが、一応 NetBSD は 3.x までのサ
ポートということになってますんで。
まぁ NetBSD には major version という括りが希薄なので、3.x
と言っても実際にはどこまでサポート出来てるのかは判りませんけ
ど、3.0 まではサポート出来てる筈です。
でも、HP TestDrive が終了してから NetBSD では検証してない
ので、ひょっとすると 3.x でも動かないかも。
それはともかく、NetBSD って version 毎に結構差異が大きくて、
アプリ側で全ての version に対応させるのがなかなかに難しい OS
なんですね。
今回の件にしても、多分 3.00h だけでなくて 1.00 以降の全て
の FDclone で失敗するんじゃないでしょうか。その辺りは今回特
にいじってませんので。
NetBSD 3.x にはそんなコード無かった筈なので、4.x か 5.x で
突然現れたコードなんじゃないでしょうか。
個人的には、NetBSD ってのは core team の自己満足の為にのみ
存在していて実用には向かないという印象があります。新ハードへ
の対応には嬉々として応じるのにアプリ側には無頓着ですね。
> どうやら、sys/disklabel.h で宣言されている
> MSDOS がぶつかっているようです。
ここはね、FDclone 2.08e で対策した箇所だと思います。この時
も 3.0 -> 3.1 への変更で NetBSD 側に突然入ったコードで困った
記憶があります。
元々の 4.4BSD のコードでは FS_MSDOS という識別子を define
してるだけのことで、NetBSD 3.0 以前や FreeBSD/OpenBSD ではそ
のままのコードが使われていて特に問題ありませんでした。
ところが NetBSD 3.1 では、この識別子を FS_ と MSDOS に分割
して記述しておいて後で結合してるんですよね。systematic にし
たつもりが余計見づらいコードになってる気もします。
このため、MSDOS の部分が FDclone では他の文字列に置換えら
れてしまって、結合するとおかしなことになっちゃう訳です。
> MSDOS の宣言が絡むと根が深そうで、他に良い
> 解決法が見つからなかったです。。。
CVS 追ってみたところ、disklabel.h,v 1.99 での変更が効いて
るようですね。それまで OMIT_FSTYPENUMS という識別子で分岐し
ていた箇所が _LOCORE という識別子の分岐に変わっています。
dosdisk.c の冒頭で OMIT_FSTYPENUMS を define している箇所
があるので、そこを _LOCORE に変更すると NetBSD 5.x でも大丈
夫になるかも知れません。
ただ、この _LOCORE という識別子は他でもあちこちで使われて
いるので、これを define することでまた別の原因により失敗する
可能性が大きいですね。
因みに NetBSD 4.x までは disklabel.h,v 1.97 が使われている
ので、今回の件は 5.x 特有の話だと思います。
しらい たかし