[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00135] Re: patch-1.1.1-a008, patch-1.1.1-a009
元木@ITLです。
In article <199909231938.EAA21351@pop1.ngy.3web.ne.jp>
frkwtto@osk3.3web.ne.jp (Tatsuo Furukawa) writes:
| ところで time_t があるかないかってのは autoconf の組み込みマクロにはあ
| りませんよね? (チェックプログラムは自分で書くしかないのかな?)
time_t が無い環境でテストしてないですが、以下で実現できると
思います。
>AC_CHECK_TYPE (time_t, long)
| これは
| if (accept(sock_d_un, &addr_un, &addrlen) < 0) break;
|
| ですね。んで、addr_un は以下のように定義されています。
|
| #ifdef AF_UNIX
| static struct sockaddr_un saddr_un; /** ソケット **/
| #endif /* AF_UNIX */
|
| 実は私の環境(Linux/Slackware3.1)では AF_UNIX が定義されていないのでこ
| このテストができません。そこで、man accept の冒頭に
Linux/Slackware で AF_UNIX が定義されてないなんてことはない
と思いますが...
libc5 だと linux/socket.hあたりにあると思います。
# jserver が /tmp/jd_sockV4 ってファイルを作っていますよね?
で本題ですが、
>accept(sock_d_un, &addr_un, &addrlen)
は
>accept(sock_d_un, (struct sockaddr *)&addr_un, &addrlen)
とキャストすればいいはずです。
# de.c の他の部分ではきちんとキャストしてるのですが :-)
| #ifdef SRAND48
| double drand48();
| #define RAND() drand48()
| #else
| double drand();
| #define RAND() ((double)rand() / (double)((1<<31) - 1))
| #endif
|
| もしかして、OpenBSD 2.5 って int が 16 ビットなのでしょうか? (まさかね
| え…)
Debian GNU/Linux でも gcc に -ansi をつけるとばっちり
>warning: integer overflow in expression
が出ます。
式を見て考えたところ sizeof(int) == 4 な OS/ディストリビュー
ションでは 1 << 31 すると signed int の範囲を越えるため警告
が出ると想像できます。
なので、
>#define RAND() ((double)rand() / ((1<<31) - 1))
を
#define RAND() (rand() / ((double)(1<<31) - 1))
等にすると warning はなくなりました。
sin.