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

[FDclone-users:00913] Re: FDclone 3.00i has been released



 しらいです。

In Message-Id <20100724175227.d201e362.riki1017kazu@gmail.com>
        Rikito INAKAZU <riki1017kazu@gmail.com>さんwrites:
> 稲員です。

> まず bug の方ですが MINIX 用の getmntfield() で space の判定が抜けて
> いるため行末まで行っちゃってます。 MINIX only の bug ですし INFO_FILESYS
> が効かない程度で、どうせ大した情報を取れない MINIX では実害は有りませんが。

 あれ?最初に動作確認した際には動いてたんですけどね。どっか
でコードが入れ替わったかな?
 get_mtab_entry(3) の code 見ると isprint(3) で判別してたん
で、当初の isspace(3) から書換えたのかも知れません。でも実際
/etc/mtab に unprintable な文字なんて使いませんね。
 get_mtab_entry(3) の code も良く読むと unprintable な文字
が混入した時点で破綻しますね。行末も検知してないんでエントリ
がずれまくります。何がしたかったんでしょ?

 とゆー訳で isprint(3) はやめて isspace(3) だけで判断します。
こんな感じでいいんじゃないでしょうか。

---- Cut Here ----
diff -u ../old/FD-3.00i/info.c ./info.c
--- ../old/FD-3.00i/info.c	Sat Jul 24 00:00:00 2010
+++ ./info.c	Sat Jul 24 19:59:43 2010
@@ -808,11 +808,11 @@
 
 	if (!cpp || !*cpp || !**cpp) return(vnullstr);
 
-	while (**cpp && !Xisprint(**cpp)) (*cpp)++;
+	while (Xisspace(**cpp)) (*cpp)++;
 	if (!**cpp) return(vnullstr);
 	s = *cpp;
 
-	while (**cpp && Xisprint(**cpp)) (*cpp)++;
+	while (**cpp && !Xisspace(**cpp)) (*cpp)++;
 	if (**cpp) *((*cpp)++) = '\0';
 
 	return(s);
---- Cut Here ----


> 次に、お聞きしたい事というのは MINIX での statfs2() の実装についてです。

 これは正直労力を割く気にはなれません。


>   * minix/callnr.h なんていつ変わるか分からん様なシステムの実装の
>     詳細を使うのは気色悪い。
>   * Release されてもいない version まで面倒見れん。

 どっちもですね。こんな user land にまで影響の及ぶ変更を施
したら、普通は revision up なんかでは済まさないし、compiler
で判別可能な設計にする筈です。
 でもそうなってないということは、3.1.x は依然非実用版という
位置付けなんだと思います。実験的に色々載っけてみてますよとい
う実装に過ぎない訳で。
 だとすれば、今後の release で実用版の statfs(3) が出て来た
際に初めて対応すればいいと思います。3.1.8 で本当に載る保証は
無いし、次の revision でいきなり消えてる可能性もあるし。

 ということで、基本的に 3.1.0 で実装されている system call
以外は極力使わない方針で MINIX 対応してます。


> > ・gettimeofday(2) の第二引数を NULL に
> >  何故か man page にそうしろって書いてあります。
> > 
> 
> POSIX/SUS 関係でしょうね。少なくとも SUSv2 以降では第二引数に NULL
> 以外を渡すと "the behavior is unspecified" だそうなので。
> Kernel 内部に Time Zone を持たせるという失敗した設計の名残なので、
> 通常は NULL にするのが正しい様です。

 実際 FDclone でも gettimeofday(2) で取得した timezone は使
ってないんですけど、NULL が正解とまで言うのは言い過ぎかと。
使わなければ取得するくらいは構わないでしょ。
 って言うか、初期の gettimeofday(3) の実装には tzp=NULL を
許さないものだってあるので、struct timezone くらいは用意しと
いて貰わないと困るんですよね。
 MINIX3 はやけに POSIX にご執心のようですけど、POSIX の目的
の一つには portability もあった訳で、POSIX に拘る余り他の OS
との親和性を下げちゃうってのはどうなのよって思います。

 Tanenbaum 先生っだったらそんなの十分承知のことだと思うんで
すけどねー。ひょっとすると Linus との出会いは学者として不幸
だったのかも知れません。


> あんなの実質 NetBSD の bug なんじゃないですかねぇ?小細工の為に余計な
> 識別子 (それも如何にも被りそうな) を産み出して本来 user が使えるはずの
> 名前空間を不必要に汚染してるし。

 そこまで言っちゃうと言い過ぎでしょう。他で被りそうな識別子
使ってるのはこっちもお互い様なんだし。/usr/include の下なん
でもっと配慮が欲しかったとは思いますけど。
 ただまぁねー、NetBSD 絡みの文字列なら NetBSD がどう定義し
ようが勝手なんだけど、MSDOS ってあんたに関係ないでしょとは言
いたいかも。

 あと、個人的にはああいう凝った macro にするのは好きじゃあ
りません。記述上の手抜きの為に却って読みづらくしてるので、む
しろ bug の温床になり兼ねないでしょ。
 まぁ担当者本人にとってはあれが一番理解し易い記述なのかも知
れませんけど、NetBSD って一人でメンテしてる OS でしたっけ?

# とゆー訳で MINIX にも NetBSD にも負けるな!>ITRON

                                               しらい たかし