drop [] from address, commonly used for IPv6
[awesomized/libmemcached] / src / bin / memcat.cc
index b8e49486f2812b044a77ec854639a3597bc8e457..1b0f36cac75a61bd60cb0c1dfdde50d12f434068 100644 (file)
@@ -45,7 +45,7 @@ memcached_return_t memcat(const client_options &opt, memcached_st *memc, const c
     if (verbose) {
       *ref << "value: ";
     }
-    
+
     ref->write(val, len);
 
     if (verbose || !opt.isset("file")) {
@@ -68,7 +68,8 @@ int main(int argc, char *argv[]) {
     opt.add(def);
   }
   opt.add("flags", 'F', no_argument, "Display key flags, too.");
-  opt.add("file", 'f', required_argument, "Output to file instead of standard output.");
+  opt.add("file", 'f', optional_argument, "Output to file instead of standard output."
+                                          "\n\t\t# NOTE: defaults to <key> if no argument was provided.");
 
   char **argp = nullptr;
   if (!opt.parse(argc, argv, &argp)) {
@@ -95,12 +96,18 @@ int main(int argc, char *argv[]) {
     exit(EXIT_FAILURE);
   }
 
+  auto file_flag = opt.isset("file");
+  auto file = opt.argof("file");
   auto exit_code = EXIT_SUCCESS;
   for (auto arg = argp; *arg; ++arg) {
     auto key = *arg;
     if (*key) {
+      if (!file && file_flag) {
+        file = key;
+      }
+
       std::ofstream fstream{};
-      std::ostream *ostream = check_ostream(opt, opt.argof("file"), fstream);
+      std::ostream *ostream = check_ostream(opt, file, fstream);
 
       if (!check_return(opt, memc, key, memcat(opt, &memc, key, ostream))) {
         exit_code = EXIT_FAILURE;