namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: namazu-111-proto5 and errno patch
Date: Thu, 05 Feb 1998 11:02:09 JST
From: susumu-w@xxxxxxxxxxxxxxxxxx
Subject: [namazu:00112] namazu-111-proto5 and errno patch
> http://saturn.aichi-u.ac.jp/%7Eccsatoru/Namazu/namazu-111-proto-5.tar.gz
> なんですが、馬場さんの errno のパッチが mknmz.pl, srnmz.c のどちらにも
> 当たってないようですが…。
cygnus gnuwin32 に sys_errlist[] が無いから外した(X-Mail-Count:
00108)、という事だったですね。でも、もしかしたら cygnus にも
strerror() ならあるかもしれない。それなら以下の方法が取れるかも。
> あと、馬場さんのパッチだと srnmz.c の方は Solaris2.5.1 ではエラーにな
> りました。
> #include <errno.h> しておいて、sys_errlist[errno] を strerror(errno)
> に書き換えると OK でした。
> (逆に古い OS には strerror のないのがいっぱいありそうですが…)
そうでした。strerror() 問題があったんですね。済みません忘れてまし
た。最近Solarisに触ってないなー。
この部分は OS 依存になるので、configure の力を借りないと回避が難し
いかもしれない。./configure でチェックしたら、Linux の場合は、
/* Define if you have the sys_errlist function. */
#define HAVE_SYS_ERRLIST 1
/* Define if you have the strerror funcion. */
#define HAVE_STRERROR 1
#ifdef HAVE_STRERROR
#define Strerror strerror
#else
#ifdef HAVE_SYS_ERRLIST
#define Strerror(e) ((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])
#endif
#endif
みたいな感じになります。つまり strerror() と sys_errlist[] の両方
を持っていないOSはない(or 稀少)ということなので、先のパッチ部分は、
#include <errno.h> しておいた上で、
- printf("%s: %s\n", FLIST, sys_errlist[errno]);
+ printf("%s: %s\n", FLIST, Strerror(errno));
のように変更しておいて、configure 化して HAVE_SYS_ERRLIST と
HAVE_STRERROR の有無をチェックさせるようにすれば、より generic な
書き方になるはずです。
まあしかし、configure 化は多少面倒でしょうし、正常動作しているとき
はここは通らないので (^_^;) この部分は次期バージョンに廻しちゃって
も構わないかとおもいます。
--
馬場 肇 ( Hajime BABA ) E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士課程一回生
--