X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fmemrm.c;h=2a79933af89a6a83af0d88b83907c2d9574a0ea4;hb=285c6e033a3739a1733b8729d91c7f649220461e;hp=11dbb82c7e84dfb790595bad596677f73a7d9494;hpb=7bfd925c54662cf1f67b651559dd91f77bfe8817;p=awesomized%2Flibmemcached diff --git a/src/memrm.c b/src/memrm.c index 11dbb82c..2a79933a 100644 --- a/src/memrm.c +++ b/src/memrm.c @@ -2,12 +2,14 @@ #include #include #include +#include #include "client_options.h" #include "utilities.h" static int opt_verbose= 0; static time_t opt_expire= 0; static char *opt_servers= NULL; +static char *opt_hash= NULL; #define PROGRAM_NAME "memrm" #define PROGRAM_DESCRIPTION "Erase a key or set of keys from a memcached cluster." @@ -24,11 +26,19 @@ int main(int argc, char *argv[]) options_parse(argc, argv); if (!opt_servers) - return 0; + { + char *temp; - memc= memcached_init(NULL); + if ((temp= getenv("MEMCACHED_SERVERS"))) + opt_servers= strdup(temp); + else + exit(1); + } - servers= parse_opt_servers(opt_servers); + memc= memcached_create(NULL); + process_hash_option(memc, opt_hash); + + servers= memcached_servers_parse(opt_servers); memcached_server_push(memc, servers); memcached_server_list_free(servers); @@ -40,16 +50,22 @@ int main(int argc, char *argv[]) if (rc != MEMCACHED_SUCCESS) { - fprintf(stderr, "memrm: %s: memcache error %s\n", + fprintf(stderr, "memrm: %s: memcache error %s", argv[optind], memcached_strerror(memc, rc)); + if (memc->cached_errno) + fprintf(stderr, " system error %s", strerror(memc->cached_errno)); + fprintf(stderr, "\n"); } optind++; } - memcached_deinit(memc); + memcached_free(memc); - free(opt_servers); + if (opt_servers) + free(opt_servers); + if (opt_hash) + free(opt_hash); return 0; } @@ -70,6 +86,7 @@ void options_parse(int argc, char *argv[]) {"debug", no_argument, &opt_verbose, OPT_DEBUG}, {"servers", required_argument, NULL, OPT_SERVERS}, {"expire", required_argument, NULL, OPT_EXPIRE}, + {"hash", required_argument, NULL, OPT_HASH}, {0, 0, 0, 0}, }; int option_index= 0; @@ -101,6 +118,9 @@ void options_parse(int argc, char *argv[]) case OPT_EXPIRE: /* --expire */ opt_expire= (time_t)strtoll(optarg, (char **)NULL, 10); break; + case OPT_HASH: + opt_hash= strdup(optarg); + break; case '?': /* getopt_long already printed an error message. */ exit(1);