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);