X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fbin%2Fmemcat.cc;h=3938bf134406b65384ca31d9157932dc55b6f74a;hb=92d18858b417309f6bdee6bce464a4f3d6a375fd;hp=b8e49486f2812b044a77ec854639a3597bc8e457;hpb=2c5690e3e3384b98c1b4dc78c076ae9d59eb7d22;p=awesomized%2Flibmemcached diff --git a/src/bin/memcat.cc b/src/bin/memcat.cc index b8e49486..3938bf13 100644 --- a/src/bin/memcat.cc +++ b/src/bin/memcat.cc @@ -1,6 +1,6 @@ /* +--------------------------------------------------------------------+ - | libmemcached - C/C++ Client Library for memcached | + | libmemcached-awesome - C/C++ Client Library for memcached | +--------------------------------------------------------------------+ | Redistribution and use in source and binary forms, with or without | | modification, are permitted under the terms of the BSD license. | @@ -9,7 +9,7 @@ | the terms online at: https://opensource.org/licenses/BSD-3-Clause | +--------------------------------------------------------------------+ | Copyright (c) 2006-2014 Brian Aker https://datadifferential.com/ | - | Copyright (c) 2020 Michael Wallner | + | Copyright (c) 2020-2021 Michael Wallner https://awesome.co/ | +--------------------------------------------------------------------+ */ @@ -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 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;