[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:25440] Re: RFC: SKK related packages



At Sat, 25 Nov 2000 19:31:28 +0900,
Takao KAWAMURA <kawamura@debian.org> wrote:

> > # skksearch dir:/usr/share/skk/ とかできるといいのかな とか思ったり
> 
> フム。ついでと言ってはなんですが、skkserachのパッケージング
> についても相談に乗ってください。/etc/inetd.confに追加するエ
> ントリは
> 
> skkserv		stream	tcp	nowait	nobody	/usr/sbin/tcpd	/usr/sbin/skksearch-wrapper
> 
> として、
> ---------- skksearch-wrapper ----------
> #!/bin/sh
> 
> exec /usr/sbin/skksearch $(cat /etc/skksearch.conf)
> ---------------------------------------
> 
> ってのはどうかなと考えているのですが、いかがでしょう。

これだったら こんなんはどうですか?
# 注) テストしてません :-)

--- main.c.orig	Mon Nov 27 10:00:46 2000
+++ main.c	Mon Nov 27 10:18:40 2000
@@ -67,11 +67,12 @@
   char *p;
   int errflag = 0;
   int terminal = 0;
+  char *conf = NULL;
   extern char *optarg;
   extern int optind;
 
   /* process arguments */
-  while ((c = getopt(argc, argv, "l:f:sit")) != EOF) {
+  while ((c = getopt(argc, argv, "l:f:sic:t")) != EOF) {
    switch (c) {
     case 'l':
       loglevel = atoi(optarg);
@@ -84,13 +85,16 @@
       break;
     case 't':
       terminal = 1;
+    case 'c':
+      conf = optarg;
+      break;
     case '?':
       errflag = 1;
     }
   }
   if (errflag) {
     fprintf(stderr,
-	    "usage: %s [-l digit] [-f logfile] [-s] dictinary1 ... \n",
+	    "usage: %s [-l digit] [-f logfile] [-s] [-c config] [dictinary1 ...] \n",
 	    argv[0]);
     exit(1);
   }
@@ -107,6 +111,32 @@
   for (i = 0; i < dicnum; i++) {
     err(LOG_DEBUG, "openning dictionary %s", argv[optind + i]);
     diclist[i] = dic_open(argv[optind + i]);
+  }
+  if (conf != NULL) {
+     FILE *fp;
+     char line[1024];
+     char *p;
+     fp = fopen(conf, "r");
+     if (fp == NULL) {
+	err(LOG_ERR, "cannot open config file `%s'\n", conf);
+	exit(1);
+     }
+     while ((p = fgets(line, sizeof(line), fp)) != NULL) {
+	if (p[0] == '#') 
+	    continue;
+	p[strlen(p)-1] = '\0'; /* chop */
+	if (i >= MAXDICNUM) {
+	    err(LOG_ERR, "too many dicts in config file\n");
+	    exit(1);
+	}
+	dicnum++;
+	diclist[i++] = dic_open(p);
+     }
+     fclose(fp);
+  }
+  if (dicnum == 0) {
+     err(LOG_ERR, "no dict specified\n");
+     exit(1);
   }
 
   /* main loop */

-- 
鵜飼文敏