void options_parse(int argc, char *argv[]) { int option_index= 0; int option_rv; memcached_programs_help_st help_options[]= { {0}, }; static struct option long_options[]= { {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION}, {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP}, {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE}, {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG}, {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS}, {(OPTIONSTRING)"flag", no_argument, &opt_displayflag, OPT_FLAG}, {(OPTIONSTRING)"hash", required_argument, NULL, OPT_HASH}, {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY}, {0, 0, 0, 0}, }; while (1) { option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index); if (option_rv == -1) break; switch (option_rv) { case 0: break; case OPT_BINARY: opt_binary = 1; break; case OPT_VERBOSE: /* --verbose or -v */ opt_verbose = OPT_VERBOSE; break; case OPT_DEBUG: /* --debug or -d */ opt_verbose = OPT_DEBUG; break; case OPT_VERSION: /* --version or -V */ version_command(PROGRAM_NAME); break; case OPT_HELP: /* --help or -h */ help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options); break; case OPT_SERVERS: /* --servers or -s */ opt_servers= strdup(optarg); break; case OPT_HASH: opt_hash= strdup(optarg); break; case '?': /* getopt_long already printed an error message. */ exit(1); default: abort(); } } }
void options_parse(int argc, char *argv[]) { int option_index= 0; int option_rv; memcached_programs_help_st help_options[]= { {0}, }; static struct option long_options[]= { {"version", no_argument, NULL, OPT_VERSION}, {"help", no_argument, NULL, OPT_HELP}, {"verbose", no_argument, &opt_verbose, OPT_VERBOSE}, {"debug", no_argument, &opt_verbose, OPT_DEBUG}, {0, 0, 0, 0}, }; while (1) { option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index); if (option_rv == -1) break; switch (option_rv) { case 0: break; case OPT_VERBOSE: /* --verbose or -v */ opt_verbose = OPT_VERBOSE; break; case OPT_DEBUG: /* --debug or -d */ opt_verbose = OPT_DEBUG; break; case OPT_VERSION: /* --version or -V */ version_command(PROGRAM_NAME); break; case OPT_HELP: /* --help or -h */ help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options); break; case '?': /* getopt_long already printed an error message. */ exit(1); default: abort(); } } }
static void options_parse(int argc, char *argv[]) { memcached_programs_help_st help_options[]= { {0}, }; int option_index= 0; int option_rv; while (1) { option_rv= getopt_long(argc, argv, "Vhvds:a", long_options, &option_index); if (option_rv == -1) break; switch (option_rv) { case 0: break; case OPT_VERBOSE: /* --verbose or -v */ opt_verbose = OPT_VERBOSE; break; case OPT_DEBUG: /* --debug or -d */ opt_verbose = OPT_DEBUG; break; case OPT_VERSION: /* --version or -V */ version_command(PROGRAM_NAME); break; case OPT_HELP: /* --help or -h */ help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options); break; case OPT_SERVERS: /* --servers or -s */ opt_servers= strdup(optarg); break; case OPT_ANALYZE: /* --analyze or -a */ opt_analyze= OPT_ANALYZE; break; case '?': /* getopt_long already printed an error message. */ exit(1); default: abort(); } } }
void options_parse(int argc, char *argv[]) { memcached_programs_help_st help_options[]= { {0}, }; static struct option long_options[]= { {"concurrency", required_argument, NULL, OPT_SLAP_CONCURRENCY}, {"debug", no_argument, &opt_verbose, OPT_DEBUG}, {"execute-number", required_argument, NULL, OPT_SLAP_EXECUTE_NUMBER}, {"flag", no_argument, &opt_displayflag, OPT_FLAG}, {"flush", no_argument, &opt_flush, OPT_FLUSH}, {"help", no_argument, NULL, OPT_HELP}, {"initial-load", required_argument, NULL, OPT_SLAP_INITIAL_LOAD}, /* Number to load initially */ {"non-blocking", no_argument, &opt_non_blocking_io, OPT_SLAP_NON_BLOCK}, {"servers", required_argument, NULL, OPT_SERVERS}, {"tcp-nodelay", no_argument, &opt_tcp_nodelay, OPT_SLAP_TCP_NODELAY}, {"test", required_argument, NULL, OPT_SLAP_TEST}, {"verbose", no_argument, &opt_verbose, OPT_VERBOSE}, {"version", no_argument, NULL, OPT_VERSION}, {"binary", no_argument, NULL, OPT_BINARY}, {0, 0, 0, 0}, }; int option_index= 0; int option_rv; while (1) { option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index); if (option_rv == -1) break; switch (option_rv) { case 0: break; case OPT_BINARY: opt_binary = 1; break; case OPT_VERBOSE: /* --verbose or -v */ opt_verbose = OPT_VERBOSE; break; case OPT_DEBUG: /* --debug or -d */ opt_verbose = OPT_DEBUG; break; case OPT_VERSION: /* --version or -V */ version_command(PROGRAM_NAME); break; case OPT_HELP: /* --help or -h */ help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options); break; case OPT_SERVERS: /* --servers or -s */ opt_servers= strdup(optarg); break; case OPT_SLAP_TEST: if (!strcmp(optarg, "get")) opt_test= GET_TEST ; else if (!strcmp(optarg, "set")) opt_test= SET_TEST; else { fprintf(stderr, "Your test, %s, is not a known test\n", optarg); exit(1); } break; case OPT_SLAP_CONCURRENCY: opt_concurrency= strtol(optarg, (char **)NULL, 10); case OPT_SLAP_EXECUTE_NUMBER: opt_execute_number= strtol(optarg, (char **)NULL, 10); break; case OPT_SLAP_INITIAL_LOAD: opt_createial_load= strtol(optarg, (char **)NULL, 10); break; case '?': /* getopt_long already printed an error message. */ exit(1); default: abort(); } } if (opt_test == GET_TEST && opt_createial_load == 0) opt_createial_load= DEFAULT_INITIAL_LOAD; if (opt_execute_number == 0) opt_execute_number= DEFAULT_EXECUTE_NUMBER; if (opt_concurrency == 0) opt_concurrency= DEFAULT_CONCURRENCY; }
static void options_parse(int argc, char *argv[]) { int option_index= 0; int option_rv; memcached_programs_help_st help_options[]= { {0}, }; static struct option long_options[]= { {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION}, {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP}, {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE}, {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG}, {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS}, {(OPTIONSTRING)"flag", required_argument, NULL, OPT_FLAG}, {(OPTIONSTRING)"expire", required_argument, NULL, OPT_EXPIRE}, {(OPTIONSTRING)"set", no_argument, NULL, OPT_SET}, {(OPTIONSTRING)"add", no_argument, NULL, OPT_ADD}, {(OPTIONSTRING)"replace", no_argument, NULL, OPT_REPLACE}, {(OPTIONSTRING)"hash", required_argument, NULL, OPT_HASH}, {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY}, {(OPTIONSTRING)"username", required_argument, NULL, OPT_USERNAME}, {(OPTIONSTRING)"password", required_argument, NULL, OPT_PASSWD}, {0, 0, 0, 0}, }; while (1) { option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index); if (option_rv == -1) break; switch (option_rv) { case 0: break; case OPT_BINARY: opt_binary = 1; break; case OPT_VERBOSE: /* --verbose or -v */ opt_verbose = OPT_VERBOSE; break; case OPT_DEBUG: /* --debug or -d */ opt_verbose = OPT_DEBUG; break; case OPT_VERSION: /* --version or -V */ version_command(PROGRAM_NAME); break; case OPT_HELP: /* --help or -h */ help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options); break; case OPT_SERVERS: /* --servers or -s */ opt_servers= strdup(optarg); break; case OPT_FLAG: /* --flag */ { bool strtol_error; opt_flags= (uint32_t)strtol_wrapper(optarg, 16, &strtol_error); if (strtol_error == true) { fprintf(stderr, "Bad value passed via --flag\n"); exit(1); } break; } case OPT_EXPIRE: /* --expire */ { bool strtol_error; opt_expires= (time_t)strtol_wrapper(optarg, 16, &strtol_error); if (strtol_error == true) { fprintf(stderr, "Bad value passed via --flag\n"); exit(1); } } case OPT_SET: opt_method= OPT_SET; break; case OPT_REPLACE: opt_method= OPT_REPLACE; break; case OPT_ADD: opt_method= OPT_ADD; break; case OPT_HASH: opt_hash= strdup(optarg); break; case OPT_USERNAME: opt_username= optarg; break; case OPT_PASSWD: opt_passwd= optarg; break; case '?': /* getopt_long already printed an error message. */ exit(1); default: abort(); } } }
void options_parse(int argc, char *argv[]) { memcached_programs_help_st help_options[]= { {0}, }; static struct option long_options[]= { {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION}, {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP}, {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE}, {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG}, {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS}, {(OPTIONSTRING)"expire", required_argument, NULL, OPT_EXPIRE}, {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY}, {(OPTIONSTRING)"username", required_argument, NULL, OPT_USERNAME}, {(OPTIONSTRING)"password", required_argument, NULL, OPT_PASSWD}, {0, 0, 0, 0}, }; int option_index= 0; int option_rv; while (1) { option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index); if (option_rv == -1) break; switch (option_rv) { case 0: break; case OPT_BINARY: opt_binary = 1; break; case OPT_VERBOSE: /* --verbose or -v */ opt_verbose = OPT_VERBOSE; break; case OPT_DEBUG: /* --debug or -d */ opt_verbose = OPT_DEBUG; break; case OPT_VERSION: /* --version or -V */ version_command(PROGRAM_NAME); break; case OPT_HELP: /* --help or -h */ help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options); break; case OPT_SERVERS: /* --servers or -s */ opt_servers= strdup(optarg); break; case OPT_EXPIRE: /* --expire */ opt_expire= (time_t)strtoll(optarg, (char **)NULL, 10); break; case OPT_USERNAME: opt_username= optarg; break; case OPT_PASSWD: opt_passwd= optarg; break; case '?': /* getopt_long already printed an error message. */ exit(1); default: abort(); } } }
/* ** process a remote command */ void command(char *request, char *response) { int max_argz; char *cptr1; char *argz[MAX_ARGZ]; char *argument, *command, *name; char log_message[MAX_LOG_MESSAGE]; assert(request != (char *) NULL); assert(response != (char *) NULL); log_debug(__FILE__, __LINE__, request); /* ** short length test */ if (strlen(request) < strlen(PANDA_PROTO)) { log_error(__FILE__, __LINE__, RESPONSE_BAD_FORMAT); strcpy(response, RESPONSE_BAD_FORMAT); return; } /* ** server configuration request */ if (!strncmp(request, REQUEST_STATUS, strlen(REQUEST_STATUS))) { configuration_report(response); return; } /* ** server version request */ if (!strncmp(request, REQUEST_VERSION, strlen(REQUEST_VERSION))) { version_command(response); return; } /* ** ...parse request... */ max_argz = 0; cptr1 = strtok((char *) request, "/"); while (cptr1 != NULL) { //printf("---%d:%s\n", max_argz, cptr1); argz[max_argz++] = cptr1; cptr1 = strtok(NULL, "/"); } if (strncmp(argz[0], PANDA_PROTO, strlen(PANDA_PROTO))) { log_error(__FILE__, __LINE__, RESPONSE_BAD_FORMAT); strcpy(response, RESPONSE_BAD_FORMAT); return; } // // panda://auto_update/radio1bc // if (!strncmp(argz[1], PROTO_KEY_AUTO_UPDATE, strlen(PROTO_KEY_AUTO_UPDATE))) { if (max_argz == 3) { auto_update_command(argz[2], response); return; } } // // panda://ping/radio1bc // if (!strncmp(argz[1], PROTO_KEY_PING, strlen(PROTO_KEY_PING))) { if (max_argz == 3) { ping_command(argz[2], response); return; } } if (max_argz < 4) { sprintf(log_message, "short argument count:%d", max_argz); log_error(__FILE__, __LINE__, log_message); strcpy(response, RESPONSE_BAD_FORMAT); return; } // // panda://device/raw/radio1bc/SI // panda://device/raw/radio1bc/PM002 F01322000 // if (!strncmp(argz[1], PROTO_KEY_DEVICE, strlen(PROTO_KEY_DEVICE))) { command = argz[2]; name = argz[3]; argument = argz[4]; if (argument == NULL) { strcpy(response, RESPONSE_BAD_FORMAT); return; } device_command(name, command, argument, response); return; } // // default // log_error(__FILE__, __LINE__, RESPONSE_BAD_FORMAT); strcpy(response, RESPONSE_BAD_FORMAT); }
void options_parse(int argc, char *argv[]) { int option_index= 0; int option_rv; memcached_programs_help_st help_options[]= { {0}, }; static struct option long_options[]= { {"version", no_argument, NULL, OPT_VERSION}, {"help", no_argument, NULL, OPT_HELP}, {"verbose", no_argument, &opt_verbose, OPT_VERBOSE}, {"debug", no_argument, &opt_verbose, OPT_DEBUG}, {"servers", required_argument, NULL, OPT_SERVERS}, {"flag", required_argument, NULL, OPT_FLAG}, {"expire", required_argument, NULL, OPT_EXPIRE}, {"set", no_argument, NULL, OPT_SET}, {"add", no_argument, NULL, OPT_ADD}, {"replace", no_argument, NULL, OPT_REPLACE}, {"hash", required_argument, NULL, OPT_HASH}, {"binary", no_argument, NULL, OPT_BINARY}, {0, 0, 0, 0}, }; while (1) { option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index); if (option_rv == -1) break; switch (option_rv) { case 0: break; case OPT_BINARY: opt_binary = 1; break; case OPT_VERBOSE: /* --verbose or -v */ opt_verbose = OPT_VERBOSE; break; case OPT_DEBUG: /* --debug or -d */ opt_verbose = OPT_DEBUG; break; case OPT_VERSION: /* --version or -V */ version_command(PROGRAM_NAME); break; case OPT_HELP: /* --help or -h */ help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options); break; case OPT_SERVERS: /* --servers or -s */ opt_servers= strdup(optarg); break; case OPT_FLAG: /* --flag */ opt_flags= (uint32_t)strtol(optarg, (char **)NULL, 16); break; case OPT_EXPIRE: /* --expire */ opt_expires= (time_t)strtoll(optarg, (char **)NULL, 10); break; case OPT_SET: opt_method= OPT_SET; break; case OPT_REPLACE: opt_method= OPT_REPLACE; break; case OPT_ADD: opt_method= OPT_ADD; case OPT_HASH: opt_hash= strdup(optarg); break; case '?': /* getopt_long already printed an error message. */ exit(1); default: abort(); } } }