[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00199] Re: make install すと実行できない
- To: freewnn@tomo.tomo.gr.jp
- Subject: [freewnn:00199] Re: make install すと実行できない
- From: Tatsuo Furukawa <frkwtto@XXXX>
- Date: Fri, 15 Oct 1999 03:25:49 +0900
- In-Reply-To: <19991013103105S.hamajima@nagoya.ydc.co.jp>
- Reply-To: freewnn@tomo.gr.jp
ごぶさたしてました。古川竜雄です。
FreeBSD での jserver 死亡の件、解決して何よりです。ってそのコードを書
いたのは私なのですが。f(^^; 週末を利用して a013 を作りますね。
# しかし… プロトタイプを書き忘れただけでここまでややこしいトラブルに
# なるのか……
濱嶋さん> unix domain socketのときのメッセージを、一目でそうとわかるよ
濱嶋さん> うに変更しませんか?
そうですね。変えましょう。
濱嶋さん> たしかにソースを見ると、"Can't bind socket."はunix domain
濱嶋さん> socketのときで、inet socketでは"can't bind inet-socket"のよ
濱嶋さん> うです。私はinet socketだと思い込んでいました
これはまずいですよね。トラブル解決の手がかりはできるだけ多く提供すべき
だと思います。
んで、具体的にはどのようにメッセージを直せばいいでしょうか? とりあえず
"Can't create unix domain socket." にしてみましたが、これだと
inet-socket とバランスがとれませんよね? どう略すのがいいのでしょう?
(あんまりそんなことにこだわらなくてもいいかな?)
あと、「なぜだめだったのか」も表示するといいと思ったので、perror() を
呼ぶようにしてみました。最後に試しに変更してみたパッチをつけますが、
Linux/Slackware 3.1 だとこんな感じになります。
複数起動しようとした時のメッセージ
# /tmp/w/bin/Wnn4/jserver
Nihongo Multi Client Server (4.20)
: can't bind inet-socket
Transport endpoint is not connected
/tmp が書き込み禁止の時のメッセージ
# chmod 555 /tmp
# /tmp/w/bin/Wnn4/jserver
Nihongo Multi Client Server (4.20)
: Can't bind unix domain socket.
Permission denied
以下にパッチを添付しますが、これは perror() を無条件に使用するようになっ
ています。本体にマージするときは configure で使えるのかの判断が必要に
なると思います。
diff -ur FreeWnn-1.1.1-a012/Xsi/Wnn/jserver/de.c FreeWnn-1.1.1-a012.new/Xsi/Wnn/jserver/de.c
--- FreeWnn-1.1.1-a012/Xsi/Wnn/jserver/de.c Wed Sep 29 01:57:16 1999
+++ FreeWnn-1.1.1-a012.new/Xsi/Wnn/jserver/de.c Thu Oct 14 20:34:08 1999
@@ -271,7 +271,7 @@
#else /* 4.4BSD-Lite */
int fd = open("/dev/null", O_WRONLY);
if (fd < 0) {
- xerror("Cannot open /dev/null\n");
+ xerror("Cannot open /dev/null");
}
dup2(fd, 2);
close(fd);
@@ -786,17 +786,17 @@
unlink(sockname);
strcpy(saddr_un.sun_path, sockname);
if ((sock_d_un = socket(AF_UNIX, SOCK_STREAM, 0)) == ERROR) {
- xerror("Can't create socket.\n");
+ xerror("Can't create unix domain socket.");
}
if (bind(sock_d_un, (struct sockaddr *)&saddr_un,
strlen(saddr_un.sun_path) + 2)
== ERROR) {
shutdown(sock_d_un, 2);
- xerror("Can't bind socket.\n");
+ xerror("Can't bind unix domain socket.");
}
if (listen(sock_d_un, 5) == ERROR) {
shutdown(sock_d_un, 2);
- xerror("Can't listen socket.\n");
+ xerror("Can't listen unix domain socket.");
}
signal(SIGPIPE, SIG_IGN);
#ifdef DEBUG
@@ -840,7 +840,7 @@
saddr_in.sin_port = port;
saddr_in.sin_addr.s_addr = htonl(INADDR_ANY);
if ((sock_d_in = socket(AF_INET,SOCK_STREAM, 0)) == ERROR) {
- xerror("can't create inet-socket\n");
+ xerror("can't create inet-socket");
}
setsockopt(sock_d_in, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(int));
#ifdef SO_DONTLINGER
@@ -856,11 +856,11 @@
if (bind(sock_d_in, (struct sockaddr *)&saddr_in,
sizeof(saddr_in)) == ERROR) {
shutdown(sock_d_in, 2);
- xerror("can't bind inet-socket\n");
+ xerror("can't bind inet-socket");
}
if (listen(sock_d_in,5) == ERROR) {
shutdown(sock_d_in, 2);
- xerror("can't listen inet-socket\n");
+ xerror("can't listen inet-socket");
}
#if DEBUG
error1("sock_d_in = %d\n", sock_d_in);
@@ -898,6 +898,7 @@
register char *s;
{
fprintf(stderr,"%s: %s\n", cmd_name, s);
+ perror(cmd_name);
exit(1);
}
--
古川竜雄 (frkwtto@osk3.3web.ne.jp) / FreeWnn Project