[Groonga-commit] groonga/groonga [master] Add checks for --default-command-version.

アーカイブの一覧に戻る

null+****@clear***** null+****@clear*****
2012年 3月 13日 (火) 14:54:02 JST


Susumu Yata	2012-03-13 14:54:02 +0900 (Tue, 13 Mar 2012)

  New Revision: a5f67aa19d967d27d905620c288a0de4d05c8740

  Log:
    Add checks for --default-command-version.

  Modified files:
    src/groonga.c

  Modified: src/groonga.c (+40 -17)
===================================================================
--- src/groonga.c    2012-03-13 14:37:46 +0900 (42017d2)
+++ src/groonga.c    2012-03-13 14:54:02 +0900 (971abad)
@@ -2094,8 +2094,9 @@ static const char *default_query_log_path = "";
 static const char *default_config_path = "";
 static uint32_t default_cache_limit = 0;
 static const char *default_document_root = "";
-static grn_command_version default_command_version = 0;
-static int64_t default_match_escalation_threshold = 0;
+static grn_command_version default_default_command_version =
+    GRN_COMMAND_VERSION_DEFAULT;
+static int64_t default_default_match_escalation_threshold = 0;
 static const char * const default_bind_address = "0.0.0.0";
 
 static void
@@ -2165,8 +2166,9 @@ init_default_settings(void)
   default_document_root = GRN_DEFAULT_DOCUMENT_ROOT;
 #endif
 
-  default_command_version = grn_get_default_command_version();
-  default_match_escalation_threshold = grn_get_default_match_escalation_threshold();
+  default_default_command_version = grn_get_default_command_version();
+  default_default_match_escalation_threshold =
+      grn_get_default_match_escalation_threshold();
 }
 
 static void
@@ -2302,8 +2304,8 @@ main(int argc, char **argv)
   const char *port_arg = NULL, *encstr = NULL,
     *max_num_threads_arg = NULL, *log_level_arg = NULL,
     *bind_address_arg = NULL, *hostname_arg = NULL, *protocol = NULL,
-    *cache_limit_arg = NULL, *command_versionstr = NULL,
-    *match_escalation_threshold_arg = NULL;
+    *cache_limit_arg = NULL, *default_command_version_arg = NULL,
+    *default_match_escalation_threshold_arg = NULL;
   const char *config_path = NULL;
   int r, i, mode = mode_alone;
   static grn_str_getopt_opt opts[] = {
@@ -2346,8 +2348,8 @@ main(int argc, char **argv)
   opts[18].arg = &cache_limit_arg;
   opts[19].arg = &input_path;
   opts[20].arg = &grn_document_root;
-  opts[21].arg = &command_versionstr;
-  opts[22].arg = &match_escalation_threshold_arg;
+  opts[21].arg = &default_command_version_arg;
+  opts[22].arg = &default_match_escalation_threshold_arg;
   opts[23].arg = &bind_address_arg;
 
   init_default_settings();
@@ -2524,19 +2526,40 @@ main(int argc, char **argv)
 
   grn_set_default_encoding(enc);
 
-  if (command_versionstr) {
-    grn_set_default_command_version(atoi(command_versionstr));
+  /* TODO: argument checks should be done before grn_init(). */
+  if (default_command_version_arg) {
+    const char * const end = default_command_version_arg
+        + strlen(default_command_version_arg);
+    const char *rest = NULL;
+    const int value = grn_atoi(default_command_version_arg, end, &rest);
+    if (end != rest || value < GRN_COMMAND_VERSION_MIN ||
+        value > GRN_COMMAND_VERSION_MAX) {
+      fprintf(stderr, "invalid command version: <%s>\n",
+              default_command_version_arg);
+      return EXIT_FAILURE;
+    }
+    switch (value) {
+    case 1 :
+      grn_set_default_command_version(GRN_COMMAND_VERSION_1);
+      break;
+    case 2 :
+      grn_set_default_command_version(GRN_COMMAND_VERSION_2);
+      break;
+    default :
+      fprintf(stderr, "invalid command version: <%s>\n",
+              default_command_version_arg);
+      return EXIT_FAILURE;
+    }
   }
 
-  /* TODO: argument checks should be done before grn_init(). */
-  if (match_escalation_threshold_arg) {
-    const char * const end = match_escalation_threshold_arg
-        + strlen(match_escalation_threshold_arg);
+  if (default_match_escalation_threshold_arg) {
+    const char * const end = default_match_escalation_threshold_arg
+        + strlen(default_match_escalation_threshold_arg);
     const char *rest = NULL;
-    const int64_t value = grn_atoll(match_escalation_threshold_arg, end, &rest);
+    const int64_t value = grn_atoll(default_match_escalation_threshold_arg, end, &rest);
     if (end != rest || value < 0) {
-      fprintf(stderr, "invalid default match escalation threshold: <%s>\n",
-              match_escalation_threshold_arg);
+      fprintf(stderr, "invalid match escalation threshold: <%s>\n",
+              default_match_escalation_threshold_arg);
       return EXIT_FAILURE;
     }
     grn_set_default_match_escalation_threshold(value);




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