add memrm tool
[awesomized/libmemcached] / src / memrm.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <getopt.h>
4 #include <memcached.h>
5 #include "client_options.h"
6
7 static int opt_verbose;
8 static char *opt_servers;
9
10 struct memcached_st *parse_opt_servers (struct memcached_st *m,
11 char *opt_servers)
12 {
13 char *s, *hostname;
14 unsigned int portnum;
15 while (s = strsep(&opt_servers, ",")) {
16 hostname = strsep(&s, ":");
17 portnum = atoi(s);
18 memcached_server_add(m, hostname, portnum);
19 }
20 return m;
21 }
22
23 int main(int argc, char *argv[])
24 {
25 memcached_st *memc;
26 char *string;
27 size_t string_length;
28 time_t expires = 0;
29 memcached_return rc;
30
31 static struct option long_options[] =
32 {
33 {"version", no_argument, NULL, OPT_VERSION},
34 {"help", no_argument, NULL, OPT_HELP},
35 {"verbose", no_argument, &opt_verbose, 1},
36 {"debug", no_argument, &opt_verbose, 2},
37 {"servers", required_argument, NULL, OPT_SERVERS},
38 {"expire", required_argument, NULL, OPT_EXPIRE},
39 {0, 0, 0, 0},
40 };
41 int option_index = 0;
42 int option_rv;
43
44 while (1)
45 {
46 option_rv = getopt_long(argc, argv, "", long_options, &option_index);
47 if (option_rv == -1) break;
48 switch (option_rv) {
49 case 0:
50 break;
51 case OPT_VERSION: /* --version */
52 printf("memcache tools, memrm, v1.0\n");
53 exit(0);
54 break;
55 case OPT_HELP: /* --help */
56 printf("useful help messages go here\n");
57 exit(0);
58 break;
59 case OPT_SERVERS: /* --servers */
60 opt_servers = strdup(optarg);
61 break;
62 case OPT_EXPIRE: /* --expire */
63 expires = (time_t)atoi(optarg);
64 break;
65 case '?':
66 /* getopt_long already printed an error message. */
67 exit(1);
68 default:
69 abort();
70 }
71 }
72
73 memc= memcached_init(NULL);
74 memc= parse_opt_servers(memc, opt_servers);
75
76 while (optind <= argc) {
77
78 rc = memcached_delete(memc, argv[optind], strlen(argv[optind]), expires);
79
80 optind++;
81 }
82
83 memcached_deinit(memc);
84
85 return 0;
86 };