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

[FDclone-users:01006] Re: AIX上でのコンパイル時ワーニングについて



 しらいです。

In Message-Id <20120803131954.ab74ba50ed6724f77b08efa0@lightwell.co.jp>
        SHIOTA Shoichi <Shoichi.Shiota@lightwell.co.jp>さんwrites:
> 潮田と申します。

> 3.01 のリリースを知り、久しぶりに version をあげてみました。
> コンパイル途中にワーニングが出ていますので報告いたします。
> # 今回初めて出るようになったものかは、調べておりません。

 いえ、件の箇所は 0.99d で mntctl() に対応して以来ずっと同
じ cast 文字列になっていますので、多分 AIX 側の仕様変更によ
るもので、該当する AIX ではずっと出ていたと思われます。


> 少し調べたところ、
> 1. mntctl() の第3引数の型は、 AIX 5.3, 6.1 共に char *。
> # この2環境しか身近にありません。
> 2. machine.h で USEMNTCTL が define されるのは AIX の時だけ。
> でした。

 Install 見て貰うと判りますけど AIX は 3.x/4.x のみ対応とい
うことになっています。4.x -> 5.x で AIX 側の include file が
宣言を変えたのかも知れませんね。
 旧 AIX でどうなるかを考えてみると、warning なのであれば従
来どおりの実装にしておいた方が無難なのではないかと思います。
逆向きの型不一致だと warning で留まらないような気がします。

 この辺りの code は GNU fileutils を参考にしていて、該当箇
所は今だと GNU coreutils に移管されているんですが、その最新
版 8.17 でも mntctl() の第三引数は struct vmount * ですね。
 AIX は手元に持っていないので実際のところは定かではないので
すが、0.99d 当時は小島肇さんが AIX の面倒を見て下さっていて、
struct vmount * で無事 build 出来ているようでした。
 小島さん自身はまだこの ML に参加されていますが、当時の AIX
環境は流石にもう残ってないでしょうかね?


> 次の新版のリリース時にでも、上の変更をいれていただければ幸いです。

 OS や version の違いによって引数や返り値の型が異なるという
ことはままあって、それが実際に仕様の差異に起因している場合は
対応が必要ですが、そうでなければ黙認しているのが実状です。

 例えば munmap(2) の引数って void * だったり caddr_t だった
りまちまちですが、各種 OS の正しい型を調べて warning を全て
解消しようとすると不必要な code の肥大化を招きます。
 このケースでも、AIX の各 version を比較して然るべき型での
cast を実現したとしても、その調べる手間や増えた code 量に見
合うだけの効果が得られるかどうかは甚だ疑問です。

 多分 GNU coreutils も同じような考えで放置しているんじゃな
いでしょうかね。

                                               しらい たかし