From a11ae747b7dec5587f623e34099e7cd132c08604 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Fri, 11 May 2012 00:09:16 -0700 Subject: [PATCH 01/16] Adding test case for 994772. --- tests/libmemcached-1.0/all_tests.h | 1 + tests/libmemcached-1.0/mem_functions.cc | 40 +++++++++++++++++++++++++ tests/libmemcached-1.0/mem_functions.h | 1 + 3 files changed, 42 insertions(+) diff --git a/tests/libmemcached-1.0/all_tests.h b/tests/libmemcached-1.0/all_tests.h index bcfc90fc..f5ca5927 100644 --- a/tests/libmemcached-1.0/all_tests.h +++ b/tests/libmemcached-1.0/all_tests.h @@ -274,6 +274,7 @@ test_st regression_tests[]= { {"lp:490520", true, (test_callback_fn*)regression_bug_490520 }, {"lp:854604", true, (test_callback_fn*)regression_bug_854604 }, {"lp:996813", true, (test_callback_fn*)regression_996813_TEST }, + {"lp:994772", true, (test_callback_fn*)regression_994772_TEST }, {0, false, (test_callback_fn*)0} }; diff --git a/tests/libmemcached-1.0/mem_functions.cc b/tests/libmemcached-1.0/mem_functions.cc index e6c82a1d..2f1dff72 100644 --- a/tests/libmemcached-1.0/mem_functions.cc +++ b/tests/libmemcached-1.0/mem_functions.cc @@ -4590,6 +4590,46 @@ test_return_t regression_bug_490520(memcached_st *original_memc) } +test_return_t regression_994772_TEST(memcached_st* memc) +{ + test_skip(MEMCACHED_SUCCESS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1)); + + test_compare(MEMCACHED_SUCCESS, + memcached_set(memc, + test_literal_param(__func__), // Key + test_literal_param(__func__), // Value + time_t(0), uint32_t(0))); + + const char *keys[] = { __func__ }; + size_t key_length[]= { strlen(__func__) }; + test_compare(MEMCACHED_SUCCESS, + memcached_mget(memc, keys, key_length, 1)); + + memcached_return_t rc; + memcached_result_st *results = memcached_fetch_result(memc, NULL, &rc); + test_true(results); + test_compare(MEMCACHED_SUCCESS, rc); + + test_strcmp(__func__, memcached_result_value(results)); + uint64_t cas_value= memcached_result_cas(results); + test_true(cas_value); + + // Bad cas value, sanity check + test_true(cas_value != 9999); + test_compare(MEMCACHED_END, + memcached_cas(memc, + test_literal_param(__func__), // Key + test_literal_param(__FILE__), // Value + time_t(0), uint32_t(0), 9999)); + + test_compare(MEMCACHED_SUCCESS, memcached_set(memc, + "different", strlen("different"), // Key + test_literal_param(__FILE__), // Value + time_t(0), uint32_t(0))); + + return TEST_SUCCESS; +} + test_return_t regression_bug_854604(memcached_st *) { char buffer[1024]; diff --git a/tests/libmemcached-1.0/mem_functions.h b/tests/libmemcached-1.0/mem_functions.h index 55e382e6..4dca710b 100644 --- a/tests/libmemcached-1.0/mem_functions.h +++ b/tests/libmemcached-1.0/mem_functions.h @@ -175,3 +175,4 @@ test_return_t wrong_failure_counter_test(memcached_st *memc); test_return_t wrong_failure_counter_two_test(memcached_st *memc); test_return_t kill_HUP_TEST(memcached_st *memc); test_return_t regression_996813_TEST(memcached_st*); +test_return_t regression_994772_TEST(memcached_st*); -- 2.30.2 From 23bbe3972dada1e21493437ba64be129e86b59fc Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Sat, 12 May 2012 22:05:10 -0400 Subject: [PATCH 02/16] Catch up with Gearman's libtest --- example/t/memcached_light.cc | 6 +- libtest/collection.cc | 3 - libtest/fatal.cc | 2 +- libtest/framework.cc | 6 +- libtest/framework.h | 46 +++++++---- libtest/include.am | 95 +++++++++++----------- libtest/port.cc | 32 +++++++- libtest/port.h | 3 + libtest/server.cc | 1 + libtest/skiptest.cc | 2 +- libtest/stream.h | 2 + libtest/unittest.cc | 4 +- tests/cycle.cc | 4 +- tests/failure.cc | 6 +- tests/hash_plus.cc | 2 +- tests/hashkit_functions.cc | 6 +- tests/libmemcached-1.0/all_tests.cc | 6 +- tests/libmemcached-1.0/all_tests_socket.cc | 6 +- tests/libmemcached-1.0/atomsmasher.cc | 6 +- tests/libmemcached-1.0/internals.cc | 2 +- tests/libmemcached-1.0/plus.cpp | 6 +- tests/libmemcached-1.0/sasl.cc | 6 +- tests/mem_udp.cc | 6 +- tests/memcapable.cc | 4 +- tests/memcat.cc | 4 +- tests/memcp.cc | 4 +- tests/memdump.cc | 4 +- tests/memerror.cc | 4 +- tests/memexist.cc | 4 +- tests/memflush.cc | 4 +- tests/memrm.cc | 4 +- tests/memslap.cc | 4 +- tests/memstat.cc | 4 +- tests/memtouch.cc | 4 +- tests/parser.cc | 2 +- 35 files changed, 175 insertions(+), 129 deletions(-) diff --git a/example/t/memcached_light.cc b/example/t/memcached_light.cc index e24d31c2..b9c4e5fb 100644 --- a/example/t/memcached_light.cc +++ b/example/t/memcached_light.cc @@ -233,9 +233,9 @@ static bool world_destroy(void *object) void get_world(Framework *world) { - world->_create= world_create; - world->_destroy= world_destroy; - world->collections= collection; + world->create(world_create); + world->destroy(world_destroy); + world->collections(collection); world->set_runner(new MemcachedLightRunner); } diff --git a/libtest/collection.cc b/libtest/collection.cc index c6fec1eb..5814c2f4 100644 --- a/libtest/collection.cc +++ b/libtest/collection.cc @@ -97,8 +97,6 @@ test_return_t Collection::exec() { for (test_st *run= _tests; run->name; run++) { - long int load_time= 0; - if (_frame->match(run->name)) { continue; @@ -123,7 +121,6 @@ test_return_t Collection::exec() catch (libtest::fatal &e) { Error << "Fatal exception was thrown: " << e.what(); - return_code= TEST_FAILURE; _failed++; throw; } diff --git a/libtest/fatal.cc b/libtest/fatal.cc index 9ab3292f..a4355920 100644 --- a/libtest/fatal.cc +++ b/libtest/fatal.cc @@ -42,8 +42,8 @@ namespace libtest { fatal::fatal(const char *file_arg, int line_arg, const char *func_arg, const char *format, ...) : std::runtime_error(func_arg), - _file(file_arg), _line(line_arg), + _file(file_arg), _func(func_arg) { va_list args; diff --git a/libtest/framework.cc b/libtest/framework.cc index eb0f4120..ea7ca665 100644 --- a/libtest/framework.cc +++ b/libtest/framework.cc @@ -48,13 +48,14 @@ using namespace libtest; Framework::Framework(libtest::SignalThread& signal, const std::string& only_run_arg, const std::string& wildcard_arg) : - collections(NULL), + _collections(NULL), _total(0), _success(0), _skipped(0), _failed(0), _create(NULL), _destroy(NULL), + _on_error(NULL), _runner(NULL), _socket(false), _creators_ptr(NULL), @@ -64,7 +65,7 @@ Framework::Framework(libtest::SignalThread& signal, { get_world(this); - for (collection_st *next= collections; next and next->name; next++) + for (collection_st *next= _collections; next and next->name; next++) { _collection.push_back(new Collection(this, next)); } @@ -87,7 +88,6 @@ Framework::~Framework() { delete *iter; } - _collection.clear(); } bool Framework::match(const char* arg) diff --git a/libtest/framework.h b/libtest/framework.h index 45cd6533..da1d5b98 100644 --- a/libtest/framework.h +++ b/libtest/framework.h @@ -48,19 +48,24 @@ class Framework { public: - collection_st *collections; - - /* These methods are called outside of any collection call. */ - test_callback_create_fn *_create; - test_callback_destroy_fn *_destroy; public: test_return_t create(); - /** - If an error occurs during the test, this is called. - */ - test_callback_error_fn *_on_error; + void create(test_callback_create_fn* arg) + { + _create= arg; + } + + void destroy(test_callback_destroy_fn* arg) + { + _destroy= arg; + } + + void collections(collection_st* arg) + { + _collections= arg; + } void set_on_error(test_callback_error_fn *arg) { @@ -83,12 +88,6 @@ public: { return _servers; } - - /** - Runner represents the callers for the tests. If not implemented we will use - a set of default implementations. - */ - libtest::Runner *_runner; void set_runner(libtest::Runner *arg) { @@ -154,10 +153,27 @@ public: private: Framework& operator=(const Framework&); + collection_st *_collections; + uint32_t _total; uint32_t _success; uint32_t _skipped; uint32_t _failed; + + /* These methods are called outside of any collection call. */ + test_callback_create_fn *_create; + test_callback_destroy_fn *_destroy; + + /** + If an error occurs during the test, this is called. + */ + test_callback_error_fn *_on_error; + + /** + Runner represents the callers for the tests. If not implemented we will use + a set of default implementations. + */ + libtest::Runner *_runner; libtest::server_startup_st _servers; bool _socket; diff --git a/libtest/include.am b/libtest/include.am index a0d5aa04..9c7fe244 100644 --- a/libtest/include.am +++ b/libtest/include.am @@ -32,57 +32,56 @@ drd: EXTRA_DIST+= libtest/run.gdb -CLEANFILES+= \ - tmp_chroot/var/drizzle/* \ - tmp_chroot/var/log/* \ - tmp_chroot/var/run/* \ - tmp_chroot/var/tmp/* +CLEANFILES+= tmp_chroot/etc/* +CLEANFILES+= tmp_chroot/var/drizzle/* +CLEANFILES+= tmp_chroot/var/log/* +CLEANFILES+= tmp_chroot/var/run/* +CLEANFILES+= tmp_chroot/var/tmp/* .PHONY: distclean-libtest-check distclean-libtest-check: -rm -rf tmp_chroot noinst_HEADERS+= libtest/timer.hpp -noinst_HEADERS+= \ - libtest/binaries.h \ - libtest/cpu.hpp \ - libtest/blobslap_worker.h \ - libtest/callbacks.h \ - libtest/cmdline.h \ - libtest/collection.h \ - libtest/common.h \ - libtest/comparison.hpp \ - libtest/core.h \ - libtest/dream.h \ - libtest/error.h \ - libtest/failed.h \ - libtest/fatal.hpp \ - libtest/framework.h \ - libtest/gearmand.h \ - libtest/drizzled.h \ - libtest/get.h \ - libtest/has.hpp \ - libtest/http.hpp \ - libtest/is_pid.hpp \ - libtest/is_local.hpp \ - libtest/killpid.h \ - libtest/libtool.hpp \ - libtest/memcached.h \ - libtest/port.h \ - libtest/runner.h \ - libtest/server.h \ - libtest/server_container.h \ - libtest/signal.h \ - libtest/socket.hpp \ - libtest/stream.h \ - libtest/strerror.h \ - libtest/string.hpp \ - libtest/test.h \ - libtest/test.hpp \ - libtest/tmpfile.hpp \ - libtest/vchar.hpp \ - libtest/visibility.h \ - libtest/wait.h +noinst_HEADERS+=libtest/binaries.h +noinst_HEADERS+=libtest/cpu.hpp +noinst_HEADERS+=libtest/blobslap_worker.h +noinst_HEADERS+=libtest/callbacks.h +noinst_HEADERS+=libtest/cmdline.h +noinst_HEADERS+=libtest/collection.h +noinst_HEADERS+=libtest/common.h +noinst_HEADERS+=libtest/comparison.hpp +noinst_HEADERS+=libtest/core.h +noinst_HEADERS+=libtest/dream.h +noinst_HEADERS+=libtest/error.h +noinst_HEADERS+=libtest/failed.h +noinst_HEADERS+=libtest/fatal.hpp +noinst_HEADERS+=libtest/framework.h +noinst_HEADERS+=libtest/gearmand.h +noinst_HEADERS+=libtest/drizzled.h +noinst_HEADERS+=libtest/get.h +noinst_HEADERS+=libtest/has.hpp +noinst_HEADERS+=libtest/http.hpp +noinst_HEADERS+=libtest/is_pid.hpp +noinst_HEADERS+=libtest/is_local.hpp +noinst_HEADERS+=libtest/killpid.h +noinst_HEADERS+=libtest/libtool.hpp +noinst_HEADERS+=libtest/memcached.h +noinst_HEADERS+=libtest/port.h +noinst_HEADERS+=libtest/runner.h +noinst_HEADERS+=libtest/server.h +noinst_HEADERS+=libtest/server_container.h +noinst_HEADERS+=libtest/signal.h +noinst_HEADERS+=libtest/socket.hpp +noinst_HEADERS+=libtest/stream.h +noinst_HEADERS+=libtest/strerror.h +noinst_HEADERS+=libtest/string.hpp +noinst_HEADERS+=libtest/test.h +noinst_HEADERS+=libtest/test.hpp +noinst_HEADERS+=libtest/tmpfile.hpp +noinst_HEADERS+=libtest/vchar.hpp +noinst_HEADERS+=libtest/visibility.h +noinst_HEADERS+=libtest/wait.h noinst_LTLIBRARIES+= libtest/libtest.la @@ -113,6 +112,7 @@ libtest_libtest_la_SOURCES+= libtest/server.cc libtest_libtest_la_SOURCES+= libtest/server_container.cc libtest_libtest_la_SOURCES+= libtest/signal.cc libtest_libtest_la_SOURCES+= libtest/socket.cc +libtest_libtest_la_SOURCES+= libtest/stream.cc libtest_libtest_la_SOURCES+= libtest/strerror.cc libtest_libtest_la_SOURCES+= libtest/timer.cc libtest_libtest_la_SOURCES+= libtest/tmpfile.cc @@ -190,9 +190,12 @@ endif libtest_tmp_dir: tmp_chroot/var/log tmp_chroot/var/tmp tmp_chroot/var/run tmp_chroot/var/drizzle -tmp_chroot: +tmp_chroot: tmp_chroot/etc @$(mkdir_p) tmp_chroot +tmp_chroot/etc: + @$(mkdir_p) tmp_chroot/etc + tmp_chroot/var: tmp_chroot @$(mkdir_p) tmp_chroot/var diff --git a/libtest/port.cc b/libtest/port.cc index 9f9a5bfe..904a0add 100644 --- a/libtest/port.cc +++ b/libtest/port.cc @@ -50,6 +50,9 @@ #include #include +#include +#include + #include #include @@ -61,13 +64,29 @@ using namespace libtest; struct socket_st { - std::vector fd; + typedef std::vector< std::pair< int, in_port_t> > socket_port_t; + socket_port_t _pair; + + void release(in_port_t _arg) + { + for(socket_port_t::iterator iter= _pair.begin(); + iter != _pair.end(); + iter++) + { + if ((*iter).second == _arg) + { + close((*iter).first); + } + } + } ~socket_st() { - for(std::vector::iterator iter= fd.begin(); iter != fd.end(); iter++) + for(socket_port_t::iterator iter= _pair.begin(); + iter != _pair.end(); + iter++) { - close(*iter); + close((*iter).first); } } }; @@ -88,6 +107,11 @@ in_port_t default_port() return global_port; } +void release_port(in_port_t arg) +{ + all_socket_fd.release(arg); +} + in_port_t get_free_port() { in_port_t ret_port= in_port_t(0); @@ -119,7 +143,7 @@ in_port_t get_free_port() } } - all_socket_fd.fd.push_back(sd); + all_socket_fd._pair.push_back(std::make_pair(sd, ret_port)); } if (ret_port > 1024) diff --git a/libtest/port.h b/libtest/port.h index 3d593136..bded6abc 100644 --- a/libtest/port.h +++ b/libtest/port.h @@ -48,4 +48,7 @@ in_port_t default_port(); LIBTEST_API in_port_t get_free_port(); +LIBTEST_API +void release_port(in_port_t arg); + } // namespace libtest diff --git a/libtest/server.cc b/libtest/server.cc index 31c58094..78b729f9 100644 --- a/libtest/server.cc +++ b/libtest/server.cc @@ -192,6 +192,7 @@ bool Server::start() return false; } + libtest::release_port(_port); Application::error_t ret; if (Application::SUCCESS != (ret= _app.run())) { diff --git a/libtest/skiptest.cc b/libtest/skiptest.cc index ac043719..354e2db1 100644 --- a/libtest/skiptest.cc +++ b/libtest/skiptest.cc @@ -53,5 +53,5 @@ static void *world_create(server_startup_st&, test_return_t& rc) void get_world(Framework *world) { - world->_create= world_create; + world->create(world_create); } diff --git a/libtest/stream.h b/libtest/stream.h index a32362f2..5d86be3e 100644 --- a/libtest/stream.h +++ b/libtest/stream.h @@ -153,6 +153,7 @@ public: make_cerr(const char* filename, int line_number, const char* func) : detail::log(std::cerr, filename, line_number, func) { } + }; class cerr : public detail::log { @@ -160,6 +161,7 @@ public: cerr(const char* filename, int line_number, const char* func) : detail::log(std::cout, filename, line_number, func) { } + }; class clog : public detail::log { diff --git a/libtest/unittest.cc b/libtest/unittest.cc index 234743f5..c27f366a 100644 --- a/libtest/unittest.cc +++ b/libtest/unittest.cc @@ -953,6 +953,6 @@ static void *world_create(server_startup_st& servers, test_return_t&) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/cycle.cc b/tests/cycle.cc index 788d7e67..fe4ca1b3 100644 --- a/tests/cycle.cc +++ b/tests/cycle.cc @@ -123,7 +123,7 @@ static void *world_create(server_startup_st& servers, test_return_t& ) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/failure.cc b/tests/failure.cc index d31518ee..445de246 100644 --- a/tests/failure.cc +++ b/tests/failure.cc @@ -213,10 +213,10 @@ void get_world(Framework *world) { world->servers().set_servers_to_run(1); - world->collections= collection; + world->collections(collection); - world->_create= (test_callback_create_fn*)world_create; - world->_destroy= (test_callback_destroy_fn*)world_destroy; + world->create((test_callback_create_fn*)world_create); + world->destroy((test_callback_destroy_fn*)world_destroy); world->set_runner(new LibmemcachedRunner); diff --git a/tests/hash_plus.cc b/tests/hash_plus.cc index 778ec220..9cb4b384 100644 --- a/tests/hash_plus.cc +++ b/tests/hash_plus.cc @@ -215,5 +215,5 @@ collection_st collection[] ={ void get_world(Framework *world) { - world->collections= collection; + world->collections(collection); } diff --git a/tests/hashkit_functions.cc b/tests/hashkit_functions.cc index e13a854b..4934b55b 100644 --- a/tests/hashkit_functions.cc +++ b/tests/hashkit_functions.cc @@ -564,7 +564,7 @@ static bool world_destroy(void *object) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; - world->_destroy= world_destroy; + world->collections(collection); + world->create(world_create); + world->destroy(world_destroy); } diff --git a/tests/libmemcached-1.0/all_tests.cc b/tests/libmemcached-1.0/all_tests.cc index e5a6d2bf..4d4d4ca8 100644 --- a/tests/libmemcached-1.0/all_tests.cc +++ b/tests/libmemcached-1.0/all_tests.cc @@ -82,10 +82,10 @@ void get_world(Framework *world) world->servers().set_servers_to_run(8); } - world->collections= collection; + world->collections(collection); - world->_create= (test_callback_create_fn*)world_create; - world->_destroy= (test_callback_destroy_fn*)world_destroy; + world->create((test_callback_create_fn*)world_create); + world->destroy((test_callback_destroy_fn*)world_destroy); world->set_runner(new LibmemcachedRunner); diff --git a/tests/libmemcached-1.0/all_tests_socket.cc b/tests/libmemcached-1.0/all_tests_socket.cc index cdc7b211..958873fb 100644 --- a/tests/libmemcached-1.0/all_tests_socket.cc +++ b/tests/libmemcached-1.0/all_tests_socket.cc @@ -71,10 +71,10 @@ void get_world(Framework *world) { - world->collections= collection; + world->collections(collection); - world->_create= (test_callback_create_fn*)world_create; - world->_destroy= (test_callback_destroy_fn*)world_destroy; + world->create((test_callback_create_fn*)world_create); + world->destroy((test_callback_destroy_fn*)world_destroy); world->set_runner(new LibmemcachedRunner); } diff --git a/tests/libmemcached-1.0/atomsmasher.cc b/tests/libmemcached-1.0/atomsmasher.cc index 45171c8b..e5d53b60 100644 --- a/tests/libmemcached-1.0/atomsmasher.cc +++ b/tests/libmemcached-1.0/atomsmasher.cc @@ -275,10 +275,10 @@ collection_st collection[] ={ void get_world(Framework *world) { - world->collections= collection; + world->collections(collection); - world->_create= (test_callback_create_fn*)world_create; - world->_destroy= (test_callback_destroy_fn*)world_destroy; + world->create((test_callback_create_fn*)world_create); + world->destroy((test_callback_destroy_fn*)world_destroy); world->set_runner(new LibmemcachedRunner); } diff --git a/tests/libmemcached-1.0/internals.cc b/tests/libmemcached-1.0/internals.cc index 8c28d315..6e0232fc 100644 --- a/tests/libmemcached-1.0/internals.cc +++ b/tests/libmemcached-1.0/internals.cc @@ -63,5 +63,5 @@ collection_st collection[] ={ void get_world(Framework *frame) { - frame->collections= collection; + frame->collections(collection); } diff --git a/tests/libmemcached-1.0/plus.cpp b/tests/libmemcached-1.0/plus.cpp index 8539c5e6..a01544c5 100644 --- a/tests/libmemcached-1.0/plus.cpp +++ b/tests/libmemcached-1.0/plus.cpp @@ -286,10 +286,10 @@ collection_st collection[] ={ void get_world(Framework *world) { - world->collections= collection; + world->collections(collection); - world->_create= world_create; - world->_destroy= world_destroy; + world->create((test_callback_create_fn*)world_create); + world->destroy((test_callback_destroy_fn*)world_destroy); world->set_runner(new LibmemcachedRunner); } diff --git a/tests/libmemcached-1.0/sasl.cc b/tests/libmemcached-1.0/sasl.cc index 1c3d4a99..0ae101f2 100644 --- a/tests/libmemcached-1.0/sasl.cc +++ b/tests/libmemcached-1.0/sasl.cc @@ -101,10 +101,10 @@ collection_st collection[] ={ void get_world(Framework *world) { - world->collections= collection; + world->collections(collection); - world->_create= (test_callback_create_fn*)world_create; - world->_destroy= (test_callback_destroy_fn*)world_destroy; + world->create((test_callback_create_fn*)world_create); + world->destroy((test_callback_destroy_fn*)world_destroy); world->set_runner(new LibmemcachedRunner); diff --git a/tests/mem_udp.cc b/tests/mem_udp.cc index 4a567962..1bc4096a 100644 --- a/tests/mem_udp.cc +++ b/tests/mem_udp.cc @@ -566,10 +566,10 @@ collection_st collection[] ={ void get_world(Framework *world) { - world->collections= collection; + world->collections(collection); - world->_create= (test_callback_create_fn*)world_create; - world->_destroy= (test_callback_destroy_fn*)world_destroy; + world->create((test_callback_create_fn*)world_create); + world->destroy((test_callback_destroy_fn*)world_destroy); world->set_runner(new LibmemcachedRunner); } diff --git a/tests/memcapable.cc b/tests/memcapable.cc index ae50fefa..d0392d01 100644 --- a/tests/memcapable.cc +++ b/tests/memcapable.cc @@ -125,7 +125,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { executable= "./clients/memcapable"; - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memcat.cc b/tests/memcat.cc index e51cdce1..32e3f2c3 100644 --- a/tests/memcat.cc +++ b/tests/memcat.cc @@ -143,7 +143,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memcp.cc b/tests/memcp.cc index eab8cfa5..8aba6088 100644 --- a/tests/memcp.cc +++ b/tests/memcp.cc @@ -102,7 +102,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memdump.cc b/tests/memdump.cc index 4a308921..a8720e5b 100644 --- a/tests/memdump.cc +++ b/tests/memdump.cc @@ -129,7 +129,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memerror.cc b/tests/memerror.cc index 914d2a03..dd7610ef 100644 --- a/tests/memerror.cc +++ b/tests/memerror.cc @@ -119,7 +119,7 @@ static void *world_create(server_startup_st&, test_return_t&) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memexist.cc b/tests/memexist.cc index 29ad5091..fb69354d 100644 --- a/tests/memexist.cc +++ b/tests/memexist.cc @@ -160,7 +160,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memflush.cc b/tests/memflush.cc index f14b5b72..80a42453 100644 --- a/tests/memflush.cc +++ b/tests/memflush.cc @@ -113,7 +113,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { executable= "./clients/memflush"; - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memrm.cc b/tests/memrm.cc index 8d6109c0..29c66337 100644 --- a/tests/memrm.cc +++ b/tests/memrm.cc @@ -163,7 +163,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memslap.cc b/tests/memslap.cc index 6f990af4..3c5ea250 100644 --- a/tests/memslap.cc +++ b/tests/memslap.cc @@ -186,7 +186,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { executable= "./clients/memslap"; - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memstat.cc b/tests/memstat.cc index ae8679fb..9b61697d 100644 --- a/tests/memstat.cc +++ b/tests/memstat.cc @@ -124,7 +124,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/memtouch.cc b/tests/memtouch.cc index fa65e8b4..c44e6a08 100644 --- a/tests/memtouch.cc +++ b/tests/memtouch.cc @@ -157,7 +157,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error) void get_world(Framework *world) { executable= "./clients/memtouch"; - world->collections= collection; - world->_create= world_create; + world->collections(collection); + world->create(world_create); } diff --git a/tests/parser.cc b/tests/parser.cc index 740a9c19..70783053 100644 --- a/tests/parser.cc +++ b/tests/parser.cc @@ -126,6 +126,6 @@ collection_st collection[] ={ void get_world(Framework *world) { - world->collections= collection; + world->collections(collection); } -- 2.30.2 From b9ab4871d4437735aa727797bda5eb7ae1d7f133 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Sat, 12 May 2012 22:47:35 -0400 Subject: [PATCH 03/16] remove dead stream.cc file --- libtest/include.am | 1 - 1 file changed, 1 deletion(-) diff --git a/libtest/include.am b/libtest/include.am index 9c7fe244..529c26ed 100644 --- a/libtest/include.am +++ b/libtest/include.am @@ -112,7 +112,6 @@ libtest_libtest_la_SOURCES+= libtest/server.cc libtest_libtest_la_SOURCES+= libtest/server_container.cc libtest_libtest_la_SOURCES+= libtest/signal.cc libtest_libtest_la_SOURCES+= libtest/socket.cc -libtest_libtest_la_SOURCES+= libtest/stream.cc libtest_libtest_la_SOURCES+= libtest/strerror.cc libtest_libtest_la_SOURCES+= libtest/timer.cc libtest_libtest_la_SOURCES+= libtest/tmpfile.cc -- 2.30.2 From 5e18f5bdda1bebc6e6eef25a37d0a04a30e847af Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Sun, 13 May 2012 03:17:22 -0400 Subject: [PATCH 04/16] Fix for valgrind issue around memcached_result_st not being free() --- libtest/cmdline.cc | 21 ++++++++++++++------- libtest/cmdline.h | 3 +-- libtest/comparison.hpp | 23 +++++++++++++++++++++++ libtest/test.h | 10 ++-------- tests/libmemcached-1.0/mem_functions.cc | 4 +++- 5 files changed, 43 insertions(+), 18 deletions(-) diff --git a/libtest/cmdline.cc b/libtest/cmdline.cc index b03b60d8..ecce3299 100644 --- a/libtest/cmdline.cc +++ b/libtest/cmdline.cc @@ -183,9 +183,9 @@ Application::error_t Application::run(const char *args[]) posix_spawn_file_actions_t file_actions; posix_spawn_file_actions_init(&file_actions); - stdin_fd.dup_for_spawn(Application::Pipe::READ, file_actions); - stdout_fd.dup_for_spawn(Application::Pipe::WRITE, file_actions); - stderr_fd.dup_for_spawn(Application::Pipe::WRITE, file_actions); + stdin_fd.dup_for_spawn(file_actions); + stdout_fd.dup_for_spawn(file_actions); + stderr_fd.dup_for_spawn(file_actions); posix_spawnattr_t spawnattr; posix_spawnattr_init(&spawnattr); @@ -593,13 +593,20 @@ void Application::Pipe::cloexec() Application::Pipe::~Pipe() { - close(READ); - close(WRITE); + if (_pipe_fd[0] != -1) + { + ::close(_pipe_fd[0]); + } + + if (_pipe_fd[1] != -1) + { + ::close(_pipe_fd[1]); + } } -void Application::Pipe::dup_for_spawn(const close_t& arg, posix_spawn_file_actions_t& file_actions) +void Application::Pipe::dup_for_spawn(posix_spawn_file_actions_t& file_actions) { - int type= int(arg); + int type= STDIN_FILENO == _std_fd ? 0 : 1; int ret; if ((ret= posix_spawn_file_actions_adddup2(&file_actions, _pipe_fd[type], _std_fd )) < 0) diff --git a/libtest/cmdline.h b/libtest/cmdline.h index ad1d6125..700647d3 100644 --- a/libtest/cmdline.h +++ b/libtest/cmdline.h @@ -66,8 +66,7 @@ public: void reset(); void close(const close_t& arg); - void dup_for_spawn(const close_t& arg, - posix_spawn_file_actions_t& file_actions); + void dup_for_spawn(posix_spawn_file_actions_t& file_actions); void nonblock(); void cloexec(); diff --git a/libtest/comparison.hpp b/libtest/comparison.hpp index 2a00284f..63bd08a2 100644 --- a/libtest/comparison.hpp +++ b/libtest/comparison.hpp @@ -86,6 +86,29 @@ bool _compare(const char *file, int line, const char *func, const T1_comparable& return true; } +template +bool _compare_strcmp(const char *file, int line, const char *func, const T1_comparable& __expected, const T2_comparable& __actual) +{ + if (__expected == NULL) + { + fatal_message("Expected value was NULL, programmer error"); + } + + if (__actual == NULL) + { + libtest::stream::make_cerr(file, line, func) << "Expected " << __expected << " but got NULL"; + return false; + } + + if (strncmp(__expected, __actual, strlen(__expected))) + { + libtest::stream::make_cerr(file, line, func) << "Expected " << __expected << " passed \"" << __actual << "\""; + return false; + } + + return true; +} + template bool _compare_zero(const char *file, int line, const char *func, T_comparable __actual) { diff --git a/libtest/test.h b/libtest/test.h index b5f7e47d..117e59ce 100644 --- a/libtest/test.h +++ b/libtest/test.h @@ -230,16 +230,10 @@ do \ } while (0) -#define test_strcmp(A,B) \ +#define test_strcmp(__expected, __actual) \ do \ { \ - if ((A) == NULL or (B) == NULL or strcmp((A), (B))) \ - { \ - if ((B) == NULL) fprintf(stderr, "\n%s:%d: Expected %s, got \n", __FILE__, __LINE__, (A)); \ - else fprintf(stderr, "\n%s:%d: Expected %s, got \"%s\"\n", __FILE__, __LINE__, (A), (B)); \ - libtest::create_core(); \ - return TEST_FAILURE; \ - } \ + void(libtest::_compare_strcmp(__FILE__, __LINE__, __func__, (__expected), (__actual))); \ } while (0) #define test_memcmp(A,B,C) \ diff --git a/tests/libmemcached-1.0/mem_functions.cc b/tests/libmemcached-1.0/mem_functions.cc index 2f1dff72..f8ac3da6 100644 --- a/tests/libmemcached-1.0/mem_functions.cc +++ b/tests/libmemcached-1.0/mem_functions.cc @@ -4606,7 +4606,7 @@ test_return_t regression_994772_TEST(memcached_st* memc) memcached_mget(memc, keys, key_length, 1)); memcached_return_t rc; - memcached_result_st *results = memcached_fetch_result(memc, NULL, &rc); + memcached_result_st *results= memcached_fetch_result(memc, NULL, &rc); test_true(results); test_compare(MEMCACHED_SUCCESS, rc); @@ -4614,6 +4614,8 @@ test_return_t regression_994772_TEST(memcached_st* memc) uint64_t cas_value= memcached_result_cas(results); test_true(cas_value); + memcached_result_free(results); + // Bad cas value, sanity check test_true(cas_value != 9999); test_compare(MEMCACHED_END, -- 2.30.2 From 5d68a7b1d0fff81d547b8a74ad72247437f412c5 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Sun, 13 May 2012 20:58:33 -0400 Subject: [PATCH 05/16] Take a pass at fixing the valgrind warning that happens when we have a failure to create a server. --- libtest/port.cc | 2 + libtest/server_container.cc | 272 +++++++++++++++++++----------------- 2 files changed, 145 insertions(+), 129 deletions(-) diff --git a/libtest/port.cc b/libtest/port.cc index 904a0add..7dbba4e0 100644 --- a/libtest/port.cc +++ b/libtest/port.cc @@ -75,6 +75,7 @@ struct socket_st { { if ((*iter).second == _arg) { + shutdown((*iter).first, SHUT_RDWR); close((*iter).first); } } @@ -86,6 +87,7 @@ struct socket_st { iter != _pair.end(); iter++) { + shutdown((*iter).first, SHUT_RDWR); close((*iter).first); } } diff --git a/libtest/server_container.cc b/libtest/server_container.cc index f658e6ff..27198ba3 100644 --- a/libtest/server_container.cc +++ b/libtest/server_container.cc @@ -183,112 +183,119 @@ bool server_startup(server_startup_st& construct, const std::string& server_type } libtest::Server *server= NULL; - if (0) - { } - else if (server_type.compare("gearmand") == 0) - { - if (GEARMAND_BINARY) + try { + if (0) + { } + else if (server_type.compare("gearmand") == 0) { - if (HAVE_LIBGEARMAN) + if (GEARMAND_BINARY) { - server= build_gearmand("localhost", try_port); + if (HAVE_LIBGEARMAN) + { + server= build_gearmand("localhost", try_port); + } } } - } - else if (server_type.compare("drizzled") == 0) - { - if (DRIZZLED_BINARY) + else if (server_type.compare("drizzled") == 0) { - if (HAVE_LIBDRIZZLE) + if (DRIZZLED_BINARY) { - server= build_drizzled("localhost", try_port); + if (HAVE_LIBDRIZZLE) + { + server= build_drizzled("localhost", try_port); + } } } - } - else if (server_type.compare("blobslap_worker") == 0) - { - if (GEARMAND_BINARY) + else if (server_type.compare("blobslap_worker") == 0) { - if (GEARMAND_BLOBSLAP_WORKER) + if (GEARMAND_BINARY) { - if (HAVE_LIBGEARMAN) + if (GEARMAND_BLOBSLAP_WORKER) { - server= build_blobslap_worker(try_port); + if (HAVE_LIBGEARMAN) + { + server= build_blobslap_worker(try_port); + } } } } - } - else if (server_type.compare("memcached-sasl") == 0) - { - if (MEMCACHED_SASL_BINARY) + else if (server_type.compare("memcached-sasl") == 0) { - if (HAVE_LIBMEMCACHED) + if (MEMCACHED_SASL_BINARY) { - server= build_memcached_sasl("localhost", try_port, construct.username(), construct.password()); + if (HAVE_LIBMEMCACHED) + { + server= build_memcached_sasl("localhost", try_port, construct.username(), construct.password()); + } } } - } - else if (server_type.compare("memcached") == 0) - { - if (MEMCACHED_BINARY) + else if (server_type.compare("memcached") == 0) { - if (HAVE_LIBMEMCACHED) + if (MEMCACHED_BINARY) { - server= build_memcached("localhost", try_port); + if (HAVE_LIBMEMCACHED) + { + server= build_memcached("localhost", try_port); + } } } - } - else if (server_type.compare("memcached-light") == 0) - { - if (MEMCACHED_LIGHT_BINARY) + else if (server_type.compare("memcached-light") == 0) { - if (HAVE_LIBMEMCACHED) + if (MEMCACHED_LIGHT_BINARY) { - server= build_memcached_light("localhost", try_port); + if (HAVE_LIBMEMCACHED) + { + server= build_memcached_light("localhost", try_port); + } } } - } - if (server == NULL) - { - fatal_message("Launching of an unknown server was attempted"); - } + if (server == NULL) + { + fatal_message("Launching of an unknown server was attempted"); + } - /* - We will now cycle the server we have created. - */ - if (server->cycle() == false) - { - Error << "Could not start up server " << *server; - delete server; - return false; - } + /* + We will now cycle the server we have created. + */ + if (server->cycle() == false) + { + Error << "Could not start up server " << *server; + delete server; + return false; + } - server->build(argc, argv); + server->build(argc, argv); - if (false) - { - Out << "Pausing for startup, hit return when ready."; - std::string gdb_command= server->base_command(); - std::string options; + if (false) + { + Out << "Pausing for startup, hit return when ready."; + std::string gdb_command= server->base_command(); + std::string options; #if 0 - Out << "run " << server->args(options); + Out << "run " << server->args(options); #endif - getchar(); + getchar(); + } + else if (server->start() == false) + { + delete server; + return false; + } + else + { + if (opt_startup_message) + { + Outn(); + Out << "STARTING SERVER(pid:" << server->pid() << "): " << server->running(); + Outn(); + } + } } - else if (server->start() == false) + catch (...) { delete server; - return false; - } - else - { - if (opt_startup_message) - { - Outn(); - Out << "STARTING SERVER(pid:" << server->pid() << "): " << server->running(); - Outn(); - } + throw; } construct.push_server(server); @@ -302,90 +309,97 @@ bool server_startup_st::start_socket_server(const std::string& server_type, cons Outn(); Server *server= NULL; - if (0) - { } - else if (server_type.compare("gearmand") == 0) - { - Error << "Socket files are not supported for gearmand yet"; - } - else if (server_type.compare("memcached-sasl") == 0) - { - if (MEMCACHED_SASL_BINARY) + try { + if (0) + { } + else if (server_type.compare("gearmand") == 0) + { + Error << "Socket files are not supported for gearmand yet"; + } + else if (server_type.compare("memcached-sasl") == 0) { - if (HAVE_LIBMEMCACHED) + if (MEMCACHED_SASL_BINARY) { - server= build_memcached_sasl_socket("localhost", try_port, username(), password()); + if (HAVE_LIBMEMCACHED) + { + server= build_memcached_sasl_socket("localhost", try_port, username(), password()); + } + else + { + Error << "Libmemcached was not found"; + } } else { - Error << "Libmemcached was not found"; + Error << "No memcached binary is available"; } } - else - { - Error << "No memcached binary is available"; - } - } - else if (server_type.compare("memcached") == 0) - { - if (MEMCACHED_BINARY) + else if (server_type.compare("memcached") == 0) { - if (HAVE_LIBMEMCACHED) + if (MEMCACHED_BINARY) { - server= build_memcached_socket("localhost", try_port); + if (HAVE_LIBMEMCACHED) + { + server= build_memcached_socket("localhost", try_port); + } + else + { + Error << "Libmemcached was not found"; + } } else { - Error << "Libmemcached was not found"; + Error << "No memcached binary is available"; } } else { - Error << "No memcached binary is available"; + Error << "Failed to start " << server_type << ", no support was found to be compiled in for it."; } - } - else - { - Error << "Failed to start " << server_type << ", no support was found to be compiled in for it."; - } - if (server == NULL) - { - Error << "Failure occured while creating server: " << server_type; - return false; - } + if (server == NULL) + { + Error << "Failure occured while creating server: " << server_type; + return false; + } - /* - We will now cycle the server we have created. - */ - if (server->cycle() == false) - { - Error << "Could not start up server " << *server; - delete server; - return false; - } + /* + We will now cycle the server we have created. + */ + if (server->cycle() == false) + { + Error << "Could not start up server " << *server; + delete server; + return false; + } - server->build(argc, argv); + server->build(argc, argv); - if (false) - { - Out << "Pausing for startup, hit return when ready."; - std::string gdb_command= server->base_command(); - std::string options; + if (false) + { + Out << "Pausing for startup, hit return when ready."; + std::string gdb_command= server->base_command(); + std::string options; #if 0 - Out << "run " << server->args(options); + Out << "run " << server->args(options); #endif - getchar(); + getchar(); + } + else if (server->start() == false) + { + Error << "Failed to start " << *server; + delete server; + return false; + } + else + { + Out << "STARTING SERVER(pid:" << server->pid() << "): " << server->running(); + } } - else if (server->start() == false) + catch (...) { - Error << "Failed to start " << *server; delete server; - return false; - } - else - { - Out << "STARTING SERVER(pid:" << server->pid() << "): " << server->running(); + throw; } push_server(server); -- 2.30.2 From 4018da61ccc84a5345b19b61a1cfd5a30df896ea Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Sat, 19 May 2012 13:31:36 -0400 Subject: [PATCH 06/16] Const issue for C++ include. --- libmemcached-1.0/memcached.hpp | 126 +++++++++++++++++++++------------ 1 file changed, 80 insertions(+), 46 deletions(-) diff --git a/libmemcached-1.0/memcached.hpp b/libmemcached-1.0/memcached.hpp index 33dcdc1f..4e1e1778 100644 --- a/libmemcached-1.0/memcached.hpp +++ b/libmemcached-1.0/memcached.hpp @@ -1,3 +1,39 @@ +/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab: + * + * Libmemcached library + * + * Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/ + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * The names of its contributors may not be used to endorse or + * promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + /* * Summary: C++ interface for memcached server * @@ -51,7 +87,9 @@ public: { memc= memcached("", 0); if (memc) + { memcached_server_add(memc, hostname.c_str(), port); + } } Memcache(memcached_st *clone) @@ -304,7 +342,7 @@ public: * @param[in] keys vector of keys to select * @return true if all keys are found */ - bool mget(std::vector &keys) + bool mget(const std::vector& keys) { std::vector real_keys; std::vector key_len; @@ -317,7 +355,7 @@ public: real_keys.reserve(keys.size()); key_len.reserve(keys.size()); - std::vector::iterator it= keys.begin(); + std::vector::const_iterator it= keys.begin(); while (it != keys.end()) { @@ -372,8 +410,8 @@ public: * @param[in] flags flags to store with the object * @return true on succcess; false otherwise */ - bool setByKey(const std::string &master_key, - const std::string &key, + bool setByKey(const std::string& master_key, + const std::string& key, const std::vector &value, time_t expiration, uint32_t flags) @@ -396,14 +434,14 @@ public: * @param[in] flags flags to store with the objects * @return true on success; false otherwise */ - bool setAll(std::vector &keys, - std::vector< std::vector *> &values, + bool setAll(const std::vector& keys, + const std::vector< std::vector *>& values, time_t expiration, uint32_t flags) { bool retval= true; - std::vector::iterator key_it= keys.begin(); - std::vector< std::vector *>::iterator val_it= values.begin(); + std::vector::const_iterator key_it= keys.begin(); + std::vector< std::vector *>::const_iterator val_it= values.begin(); while (key_it != keys.end()) { retval= set((*key_it), *(*val_it), expiration, flags); @@ -426,12 +464,12 @@ public: * @param[in] flags flags to store with the objects * @return true on success; false otherwise */ - bool setAll(std::map > &key_value_map, + bool setAll(const std::map >& key_value_map, time_t expiration, uint32_t flags) { bool retval= true; - std::map >::iterator it= key_value_map.begin(); + std::map >::const_iterator it= key_value_map.begin(); while (it != key_value_map.end()) { @@ -443,6 +481,7 @@ public: } ++it; } + return true; } @@ -456,7 +495,7 @@ public: * @param[out] value store the result of the increment here * @return true on success; false otherwise */ - bool increment(const std::string &key, uint32_t offset, uint64_t *value) + bool increment(const std::string& key, uint32_t offset, uint64_t *value) { return memcached_success(memcached_increment(memc, key.c_str(), key.length(), offset, value)); } @@ -471,7 +510,7 @@ public: * @param[out] value store the result of the decrement here * @return true on success; false otherwise */ - bool decrement(const std::string &key, uint32_t offset, uint64_t *value) + bool decrement(const std::string& key, uint32_t offset, uint64_t *value) { return memcached_success(memcached_decrement(memc, key.c_str(), key.length(), @@ -487,7 +526,7 @@ public: * @param[in] value of object to add * @return true on success; false otherwise */ - bool add(const std::string &key, const std::vector &value) + bool add(const std::string& key, const std::vector& value) { return memcached_success(memcached_add(memc, key.c_str(), key.length(), &value[0], value.size(), 0, 0)); @@ -503,9 +542,9 @@ public: * @param[in] value of object to add * @return true on success; false otherwise */ - bool addByKey(const std::string &master_key, - const std::string &key, - const std::vector &value) + bool addByKey(const std::string& master_key, + const std::string& key, + const std::vector& value) { return memcached_success(memcached_add_by_key(memc, master_key.c_str(), @@ -525,7 +564,7 @@ public: * @param[in[ value value to replace object with * @return true on success; false otherwise */ - bool replace(const std::string &key, const std::vector &value) + bool replace(const std::string& key, const std::vector& value) { return memcached_success(memcached_replace(memc, key.c_str(), key.length(), &value[0], value.size(), @@ -542,9 +581,9 @@ public: * @param[in[ value value to replace object with * @return true on success; false otherwise */ - bool replaceByKey(const std::string &master_key, - const std::string &key, - const std::vector &value) + bool replaceByKey(const std::string& master_key, + const std::string& key, + const std::vector& value) { return memcached_success(memcached_replace_by_key(memc, master_key.c_str(), @@ -563,7 +602,7 @@ public: * @param[in] value data to prepend to object's value * @return true on success; false otherwise */ - bool prepend(const std::string &key, const std::vector &value) + bool prepend(const std::string& key, const std::vector& value) { return memcached_success(memcached_prepend(memc, key.c_str(), key.length(), &value[0], value.size(), 0, 0)); @@ -579,9 +618,9 @@ public: * @param[in] value data to prepend to object's value * @return true on success; false otherwise */ - bool prependByKey(const std::string &master_key, - const std::string &key, - const std::vector &value) + bool prependByKey(const std::string& master_key, + const std::string& key, + const std::vector& value) { return memcached_success(memcached_prepend_by_key(memc, master_key.c_str(), @@ -601,7 +640,7 @@ public: * @param[in] value data to append to object's value * @return true on success; false otherwise */ - bool append(const std::string &key, const std::vector &value) + bool append(const std::string& key, const std::vector& value) { return memcached_success(memcached_append(memc, key.c_str(), @@ -621,8 +660,8 @@ public: * @param[in] value data to append to object's value * @return true on success; false otherwise */ - bool appendByKey(const std::string &master_key, - const std::string &key, + bool appendByKey(const std::string& master_key, + const std::string& key, const std::vector &value) { return memcached_success(memcached_append_by_key(memc, @@ -643,8 +682,8 @@ public: * @param[in] value value to store for object in server * @param[in] cas_arg "cas" value */ - bool cas(const std::string &key, - const std::vector &value, + bool cas(const std::string& key, + const std::vector& value, uint64_t cas_arg) { return memcached_success(memcached_cas(memc, key.c_str(), key.length(), @@ -662,8 +701,8 @@ public: * @param[in] value value to store for object in server * @param[in] cas_arg "cas" value */ - bool casByKey(const std::string &master_key, - const std::string &key, + bool casByKey(const std::string& master_key, + const std::string& key, const std::vector &value, uint64_t cas_arg) { @@ -683,7 +722,7 @@ public: * @param[in] key key of object to delete * @return true on success; false otherwise */ - bool remove(const std::string &key) + bool remove(const std::string& key) { return memcached_success(memcached_delete(memc, key.c_str(), key.length(), 0)); } @@ -695,7 +734,7 @@ public: * @param[in] expiration time to delete the object after * @return true on success; false otherwise */ - bool remove(const std::string &key, time_t expiration) + bool remove(const std::string& key, time_t expiration) { return memcached_success(memcached_delete(memc, key.c_str(), @@ -710,8 +749,8 @@ public: * @param[in] key key of object to delete * @return true on success; false otherwise */ - bool removeByKey(const std::string &master_key, - const std::string &key) + bool removeByKey(const std::string& master_key, + const std::string& key) { return memcached_success(memcached_delete_by_key(memc, master_key.c_str(), @@ -729,8 +768,8 @@ public: * @param[in] expiration time to delete the object after * @return true on success; false otherwise */ - bool removeByKey(const std::string &master_key, - const std::string &key, + bool removeByKey(const std::string& master_key, + const std::string& key, time_t expiration) { return memcached_success(memcached_delete_by_key(memc, @@ -772,8 +811,7 @@ public: * stats * @return true on success; false otherwise */ - bool getStats(std::map< std::string, std::map > - &stats_map) + bool getStats(std::map< std::string, std::map >& stats_map) { memcached_return_t rc; memcached_stat_st *stats= memcached_stat(memc, NULL, &rc); @@ -792,8 +830,7 @@ public: */ for (uint32_t x= 0; x < server_count; x++) { - memcached_server_instance_st instance= - memcached_server_instance_by_position(memc, x); + memcached_server_instance_st instance= memcached_server_instance_by_position(memc, x); std::ostringstream strstm; std::string server_name(memcached_server_name(instance)); server_name.append(":"); @@ -801,11 +838,8 @@ public: server_name.append(strstm.str()); std::map server_stats; - char **list= NULL; - char **ptr= NULL; - - list= memcached_stat_get_keys(memc, &stats[x], &rc); - for (ptr= list; *ptr; ptr++) + char **list= memcached_stat_get_keys(memc, &stats[x], &rc); + for (char** ptr= list; *ptr; ptr++) { char *value= memcached_stat_get_value(memc, &stats[x], *ptr, &rc); server_stats[*ptr]= value; -- 2.30.2 From c633911d2e1bb3638db6d280048169e9022f3455 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Mon, 21 May 2012 00:12:06 -0400 Subject: [PATCH 07/16] Shuffle for readability --- libmemcached/io.cc | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/libmemcached/io.cc b/libmemcached/io.cc index 8fb6ffda..06aa57c1 100644 --- a/libmemcached/io.cc +++ b/libmemcached/io.cc @@ -67,14 +67,17 @@ static bool repack_input_buffer(memcached_server_write_instance_st ptr) { do { /* Just try a single read to grab what's available */ - ssize_t nr= recv(ptr->fd, - ptr->read_ptr + ptr->read_data_length, - MEMCACHED_MAX_BUFFER - ptr->read_data_length, - MSG_DONTWAIT); - - switch (nr) + ssize_t nr; + if ((nr= recv(ptr->fd, + ptr->read_ptr + ptr->read_data_length, + MEMCACHED_MAX_BUFFER - ptr->read_data_length, + MSG_DONTWAIT)) <= 0) { - case SOCKET_ERROR: + if (nr == 0) + { + memcached_set_error(*ptr, MEMCACHED_CONNECTION_FAILURE, MEMCACHED_AT); + } + else { switch (get_socket_errno()) { @@ -94,24 +97,19 @@ static bool repack_input_buffer(memcached_server_write_instance_st ptr) memcached_set_errno(*ptr, get_socket_errno(), MEMCACHED_AT); } } - break; - case 0: // Shutdown on the socket has occurred - { - memcached_set_error(*ptr, MEMCACHED_CONNECTION_FAILURE, MEMCACHED_AT); - } break; + } + else // We read data, append to our read buffer + { + ptr->read_data_length+= size_t(nr); + ptr->read_buffer_length+= size_t(nr); - default: - { - ptr->read_data_length+= size_t(nr); - ptr->read_buffer_length+= size_t(nr); - return true; - } - break; + return true; } - } while (0); + } while (false); } + return false; } @@ -187,9 +185,9 @@ static memcached_return_t io_wait(memcached_server_write_instance_st ptr, } struct pollfd fds; - memset(&fds, 0, sizeof(pollfd)); fds.fd= ptr->fd; fds.events= POLLIN; + fds.revents= 0; if (read_or_write == MEM_WRITE) /* write */ { @@ -824,7 +822,7 @@ memcached_return_t memcached_io_readline(memcached_server_write_instance_st ptr, } /* Now let's look in the buffer and copy as we go! */ - while (ptr->read_buffer_length && total_nr < size && !line_complete) + while (ptr->read_buffer_length and total_nr < size and line_complete == false) { *buffer_ptr = *ptr->read_ptr; if (*buffer_ptr == '\n') -- 2.30.2 From a28d1ecc082d9d08c4f59f071de9a43fbd08aee3 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Mon, 21 May 2012 01:08:39 -0400 Subject: [PATCH 08/16] Simplify purge return value. --- libmemcached/common.h | 3 +-- libmemcached/io.cc | 5 ++--- libmemcached/purge.cc | 16 +++++++--------- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/libmemcached/common.h b/libmemcached/common.h index f7559376..2fe6b0f8 100644 --- a/libmemcached/common.h +++ b/libmemcached/common.h @@ -169,8 +169,7 @@ memcached_return_t run_distribution(memcached_st *ptr); #define memcached_server_response_decrement(A) (A)->cursor_active-- #define memcached_server_response_reset(A) (A)->cursor_active=0 -LIBMEMCACHED_LOCAL -memcached_return_t memcached_purge(memcached_server_write_instance_st ptr); +bool memcached_purge(memcached_server_write_instance_st ptr); #ifdef __cplusplus } diff --git a/libmemcached/io.cc b/libmemcached/io.cc index 06aa57c1..d0e6aaf6 100644 --- a/libmemcached/io.cc +++ b/libmemcached/io.cc @@ -178,7 +178,7 @@ static memcached_return_t io_wait(memcached_server_write_instance_st ptr, */ if (read_or_write == MEM_WRITE) { - if (memcached_fatal(memcached_purge(ptr))) + if (memcached_purge(ptr) == false) { return MEMCACHED_FAILURE; } @@ -276,9 +276,8 @@ static bool io_flush(memcached_server_write_instance_st ptr, */ { WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET); - memcached_return_t rc= memcached_purge(ptr); - if (rc != MEMCACHED_SUCCESS and rc != MEMCACHED_STORED) + if (memcached_purge(ptr) == false) { return false; } diff --git a/libmemcached/purge.cc b/libmemcached/purge.cc index 6142e5fb..38e4552a 100644 --- a/libmemcached/purge.cc +++ b/libmemcached/purge.cc @@ -40,9 +40,8 @@ #include -memcached_return_t memcached_purge(memcached_server_write_instance_st ptr) +bool memcached_purge(memcached_server_write_instance_st ptr) { - memcached_return_t ret= MEMCACHED_SUCCESS; memcached_st *root= (memcached_st *)ptr->root; if (memcached_is_purging(ptr->root) || /* already purging */ @@ -51,7 +50,7 @@ memcached_return_t memcached_purge(memcached_server_write_instance_st ptr) (ptr->io_bytes_sent >= ptr->root->io_bytes_watermark && memcached_server_response_count(ptr) < 2)) { - return MEMCACHED_SUCCESS; + return true; } /* @@ -69,10 +68,12 @@ memcached_return_t memcached_purge(memcached_server_write_instance_st ptr) { memcached_set_purging(root, true); - return memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT); + memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT); + return false; } WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET); + bool is_successful= true; uint32_t no_msg= memcached_server_response_count(ptr) - 1; if (no_msg > 0) { @@ -103,10 +104,7 @@ memcached_return_t memcached_purge(memcached_server_write_instance_st ptr) { WATCHPOINT_ERROR(rc); memcached_io_reset(ptr); - ret= rc; -#if 0 - ret= memcached_set_error(*ptr, rc, MEMCACHED_AT); -#endif + is_successful= false; } if (ptr->root->callbacks != NULL) @@ -130,5 +128,5 @@ memcached_return_t memcached_purge(memcached_server_write_instance_st ptr) } memcached_set_purging(root, false); - return ret; + return is_successful; } -- 2.30.2 From fc72bfb155d6938e6d4b7b0e24a6256d88c2a7c3 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Mon, 21 May 2012 02:01:35 -0400 Subject: [PATCH 09/16] Remove a simple issue that trips up peope providing patches (just allow the class to cleanup the purge values). --- libmemcached/is.h | 1 - libmemcached/memcached.cc | 5 ---- libmemcached/purge.cc | 53 +++++++++++++++++++++++++++++++-------- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/libmemcached/is.h b/libmemcached/is.h index 25ebe03e..4c4d6f31 100644 --- a/libmemcached/is.h +++ b/libmemcached/is.h @@ -54,7 +54,6 @@ #define memcached_has_replicas(__object) ((__object)->root->number_of_replicas) -#define memcached_set_purging(__object, __value) ((__object)->state.is_purging= (__value)) #define memcached_set_processing_input(__object, __value) ((__object)->state.is_processing_input= (__value)) #define memcached_set_initialized(__object, __value) ((__object)->options.is_initialized(= (__value)) #define memcached_set_allocated(__object, __value) ((__object)->options.is_allocated= (__value)) diff --git a/libmemcached/memcached.cc b/libmemcached/memcached.cc index 2bcf6fa8..548f2355 100644 --- a/libmemcached/memcached.cc +++ b/libmemcached/memcached.cc @@ -184,11 +184,6 @@ memcached_st *memcached_create(memcached_st *ptr) ptr->options.is_allocated= true; } -#if 0 - memcached_set_purging(ptr, false); - memcached_set_processing_input(ptr, false); -#endif - if (_memcached_init(ptr) == false) { memcached_free(ptr); diff --git a/libmemcached/purge.cc b/libmemcached/purge.cc index 38e4552a..841af82e 100644 --- a/libmemcached/purge.cc +++ b/libmemcached/purge.cc @@ -39,6 +39,45 @@ #include +#define memcached_set_purging(__object, __value) ((__object)->state.is_purging= (__value)) + +class Purge +{ +public: + Purge(memcached_st* arg) : + _memc(arg) + { + memcached_set_purging(_memc, true); + } + + ~Purge() + { + memcached_set_purging(_memc, false); + } + +private: + memcached_st* _memc; +}; + +class PollTimeout +{ +public: + PollTimeout(memcached_st* arg) : + _timeout(arg->poll_timeout), + _origin(arg->poll_timeout) + { + _origin = 2000; + } + + ~PollTimeout() + { + _origin= _timeout; + } + +private: + int32_t _timeout; + int32_t& _origin; +}; bool memcached_purge(memcached_server_write_instance_st ptr) { @@ -57,7 +96,7 @@ bool memcached_purge(memcached_server_write_instance_st ptr) memcached_io_write and memcached_response may call memcached_purge so we need to be able stop any recursion.. */ - memcached_set_purging(root, true); + Purge set_purge(root); WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET); /* @@ -66,8 +105,6 @@ bool memcached_purge(memcached_server_write_instance_st ptr) */ if (memcached_io_write(ptr) == false) { - memcached_set_purging(root, true); - memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT); return false; } @@ -78,18 +115,16 @@ bool memcached_purge(memcached_server_write_instance_st ptr) if (no_msg > 0) { memcached_result_st result; - memcached_result_st *result_ptr; /* * We need to increase the timeout, because we might be waiting for * data to be sent from the server (the commands was in the output buffer * and just flushed */ - const int32_t timeo= ptr->root->poll_timeout; - root->poll_timeout= 2000; + PollTimeout poll_timeout(ptr->root); - result_ptr= memcached_result_create(root, &result); - WATCHPOINT_ASSERT(result_ptr); + memcached_result_st* result_ptr= memcached_result_create(root, &result); + assert(result_ptr); for (uint32_t x= 0; x < no_msg; x++) { @@ -124,9 +159,7 @@ bool memcached_purge(memcached_server_write_instance_st ptr) } memcached_result_free(result_ptr); - root->poll_timeout= timeo; } - memcached_set_purging(root, false); return is_successful; } -- 2.30.2 From bcf4f7d33fd0b0cb5bb599b300aa043effc62a33 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Mon, 21 May 2012 03:09:19 -0400 Subject: [PATCH 10/16] Update writev --- libmemcached/do.cc | 10 ++-------- libmemcached/get.cc | 8 ++++---- libmemcached/io.cc | 14 ++++++++------ libmemcached/io.hpp | 6 +++--- libmemcached/sasl.cc | 2 +- 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/libmemcached/do.cc b/libmemcached/do.cc index 2ce64483..61a143b8 100644 --- a/libmemcached/do.cc +++ b/libmemcached/do.cc @@ -72,14 +72,8 @@ memcached_return_t memcached_vdo(memcached_server_write_instance_st instance, return MEMCACHED_SUCCESS; } - ssize_t sent_length= memcached_io_writev(instance, vector, count, with_flush); - size_t command_length= 0; - for (uint32_t x= 0; x < count; ++x, vector++) - { - command_length+= vector->length; - } - - if (sent_length == -1 or size_t(sent_length) != command_length) + bool sent_success= memcached_io_writev(instance, vector, count, with_flush); + if (sent_success == false) { if (memcached_last_error(instance->root) == MEMCACHED_SUCCESS) { diff --git a/libmemcached/get.cc b/libmemcached/get.cc index 1deb3976..7356bbc3 100644 --- a/libmemcached/get.cc +++ b/libmemcached/get.cc @@ -310,7 +310,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, } hosts_connected++; - if ((memcached_io_writev(instance, vector, 4, false)) == -1) + if ((memcached_io_writev(instance, vector, 4, false)) == false) { failures_occured_in_sending= true; continue; @@ -321,7 +321,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, } else { - if ((memcached_io_writev(instance, (vector + 1), 3, false)) == -1) + if ((memcached_io_writev(instance, (vector + 1), 3, false)) == false) { memcached_server_response_reset(instance); failures_occured_in_sending= true; @@ -518,7 +518,7 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, { keys[x], key_length[x] } }; - if (memcached_io_writev(instance, vector, 3, flush) == -1) + if (memcached_io_writev(instance, vector, 3, flush) == false) { memcached_server_response_reset(instance); rc= MEMCACHED_SOME_ERRORS; @@ -651,7 +651,7 @@ static memcached_return_t replication_binary_mget(memcached_st *ptr, { keys[x], key_length[x] } }; - if (memcached_io_writev(instance, vector, 3, true) == -1) + if (memcached_io_writev(instance, vector, 3, true) == false) { memcached_io_reset(instance); dead_servers[server]= true; diff --git a/libmemcached/io.cc b/libmemcached/io.cc index d0e6aaf6..885e2391 100644 --- a/libmemcached/io.cc +++ b/libmemcached/io.cc @@ -531,9 +531,9 @@ memcached_return_t memcached_io_slurp(memcached_server_write_instance_st ptr) /* fall through */ case ENOTCONN: // Programmer Error - WATCHPOINT_ASSERT(0); + assert(0); case ENOTSOCK: - WATCHPOINT_ASSERT(0); + assert(0); case EBADF: assert_msg(ptr->fd != INVALID_SOCKET, "Invalid socket state"); case EINVAL: @@ -620,20 +620,22 @@ ssize_t memcached_io_write(memcached_server_write_instance_st ptr, return ssize_t(written); } -ssize_t memcached_io_writev(memcached_server_write_instance_st ptr, +bool memcached_io_writev(memcached_server_write_instance_st ptr, libmemcached_io_vector_st vector[], const size_t number_of, const bool with_flush) { + ssize_t complete_total= 0; ssize_t total= 0; for (size_t x= 0; x < number_of; x++, vector++) { + complete_total+= vector->length; if (vector->length) { size_t written; if ((_io_write(ptr, vector->buffer, vector->length, false, written)) == false) { - return -1; + return false; } total+= written; } @@ -643,11 +645,11 @@ ssize_t memcached_io_writev(memcached_server_write_instance_st ptr, { if (memcached_io_write(ptr) == false) { - return -1; + return false; } } - return total; + return (complete_total == total); } diff --git a/libmemcached/io.hpp b/libmemcached/io.hpp index 549f86a0..ce9cef51 100644 --- a/libmemcached/io.hpp +++ b/libmemcached/io.hpp @@ -43,9 +43,9 @@ bool memcached_io_write(memcached_server_write_instance_st ptr); ssize_t memcached_io_write(memcached_server_write_instance_st ptr, const void *buffer, size_t length, bool with_flush); -ssize_t memcached_io_writev(memcached_server_write_instance_st ptr, - libmemcached_io_vector_st vector[], - const size_t number_of, const bool with_flush); +bool memcached_io_writev(memcached_server_write_instance_st ptr, + libmemcached_io_vector_st vector[], + const size_t number_of, const bool with_flush); memcached_return_t memcached_io_wait_for_write(memcached_server_write_instance_st ptr); diff --git a/libmemcached/sasl.cc b/libmemcached/sasl.cc index 40d37e3a..7e0e50d6 100644 --- a/libmemcached/sasl.cc +++ b/libmemcached/sasl.cc @@ -240,7 +240,7 @@ memcached_return_t memcached_sasl_authenticate_connection(memcached_server_st *s { data, len } }; - if (memcached_io_writev(server, vector, 3, true) == -1) + if (memcached_io_writev(server, vector, 3, true) == false) { rc= MEMCACHED_WRITE_FAILURE; break; -- 2.30.2 From 868795ee745fd29e511647fad2176b0f44daba83 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Mon, 21 May 2012 03:14:45 -0400 Subject: [PATCH 11/16] Style cleanup --- libmemcached/get.cc | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/libmemcached/get.cc b/libmemcached/get.cc index 7356bbc3..86f13670 100644 --- a/libmemcached/get.cc +++ b/libmemcached/get.cc @@ -2,7 +2,7 @@ * * Libmemcached library * - * Copyright (C) 2011 Data Differential, http://datadifferential.com/ + * Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/ * Copyright (C) 2006-2009 Brian Aker All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -117,7 +117,7 @@ char *memcached_get_by_key(memcached_st *ptr, if (value == NULL) { - if (ptr->get_key_failure && *error == MEMCACHED_NOTFOUND) + if (ptr->get_key_failure and *error == MEMCACHED_NOTFOUND) { memcached_result_reset(&ptr->result); memcached_return_t rc= ptr->get_key_failure(ptr, key, key_length, &ptr->result); @@ -140,7 +140,7 @@ char *memcached_get_by_key(memcached_st *ptr, 0, (memcached_result_flags(&ptr->result))); - if (rc == MEMCACHED_BUFFERED && latch == 0) + if (rc == MEMCACHED_BUFFERED and latch == 0) { memcached_behavior_set(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, 0); } @@ -154,7 +154,7 @@ char *memcached_get_by_key(memcached_st *ptr, (memcached_result_flags(&ptr->result))); } - if (rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED) + if (rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED) { *error= rc; *value_length= memcached_result_length(&ptr->result); @@ -368,13 +368,15 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, LIBMEMCACHED_MEMCACHED_MGET_END(); - if (failures_occured_in_sending && success_happened) + if (failures_occured_in_sending and success_happened) { return MEMCACHED_SOME_ERRORS; } if (success_happened) + { return MEMCACHED_SUCCESS; + } return MEMCACHED_FAILURE; // Complete failure occurred } @@ -528,7 +530,7 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, /* We just want one pending response per server */ memcached_server_response_reset(instance); memcached_server_response_increment(instance); - if ((x > 0 && x == ptr->io_key_prefetch) && memcached_flush_buffers(ptr) != MEMCACHED_SUCCESS) + if ((x > 0 and x == ptr->io_key_prefetch) and memcached_flush_buffers(ptr) != MEMCACHED_SUCCESS) { rc= MEMCACHED_SOME_ERRORS; } @@ -584,7 +586,9 @@ static memcached_return_t replication_binary_mget(memcached_st *ptr, uint64_t randomize_read= memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ); if (randomize_read) + { start= (uint32_t)random() % (uint32_t)(ptr->number_of_replicas + 1); + } /* Loop for each replica */ for (uint32_t replica= 0; replica <= ptr->number_of_replicas; ++replica) @@ -599,8 +603,10 @@ static memcached_return_t replication_binary_mget(memcached_st *ptr, uint32_t server= hash[x] + replica; /* In case of randomized reads */ - if (randomize_read && ((server + start) <= (hash[x] + ptr->number_of_replicas))) - server += start; + if (randomize_read and ((server + start) <= (hash[x] + ptr->number_of_replicas))) + { + server+= start; + } while (server >= memcached_server_count(ptr)) { @@ -689,7 +695,7 @@ static memcached_return_t binary_mget_by_key(memcached_st *ptr, uint32_t* hash= libmemcached_xvalloc(ptr, number_of_keys, uint32_t); bool* dead_servers= libmemcached_xcalloc(ptr, memcached_server_count(ptr), bool); - if (hash == NULL || dead_servers == NULL) + if (hash == NULL or dead_servers == NULL) { libmemcached_free(ptr, hash); libmemcached_free(ptr, dead_servers); -- 2.30.2 From 0b1f3751f2f2131482edd2fd23bd02b5242b5aac Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Mon, 21 May 2012 03:41:46 -0400 Subject: [PATCH 12/16] Enable assert. --- libmemcached/io.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmemcached/io.cc b/libmemcached/io.cc index 885e2391..ed33f05a 100644 --- a/libmemcached/io.cc +++ b/libmemcached/io.cc @@ -552,7 +552,7 @@ static bool _io_write(memcached_server_write_instance_st ptr, const void *buffer, size_t length, bool with_flush, size_t& written) { - WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET); + assert(ptr->fd != INVALID_SOCKET); assert(memcached_is_udp(ptr->root) == false); const char *buffer_ptr= static_cast(buffer); -- 2.30.2 From 51de1d277f50066571e5eb166552d603c568f6c8 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Mon, 21 May 2012 05:34:18 -0400 Subject: [PATCH 13/16] Tighten up error controls. --- libmemcached/connect.cc | 162 +++++++++++++++++++--------------------- 1 file changed, 78 insertions(+), 84 deletions(-) diff --git a/libmemcached/connect.cc b/libmemcached/connect.cc index 9d50e5c0..34e72f76 100644 --- a/libmemcached/connect.cc +++ b/libmemcached/connect.cc @@ -57,73 +57,78 @@ static memcached_return_t connect_poll(memcached_server_st *server) while (--loop_max) // Should only loop on cases of ERESTART or EINTR { - int error= poll(fds, 1, server->root->connect_timeout); - switch (error) + int number_of; + if ((number_of= poll(fds, 1, server->root->connect_timeout)) <= 0) { - case 1: + if (number_of == -1) { - int err; - socklen_t len= sizeof (err); - if (getsockopt(server->fd, SOL_SOCKET, SO_ERROR, &err, &len) == 0) + int local_errno= get_socket_errno(); // We cache in case closesocket() modifies errno + switch (local_errno) { - // We check the value to see what happened wth the socket. - if (err == 0) - { - return MEMCACHED_SUCCESS; - } - errno= err; - } - - return memcached_set_errno(*server, err, MEMCACHED_AT); - } - case 0: - { - server->io_wait_count.timeouts++; - return memcached_set_error(*server, MEMCACHED_TIMEOUT, MEMCACHED_AT); - } - - default: // A real error occurred and we need to completely bail - switch (get_socket_errno()) - { #ifdef TARGET_OS_LINUX - case ERESTART: + case ERESTART: #endif - case EINTR: - continue; + case EINTR: + continue; - case EFAULT: - case ENOMEM: - return memcached_set_error(*server, MEMCACHED_MEMORY_ALLOCATION_FAILURE, MEMCACHED_AT); + case EFAULT: + case ENOMEM: + return memcached_set_error(*server, MEMCACHED_MEMORY_ALLOCATION_FAILURE, MEMCACHED_AT); - case EINVAL: - return memcached_set_error(*server, MEMCACHED_MEMORY_ALLOCATION_FAILURE, MEMCACHED_AT, memcached_literal_param("RLIMIT_NOFILE exceeded, or if OSX the timeout value was invalid")); + case EINVAL: + return memcached_set_error(*server, MEMCACHED_MEMORY_ALLOCATION_FAILURE, MEMCACHED_AT, memcached_literal_param("RLIMIT_NOFILE exceeded, or if OSX the timeout value was invalid")); - default: // This should not happen - if (fds[0].revents & POLLERR) - { - int err; - socklen_t len= sizeof(err); - if (getsockopt(server->fd, SOL_SOCKET, SO_ERROR, &err, &len) == 0) + default: // This should not happen + if (fds[0].revents & POLLERR) { - if (err == 0) + int err; + socklen_t len= sizeof(err); + if (getsockopt(server->fd, SOL_SOCKET, SO_ERROR, &err, &len) == 0) { - // This should never happen, if it does? Punt. - continue; + if (err == 0) + { + // This should never happen, if it does? Punt. + continue; + } + local_errno= err; } - errno= err; } - } - int local_errno= get_socket_errno(); // We cache in case closesocket() modifies errno + assert_msg(server->fd != INVALID_SOCKET, "poll() was passed an invalid file descriptor"); + (void)closesocket(server->fd); + server->fd= INVALID_SOCKET; + server->state= MEMCACHED_SERVER_STATE_NEW; - assert_msg(server->fd != INVALID_SOCKET, "poll() was passed an invalid file descriptor"); - (void)closesocket(server->fd); - server->fd= INVALID_SOCKET; - server->state= MEMCACHED_SERVER_STATE_NEW; + return memcached_set_errno(*server, local_errno, MEMCACHED_AT); + } + } + assert(number_of == 0); - return memcached_set_errno(*server, local_errno, MEMCACHED_AT); + server->io_wait_count.timeouts++; + return memcached_set_error(*server, MEMCACHED_TIMEOUT, MEMCACHED_AT); + } + + if (fds[0].revents & POLLERR or + fds[0].revents & POLLHUP or + fds[0].revents & POLLNVAL) + { + int err; + socklen_t len= sizeof (err); + if (getsockopt(fds[0].fd, SOL_SOCKET, SO_ERROR, &err, &len) == 0) + { + // We check the value to see what happened wth the socket. + if (err == 0) + { + return MEMCACHED_SUCCESS; + } + errno= err; } + + return memcached_set_errno(*server, err, MEMCACHED_AT); } + assert(fds[0].revents & POLLIN or fds[0].revents & POLLOUT); + + return MEMCACHED_SUCCESS; } // This should only be possible from ERESTART or EINTR; @@ -243,30 +248,28 @@ static void set_socket_options(memcached_server_st *server) #ifdef HAVE_SNDTIMEO if (server->root->snd_timeout) { - int error; struct timeval waittime; waittime.tv_sec= 0; waittime.tv_usec= server->root->snd_timeout; - error= setsockopt(server->fd, SOL_SOCKET, SO_SNDTIMEO, + int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDTIMEO, &waittime, (socklen_t)sizeof(struct timeval)); - WATCHPOINT_ASSERT(error == 0); + assert(error == 0); } #endif #ifdef HAVE_RCVTIMEO if (server->root->rcv_timeout) { - int error; struct timeval waittime; waittime.tv_sec= 0; waittime.tv_usec= server->root->rcv_timeout; - error= setsockopt(server->fd, SOL_SOCKET, SO_RCVTIMEO, - &waittime, (socklen_t)sizeof(struct timeval)); - WATCHPOINT_ASSERT(error == 0); + int error= setsockopt(server->fd, SOL_SOCKET, SO_RCVTIMEO, + &waittime, (socklen_t)sizeof(struct timeval)); + assert(error == 0); } #endif @@ -287,63 +290,54 @@ static void set_socket_options(memcached_server_st *server) if (server->root->flags.no_block) { - int error; struct linger linger; linger.l_onoff= 1; linger.l_linger= 0; /* By default on close() just drop the socket */ - error= setsockopt(server->fd, SOL_SOCKET, SO_LINGER, - &linger, (socklen_t)sizeof(struct linger)); - WATCHPOINT_ASSERT(error == 0); + int error= setsockopt(server->fd, SOL_SOCKET, SO_LINGER, + &linger, (socklen_t)sizeof(struct linger)); + assert(error == 0); } if (server->root->flags.tcp_nodelay) { int flag= 1; - int error; - error= setsockopt(server->fd, IPPROTO_TCP, TCP_NODELAY, - &flag, (socklen_t)sizeof(int)); - WATCHPOINT_ASSERT(error == 0); + int error= setsockopt(server->fd, IPPROTO_TCP, TCP_NODELAY, + &flag, (socklen_t)sizeof(int)); + assert(error == 0); } if (server->root->flags.tcp_keepalive) { int flag= 1; - int error; - error= setsockopt(server->fd, SOL_SOCKET, SO_KEEPALIVE, + int error= setsockopt(server->fd, SOL_SOCKET, SO_KEEPALIVE, &flag, (socklen_t)sizeof(int)); - WATCHPOINT_ASSERT(error == 0); + assert(error == 0); } #ifdef TCP_KEEPIDLE if (server->root->tcp_keepidle > 0) { - int error; - - error= setsockopt(server->fd, IPPROTO_TCP, TCP_KEEPIDLE, - &server->root->tcp_keepidle, (socklen_t)sizeof(int)); - WATCHPOINT_ASSERT(error == 0); + int error= setsockopt(server->fd, IPPROTO_TCP, TCP_KEEPIDLE, + &server->root->tcp_keepidle, (socklen_t)sizeof(int)); + assert(error == 0); } #endif if (server->root->send_size > 0) { - int error; - - error= setsockopt(server->fd, SOL_SOCKET, SO_SNDBUF, - &server->root->send_size, (socklen_t)sizeof(int)); - WATCHPOINT_ASSERT(error == 0); + int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDBUF, + &server->root->send_size, (socklen_t)sizeof(int)); + assert(error == 0); } if (server->root->recv_size > 0) { - int error; - - error= setsockopt(server->fd, SOL_SOCKET, SO_RCVBUF, - &server->root->recv_size, (socklen_t)sizeof(int)); - WATCHPOINT_ASSERT(error == 0); + int error= setsockopt(server->fd, SOL_SOCKET, SO_RCVBUF, + &server->root->recv_size, (socklen_t)sizeof(int)); + assert(error == 0); } @@ -380,7 +374,7 @@ static memcached_return_t unix_socket_connect(memcached_server_st *server) case EISCONN: /* We were spinning waiting on connect */ { - WATCHPOINT_ASSERT(0); // Programmer error + assert(0); // Programmer error break; } -- 2.30.2 From 9bf4bad8ef3ee7f713904d8c85b73fe54f461739 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Tue, 22 May 2012 00:10:39 -0400 Subject: [PATCH 14/16] Fix issue where stale result set might end up being read (this has never been reported as a bug). --- libmemcached/fetch.cc | 8 ++++--- libmemcached/get.cc | 28 +++++++++++++++---------- libmemcached/initialize_query.cc | 1 + tests/libmemcached-1.0/mem_functions.cc | 11 +++++----- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/libmemcached/fetch.cc b/libmemcached/fetch.cc index 2b5b8006..27ea3a84 100644 --- a/libmemcached/fetch.cc +++ b/libmemcached/fetch.cc @@ -155,10 +155,12 @@ memcached_result_st *memcached_fetch_result(memcached_st *ptr, memcached_return_t *error) { memcached_return_t unused; - if (not error) + if (error == NULL) + { error= &unused; + } - if (not ptr) + if (ptr == NULL) { *error= MEMCACHED_INVALID_ARGUMENTS; return NULL; @@ -176,7 +178,7 @@ memcached_result_st *memcached_fetch_result(memcached_st *ptr, // create one. if (memcached_is_initialized(&ptr->result)) { - if (not (result= memcached_result_create(ptr, NULL))) + if ((result= memcached_result_create(ptr, NULL)) == NULL) { *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE; return NULL; diff --git a/libmemcached/get.cc b/libmemcached/get.cc index 86f13670..be7d9e5f 100644 --- a/libmemcached/get.cc +++ b/libmemcached/get.cc @@ -119,8 +119,9 @@ char *memcached_get_by_key(memcached_st *ptr, { if (ptr->get_key_failure and *error == MEMCACHED_NOTFOUND) { - memcached_result_reset(&ptr->result); - memcached_return_t rc= ptr->get_key_failure(ptr, key, key_length, &ptr->result); + memcached_result_st key_failure_result; + memcached_result_st* result_ptr= memcached_result_create(ptr, &key_failure_result); + memcached_return_t rc= ptr->get_key_failure(ptr, key, key_length, result_ptr); /* On all failure drop to returning NULL */ if (rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED) @@ -135,10 +136,10 @@ char *memcached_get_by_key(memcached_st *ptr, } rc= memcached_set(ptr, key, key_length, - (memcached_result_value(&ptr->result)), - (memcached_result_length(&ptr->result)), + (memcached_result_value(result_ptr)), + (memcached_result_length(result_ptr)), 0, - (memcached_result_flags(&ptr->result))); + (memcached_result_flags(result_ptr))); if (rc == MEMCACHED_BUFFERED and latch == 0) { @@ -148,20 +149,25 @@ char *memcached_get_by_key(memcached_st *ptr, else { rc= memcached_set(ptr, key, key_length, - (memcached_result_value(&ptr->result)), - (memcached_result_length(&ptr->result)), + (memcached_result_value(result_ptr)), + (memcached_result_length(result_ptr)), 0, - (memcached_result_flags(&ptr->result))); + (memcached_result_flags(result_ptr))); } if (rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED) { *error= rc; - *value_length= memcached_result_length(&ptr->result); - *flags= memcached_result_flags(&ptr->result); - return memcached_string_take_value(&ptr->result.value); + *value_length= memcached_result_length(result_ptr); + *flags= memcached_result_flags(result_ptr); + char *result_value= memcached_string_take_value(&result_ptr->value); + memcached_result_free(result_ptr); + + return result_value; } } + + memcached_result_free(result_ptr); } assert_msg(ptr->query_id == query_id +1, "Programmer error, the query_id was not incremented."); diff --git a/libmemcached/initialize_query.cc b/libmemcached/initialize_query.cc index dca3c4d8..0a4aae07 100644 --- a/libmemcached/initialize_query.cc +++ b/libmemcached/initialize_query.cc @@ -59,6 +59,7 @@ memcached_return_t initialize_query(memcached_st *self, bool increment_query_id) } memcached_error_free(*self); + memcached_result_reset(&self->result); return MEMCACHED_SUCCESS; } diff --git a/tests/libmemcached-1.0/mem_functions.cc b/tests/libmemcached-1.0/mem_functions.cc index f8ac3da6..8b88697a 100644 --- a/tests/libmemcached-1.0/mem_functions.cc +++ b/tests/libmemcached-1.0/mem_functions.cc @@ -1026,12 +1026,11 @@ test_return_t bad_key_test(memcached_st *memc) } #define READ_THROUGH_VALUE "set for me" -static memcached_return_t read_through_trigger(memcached_st *memc, - char *key, - size_t key_length, +static memcached_return_t read_through_trigger(memcached_st *, // memc + char *, // key + size_t, // key_length, memcached_result_st *result) { - (void)memc;(void)key;(void)key_length; return memcached_result_set_value(result, READ_THROUGH_VALUE, strlen(READ_THROUGH_VALUE)); } @@ -1062,8 +1061,8 @@ test_return_t read_through(memcached_st *memc) &string_length, &flags, &rc); test_compare(MEMCACHED_SUCCESS, rc); - test_compare(string_length, sizeof(READ_THROUGH_VALUE) -1); - test_true(string[sizeof(READ_THROUGH_VALUE) -1] == 0); + test_compare(sizeof(READ_THROUGH_VALUE) -1, string_length); + test_compare(0, string[sizeof(READ_THROUGH_VALUE) -1]); test_strcmp(READ_THROUGH_VALUE, string); free(string); -- 2.30.2 From e7798c555a23889e14ed27654be97141d6383b9e Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Tue, 22 May 2012 03:22:29 -0400 Subject: [PATCH 15/16] Test SKIP --- libtest/cmdline.h | 4 ++++ libtest/include.am | 3 +++ libtest/main.cc | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libtest/cmdline.h b/libtest/cmdline.h index 700647d3..9dd9f813 100644 --- a/libtest/cmdline.h +++ b/libtest/cmdline.h @@ -38,6 +38,10 @@ #include +// http://www.gnu.org/software/automake/manual/automake.html#Using-the-TAP-test-protocol +#define EXIT_SKIP 77 +#define EXIT_FATAL 77 + namespace libtest { class Application { diff --git a/libtest/include.am b/libtest/include.am index 529c26ed..b92145e4 100644 --- a/libtest/include.am +++ b/libtest/include.am @@ -236,6 +236,9 @@ libtest_skiptest_SOURCES= libtest/skiptest.cc check_PROGRAMS+= libtest/skiptest noinst_PROGRAMS+= libtest/skiptest +test-skip: libtest/skiptest + @libtest/skiptest + libtest_wait_SOURCES= libtest_wait_SOURCES+= libtest/wait.cc libtest_wait_SOURCES+= libtest/dream.cc diff --git a/libtest/main.cc b/libtest/main.cc index 3ae8ff98..0c876286 100644 --- a/libtest/main.cc +++ b/libtest/main.cc @@ -251,7 +251,7 @@ int main(int argc, char *argv[]) case TEST_SKIPPED: Out << "SKIP " << argv[0]; - return EXIT_SUCCESS; + return EXIT_SKIP; case TEST_FAILURE: return EXIT_FAILURE; -- 2.30.2 From 1ed24c334f35870e6206ecea58f298dfbcd8f406 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Tue, 22 May 2012 15:57:15 -0400 Subject: [PATCH 16/16] Update for version release. --- ChangeLog | 3 +- configure.ac | 2 +- docs/man/hashkit_clone.3 | 2 +- docs/man/hashkit_crc32.3 | 2 +- docs/man/hashkit_create.3 | 2 +- docs/man/hashkit_fnv1_32.3 | 2 +- docs/man/hashkit_fnv1_64.3 | 2 +- docs/man/hashkit_fnv1a_32.3 | 2 +- docs/man/hashkit_fnv1a_64.3 | 2 +- docs/man/hashkit_free.3 | 2 +- docs/man/hashkit_functions.3 | 2 +- docs/man/hashkit_hsieh.3 | 2 +- docs/man/hashkit_is_allocated.3 | 2 +- docs/man/hashkit_jenkins.3 | 2 +- docs/man/hashkit_md5.3 | 2 +- docs/man/hashkit_murmur.3 | 2 +- docs/man/hashkit_value.3 | 2 +- docs/man/libhashkit.3 | 2 +- docs/man/libmemcached.3 | 2 +- docs/man/libmemcached_check_configuration.3 | 2 +- docs/man/libmemcached_configuration.3 | 2 +- docs/man/libmemcached_examples.3 | 2 +- docs/man/libmemcachedutil.3 | 2 +- docs/man/memaslap.1 | 2 +- docs/man/memcached.3 | 2 +- docs/man/memcached_add.3 | 2 +- docs/man/memcached_add_by_key.3 | 2 +- docs/man/memcached_analyze.3 | 2 +- docs/man/memcached_append.3 | 2 +- docs/man/memcached_append_by_key.3 | 2 +- docs/man/memcached_auto.3 | 2 +- docs/man/memcached_behavior.3 | 2 +- docs/man/memcached_behavior_get.3 | 2 +- docs/man/memcached_behavior_set.3 | 2 +- docs/man/memcached_callback.3 | 2 +- docs/man/memcached_callback_get.3 | 2 +- docs/man/memcached_callback_set.3 | 2 +- docs/man/memcached_cas.3 | 2 +- docs/man/memcached_cas_by_key.3 | 2 +- docs/man/memcached_clone.3 | 2 +- docs/man/memcached_create.3 | 2 +- docs/man/memcached_decrement.3 | 2 +- docs/man/memcached_decrement_with_initial.3 | 2 +- docs/man/memcached_delete.3 | 2 +- docs/man/memcached_delete_by_key.3 | 2 +- docs/man/memcached_destroy_sasl_auth_data.3 | 2 +- docs/man/memcached_dump.3 | 2 +- docs/man/memcached_exist.3 | 2 +- docs/man/memcached_exist_by_key.3 | 2 +- docs/man/memcached_fetch.3 | 2 +- docs/man/memcached_fetch_execute.3 | 2 +- docs/man/memcached_fetch_result.3 | 2 +- docs/man/memcached_flush.3 | 2 +- docs/man/memcached_flush_buffers.3 | 2 +- docs/man/memcached_free.3 | 2 +- docs/man/memcached_generate_hash.3 | 2 +- docs/man/memcached_generate_hash_value.3 | 2 +- docs/man/memcached_get.3 | 2 +- docs/man/memcached_get_by_key.3 | 2 +- docs/man/memcached_get_memory_allocators.3 | 2 +- docs/man/memcached_get_sasl_callbacks.3 | 2 +- docs/man/memcached_get_user_data.3 | 2 +- docs/man/memcached_increment.3 | 2 +- docs/man/memcached_increment_with_initial.3 | 2 +- docs/man/memcached_last_error_message.3 | 2 +- docs/man/memcached_lib_version.3 | 2 +- docs/man/memcached_memory_allocators.3 | 2 +- docs/man/memcached_mget.3 | 2 +- docs/man/memcached_mget_by_key.3 | 2 +- docs/man/memcached_mget_execute.3 | 2 +- docs/man/memcached_mget_execute_by_key.3 | 2 +- docs/man/memcached_pool.3 | 2 +- docs/man/memcached_pool_behavior_get.3 | 2 +- docs/man/memcached_pool_behavior_set.3 | 2 +- docs/man/memcached_pool_create.3 | 2 +- docs/man/memcached_pool_destroy.3 | 2 +- docs/man/memcached_pool_fetch.3 | 2 +- docs/man/memcached_pool_pop.3 | 2 +- docs/man/memcached_pool_push.3 | 2 +- docs/man/memcached_pool_release.3 | 2 +- docs/man/memcached_pool_st.3 | 2 +- docs/man/memcached_prepend.3 | 2 +- docs/man/memcached_prepend_by_key.3 | 2 +- docs/man/memcached_quit.3 | 2 +- docs/man/memcached_replace.3 | 2 +- docs/man/memcached_replace_by_key.3 | 2 +- docs/man/memcached_result_cas.3 | 2 +- docs/man/memcached_result_create.3 | 2 +- docs/man/memcached_result_flags.3 | 2 +- docs/man/memcached_result_free.3 | 2 +- docs/man/memcached_result_key_length.3 | 2 +- docs/man/memcached_result_key_value.3 | 2 +- docs/man/memcached_result_length.3 | 2 +- docs/man/memcached_result_st.3 | 2 +- docs/man/memcached_result_value.3 | 2 +- docs/man/memcached_return_t.3 | 2 +- docs/man/memcached_sasl.3 | 2 +- docs/man/memcached_sasl_set_auth_data.3 | 2 +- docs/man/memcached_server_add.3 | 2 +- docs/man/memcached_server_add_unix_socket.3 | 2 +- docs/man/memcached_server_count.3 | 2 +- docs/man/memcached_server_cursor.3 | 2 +- docs/man/memcached_server_list.3 | 2 +- docs/man/memcached_server_list_append.3 | 2 +- docs/man/memcached_server_list_count.3 | 2 +- docs/man/memcached_server_list_free.3 | 2 +- docs/man/memcached_server_push.3 | 2 +- docs/man/memcached_server_st.3 | 2 +- docs/man/memcached_servers.3 | 2 +- docs/man/memcached_servers_parse.3 | 2 +- docs/man/memcached_servers_reset.3 | 2 +- docs/man/memcached_set.3 | 2 +- docs/man/memcached_set_by_key.3 | 2 +- docs/man/memcached_set_encoding_key.3 | 68 +++++++++++++++++ docs/man/memcached_set_memory_allocators.3 | 2 +- .../memcached_set_memory_allocators_context.3 | 2 +- docs/man/memcached_set_sasl_callbacks.3 | 2 +- docs/man/memcached_set_user_data.3 | 2 +- docs/man/memcached_stat.3 | 2 +- docs/man/memcached_stat_execute.3 | 2 +- docs/man/memcached_stat_get_keys.3 | 2 +- docs/man/memcached_stat_get_value.3 | 2 +- docs/man/memcached_stat_servername.3 | 2 +- docs/man/memcached_stats.3 | 2 +- docs/man/memcached_strerror.3 | 2 +- docs/man/memcached_touch.3 | 2 +- docs/man/memcached_touch_by_key.3 | 2 +- docs/man/memcached_user_data.3 | 2 +- docs/man/memcached_verbosity.3 | 2 +- docs/man/memcached_version.3 | 2 +- docs/man/memcapable.1 | 2 +- docs/man/memcat.1 | 2 +- docs/man/memcp.1 | 2 +- docs/man/memdump.1 | 2 +- docs/man/memerror.1 | 2 +- docs/man/memexist.1 | 76 +++++++++++++++++++ docs/man/memflush.1 | 2 +- docs/man/memparse.1 | 64 ++++++++++++++++ docs/man/memping.1 | 76 +++++++++++++++++++ docs/man/memrm.1 | 2 +- docs/man/memslap.1 | 2 +- docs/man/memstat.1 | 2 +- docs/man/memtouch.1 | 76 +++++++++++++++++++ 143 files changed, 499 insertions(+), 138 deletions(-) create mode 100644 docs/man/memcached_set_encoding_key.3 create mode 100644 docs/man/memexist.1 create mode 100644 docs/man/memparse.1 create mode 100644 docs/man/memping.1 create mode 100644 docs/man/memtouch.1 diff --git a/ChangeLog b/ChangeLog index 62a3351e..0b8e99d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ -1.0.8 +1.0.8 Tue May 22 15:06:04 EDT 2012 * Added support for setting options via ENV variable LIBMEMCACHED +* Fix corner case on last used result. 1.0.7 Sat Apr 28 00:48:29 PDT 2012 * Add API call for exist calls. diff --git a/configure.ac b/configure.ac index 89eeb23c..e2d36814 100644 --- a/configure.ac +++ b/configure.ac @@ -7,7 +7,7 @@ # Use and distribution licensed under the BSD license. See # the COPYING file in this directory for full text. -AC_INIT([libmemcached],[1.0.7],[http://libmemcached.org/]) +AC_INIT([libmemcached],[1.0.8],[http://libmemcached.org/]) AC_CONFIG_AUX_DIR(config) diff --git a/docs/man/hashkit_clone.3 b/docs/man/hashkit_clone.3 index ac9c151d..2ca3a991 100644 --- a/docs/man/hashkit_clone.3 +++ b/docs/man/hashkit_clone.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_CLONE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_CLONE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_clone \- libhashkit Documentation . diff --git a/docs/man/hashkit_crc32.3 b/docs/man/hashkit_crc32.3 index c7de615c..b8c5176f 100644 --- a/docs/man/hashkit_crc32.3 +++ b/docs/man/hashkit_crc32.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_CRC32" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_CRC32" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_crc32 \- libhashkit Documentation . diff --git a/docs/man/hashkit_create.3 b/docs/man/hashkit_create.3 index b850f641..e8cead58 100644 --- a/docs/man/hashkit_create.3 +++ b/docs/man/hashkit_create.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_CREATE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_CREATE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_create \- libhashkit Documentation . diff --git a/docs/man/hashkit_fnv1_32.3 b/docs/man/hashkit_fnv1_32.3 index 46162545..b6e19543 100644 --- a/docs/man/hashkit_fnv1_32.3 +++ b/docs/man/hashkit_fnv1_32.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_FNV1_32" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_FNV1_32" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_fnv1_32 \- libhashkit Documentation . diff --git a/docs/man/hashkit_fnv1_64.3 b/docs/man/hashkit_fnv1_64.3 index b2c5673d..388cb7a8 100644 --- a/docs/man/hashkit_fnv1_64.3 +++ b/docs/man/hashkit_fnv1_64.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_FNV1_64" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_FNV1_64" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_fnv1_64 \- libhashkit Documentation . diff --git a/docs/man/hashkit_fnv1a_32.3 b/docs/man/hashkit_fnv1a_32.3 index c32bc40b..341ba5e3 100644 --- a/docs/man/hashkit_fnv1a_32.3 +++ b/docs/man/hashkit_fnv1a_32.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_FNV1A_32" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_FNV1A_32" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_fnv1a_32 \- libhashkit Documentation . diff --git a/docs/man/hashkit_fnv1a_64.3 b/docs/man/hashkit_fnv1a_64.3 index b0c2f743..7b079672 100644 --- a/docs/man/hashkit_fnv1a_64.3 +++ b/docs/man/hashkit_fnv1a_64.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_FNV1A_64" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_FNV1A_64" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_fnv1a_64 \- libhashkit Documentation . diff --git a/docs/man/hashkit_free.3 b/docs/man/hashkit_free.3 index 51e7d724..f1f94b5e 100644 --- a/docs/man/hashkit_free.3 +++ b/docs/man/hashkit_free.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_FREE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_FREE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_free \- libhashkit Documentation . diff --git a/docs/man/hashkit_functions.3 b/docs/man/hashkit_functions.3 index 82a07f45..3659bb1c 100644 --- a/docs/man/hashkit_functions.3 +++ b/docs/man/hashkit_functions.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_FUNCTIONS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_FUNCTIONS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_functions \- libhashkit Documentation . diff --git a/docs/man/hashkit_hsieh.3 b/docs/man/hashkit_hsieh.3 index 9563ce24..950c9c4b 100644 --- a/docs/man/hashkit_hsieh.3 +++ b/docs/man/hashkit_hsieh.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_HSIEH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_HSIEH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_hsieh \- libhashkit Documentation . diff --git a/docs/man/hashkit_is_allocated.3 b/docs/man/hashkit_is_allocated.3 index 93293264..8ecbb055 100644 --- a/docs/man/hashkit_is_allocated.3 +++ b/docs/man/hashkit_is_allocated.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_IS_ALLOCATED" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_IS_ALLOCATED" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_is_allocated \- libhashkit Documentation . diff --git a/docs/man/hashkit_jenkins.3 b/docs/man/hashkit_jenkins.3 index 1e867ee7..b25763c1 100644 --- a/docs/man/hashkit_jenkins.3 +++ b/docs/man/hashkit_jenkins.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_JENKINS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_JENKINS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_jenkins \- libhashkit Documentation . diff --git a/docs/man/hashkit_md5.3 b/docs/man/hashkit_md5.3 index 469eeea7..bfc54f5e 100644 --- a/docs/man/hashkit_md5.3 +++ b/docs/man/hashkit_md5.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_MD5" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_MD5" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_md5 \- libhashkit Documentation . diff --git a/docs/man/hashkit_murmur.3 b/docs/man/hashkit_murmur.3 index 8da5d7e8..9051ccab 100644 --- a/docs/man/hashkit_murmur.3 +++ b/docs/man/hashkit_murmur.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_MURMUR" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_MURMUR" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_murmur \- libhashkit Documentation . diff --git a/docs/man/hashkit_value.3 b/docs/man/hashkit_value.3 index 7ad305e4..a47e30ea 100644 --- a/docs/man/hashkit_value.3 +++ b/docs/man/hashkit_value.3 @@ -1,4 +1,4 @@ -.TH "HASHKIT_VALUE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "HASHKIT_VALUE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME hashkit_value \- libhashkit Documentation . diff --git a/docs/man/libhashkit.3 b/docs/man/libhashkit.3 index 1e2dbb7f..2f3735e9 100644 --- a/docs/man/libhashkit.3 +++ b/docs/man/libhashkit.3 @@ -1,4 +1,4 @@ -.TH "LIBHASHKIT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "LIBHASHKIT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME libhashkit \- libhashkit Documentation . diff --git a/docs/man/libmemcached.3 b/docs/man/libmemcached.3 index 6676f8f0..809bf56b 100644 --- a/docs/man/libmemcached.3 +++ b/docs/man/libmemcached.3 @@ -1,4 +1,4 @@ -.TH "LIBMEMCACHED" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "LIBMEMCACHED" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME libmemcached \- Introducing the C Client Library for memcached . diff --git a/docs/man/libmemcached_check_configuration.3 b/docs/man/libmemcached_check_configuration.3 index d14b8b29..e4c258e2 100644 --- a/docs/man/libmemcached_check_configuration.3 +++ b/docs/man/libmemcached_check_configuration.3 @@ -1,4 +1,4 @@ -.TH "LIBMEMCACHED_CHECK_CONFIGURATION" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "LIBMEMCACHED_CHECK_CONFIGURATION" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME libmemcached_check_configuration \- libmemcached Documentation . diff --git a/docs/man/libmemcached_configuration.3 b/docs/man/libmemcached_configuration.3 index 6dc235f7..16543e66 100644 --- a/docs/man/libmemcached_configuration.3 +++ b/docs/man/libmemcached_configuration.3 @@ -1,4 +1,4 @@ -.TH "LIBMEMCACHED_CONFIGURATION" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "LIBMEMCACHED_CONFIGURATION" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME libmemcached_configuration \- libmemcached Documentation . diff --git a/docs/man/libmemcached_examples.3 b/docs/man/libmemcached_examples.3 index 23e64d9b..136d54bb 100644 --- a/docs/man/libmemcached_examples.3 +++ b/docs/man/libmemcached_examples.3 @@ -1,4 +1,4 @@ -.TH "LIBMEMCACHED_EXAMPLES" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "LIBMEMCACHED_EXAMPLES" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME libmemcached_examples \- libmemcached Documentation . diff --git a/docs/man/libmemcachedutil.3 b/docs/man/libmemcachedutil.3 index 496a193e..7e12c8b7 100644 --- a/docs/man/libmemcachedutil.3 +++ b/docs/man/libmemcachedutil.3 @@ -1,4 +1,4 @@ -.TH "LIBMEMCACHEDUTIL" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "LIBMEMCACHEDUTIL" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME libmemcachedutil \- libmemcached Documentation . diff --git a/docs/man/memaslap.1 b/docs/man/memaslap.1 index ba2064cc..57451cac 100644 --- a/docs/man/memaslap.1 +++ b/docs/man/memaslap.1 @@ -1,4 +1,4 @@ -.TH "MEMASLAP" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMASLAP" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memaslap \- libmemcached Documentation . diff --git a/docs/man/memcached.3 b/docs/man/memcached.3 index 3bd321fd..713203fc 100644 --- a/docs/man/memcached.3 +++ b/docs/man/memcached.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached \- libmemcached Documentation . diff --git a/docs/man/memcached_add.3 b/docs/man/memcached_add.3 index b40e9cbf..e9d7b2f7 100644 --- a/docs/man/memcached_add.3 +++ b/docs/man/memcached_add.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_ADD" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_ADD" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_add \- Storing and Replacing Data . diff --git a/docs/man/memcached_add_by_key.3 b/docs/man/memcached_add_by_key.3 index 5dc36829..94e0e59e 100644 --- a/docs/man/memcached_add_by_key.3 +++ b/docs/man/memcached_add_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_ADD_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_ADD_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_add_by_key \- Storing and Replacing Data . diff --git a/docs/man/memcached_analyze.3 b/docs/man/memcached_analyze.3 index 5bdaf26f..fa5647c6 100644 --- a/docs/man/memcached_analyze.3 +++ b/docs/man/memcached_analyze.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_ANALYZE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_ANALYZE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_analyze \- libmemcached Documentation . diff --git a/docs/man/memcached_append.3 b/docs/man/memcached_append.3 index ff0a0b3c..77e596b6 100644 --- a/docs/man/memcached_append.3 +++ b/docs/man/memcached_append.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_APPEND" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_APPEND" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_append \- Appending to or Prepending to data on the server . diff --git a/docs/man/memcached_append_by_key.3 b/docs/man/memcached_append_by_key.3 index 01b0e664..fcfd822b 100644 --- a/docs/man/memcached_append_by_key.3 +++ b/docs/man/memcached_append_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_APPEND_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_APPEND_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_append_by_key \- Appending to or Prepending to data on the server . diff --git a/docs/man/memcached_auto.3 b/docs/man/memcached_auto.3 index e2d7ae43..58d0f555 100644 --- a/docs/man/memcached_auto.3 +++ b/docs/man/memcached_auto.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_AUTO" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_AUTO" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_auto \- Incrementing and Decrementing Values . diff --git a/docs/man/memcached_behavior.3 b/docs/man/memcached_behavior.3 index 75484703..d20b072b 100644 --- a/docs/man/memcached_behavior.3 +++ b/docs/man/memcached_behavior.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_BEHAVIOR" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_BEHAVIOR" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_behavior \- libmemcached Documentation . diff --git a/docs/man/memcached_behavior_get.3 b/docs/man/memcached_behavior_get.3 index 599ce9de..8779f040 100644 --- a/docs/man/memcached_behavior_get.3 +++ b/docs/man/memcached_behavior_get.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_BEHAVIOR_GET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_BEHAVIOR_GET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_behavior_get \- libmemcached Documentation . diff --git a/docs/man/memcached_behavior_set.3 b/docs/man/memcached_behavior_set.3 index 6ebf180e..b981c2df 100644 --- a/docs/man/memcached_behavior_set.3 +++ b/docs/man/memcached_behavior_set.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_BEHAVIOR_SET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_BEHAVIOR_SET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_behavior_set \- libmemcached Documentation . diff --git a/docs/man/memcached_callback.3 b/docs/man/memcached_callback.3 index e515d178..210e48f0 100644 --- a/docs/man/memcached_callback.3 +++ b/docs/man/memcached_callback.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_CALLBACK" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_CALLBACK" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_callback \- libmemcached Documentation . diff --git a/docs/man/memcached_callback_get.3 b/docs/man/memcached_callback_get.3 index ffb1840e..d32768e1 100644 --- a/docs/man/memcached_callback_get.3 +++ b/docs/man/memcached_callback_get.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_CALLBACK_GET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_CALLBACK_GET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_callback_get \- libmemcached Documentation . diff --git a/docs/man/memcached_callback_set.3 b/docs/man/memcached_callback_set.3 index bfcc1313..3c51e952 100644 --- a/docs/man/memcached_callback_set.3 +++ b/docs/man/memcached_callback_set.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_CALLBACK_SET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_CALLBACK_SET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_callback_set \- libmemcached Documentation . diff --git a/docs/man/memcached_cas.3 b/docs/man/memcached_cas.3 index a2c4b42e..6f87587f 100644 --- a/docs/man/memcached_cas.3 +++ b/docs/man/memcached_cas.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_CAS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_CAS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_cas \- Working with data on the server in an atomic fashion . diff --git a/docs/man/memcached_cas_by_key.3 b/docs/man/memcached_cas_by_key.3 index e9b1331b..62fc4009 100644 --- a/docs/man/memcached_cas_by_key.3 +++ b/docs/man/memcached_cas_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_CAS_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_CAS_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_cas_by_key \- Storing and Replacing Data . diff --git a/docs/man/memcached_clone.3 b/docs/man/memcached_clone.3 index 99494b46..7f6fbced 100644 --- a/docs/man/memcached_clone.3 +++ b/docs/man/memcached_clone.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_CLONE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_CLONE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_clone \- libmemcached Documentation . diff --git a/docs/man/memcached_create.3 b/docs/man/memcached_create.3 index 66989f62..649c5ae0 100644 --- a/docs/man/memcached_create.3 +++ b/docs/man/memcached_create.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_CREATE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_CREATE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_create \- libmemcached Documentation . diff --git a/docs/man/memcached_decrement.3 b/docs/man/memcached_decrement.3 index b989ff11..8f729761 100644 --- a/docs/man/memcached_decrement.3 +++ b/docs/man/memcached_decrement.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_DECREMENT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_DECREMENT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_decrement \- Incrementing and Decrementing Values . diff --git a/docs/man/memcached_decrement_with_initial.3 b/docs/man/memcached_decrement_with_initial.3 index 27c34cec..3128b4ba 100644 --- a/docs/man/memcached_decrement_with_initial.3 +++ b/docs/man/memcached_decrement_with_initial.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_DECREMENT_WITH_INITIAL" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_DECREMENT_WITH_INITIAL" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_decrement_with_initial \- Incrementing and Decrementing Values . diff --git a/docs/man/memcached_delete.3 b/docs/man/memcached_delete.3 index a9d09881..8910da92 100644 --- a/docs/man/memcached_delete.3 +++ b/docs/man/memcached_delete.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_DELETE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_DELETE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_delete \- libmemcached Documentation . diff --git a/docs/man/memcached_delete_by_key.3 b/docs/man/memcached_delete_by_key.3 index 137faf3a..14a0f500 100644 --- a/docs/man/memcached_delete_by_key.3 +++ b/docs/man/memcached_delete_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_DELETE_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_DELETE_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_delete_by_key \- libmemcached Documentation . diff --git a/docs/man/memcached_destroy_sasl_auth_data.3 b/docs/man/memcached_destroy_sasl_auth_data.3 index 31a91605..1d6d1b47 100644 --- a/docs/man/memcached_destroy_sasl_auth_data.3 +++ b/docs/man/memcached_destroy_sasl_auth_data.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_DESTROY_SASL_AUTH_DATA" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_DESTROY_SASL_AUTH_DATA" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_destroy_sasl_auth_data \- libmemcached Documentation . diff --git a/docs/man/memcached_dump.3 b/docs/man/memcached_dump.3 index 3aa7d94f..65843f08 100644 --- a/docs/man/memcached_dump.3 +++ b/docs/man/memcached_dump.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_DUMP" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_DUMP" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_dump \- libmemcached Documentation . diff --git a/docs/man/memcached_exist.3 b/docs/man/memcached_exist.3 index 338ac6d4..cd7d0898 100644 --- a/docs/man/memcached_exist.3 +++ b/docs/man/memcached_exist.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_EXIST" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_EXIST" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_exist \- libmemcached Documentation . diff --git a/docs/man/memcached_exist_by_key.3 b/docs/man/memcached_exist_by_key.3 index 48c9e057..52c72847 100644 --- a/docs/man/memcached_exist_by_key.3 +++ b/docs/man/memcached_exist_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_EXIST_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_EXIST_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_exist_by_key \- libmemcached Documentation . diff --git a/docs/man/memcached_fetch.3 b/docs/man/memcached_fetch.3 index e7aeed73..ff786fc7 100644 --- a/docs/man/memcached_fetch.3 +++ b/docs/man/memcached_fetch.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_FETCH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_FETCH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_fetch \- Retrieving data from the server . diff --git a/docs/man/memcached_fetch_execute.3 b/docs/man/memcached_fetch_execute.3 index 855219cd..66d734f2 100644 --- a/docs/man/memcached_fetch_execute.3 +++ b/docs/man/memcached_fetch_execute.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_FETCH_EXECUTE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_FETCH_EXECUTE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_fetch_execute \- Retrieving data from the server . diff --git a/docs/man/memcached_fetch_result.3 b/docs/man/memcached_fetch_result.3 index 7592161d..4a6edd72 100644 --- a/docs/man/memcached_fetch_result.3 +++ b/docs/man/memcached_fetch_result.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_FETCH_RESULT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_FETCH_RESULT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_fetch_result \- Retrieving data from the server . diff --git a/docs/man/memcached_flush.3 b/docs/man/memcached_flush.3 index e2701c49..fea0e6ae 100644 --- a/docs/man/memcached_flush.3 +++ b/docs/man/memcached_flush.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_FLUSH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_FLUSH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_flush \- libmemcached Documentation . diff --git a/docs/man/memcached_flush_buffers.3 b/docs/man/memcached_flush_buffers.3 index ce0c9472..5b9ad8b2 100644 --- a/docs/man/memcached_flush_buffers.3 +++ b/docs/man/memcached_flush_buffers.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_FLUSH_BUFFERS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_FLUSH_BUFFERS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_flush_buffers \- libmemcached Documentation . diff --git a/docs/man/memcached_free.3 b/docs/man/memcached_free.3 index 6cb774ff..90c6cf68 100644 --- a/docs/man/memcached_free.3 +++ b/docs/man/memcached_free.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_FREE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_FREE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_free \- libmemcached Documentation . diff --git a/docs/man/memcached_generate_hash.3 b/docs/man/memcached_generate_hash.3 index 30fae9a8..fbc5d990 100644 --- a/docs/man/memcached_generate_hash.3 +++ b/docs/man/memcached_generate_hash.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_GENERATE_HASH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_GENERATE_HASH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_generate_hash \- Generating hash values directly . diff --git a/docs/man/memcached_generate_hash_value.3 b/docs/man/memcached_generate_hash_value.3 index 0fa8501f..86a131c1 100644 --- a/docs/man/memcached_generate_hash_value.3 +++ b/docs/man/memcached_generate_hash_value.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_GENERATE_HASH_VALUE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_GENERATE_HASH_VALUE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_generate_hash_value \- Generating hash values directly . diff --git a/docs/man/memcached_get.3 b/docs/man/memcached_get.3 index 5978d35a..1df40144 100644 --- a/docs/man/memcached_get.3 +++ b/docs/man/memcached_get.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_GET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_GET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_get \- Retrieving data from the server . diff --git a/docs/man/memcached_get_by_key.3 b/docs/man/memcached_get_by_key.3 index 171a7b00..27ee85e7 100644 --- a/docs/man/memcached_get_by_key.3 +++ b/docs/man/memcached_get_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_GET_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_GET_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_get_by_key \- Retrieving data from the server . diff --git a/docs/man/memcached_get_memory_allocators.3 b/docs/man/memcached_get_memory_allocators.3 index 20c5107a..f5818f0b 100644 --- a/docs/man/memcached_get_memory_allocators.3 +++ b/docs/man/memcached_get_memory_allocators.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_GET_MEMORY_ALLOCATORS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_GET_MEMORY_ALLOCATORS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_get_memory_allocators \- libmemcached Documentation . diff --git a/docs/man/memcached_get_sasl_callbacks.3 b/docs/man/memcached_get_sasl_callbacks.3 index 99fc5ee7..3c4d6b94 100644 --- a/docs/man/memcached_get_sasl_callbacks.3 +++ b/docs/man/memcached_get_sasl_callbacks.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_GET_SASL_CALLBACKS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_GET_SASL_CALLBACKS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_get_sasl_callbacks \- libmemcached Documentation . diff --git a/docs/man/memcached_get_user_data.3 b/docs/man/memcached_get_user_data.3 index f59602d2..7c08ec0a 100644 --- a/docs/man/memcached_get_user_data.3 +++ b/docs/man/memcached_get_user_data.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_GET_USER_DATA" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_GET_USER_DATA" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_get_user_data \- libmemcached Documentation . diff --git a/docs/man/memcached_increment.3 b/docs/man/memcached_increment.3 index 0bcbc256..7af4d2fd 100644 --- a/docs/man/memcached_increment.3 +++ b/docs/man/memcached_increment.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_INCREMENT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_INCREMENT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_increment \- Incrementing and Decrementing Values . diff --git a/docs/man/memcached_increment_with_initial.3 b/docs/man/memcached_increment_with_initial.3 index 396526e1..7736dd0f 100644 --- a/docs/man/memcached_increment_with_initial.3 +++ b/docs/man/memcached_increment_with_initial.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_INCREMENT_WITH_INITIAL" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_INCREMENT_WITH_INITIAL" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_increment_with_initial \- Incrementing and Decrementing Values . diff --git a/docs/man/memcached_last_error_message.3 b/docs/man/memcached_last_error_message.3 index 2499e3c8..9f15a94d 100644 --- a/docs/man/memcached_last_error_message.3 +++ b/docs/man/memcached_last_error_message.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_LAST_ERROR_MESSAGE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_LAST_ERROR_MESSAGE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_last_error_message \- libmemcached Documentation . diff --git a/docs/man/memcached_lib_version.3 b/docs/man/memcached_lib_version.3 index 598a39c4..86fd748e 100644 --- a/docs/man/memcached_lib_version.3 +++ b/docs/man/memcached_lib_version.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_LIB_VERSION" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_LIB_VERSION" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_lib_version \- libmemcached Documentation . diff --git a/docs/man/memcached_memory_allocators.3 b/docs/man/memcached_memory_allocators.3 index 11b60a82..20cd9d3d 100644 --- a/docs/man/memcached_memory_allocators.3 +++ b/docs/man/memcached_memory_allocators.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_MEMORY_ALLOCATORS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_MEMORY_ALLOCATORS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_memory_allocators \- libmemcached Documentation . diff --git a/docs/man/memcached_mget.3 b/docs/man/memcached_mget.3 index ca3be972..1e05d77e 100644 --- a/docs/man/memcached_mget.3 +++ b/docs/man/memcached_mget.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_MGET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_MGET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_mget \- Retrieving data from the server . diff --git a/docs/man/memcached_mget_by_key.3 b/docs/man/memcached_mget_by_key.3 index af14a388..1633e456 100644 --- a/docs/man/memcached_mget_by_key.3 +++ b/docs/man/memcached_mget_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_MGET_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_MGET_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_mget_by_key \- Retrieving data from the server . diff --git a/docs/man/memcached_mget_execute.3 b/docs/man/memcached_mget_execute.3 index c9c9bdeb..ea047188 100644 --- a/docs/man/memcached_mget_execute.3 +++ b/docs/man/memcached_mget_execute.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_MGET_EXECUTE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_MGET_EXECUTE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_mget_execute \- Retrieving data from the server . diff --git a/docs/man/memcached_mget_execute_by_key.3 b/docs/man/memcached_mget_execute_by_key.3 index 76589715..6382cdcf 100644 --- a/docs/man/memcached_mget_execute_by_key.3 +++ b/docs/man/memcached_mget_execute_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_MGET_EXECUTE_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_MGET_EXECUTE_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_mget_execute_by_key \- Retrieving data from the server . diff --git a/docs/man/memcached_pool.3 b/docs/man/memcached_pool.3 index 398f2b97..842d0708 100644 --- a/docs/man/memcached_pool.3 +++ b/docs/man/memcached_pool.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_behavior_get.3 b/docs/man/memcached_pool_behavior_get.3 index e1a4ea57..7e72a6a3 100644 --- a/docs/man/memcached_pool_behavior_get.3 +++ b/docs/man/memcached_pool_behavior_get.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_BEHAVIOR_GET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_BEHAVIOR_GET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_behavior_get \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_behavior_set.3 b/docs/man/memcached_pool_behavior_set.3 index 714740ec..6174cec2 100644 --- a/docs/man/memcached_pool_behavior_set.3 +++ b/docs/man/memcached_pool_behavior_set.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_BEHAVIOR_SET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_BEHAVIOR_SET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_behavior_set \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_create.3 b/docs/man/memcached_pool_create.3 index 91418124..719e8032 100644 --- a/docs/man/memcached_pool_create.3 +++ b/docs/man/memcached_pool_create.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_CREATE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_CREATE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_create \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_destroy.3 b/docs/man/memcached_pool_destroy.3 index ea0362d4..bc326c3a 100644 --- a/docs/man/memcached_pool_destroy.3 +++ b/docs/man/memcached_pool_destroy.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_DESTROY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_DESTROY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_destroy \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_fetch.3 b/docs/man/memcached_pool_fetch.3 index ca2224a5..c84202ab 100644 --- a/docs/man/memcached_pool_fetch.3 +++ b/docs/man/memcached_pool_fetch.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_FETCH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_FETCH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_fetch \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_pop.3 b/docs/man/memcached_pool_pop.3 index cde71c16..8c729754 100644 --- a/docs/man/memcached_pool_pop.3 +++ b/docs/man/memcached_pool_pop.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_POP" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_POP" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_pop \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_push.3 b/docs/man/memcached_pool_push.3 index 73ca4898..ed8789d5 100644 --- a/docs/man/memcached_pool_push.3 +++ b/docs/man/memcached_pool_push.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_PUSH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_PUSH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_push \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_release.3 b/docs/man/memcached_pool_release.3 index e3261bf7..ed0ee411 100644 --- a/docs/man/memcached_pool_release.3 +++ b/docs/man/memcached_pool_release.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_RELEASE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_RELEASE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_release \- libmemcached Documentation . diff --git a/docs/man/memcached_pool_st.3 b/docs/man/memcached_pool_st.3 index fc804a52..4f00f412 100644 --- a/docs/man/memcached_pool_st.3 +++ b/docs/man/memcached_pool_st.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_POOL_ST" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_POOL_ST" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_pool_st \- libmemcached Documentation . diff --git a/docs/man/memcached_prepend.3 b/docs/man/memcached_prepend.3 index 9b0b7e89..a6bc4d95 100644 --- a/docs/man/memcached_prepend.3 +++ b/docs/man/memcached_prepend.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_PREPEND" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_PREPEND" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_prepend \- Appending to or Prepending to data on the server . diff --git a/docs/man/memcached_prepend_by_key.3 b/docs/man/memcached_prepend_by_key.3 index be38a136..27807ba3 100644 --- a/docs/man/memcached_prepend_by_key.3 +++ b/docs/man/memcached_prepend_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_PREPEND_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_PREPEND_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_prepend_by_key \- Appending to or Prepending to data on the server . diff --git a/docs/man/memcached_quit.3 b/docs/man/memcached_quit.3 index 90088f26..37e7bcf3 100644 --- a/docs/man/memcached_quit.3 +++ b/docs/man/memcached_quit.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_QUIT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_QUIT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_quit \- libmemcached Documentation . diff --git a/docs/man/memcached_replace.3 b/docs/man/memcached_replace.3 index 684cb39f..ca37fc12 100644 --- a/docs/man/memcached_replace.3 +++ b/docs/man/memcached_replace.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_REPLACE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_REPLACE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_replace \- Storing and Replacing Data . diff --git a/docs/man/memcached_replace_by_key.3 b/docs/man/memcached_replace_by_key.3 index 042db331..3c77d415 100644 --- a/docs/man/memcached_replace_by_key.3 +++ b/docs/man/memcached_replace_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_REPLACE_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_REPLACE_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_replace_by_key \- Storing and Replacing Data . diff --git a/docs/man/memcached_result_cas.3 b/docs/man/memcached_result_cas.3 index f81bf3af..d32b502f 100644 --- a/docs/man/memcached_result_cas.3 +++ b/docs/man/memcached_result_cas.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_CAS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_CAS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_cas \- Working with result sets . diff --git a/docs/man/memcached_result_create.3 b/docs/man/memcached_result_create.3 index d8134b30..2856afd4 100644 --- a/docs/man/memcached_result_create.3 +++ b/docs/man/memcached_result_create.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_CREATE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_CREATE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_create \- Working with result sets . diff --git a/docs/man/memcached_result_flags.3 b/docs/man/memcached_result_flags.3 index e85ff3d9..73b1ea67 100644 --- a/docs/man/memcached_result_flags.3 +++ b/docs/man/memcached_result_flags.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_FLAGS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_FLAGS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_flags \- Working with result sets . diff --git a/docs/man/memcached_result_free.3 b/docs/man/memcached_result_free.3 index 9ac4b3e8..4ec06a14 100644 --- a/docs/man/memcached_result_free.3 +++ b/docs/man/memcached_result_free.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_FREE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_FREE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_free \- Working with result sets . diff --git a/docs/man/memcached_result_key_length.3 b/docs/man/memcached_result_key_length.3 index ee00a133..d4734d44 100644 --- a/docs/man/memcached_result_key_length.3 +++ b/docs/man/memcached_result_key_length.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_KEY_LENGTH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_KEY_LENGTH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_key_length \- Working with result sets . diff --git a/docs/man/memcached_result_key_value.3 b/docs/man/memcached_result_key_value.3 index db543d58..f2169795 100644 --- a/docs/man/memcached_result_key_value.3 +++ b/docs/man/memcached_result_key_value.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_KEY_VALUE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_KEY_VALUE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_key_value \- Working with result sets . diff --git a/docs/man/memcached_result_length.3 b/docs/man/memcached_result_length.3 index afac4cec..f49ce5bd 100644 --- a/docs/man/memcached_result_length.3 +++ b/docs/man/memcached_result_length.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_LENGTH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_LENGTH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_length \- Working with result sets . diff --git a/docs/man/memcached_result_st.3 b/docs/man/memcached_result_st.3 index 43bb13a9..79e3e5f1 100644 --- a/docs/man/memcached_result_st.3 +++ b/docs/man/memcached_result_st.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_ST" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_ST" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_st \- Working with result sets . diff --git a/docs/man/memcached_result_value.3 b/docs/man/memcached_result_value.3 index 840c82bc..005dcbea 100644 --- a/docs/man/memcached_result_value.3 +++ b/docs/man/memcached_result_value.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RESULT_VALUE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RESULT_VALUE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_result_value \- Working with result sets . diff --git a/docs/man/memcached_return_t.3 b/docs/man/memcached_return_t.3 index 1ffaf387..e0489f2e 100644 --- a/docs/man/memcached_return_t.3 +++ b/docs/man/memcached_return_t.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_RETURN_T" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_RETURN_T" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_return_t \- Return type values . diff --git a/docs/man/memcached_sasl.3 b/docs/man/memcached_sasl.3 index a71db8f7..8790abd4 100644 --- a/docs/man/memcached_sasl.3 +++ b/docs/man/memcached_sasl.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SASL" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SASL" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_sasl \- libmemcached Documentation . diff --git a/docs/man/memcached_sasl_set_auth_data.3 b/docs/man/memcached_sasl_set_auth_data.3 index 9aa0e9ab..659c2f66 100644 --- a/docs/man/memcached_sasl_set_auth_data.3 +++ b/docs/man/memcached_sasl_set_auth_data.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SASL_SET_AUTH_DATA" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SASL_SET_AUTH_DATA" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_sasl_set_auth_data \- libmemcached Documentation . diff --git a/docs/man/memcached_server_add.3 b/docs/man/memcached_server_add.3 index afa5275e..3605a23e 100644 --- a/docs/man/memcached_server_add.3 +++ b/docs/man/memcached_server_add.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_ADD" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_ADD" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_add \- libmemcached Documentation . diff --git a/docs/man/memcached_server_add_unix_socket.3 b/docs/man/memcached_server_add_unix_socket.3 index 847f91db..851d895f 100644 --- a/docs/man/memcached_server_add_unix_socket.3 +++ b/docs/man/memcached_server_add_unix_socket.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_ADD_UNIX_SOCKET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_ADD_UNIX_SOCKET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_add_unix_socket \- libmemcached Documentation . diff --git a/docs/man/memcached_server_count.3 b/docs/man/memcached_server_count.3 index b4157166..995a07b9 100644 --- a/docs/man/memcached_server_count.3 +++ b/docs/man/memcached_server_count.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_COUNT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_COUNT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_count \- libmemcached Documentation . diff --git a/docs/man/memcached_server_cursor.3 b/docs/man/memcached_server_cursor.3 index 65071bec..14eb6c92 100644 --- a/docs/man/memcached_server_cursor.3 +++ b/docs/man/memcached_server_cursor.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_CURSOR" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_CURSOR" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_cursor \- libmemcached Documentation . diff --git a/docs/man/memcached_server_list.3 b/docs/man/memcached_server_list.3 index 6642bd76..623ed1cc 100644 --- a/docs/man/memcached_server_list.3 +++ b/docs/man/memcached_server_list.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_LIST" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_LIST" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_list \- libmemcached Documentation . diff --git a/docs/man/memcached_server_list_append.3 b/docs/man/memcached_server_list_append.3 index 9edfc2b1..06a570f0 100644 --- a/docs/man/memcached_server_list_append.3 +++ b/docs/man/memcached_server_list_append.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_LIST_APPEND" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_LIST_APPEND" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_list_append \- libmemcached Documentation . diff --git a/docs/man/memcached_server_list_count.3 b/docs/man/memcached_server_list_count.3 index ee97d0c9..4f82070c 100644 --- a/docs/man/memcached_server_list_count.3 +++ b/docs/man/memcached_server_list_count.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_LIST_COUNT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_LIST_COUNT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_list_count \- libmemcached Documentation . diff --git a/docs/man/memcached_server_list_free.3 b/docs/man/memcached_server_list_free.3 index cfd2d1ce..461072b1 100644 --- a/docs/man/memcached_server_list_free.3 +++ b/docs/man/memcached_server_list_free.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_LIST_FREE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_LIST_FREE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_list_free \- libmemcached Documentation . diff --git a/docs/man/memcached_server_push.3 b/docs/man/memcached_server_push.3 index 7a2b1738..955d247d 100644 --- a/docs/man/memcached_server_push.3 +++ b/docs/man/memcached_server_push.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_PUSH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_PUSH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_push \- libmemcached Documentation . diff --git a/docs/man/memcached_server_st.3 b/docs/man/memcached_server_st.3 index 8e47c588..f5549802 100644 --- a/docs/man/memcached_server_st.3 +++ b/docs/man/memcached_server_st.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVER_ST" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVER_ST" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_server_st \- libmemcached Documentation . diff --git a/docs/man/memcached_servers.3 b/docs/man/memcached_servers.3 index 05fa51d0..322e6740 100644 --- a/docs/man/memcached_servers.3 +++ b/docs/man/memcached_servers.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVERS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVERS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_servers \- libmemcached Documentation . diff --git a/docs/man/memcached_servers_parse.3 b/docs/man/memcached_servers_parse.3 index a399b285..9af4f994 100644 --- a/docs/man/memcached_servers_parse.3 +++ b/docs/man/memcached_servers_parse.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVERS_PARSE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVERS_PARSE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_servers_parse \- libmemcached Documentation . diff --git a/docs/man/memcached_servers_reset.3 b/docs/man/memcached_servers_reset.3 index 4cf8dc6b..4709a831 100644 --- a/docs/man/memcached_servers_reset.3 +++ b/docs/man/memcached_servers_reset.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SERVERS_RESET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SERVERS_RESET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_servers_reset \- libmemcached Documentation . diff --git a/docs/man/memcached_set.3 b/docs/man/memcached_set.3 index 8728b450..425978e9 100644 --- a/docs/man/memcached_set.3 +++ b/docs/man/memcached_set.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SET" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SET" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_set \- Storing and Replacing Data . diff --git a/docs/man/memcached_set_by_key.3 b/docs/man/memcached_set_by_key.3 index 164ce61a..f985b3de 100644 --- a/docs/man/memcached_set_by_key.3 +++ b/docs/man/memcached_set_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SET_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SET_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_set_by_key \- Storing and Replacing Data . diff --git a/docs/man/memcached_set_encoding_key.3 b/docs/man/memcached_set_encoding_key.3 new file mode 100644 index 00000000..b4abddea --- /dev/null +++ b/docs/man/memcached_set_encoding_key.3 @@ -0,0 +1,68 @@ +.TH "MEMCACHED_SET_ENCODING_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" +.SH NAME +memcached_set_encoding_key \- libmemcached Documentation +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" Man page generated from reStructeredText. +. +.SH SYNOPSIS +.sp +#include +.INDENT 0.0 +.TP +.B void memcached_set_encoding_key(memcached_st\fI\ *ptr\fP, const char\fI\ *string\fP, const size_t\fI\ string_length\fP) +.UNINDENT +.sp +Compile and link with \-lmemcached +.SH DESCRIPTION +.sp +\fI\%memcached_set_encoding_key()\fP sets the key that will be used to encrypt and decrypt data as it is sent and recieved from the server. +.sp +Currently only AES is is supported. +.SH RETURN +.sp +A value of type \fBmemcached_return_t\fP is returned On success that value +will be \fBMEMCACHED_SUCCESS\fP. Use \fBmemcached_strerror()\fP to +translate this value to a printable string. +.SH HOME +.sp +To find out more information please check: +\fI\%http://libmemcached.org/\fP +.SH AUTHOR +.sp +Brian Aker, <\fI\%brian@tangent.org\fP> +.SH SEE ALSO +.sp +\fImemcached(1)\fP \fIlibmemcached(3)\fP \fImemcached_strerror(3)\fP +.SH AUTHOR +Brian Aker +.SH COPYRIGHT +2011, Brian Aker DataDifferential, http://datadifferential.com/ +.\" Generated by docutils manpage writer. +.\" +. diff --git a/docs/man/memcached_set_memory_allocators.3 b/docs/man/memcached_set_memory_allocators.3 index 3336b3a5..d42ffd75 100644 --- a/docs/man/memcached_set_memory_allocators.3 +++ b/docs/man/memcached_set_memory_allocators.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SET_MEMORY_ALLOCATORS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SET_MEMORY_ALLOCATORS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_set_memory_allocators \- libmemcached Documentation . diff --git a/docs/man/memcached_set_memory_allocators_context.3 b/docs/man/memcached_set_memory_allocators_context.3 index 6f989e0a..5cc69f0c 100644 --- a/docs/man/memcached_set_memory_allocators_context.3 +++ b/docs/man/memcached_set_memory_allocators_context.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SET_MEMORY_ALLOCATORS_CONTEXT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SET_MEMORY_ALLOCATORS_CONTEXT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_set_memory_allocators_context \- libmemcached Documentation . diff --git a/docs/man/memcached_set_sasl_callbacks.3 b/docs/man/memcached_set_sasl_callbacks.3 index 13f19077..4f7d11c5 100644 --- a/docs/man/memcached_set_sasl_callbacks.3 +++ b/docs/man/memcached_set_sasl_callbacks.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SET_SASL_CALLBACKS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SET_SASL_CALLBACKS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_set_sasl_callbacks \- libmemcached Documentation . diff --git a/docs/man/memcached_set_user_data.3 b/docs/man/memcached_set_user_data.3 index 1aedf153..7b32bdef 100644 --- a/docs/man/memcached_set_user_data.3 +++ b/docs/man/memcached_set_user_data.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_SET_USER_DATA" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_SET_USER_DATA" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_set_user_data \- libmemcached Documentation . diff --git a/docs/man/memcached_stat.3 b/docs/man/memcached_stat.3 index f51378c0..1db24fe9 100644 --- a/docs/man/memcached_stat.3 +++ b/docs/man/memcached_stat.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_STAT" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_STAT" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_stat \- libmemcached Documentation . diff --git a/docs/man/memcached_stat_execute.3 b/docs/man/memcached_stat_execute.3 index 5968ee35..0cd3150c 100644 --- a/docs/man/memcached_stat_execute.3 +++ b/docs/man/memcached_stat_execute.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_STAT_EXECUTE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_STAT_EXECUTE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_stat_execute \- libmemcached Documentation . diff --git a/docs/man/memcached_stat_get_keys.3 b/docs/man/memcached_stat_get_keys.3 index 2fcd7a68..2040ee03 100644 --- a/docs/man/memcached_stat_get_keys.3 +++ b/docs/man/memcached_stat_get_keys.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_STAT_GET_KEYS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_STAT_GET_KEYS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_stat_get_keys \- libmemcached Documentation . diff --git a/docs/man/memcached_stat_get_value.3 b/docs/man/memcached_stat_get_value.3 index ae4343fe..a115f4c7 100644 --- a/docs/man/memcached_stat_get_value.3 +++ b/docs/man/memcached_stat_get_value.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_STAT_GET_VALUE" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_STAT_GET_VALUE" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_stat_get_value \- libmemcached Documentation . diff --git a/docs/man/memcached_stat_servername.3 b/docs/man/memcached_stat_servername.3 index 8ceee45a..a636299f 100644 --- a/docs/man/memcached_stat_servername.3 +++ b/docs/man/memcached_stat_servername.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_STAT_SERVERNAME" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_STAT_SERVERNAME" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_stat_servername \- libmemcached Documentation . diff --git a/docs/man/memcached_stats.3 b/docs/man/memcached_stats.3 index 2e34eadf..5fee4cc5 100644 --- a/docs/man/memcached_stats.3 +++ b/docs/man/memcached_stats.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_STATS" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_STATS" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_stats \- libmemcached Documentation . diff --git a/docs/man/memcached_strerror.3 b/docs/man/memcached_strerror.3 index 88756fbb..d6136901 100644 --- a/docs/man/memcached_strerror.3 +++ b/docs/man/memcached_strerror.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_STRERROR" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_STRERROR" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_strerror \- libmemcached Documentation . diff --git a/docs/man/memcached_touch.3 b/docs/man/memcached_touch.3 index 843bcaa0..1b901066 100644 --- a/docs/man/memcached_touch.3 +++ b/docs/man/memcached_touch.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_TOUCH" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_TOUCH" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_touch \- libmemcached Documentation . diff --git a/docs/man/memcached_touch_by_key.3 b/docs/man/memcached_touch_by_key.3 index 43a641ad..340e6b40 100644 --- a/docs/man/memcached_touch_by_key.3 +++ b/docs/man/memcached_touch_by_key.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_TOUCH_BY_KEY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_TOUCH_BY_KEY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_touch_by_key \- libmemcached Documentation . diff --git a/docs/man/memcached_user_data.3 b/docs/man/memcached_user_data.3 index c2b51795..dc5c966a 100644 --- a/docs/man/memcached_user_data.3 +++ b/docs/man/memcached_user_data.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_USER_DATA" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_USER_DATA" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_user_data \- libmemcached Documentation . diff --git a/docs/man/memcached_verbosity.3 b/docs/man/memcached_verbosity.3 index 939e2788..5ffef276 100644 --- a/docs/man/memcached_verbosity.3 +++ b/docs/man/memcached_verbosity.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_VERBOSITY" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_VERBOSITY" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_verbosity \- libmemcached Documentation . diff --git a/docs/man/memcached_version.3 b/docs/man/memcached_version.3 index ca0b0fe9..897721eb 100644 --- a/docs/man/memcached_version.3 +++ b/docs/man/memcached_version.3 @@ -1,4 +1,4 @@ -.TH "MEMCACHED_VERSION" "3" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCACHED_VERSION" "3" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcached_version \- libmemcached Documentation . diff --git a/docs/man/memcapable.1 b/docs/man/memcapable.1 index cc45b7f9..c6513a4a 100644 --- a/docs/man/memcapable.1 +++ b/docs/man/memcapable.1 @@ -1,4 +1,4 @@ -.TH "MEMCAPABLE" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCAPABLE" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcapable \- libmemcached Documentation . diff --git a/docs/man/memcat.1 b/docs/man/memcat.1 index 5891b4fd..eb4fe3d2 100644 --- a/docs/man/memcat.1 +++ b/docs/man/memcat.1 @@ -1,4 +1,4 @@ -.TH "MEMCAT" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCAT" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcat \- libmemcached Documentation . diff --git a/docs/man/memcp.1 b/docs/man/memcp.1 index ce8404c4..de0d1aa2 100644 --- a/docs/man/memcp.1 +++ b/docs/man/memcp.1 @@ -1,4 +1,4 @@ -.TH "MEMCP" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMCP" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memcp \- libmemcached Documentation . diff --git a/docs/man/memdump.1 b/docs/man/memdump.1 index e030b7cd..5b634454 100644 --- a/docs/man/memdump.1 +++ b/docs/man/memdump.1 @@ -1,4 +1,4 @@ -.TH "MEMDUMP" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMDUMP" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memdump \- libmemcached Documentation . diff --git a/docs/man/memerror.1 b/docs/man/memerror.1 index 932ce0e0..0138e1ce 100644 --- a/docs/man/memerror.1 +++ b/docs/man/memerror.1 @@ -1,4 +1,4 @@ -.TH "MEMERROR" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMERROR" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memerror \- libmemcached Documentation . diff --git a/docs/man/memexist.1 b/docs/man/memexist.1 new file mode 100644 index 00000000..78daedf6 --- /dev/null +++ b/docs/man/memexist.1 @@ -0,0 +1,76 @@ +.TH "MEMEXIST" "1" "May 22, 2012" "1.0.8" "libmemcached" +.SH NAME +memexist \- libmemcached Documentation +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" Man page generated from reStructeredText. +. +.SH SYNOPSIS +.sp +memexist [options] [key] +.SH DESCRIPTION +.sp +\fBmemexist\fP checks for the existance of a key within a cluster. +.SH OPTIONS +.sp +You can specify servers via the option: +.INDENT 0.0 +.TP +.B \-\-servers +.UNINDENT +.sp +or via the environment variable: +.INDENT 0.0 +.TP +.B \(gaMEMCACHED_SERVERS\(ga +.UNINDENT +.sp +If you do not specify either these, the final value in the command line list is the name of a server(s). +.sp +For a full list of operations run the tool with the option: +.INDENT 0.0 +.TP +.B \-\-help +.UNINDENT +.SH HOME +.sp +To find out more information please check: +\fI\%http://libmemcached.org/\fP +.SH AUTHOR +.sp +Brian Aker, <\fI\%brian@tangent.org\fP> +.SH SEE ALSO +.sp +\fImemcached(1)\fP \fIlibmemcached(3)\fP +.SH AUTHOR +Brian Aker +.SH COPYRIGHT +2011, Brian Aker DataDifferential, http://datadifferential.com/ +.\" Generated by docutils manpage writer. +.\" +. diff --git a/docs/man/memflush.1 b/docs/man/memflush.1 index a9502100..e570c6a6 100644 --- a/docs/man/memflush.1 +++ b/docs/man/memflush.1 @@ -1,4 +1,4 @@ -.TH "MEMFLUSH" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMFLUSH" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memflush \- libmemcached Documentation . diff --git a/docs/man/memparse.1 b/docs/man/memparse.1 new file mode 100644 index 00000000..ac792685 --- /dev/null +++ b/docs/man/memparse.1 @@ -0,0 +1,64 @@ +.TH "MEMPARSE" "1" "May 22, 2012" "1.0.8" "libmemcached" +.SH NAME +memparse \- libmemcached Documentation +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" Man page generated from reStructeredText. +. +.sp +Copies files to a collection of memcached servers +.SH SYNOPSIS +.sp +memparse [options] "option string" +.SH DESCRIPTION +.sp +\fBmemparse\fP can be used to validate an option string. +.SH OPTIONS +.sp +For a full list of operations run the tool with the option: +.INDENT 0.0 +.TP +.B \-\-help +.UNINDENT +.SH HOME +.sp +To find out more information please check: +\fI\%http://libmemcached.org/\fP +.SH AUTHOR +.sp +Brian Aker, <\fI\%brian@tangent.org\fP> +.SH SEE ALSO +.sp +\fImemcached(1)\fP \fIlibmemcached(3)\fP +.SH AUTHOR +Brian Aker +.SH COPYRIGHT +2011, Brian Aker DataDifferential, http://datadifferential.com/ +.\" Generated by docutils manpage writer. +.\" +. diff --git a/docs/man/memping.1 b/docs/man/memping.1 new file mode 100644 index 00000000..164d19fa --- /dev/null +++ b/docs/man/memping.1 @@ -0,0 +1,76 @@ +.TH "MEMPING" "1" "May 22, 2012" "1.0.8" "libmemcached" +.SH NAME +memping \- libmemcached Documentation +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" Man page generated from reStructeredText. +. +.SH SYNOPSIS +.sp +memping [options] [server] +.SH DESCRIPTION +.sp +\fBmemping\fP can be used to ping a memcached server to see if it is taking connections. +.SH OPTIONS +.sp +You can specify servers via the option: +.INDENT 0.0 +.TP +.B \-\-servers +.UNINDENT +.sp +or via the environment variable: +.INDENT 0.0 +.TP +.B \(gaMEMCACHED_SERVERS\(ga +.UNINDENT +.sp +If you do not specify either these, the final value in the command line list is the name of a server(s). +.sp +For a full list of operations run the tool with the option: +.INDENT 0.0 +.TP +.B \-\-help +.UNINDENT +.SH HOME +.sp +To find out more information please check: +\fI\%http://libmemcached.org/\fP +.SH AUTHOR +.sp +Brian Aker, <\fI\%brian@tangent.org\fP> +.SH SEE ALSO +.sp +\fImemcached(1)\fP \fIlibmemcached(3)\fP +.SH AUTHOR +Brian Aker +.SH COPYRIGHT +2011, Brian Aker DataDifferential, http://datadifferential.com/ +.\" Generated by docutils manpage writer. +.\" +. diff --git a/docs/man/memrm.1 b/docs/man/memrm.1 index a5804f2e..bf2f017b 100644 --- a/docs/man/memrm.1 +++ b/docs/man/memrm.1 @@ -1,4 +1,4 @@ -.TH "MEMRM" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMRM" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memrm \- libmemcached Documentation . diff --git a/docs/man/memslap.1 b/docs/man/memslap.1 index 3e99a781..a59aaab4 100644 --- a/docs/man/memslap.1 +++ b/docs/man/memslap.1 @@ -1,4 +1,4 @@ -.TH "MEMSLAP" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMSLAP" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memslap \- libmemcached Documentation . diff --git a/docs/man/memstat.1 b/docs/man/memstat.1 index fbe9d7c0..1816b382 100644 --- a/docs/man/memstat.1 +++ b/docs/man/memstat.1 @@ -1,4 +1,4 @@ -.TH "MEMSTAT" "1" "May 11, 2012" "1.0.7" "libmemcached" +.TH "MEMSTAT" "1" "May 22, 2012" "1.0.8" "libmemcached" .SH NAME memstat \- libmemcached Documentation . diff --git a/docs/man/memtouch.1 b/docs/man/memtouch.1 new file mode 100644 index 00000000..90dd2f1a --- /dev/null +++ b/docs/man/memtouch.1 @@ -0,0 +1,76 @@ +.TH "MEMTOUCH" "1" "May 22, 2012" "1.0.8" "libmemcached" +.SH NAME +memtouch \- libmemcached Documentation +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" Man page generated from reStructeredText. +. +.SH SYNOPSIS +.sp +memtouch [options] key +.SH DESCRIPTION +.sp +\fBmemtouch\fP does a "touch" on the specified key. +.SH OPTIONS +.sp +You can specify servers via the option: +.INDENT 0.0 +.TP +.B \-\-servers +.UNINDENT +.sp +or via the environment variable: +.INDENT 0.0 +.TP +.B \(gaMEMCACHED_SERVERS\(ga +.UNINDENT +.sp +If you do not specify either these, the final value in the command line list is the name of a server(s). +.sp +For a full list of operations run the tool with the option: +.INDENT 0.0 +.TP +.B \-\-help +.UNINDENT +.SH HOME +.sp +To find out more information please check: +\fI\%http://libmemcached.org/\fP +.SH AUTHOR +.sp +Brian Aker, <\fI\%brian@tangent.org\fP> +.SH SEE ALSO +.sp +\fImemcached(1)\fP \fIlibmemcached(3)\fP +.SH AUTHOR +Brian Aker +.SH COPYRIGHT +2011, Brian Aker DataDifferential, http://datadifferential.com/ +.\" Generated by docutils manpage writer. +.\" +. -- 2.30.2