[Groonga-commit] groonga/groonga [master] add --groonga option to grntest.

アーカイブの一覧に戻る

null+****@clear***** null+****@clear*****
2010年 11月 23日 (火) 17:29:32 JST


Kouhei Sutou	2010-11-23 08:29:32 +0000 (Tue, 23 Nov 2010)

  New Revision: 089166a6aefbe5c861f7f0a2e7778b79ec2d4e44

  Log:
    add --groonga option to grntest.

  Modified files:
    doc/ja/source/grntest.txt
    src/grntest.c

  Modified: doc/ja/source/grntest.txt (+4 -0)
===================================================================
--- doc/ja/source/grntest.txt    2010-11-23 08:20:20 +0000 (11afee4)
+++ doc/ja/source/grntest.txt    2010-11-23 08:29:32 +0000 (ec2edd9)
@@ -52,6 +52,10 @@ grntest を利用するために必要なデータファイルは、ftp.groonga.
 
   デフォルトでは、grntest終了後のログファイルの出力先ははカレントディレクトリです。このオプションを利用すると、任意のディレクトリに出力先を変更することができます。
 
+.. cmdoption:: --groonga <groonga_path>
+
+  groongaコマンドのパスを指定します。デフォルトでは、PATHの中からgroongaコマンドを探します。
+
 引数
 ----
 

  Modified: src/grntest.c (+14 -7)
===================================================================
--- src/grntest.c    2010-11-23 08:20:20 +0000 (df22c1b)
+++ src/grntest.c    2010-11-23 08:29:32 +0000 (8443fed)
@@ -91,13 +91,14 @@ FILE *grntest_logfp;
 typedef SOCKET socket_t;
 #define SOCKETERROR INVALID_SOCKET
 #define socketclose closesocket
-#define GROONGA_PATH "groonga.exe"
+static const char *groonga_path = "groonga.exe";
 PROCESS_INFORMATION grntest_pi;
 #else
 pid_t grntest_server_id = 0;
 typedef int socket_t;
 #define socketclose close
 #define SOCKETERROR -1
+static const char *groonga_path = "groonga";
 #endif /* WIN32 */
 
 char *grntest_osinfo;
@@ -1555,7 +1556,7 @@ start_server(const char *dbpath, int r)
     exit(1);
   }
 
-  strcpy(tmpbuf, GROONGA_PATH);
+  strcpy(tmpbuf, groonga_path);
   strcat(tmpbuf, " -s ");
   strcat(tmpbuf, "-p ");
   sprintf(optbuf, "%d ", grntest_serverport);
@@ -1567,7 +1568,8 @@ start_server(const char *dbpath, int r)
 		      0, NULL, NULL, &si, &grntest_pi);
 
   if (ret == 0) {
-    fprintf(stderr, "Cannot start groonga server:error=%d\n", GetLastError());
+    fprintf(stderr, "Cannot start groonga server: <%s>: error=%d\n",
+            groonga_path, GetLastError());
     exit(1);
   }
 
@@ -1580,9 +1582,11 @@ start_server(const char *dbpath, int r)
   }
   sprintf(optbuf, "%d", grntest_serverport);
   if (pid == 0) {
-    ret = execlp("groonga", "groonga", "-s", "-p", optbuf, dbpath, (char*)NULL);
+    ret = execlp(groonga_path, groonga_path, "-s", "-p", optbuf,
+                 dbpath, (char*)NULL);
     if (ret == -1) {
-      fprintf(stderr, "Cannot start groonga server:errno=%d\n", errno);
+      fprintf(stderr, "Cannot start groonga server: <%s>: errno=%d\n",
+              groonga_path, errno);
       exit(1);
     }
   }
@@ -2796,8 +2800,9 @@ usage(void)
          "  --onmemory:                load all commands into memory\n"
          "  --output-type <tsv/json>:  specify output-type (default: json)\n"
          "  --owndb:                   open dbs for each ctx\n"
-         "  -p, --port <port number>:  server port number (default: %d)\n",
-         DEFAULT_DEST, DEFAULT_PORT);
+         "  -p, --port <port number>:  server port number (default: %d)\n"
+         "  --groonga <groonga_path>:  groonga command path (default: %s)\n",
+          DEFAULT_DEST, DEFAULT_PORT, groonga_path);
   exit(1);
 }
 
@@ -2965,6 +2970,7 @@ main(int argc, char **argv)
     {'\0', "localonly", NULL, MODE_LOCALONLY, getopt_op_on},
     {'\0', "onmemory", NULL, MODE_ONMEMORY, getopt_op_on},
     {'\0', "owndb", NULL, MODE_OWNDB, getopt_op_on},
+    {'\0', "groonga", NULL, 0, getopt_op_none},
     {'\0', NULL, NULL, 0, 0}
   };
 
@@ -2972,6 +2978,7 @@ main(int argc, char **argv)
   opts[1].arg = &portstr;
   opts[2].arg = &outdir;
   opts[3].arg = &outtype;
+  opts[10].arg = &groonga_path;
 
   i = grn_str_getopt(argc, argv, opts, &mode);
   if (i < 0) {




Groonga-commit メーリングリストの案内
アーカイブの一覧に戻る