| 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 <mike@php.net> |
+ | Copyright (c) 2020-2021 Michael Wallner https://awesome.co/ |
+--------------------------------------------------------------------+
*/
#include <cstdint>
#include <climits>
#include <functional>
-#include <getopt.h>
#include <iostream>
#include <string>
#include <vector>
#include "libmemcached/common.h"
+#include "p9y/getopt.hpp"
class client_options {
public:
def("username", 'u', required_argument, "SASL username.")
.apply = [](const client_options &opt, const extended_option &ext, memcached_st *memc) {
if (auto username = ext.arg) {
- if (!LIBMEMCACHED_WITH_SASL_SUPPORT) {
+#if !LIBMEMCACHED_WITH_SASL_SUPPORT
if (!opt.isset("quiet")) {
std::cerr
<< "SASL username was supplied, but binary was not built with SASL support.\n";
- return false;
}
- }
+ return false;
+#else
if (memc) {
if (MEMCACHED_SUCCESS
!= memcached_set_sasl_auth_data(memc, username, opt.argof("password"))) {
return false;
}
}
+#endif
}
return true;
};
}
}
- const char *argof(const std::string &name) const {
+ char *argof(const std::string &name) const {
if (has(name)) {
return get(name).arg;
}
return nullptr;
}
- const char *argof(int c) const {
+ char *argof(int c) const {
if (has(c)) {
return get(c).arg;
}
using const_iterator = std::vector<extended_option>::const_iterator;
using predicate = std::function<bool(const extended_option &ext)>;
- static option null_opt;
- static const extended_option null_ext_opt;
-
const_iterator find(const predicate &pred) const {
return std::find_if(options.cbegin(), options.cend(), pred);
}