bugfixes and formating fixes
[m6w6/libmemcached] / src / memcp.c
index 88cbc351372588341757f1caecd46a4127ba7845..3a76049a1429fbeb0dfcace4b13baa684157a9a7 100644 (file)
@@ -6,6 +6,7 @@
 #include <sys/types.h>\r
 #include <sys/mman.h>\r
 #include <fcntl.h>\r
+#include <errno.h>\r
 \r
 #include <memcached.h>\r
 #include "client_options.h"\r
@@ -39,15 +40,22 @@ int main(int argc, char *argv[])
     char *ptr;\r
 \r
     fd= open(argv[optind], O_RDONLY);\r
-\r
-    if (fd == -1)\r
+    if (fd < 0)\r
     {\r
-      fprintf(stderr, "Failed opening %s\n", argv[optind]);\r
+      fprintf(stderr, "memcp: %s: %s\n", argv[optind], strerror(errno));\r
+      optind++;\r
       continue;\r
     }\r
 \r
     (void)fstat(fd, &sbuf);\r
     mptr= mmap(NULL, sbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);\r
+    if (mptr == MAP_FAILED)\r
+    {\r
+      fprintf(stderr, "memcp: %s: %s\n", argv[optind], strerror(errno));\r
+      close(fd);\r
+      optind++;\r
+      continue;\r
+    }\r
 \r
     ptr= rindex(argv[optind], '/');\r
     if (ptr)\r
@@ -55,6 +63,15 @@ int main(int argc, char *argv[])
     else\r
       ptr= argv[optind];\r
 \r
+    if (opt_verbose)\r
+    {\r
+      static char *opstr[]= { "set", "add", "replace" };\r
+      printf("op: %s\nsource file: %s\nlength: %zu\n"\r
+            "key: %s\nflags: %x\n expires: %ld\n",\r
+            opstr[opt_replace], argv[optind], sbuf.st_size,\r
+            ptr, opt_flags, opt_expires);\r
+    }\r
+\r
     if (opt_replace == 0)\r
       rc= memcached_set(memc, ptr, strlen(ptr),\r
                        mptr, sbuf.st_size,\r
@@ -70,6 +87,12 @@ int main(int argc, char *argv[])
     else\r
       abort();\r
 \r
+    if (rc != MEMCACHED_SUCCESS)\r
+    {\r
+      fprintf(stderr, "memcp: %s: memcache error %s\n", \r
+             ptr, memcached_strerror(memc, rc));\r
+    }\r
+\r
     munmap(mptr, sbuf.st_size);\r
     close(fd);\r
     optind++;\r
@@ -78,14 +101,14 @@ int main(int argc, char *argv[])
   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
+  static struct option long_options[]=\r
     {\r
       {"version", no_argument, NULL, OPT_VERSION},\r
       {"help", no_argument, NULL, OPT_HELP},\r
@@ -102,25 +125,25 @@ void options_parse(int argc, char *argv[])
 \r
   while (1) \r
   {\r
-    option_rv= getopt_long(argc, argv, "", long_options, &option_index);\r
+    option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index);\r
 \r
     if (option_rv == -1) break;\r
 \r
-    switch (option_rv) {\r
+    switch (option_rv)\r
+    {\r
     case 0:\r
-      if (long_options[option_index].name)\r
       break;\r
-    case OPT_VERSION: /* --version */\r
+    case OPT_VERSION: /* --version or -V */\r
       printf("memcache tools, memcp, v1.0\n");\r
       exit(0);\r
-    case OPT_HELP: /* --help */\r
+    case OPT_HELP: /* --help or -h */\r
       printf("useful help messages go here\n");\r
       exit(0);\r
-    case OPT_SERVERS: /* --servers */\r
+    case OPT_SERVERS: /* --servers or -s */\r
       opt_servers= optarg;\r
       break;\r
     case OPT_FLAG: /* --flag */\r
-      opt_flags= (uint16_t)strtol(optarg, (char **)NULL, 10);\r
+      opt_flags= (uint16_t)strtol(optarg, (char **)NULL, 16);\r
       break;\r
     case OPT_EXPIRE: /* --expire */\r
       opt_expires= (time_t)strtol(optarg, (char **)NULL, 10);\r