From owner-svn-ports-all@FreeBSD.ORG Sun May 5 15:53:06 2013 Return-Path: Delivered-To: svn-ports-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 24978861; Sun, 5 May 2013 15:53:06 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 167F5269; Sun, 5 May 2013 15:53:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r45Fr5ZG041975; Sun, 5 May 2013 15:53:05 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r45Fr5cZ041970; Sun, 5 May 2013 15:53:05 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201305051553.r45Fr5cZ041970@svn.freebsd.org> From: Hiroki Sato Date: Sun, 5 May 2013 15:53:05 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r317419 - in head/japanese/skkserv: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 May 2013 15:53:06 -0000 Author: hrs Date: Sun May 5 15:53:04 2013 New Revision: 317419 URL: http://svnweb.freebsd.org/changeset/ports/317419 Log: - Fix fork() and select() in skkserv. It didn't work properly. - Trim old-style header. Modified: head/japanese/skkserv/Makefile head/japanese/skkserv/files/patch-skkserv.c head/japanese/skkserv/files/patch-skkserv.h head/japanese/skkserv/pkg-descr Modified: head/japanese/skkserv/Makefile ============================================================================== --- head/japanese/skkserv/Makefile Sun May 5 14:42:01 2013 (r317418) +++ head/japanese/skkserv/Makefile Sun May 5 15:53:04 2013 (r317419) @@ -1,13 +1,9 @@ -# New ports collection makefile for: skkserv -# Date created: 31 Oct 1998 -# Whom: Shigeyuki FUKUSHIMA -# +# Created by: Shigeyuki FUKUSHIMA # $FreeBSD$ -# PORTNAME= skkserv PORTVERSION= 9.6 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= japanese MASTER_SITES= ${MASTER_SITE_PORTS_JP} DISTNAME= skk${PORTVERSION} @@ -20,8 +16,9 @@ RUN_DEPENDS= ${LOCALBASE}/share/skk/${SK USE_RC_SUBR= skkserv WRKSRC= ${WRKDIR}/skk-${PORTVERSION} GNU_CONFIGURE= yes +CONFIGURE_ARGS+=--with-jisyo=${SKKJISYO} \ + --libexecdir=${PREFIX}/sbin MAKE_ARGS= SUBDIRS='skkserv' -CONFIGURE_ARGS+= --with-jisyo=${SKKJISYO} --libexecdir=${PREFIX}/sbin PLIST_FILES= sbin/skkserv USERS= skkserv GROUPS= skkserv @@ -30,6 +27,6 @@ SKKJISYO_SIZE?= L SKKJISYO?= SKK-JISYO.${SKKJISYO_SIZE} do-install: - @${INSTALL_PROGRAM} ${WRKSRC}/skkserv/skkserv ${PREFIX}/sbin + ${INSTALL_PROGRAM} ${WRKSRC}/skkserv/skkserv ${PREFIX}/sbin .include Modified: head/japanese/skkserv/files/patch-skkserv.c ============================================================================== --- head/japanese/skkserv/files/patch-skkserv.c Sun May 5 14:42:01 2013 (r317418) +++ head/japanese/skkserv/files/patch-skkserv.c Sun May 5 15:53:04 2013 (r317419) @@ -1,5 +1,5 @@ --- skkserv/skkserv.c.orig 1997-01-21 04:16:36.000000000 +0900 -+++ skkserv/skkserv.c 2011-07-02 23:48:44.000000000 +0900 ++++ skkserv/skkserv.c 2013-05-06 00:49:10.000000000 +0900 @@ -102,6 +102,8 @@ #define err(m) \ @@ -87,7 +87,42 @@ set_hname(); /* make socket */ -@@ -232,9 +270,11 @@ +@@ -192,8 +230,18 @@ + mkjtab(); + + if (!debug) { ++ pid_t pid; + /* parent process exits now */ +- if (fork() != 0) exit(0); ++ pid = fork(); ++ if (pid != 0) { ++ if (pid == -1) ++ err("fork"); ++ exit(0); ++ } ++ /* child process */ ++#ifdef __FreeBSD__ ++ daemon(0, 0); ++#else + + fclose(stdin); + fclose(stdout); +@@ -215,6 +263,7 @@ + signal(SIGHUP, SIG_IGN); + if (fork() != 0) exit(0); + #endif ++#endif + } else { /* debug mode */ + fprintf(errout, "SKK-JISYO is %s\n", jname); + fflush(errout); +@@ -226,15 +275,18 @@ + /* 1993/6/5 by kam, re-read dictionary by "INT" signal */ + + nclients = 0; ++ fprintf(errout, "leave main\n"); + main_loop(); + } + showusage() { fprintf(stderr, @@ -101,7 +136,7 @@ exit(1); } -@@ -249,27 +289,41 @@ +@@ -249,27 +301,41 @@ bzero((char*)&sin, sizeof(sin)); sin.sin_family = AF_INET; @@ -149,7 +184,7 @@ if (debug) { fprintf(errout, "file descriptor for initsock is %d\n", initsock); fflush(errout); -@@ -382,6 +436,10 @@ +@@ -382,6 +448,10 @@ code = KANA_END; while ((c = fgetc(jisho)) != EOF) { @@ -160,7 +195,39 @@ target = ((c & 0xff)<< 8) | (fgetc(jisho) & 0xff); if (target == STRMARK) { fgets(buf, BUFSIZE, jisho); -@@ -476,7 +534,7 @@ +@@ -452,10 +522,17 @@ + * server main loop + */ + ++struct rfds { ++ fd_set fds; ++ int maxfd; ++}; ++ ++struct rfds getrfds(void); ++ + main_loop() + { ++ struct rfds r; + fd_set readfds, writefds, exceptfds; +- fd_set getrfds(); + struct sockaddr_in from; + int len; + register int i; +@@ -463,8 +540,10 @@ + FD_ZERO(&writefds); + FD_ZERO(&exceptfds); + for(;;) { /* infinite loop; waiting for client's request */ +- readfds = getrfds(); +- if (select(MAXDTAB, &readfds, &writefds, &exceptfds, NULL) < 0) { ++ r = getrfds(); ++ fprintf(errout, "before select: r.maxfd = %d\n", r.maxfd); ++ readfds = r.fds; ++ if (select(r.maxfd + 1, &readfds, &writefds, &exceptfds, NULL) < 0) { + if (errno == EINTR) /* if signal happens */ + continue; + err("select error; something wrong happened with the socket"); +@@ -476,7 +555,7 @@ if (FD_ISSET(initsock, &readfds)) { len = sizeof(from); @@ -169,3 +236,50 @@ err("accept error; something wrong happened with the socket"); } if (nclients >= MAXDTAB - 3 - debug * 2) { +@@ -498,10 +577,12 @@ + + if (debug) { + fprintf(errout, "number of clients %d\n", nclients); +- fprintf(errout, "file descriptors of clients are :"); ++ if (nclients) { ++ fprintf(errout, "file descriptors of clients are:"); + for (i = 0; i < nclients; i ++) +- fprintf(errout, "%d:", clientsock[i]); ++ fprintf(errout, " %d%s", clientsock[i], (i < nclients - 1) ? "," : ""); + fputs("\n", errout); ++ } + fflush(errout); + } + } +@@ -511,16 +592,24 @@ + * get bit pattern of read file descriptor + */ + +-fd_set getrfds() ++struct rfds ++getrfds(void) + { +- fd_set rfds; ++ struct rfds r; + register int i; + +- FD_ZERO(&rfds); +- FD_SET(initsock, &rfds); +- for (i = 0; i < nclients; i ++) +- FD_SET(clientsock[i], &rfds); +- return (rfds); ++ FD_ZERO(&r.fds); ++ FD_SET(initsock, &r.fds); ++ r.maxfd = initsock; ++ for (i = 0; i < nclients; i ++) { ++ if (clientsock[i] > 0) { ++ FD_SET(clientsock[i], &r.fds); ++ if (clientsock[i] > r.maxfd) ++ r.maxfd = clientsock[i]; ++ } ++ } ++ ++ return (r); + } + + /* Modified: head/japanese/skkserv/files/patch-skkserv.h ============================================================================== --- head/japanese/skkserv/files/patch-skkserv.h Sun May 5 14:42:01 2013 (r317418) +++ head/japanese/skkserv/files/patch-skkserv.h Sun May 5 15:53:04 2013 (r317419) @@ -1,5 +1,5 @@ --- skkserv/skkserv.h.orig 1997-01-21 04:16:36.000000000 +0900 -+++ skkserv/skkserv.h 2011-07-02 23:07:17.000000000 +0900 ++++ skkserv/skkserv.h 2013-05-05 23:59:34.000000000 +0900 @@ -37,6 +37,8 @@ /* Necessary for SunOS 3.x and maybe other old systems */ @@ -9,7 +9,7 @@ #include #ifdef HAVE_SYS_IOCTL_H -@@ -44,9 +46,11 @@ +@@ -44,9 +46,12 @@ #endif #include #include @@ -18,6 +18,7 @@ #include #include +#include ++#include #ifndef DEFAULT_JISYO #define DEFAULT_JISYO "/usr/local/share/emacs/SKK-JISYO.L" Modified: head/japanese/skkserv/pkg-descr ============================================================================== --- head/japanese/skkserv/pkg-descr Sun May 5 14:42:01 2013 (r317418) +++ head/japanese/skkserv/pkg-descr Sun May 5 15:53:04 2013 (r317419) @@ -1,7 +1,6 @@ SKK (Simple Kana Kanji Convertor) is a very fast and efficient Japanese input -method system, written in emacs-lisp. SKK runs on NEmacs (Japanized Emacs18), -Mule (MULtilingual Emacs), and Demacs (DOS version of Emacs18/NEmacs). - -WWW: http://openlab.ring.gr.jp/skk/index.html +method system, written in emacs-lisp. This package is the skk-jisyo server. + +WWW: http://openlab.ring.gr.jp/skk/index.html