X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fmemrm.c;h=2a79933af89a6a83af0d88b83907c2d9574a0ea4;hb=285c6e033a3739a1733b8729d91c7f649220461e;hp=77416c95601a33bce603fe704b3e77b59f1c7c36;hpb=c63f3c2633dbda43dd4cf151edd586a279fc8cbf;p=awesomized%2Flibmemcached diff --git a/src/memrm.c b/src/memrm.c index 77416c95..2a79933a 100644 --- a/src/memrm.c +++ b/src/memrm.c @@ -9,6 +9,7 @@ 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." @@ -35,6 +36,7 @@ int main(int argc, char *argv[]) } memc= memcached_create(NULL); + process_hash_option(memc, opt_hash); servers= memcached_servers_parse(opt_servers); memcached_server_push(memc, servers); @@ -48,8 +50,11 @@ 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++; @@ -57,7 +62,10 @@ int main(int argc, char *argv[]) memcached_free(memc); - free(opt_servers); + if (opt_servers) + free(opt_servers); + if (opt_hash) + free(opt_hash); return 0; } @@ -78,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; @@ -109,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);