root/lang/c/libmemcached-win32/libmemcached/clients/memflush.c @ 19437

Revision 19437, 2.7 kB (checked in by mattn, 5 years ago)

imported version 2.0.0

Line 
1#include <stdio.h>
2#include <unistd.h>
3#include <string.h>
4#include <getopt.h>
5#include <libmemcached/memcached.h>
6#include "client_options.h"
7#include "utilities.h"
8
9static int opt_verbose= 0;
10static time_t opt_expire= 0;
11static char *opt_servers= NULL;
12
13#define PROGRAM_NAME "memflush"
14#define PROGRAM_DESCRIPTION "Erase all data in a server of memcached servers."
15
16/* Prototypes */
17void options_parse(int argc, char *argv[]);
18
19int main(int argc, char *argv[])
20{
21  memcached_st *memc;
22  memcached_return rc;
23  memcached_server_st *servers;
24
25  options_parse(argc, argv);
26
27  if (!opt_servers)
28  {
29    char *temp;
30
31    if ((temp= getenv("MEMCACHED_SERVERS")))
32      opt_servers= strdup(temp);
33    else
34    {
35      fprintf(stderr, "No Servers provided\n");
36      exit(1);
37    }
38  }
39
40  memc= memcached_create(NULL);
41
42  servers= memcached_servers_parse(opt_servers);
43  memcached_server_push(memc, servers);
44  memcached_server_list_free(servers);
45 
46  rc = memcached_flush(memc, opt_expire);
47  if (rc != MEMCACHED_SUCCESS)
48  {
49    fprintf(stderr, "memflush: memcache error %s",
50            memcached_strerror(memc, rc));
51    if (memc->cached_errno)
52      fprintf(stderr, " system error %s", strerror(memc->cached_errno));
53    fprintf(stderr, "\n");
54  }
55
56  memcached_free(memc);
57
58  free(opt_servers);
59
60  return 0;
61}
62
63
64void options_parse(int argc, char *argv[])
65{
66  memcached_programs_help_st help_options[]=
67  {
68    {0},
69  };
70
71  static struct option long_options[]=
72  {
73    {"version", no_argument, NULL, OPT_VERSION},
74    {"help", no_argument, NULL, OPT_HELP},
75    {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
76    {"debug", no_argument, &opt_verbose, OPT_DEBUG},
77    {"servers", required_argument, NULL, OPT_SERVERS},
78    {"expire", required_argument, NULL, OPT_EXPIRE},
79    {0, 0, 0, 0},
80  };
81  int option_index= 0;
82  int option_rv;
83
84  while (1)
85  {
86    option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index);
87    if (option_rv == -1) break;
88    switch (option_rv)
89    {
90    case 0:
91      break;
92    case OPT_VERBOSE: /* --verbose or -v */
93      opt_verbose = OPT_VERBOSE;
94      break;
95    case OPT_DEBUG: /* --debug or -d */
96      opt_verbose = OPT_DEBUG;
97      break;
98    case OPT_VERSION: /* --version or -V */
99      version_command(PROGRAM_NAME);
100      break;
101    case OPT_HELP: /* --help or -h */
102      help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options);
103      break;
104    case OPT_SERVERS: /* --servers or -s */
105      opt_servers= strdup(optarg);
106      break;
107    case OPT_EXPIRE: /* --expire */
108      opt_expire= (time_t)strtoll(optarg, (char **)NULL, 10);
109      break;
110    case '?':
111      /* getopt_long already printed an error message. */
112      exit(1);
113    default:
114      abort();
115    }
116  }
117}
Note: See TracBrowser for help on using the browser.