[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.