Merge in util/libtest update
[awesomized/libmemcached] / clients / memcat.cc
index 12df34799a160b16c066999c4e8937d915fd427f..3e073650345750b35b3325855f1b4fe63af77fca 100644 (file)
@@ -9,13 +9,13 @@
  *
  */
 
-#include "config.h"
+#include <config.h>
 
-#include <stdio.h>
-#include <inttypes.h>
-#include <string.h>
-#include <unistd.h>
+#include <cstdio>
+#include <cstring>
 #include <getopt.h>
+#include <iostream>
+#include <unistd.h>
 #include <libmemcached/memcached.h>
 
 #include "utilities.h"
@@ -73,12 +73,24 @@ int main(int argc, char *argv[])
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,
                          (uint64_t)opt_binary);
 
-  if (!initialize_sasl(memc, opt_username, opt_passwd))
+  if (opt_username and LIBMEMCACHED_WITH_SASL_SUPPORT == 0)
   {
     memcached_free(memc);
+    std::cerr << "--username was supplied, but binary was not built with SASL support." << std::endl;
     return EXIT_FAILURE;
   }
 
+  if (opt_username)
+  {
+    memcached_return_t ret;
+    if (memcached_failed(ret= memcached_set_sasl_auth_data(memc, opt_username, opt_passwd)))
+    {
+      std::cerr << memcached_last_error_message(memc) << std::endl;
+      memcached_free(memc);
+      return EXIT_FAILURE;
+    }
+  }
+
   while (optind < argc)
   {
     string= memcached_get(memc, argv[optind], strlen(argv[optind]),
@@ -162,8 +174,6 @@ int main(int argc, char *argv[])
   if (opt_hash)
     free(opt_hash);
 
-  shutdown_sasl();
-
   return return_code;
 }