[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で判別する方法があればそれを使う、のどれかになる
> と思うのですが、どうしたものでしょう。


http://www.freewnn.org/ FreeWnn Project