memcap works, though it does nothing useful at the moment :)
[awesomized/libmemcached] / src / memcat.c
index 11b42d7d4aec9ddb7b743effc292418a32c0df31..81c0a85d6167c40e0cc973a21be9d578f36a34d9 100644 (file)
-#include <stdio.h>\r
-#include <unistd.h>\r
-#include <getopt.h>\r
-#include <memcached.h>\r
-\r
-#include "client_options.h"\r
-#include "utilities.h"\r
-\r
-\r
-/* Prototypes */\r
-void options_parse(int argc, char *argv[]);\r
-\r
-static int opt_verbose;\r
-static int opt_displayflag;\r
-static char *opt_servers;\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-  memcached_st *memc;\r
-  char *string;\r
-  size_t string_length;\r
-  uint16_t  flags;\r
-  memcached_return rc;\r
-\r
-  memc= memcached_init(NULL);\r
-\r
-  options_parse(argc, argv);\r
-\r
-  parse_opt_servers(memc, opt_servers);\r
-\r
-  while (optind <= argc) \r
-  {\r
-    string= memcached_get(memc, argv[argc], strlen(argv[argc]),\r
-                          &string_length, &flags, &rc);\r
-    if (rc == MEMCACHED_SUCCESS) \r
-    {\r
-      if (opt_displayflag) \r
-       printf("%d\n", flags);\r
-      else \r
-      {\r
-        printf("%.*s\n", string_length, string);\r
-        free(string);\r
-      }\r
-    }\r
-    optind++;\r
-  }\r
-\r
-  memcached_deinit(memc);\r
-\r
-  return 0;\r
-};\r
-\r
-\r
-void options_parse(int argc, char *argv[])\r
-{\r
-  int option_index = 0;\r
-  int option_rv;\r
-\r
-  static struct option long_options[] =\r
-    {\r
-      {"version", no_argument, NULL, OPT_VERSION},\r
-      {"help", no_argument, NULL, OPT_HELP},\r
-      {"verbose", no_argument, &opt_verbose, 1},\r
-      {"debug", no_argument, &opt_verbose, 2},\r
-      {"servers", required_argument, NULL, OPT_SERVERS},\r
-      {"flag", no_argument, &opt_displayflag, OPT_FLAG},\r
-      {0, 0, 0, 0},\r
-    };\r
-\r
-  while (1) \r
-  {\r
-    option_rv = getopt_long(argc, argv, "", long_options, &option_index);\r
-    if (option_rv == -1) break;\r
-    switch (option_rv) {\r
-    case 0:\r
-      break;\r
-    case OPT_VERSION: /* --version */\r
-      printf("memcache tools, memcat, v1.0\n");\r
-      exit(0);\r
-      break;\r
-    case OPT_HELP: /* --help */\r
-      printf("useful help messages go here\n");\r
-      exit(0);\r
-      break;\r
-    case OPT_SERVERS: /* --servers */\r
-      opt_servers= optarg;\r
-      break;\r
-    case '?':\r
-      /* getopt_long already printed an error message. */\r
-      exit(1);\r
-    default:\r
-      abort();\r
-    }\r
-  }\r
-}\r
+#include <stdio.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <memcached.h>
+
+#include "client_options.h"
+#include "utilities.h"
+
+
+/* Prototypes */
+void options_parse(int argc, char *argv[]);
+
+static int opt_verbose= 0;
+static int opt_displayflag= 0;
+static char *opt_servers;
+
+int main(int argc, char *argv[])
+{
+  memcached_st *memc;
+  char *string;
+  size_t string_length;
+  uint16_t flags;
+  memcached_return rc;
+  memcached_server_st *servers;
+
+  options_parse(argc, argv);
+
+  if (!opt_servers)
+    return 0;
+
+  memc= memcached_init(NULL);
+
+  servers= parse_opt_servers(opt_servers);
+  memcached_server_push(memc, servers);
+  memcached_server_list_free(servers);
+
+  while (optind < argc) 
+  {
+    string= memcached_get(memc, argv[optind], strlen(argv[optind]),
+                          &string_length, &flags, &rc);
+    if (rc == MEMCACHED_SUCCESS) 
+    {
+      if (opt_displayflag)
+      {
+        if (opt_verbose)
+          printf("key: %s\nflags: ", argv[optind]);
+        printf("%x\n", flags);
+      }
+      else 
+      {
+        if (opt_verbose)
+          printf("key: %s\nflags: %x\nlength: %zu\nvalue: ",
+                 argv[optind], flags, string_length);
+        printf("%.*s\n", (int)string_length, string);
+        free(string);
+      }
+    }
+    else
+    {
+      fprintf(stderr, "memcat: %s: memcache error %s\n", 
+              argv[optind], memcached_strerror(memc, rc));
+    }
+    optind++;
+  }
+
+  memcached_deinit(memc);
+
+  free(opt_servers);
+
+  return 0;
+}
+
+
+void options_parse(int argc, char *argv[])
+{
+  int option_index= 0;
+  int option_rv;
+
+  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", no_argument, &opt_displayflag, OPT_FLAG},
+      {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 */
+      printf("memcache tools, memcat, v1.0\n");
+      exit(0);
+      break;
+    case OPT_HELP: /* --help or -h */
+      printf("useful help messages go here\n");
+      exit(0);
+      break;
+    case OPT_SERVERS: /* --servers or -s */
+      opt_servers= strdup(optarg);
+      break;
+    case '?':
+      /* getopt_long already printed an error message. */
+      exit(1);
+    default:
+      abort();
+    }
+  }
+}