conf-file.diff by Takao KAWAMURA <kawamura@debian.org>

Add support for a configuration file.
Index: skksearch-0.0/main.c
===================================================================
--- skksearch-0.0.orig/main.c	Fri Dec  8 11:03:41 2000
+++ skksearch-0.0/main.c	Fri Dec  8 11:04:31 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,33 @@
   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] == '#' || p[0] == '\n') 
+	    continue;
+	p[strlen(p)-1] = '\0'; /* chop */
+	if (i >= MAXDICNUM) {
+	    err(LOG_ERR, "too many dicts in config file\n");
+	    exit(1);
+	}
+	err(LOG_DEBUG, "openning dictionary %s", p);
+	dicnum++;
+	diclist[i++] = dic_open(p);
+     }
+     fclose(fp);
+  }
+  if (dicnum == 0) {
+     err(LOG_ERR, "no dict specified\n");
+     exit(1);
   }
 
   /* main loop */
