[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00827] Re: 標準の関数をどこまで仮定するか。
小野寛生です
At Sun, 24 Mar 2002 02:22:42 JST,
Tomoki AONO wrote:
> index/strchr やbcopy/memcpyなどC89的に(後者に)統一した方が
> よいと思ってはいますが、大仕事になりそうなのでまだ手をつけ
> ていません。
おきかえ、configure の結果をもとに代替処理があるとよさそうなものは下記
のようなところでしょうか。思いつきなんで、もうちょっとよく考えないとい
けないと思っていますが。
・index → strchr, bcopy → memmove, bcmp → memcmp に書き換え。
・header:
STDC_HEADERS なら string.h
そうでなければ、strings.h, memory.h の有無を調べて include。
・functions:
memmove がない → bcopy を使う、で済むのか、
memmove がない → bcopy がない → memcpy +αで代替処理、としないとなのか。
strchr がない → index
memcmp がない → bcmp
という具合でしょうか?
あとは、
・malloc & free
これは、GNU coding style に書いてあることにのっとって、
STDC_HEADERS なら stdlib.h を include。
no かつ malloc.h があれば malloc.h を include
(どっちもなければなにもしない)。
FreeWnn での prototype 宣言は全て削除。
(関数の存在チェックは不要)。
で、wnn_malloc.h とか MALLOC.c とか削除出来るかな…と思っています。
・getopt.c を無条件で link してしまっているのですが…。
getopt があれば、getopt.o をリンクしないようにする、
getopt がなければ、getopt.o をリンクするようにする。
という変更 (現状からだとちょっと面倒そう…) を加えるか、
getopt_long をいれてしまう。
のどっちがよいかな…と思っています。
最終的には getopt_long 入れたいですが。
> re_signalマクロはちゃっかり先日のerror.c書き直しに使わせて
> いただいてます。C89的にはsignal()は再定義すべきということ
> になっていたと思うので、BSDであるかに関わらず再定義する or
> signal()以外のシグナルハンドラ(sigaction?)を使う or
> configureで判別する方法があればそれを使う、のどれかになる
> と思うのですが、どうしたものでしょう。