Merge lp:~mordred/libmemcached/pandora-build into lp:~tangent-org/libmemcached/trunk

Proposed by Monty Taylor
Status: Merged
Merged at revision: not available
Proposed branch: lp:~mordred/libmemcached/pandora-build
Merge into: lp:~tangent-org/libmemcached/trunk
Diff against target: 3599 lines (+1124/-807)
73 files modified
.bzrignore (+107/-0)
AUTHORS (+1/-1)
ChangeLog (+11/-1)
Makefile.am (+4/-3)
clients/include.am (+1/-1)
configure.ac (+17/-3)
docs/Makefile.am (+514/-457)
docs/libmemcached.pod (+1/-1)
docs/libmemcached_examples.pod (+1/-1)
docs/libmemcachedutil.pod (+2/-2)
docs/make_index.pl (+30/-0)
docs/memcached_analyze.pod (+1/-1)
docs/memcached_auto.pod (+1/-1)
docs/memcached_behavior.pod (+1/-1)
docs/memcached_callback.pod (+1/-1)
docs/memcached_create.pod (+7/-2)
docs/memcached_delete.pod (+1/-1)
docs/memcached_dump.pod (+1/-1)
docs/memcached_flush.pod (+1/-1)
docs/memcached_flush_buffers.pod (+2/-2)
docs/memcached_generate_hash_value.pod (+1/-1)
docs/memcached_get.pod (+1/-1)
docs/memcached_memory_allocators.pod (+2/-2)
docs/memcached_pool.pod (+2/-2)
docs/memcached_quit.pod (+1/-1)
docs/memcached_result_st.pod (+1/-1)
docs/memcached_server_st.pod (+1/-1)
docs/memcached_servers.pod (+16/-3)
docs/memcached_set.pod (+1/-1)
docs/memcached_stats.pod (+1/-1)
docs/memcached_strerror.pod (+1/-1)
docs/memcached_user_data.pod (+2/-2)
docs/memcached_verbosity.pod (+1/-1)
docs/memcached_version.pod (+1/-1)
docs/memcapable.pod (+2/-2)
docs/memcat.pod (+1/-1)
docs/memcp.pod (+1/-1)
docs/memdump.pod (+1/-1)
docs/memerror.pod (+1/-1)
docs/memflush.pod (+1/-1)
docs/memrm.pod (+1/-1)
docs/memslap.pod (+51/-54)
docs/memstat.pod (+1/-1)
libhashkit/Makefile.am (+0/-45)
libhashkit/hsieh.c (+2/-2)
libhashkit/include.am (+47/-0)
libmemcached/analyze.c (+1/-1)
libmemcached/auto.c (+2/-2)
libmemcached/behavior.c (+1/-1)
libmemcached/configure.h.in (+9/-6)
libmemcached/delete.c (+2/-2)
libmemcached/dump.c (+2/-2)
libmemcached/flush.c (+5/-5)
libmemcached/flush_buffers.c (+6/-6)
libmemcached/get.c (+9/-10)
libmemcached/hash.c (+7/-7)
libmemcached/hosts.c (+23/-53)
libmemcached/include.am (+30/-31)
libmemcached/io.c (+11/-5)
libmemcached/memcached.c (+32/-0)
libmemcached/memcached.h (+8/-6)
libmemcached/memcached/protocol_binary.h (+1/-1)
libmemcached/quit.c (+3/-3)
libmemcached/server.c (+19/-8)
libmemcached/server.h (+11/-1)
libmemcached/stats.c (+2/-2)
libmemcached/storage.c (+2/-2)
libmemcached/verbosity.c (+1/-1)
libmemcached/version.c (+5/-3)
m4/pandora_canonical.m4 (+1/-1)
m4/pandora_have_libmemcached.m4 (+19/-0)
support/libmemcached.spec.in (+40/-7)
tests/function.c (+26/-31)
To merge this branch: bzr merge lp:~mordred/libmemcached/pandora-build
Reviewer Review Type Date Requested Status
Brian Aker Pending
Review via email: mp+17097@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Monty Taylor (mordred) wrote :

Updated pandora-build. Also, fixed a header include - because it sure is used in the server protocol headers.

698. By Brian Aker <brian@gaz>

Style cleanup.

699. By Brian Aker <brian@gaz>

Name correction for test system.

700. By Brian Aker <brian@gaz>

New stats output for collection information.

701. By Brian Aker <brian@gaz>

Absorb test bits into anonymous structure.

702. By Brian Aker <brian@gaz>

Fix structure of test.c where we call code before/after a collection runs.

703. By Brian Aker <brian@gaz>

Updated test framework.

704. By Brian Aker <brian@gaz>

Updated .spec file for release.

705. By Brian Aker <brian@gaz>

.pop now ignored.

706. By Brian Aker <brian@gaz>

Updates for version 0.37.

707. By Brian Aker <brian@gaz>

Spec fix.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2009-12-19 00:22:26 +0000
3+++ .bzrignore 2010-01-12 00:36:12 +0000
4@@ -39,20 +39,127 @@
5 config/plugin.ac
6 configure
7 docs/*.[13]
8+docs/*.html
9+docs/pod2htmd.tmp
10+docs/pod2htmi.tmp
11 example/memcached_light
12+hashkit_clone.pop
13+hashkit_crc32.pop
14+hashkit_create.pop
15+hashkit_fnv1_32.pop
16+hashkit_fnv1_64.pop
17+hashkit_fnv1a_32.pop
18+hashkit_fnv1a_64.pop
19+hashkit_free.pop
20+hashkit_functions.pop
21+hashkit_hsieh.pop
22+hashkit_is_allocated.pop
23+hashkit_jenkins.pop
24+hashkit_md5.pop
25+hashkit_murmur.pop
26+hashkit_value.pop
27 libmemcached-*.tar.gz
28 libmemcached-0.30-1.src.rpm
29 libmemcached-0.30-1.x86_64.rpm
30 libmemcached-0.31-1.src.rpm
31 libmemcached-0.31-1.x86_64.rpm
32 libmemcached-?.??/
33+libmemcached.pop
34+libmemcached/configure.h
35 libmemcached/memcached_configure.h
36+libmemcached_examples.pop
37+libmemcachedutil.pop
38 libtool
39 libtool.m4
40 ltoptions.m4
41 ltsugar.m4
42 ltversion.m4
43 lt~obsolete.m4
44+memcached_add.pop
45+memcached_add_by_key.pop
46+memcached_analyze.pop
47+memcached_append.pop
48+memcached_append_by_key.pop
49+memcached_behavior_get.pop
50+memcached_behavior_set.pop
51+memcached_callback_get.pop
52+memcached_callback_set.pop
53+memcached_cas.pop
54+memcached_cas_by_key.pop
55+memcached_clone.pop
56+memcached_create.pop
57+memcached_decrement.pop
58+memcached_decrement_with_initial.pop
59+memcached_delete.pop
60+memcached_delete_by_key.pop
61+memcached_dump.pop
62+memcached_fetch.pop
63+memcached_fetch_execute.pop
64+memcached_fetch_result.pop
65+memcached_flush.pop
66+memcached_flush_buffers.pop
67+memcached_free.pop
68+memcached_generate_hash_value.pop
69+memcached_get.pop
70+memcached_get_by_key.pop
71+memcached_get_memory_allocators.pop
72+memcached_get_user_data.pop
73+memcached_increment.pop
74+memcached_increment_with_initial.pop
75+memcached_lib_version.pop
76+memcached_mget.pop
77+memcached_mget_by_key.pop
78+memcached_mget_execute.pop
79+memcached_mget_execute_by_key.pop
80+memcached_pool_behavior_get.pop
81+memcached_pool_behavior_set.pop
82+memcached_pool_create.pop
83+memcached_pool_destroy.pop
84+memcached_pool_pop.pop
85+memcached_pool_push.pop
86+memcached_prepend.pop
87+memcached_prepend_by_key.pop
88+memcached_quit.pop
89+memcached_replace.pop
90+memcached_replace_by_key.pop
91+memcached_result_cas.pop
92+memcached_result_create.pop
93+memcached_result_flags.pop
94+memcached_result_free.pop
95+memcached_result_key_length.pop
96+memcached_result_key_value.pop
97+memcached_result_length.pop
98+memcached_result_st.pop
99+memcached_result_value.pop
100+memcached_server_add.pop
101+memcached_server_add_unix_socket.pop
102+memcached_server_count.pop
103+memcached_server_list.pop
104+memcached_server_list_append.pop
105+memcached_server_list_count.pop
106+memcached_server_list_free.pop
107+memcached_server_push.pop
108+memcached_servers_parse.pop
109+memcached_set.pop
110+memcached_set_by_key.pop
111+memcached_set_memory_allocators.pop
112+memcached_set_user_data.pop
113+memcached_stat.pop
114+memcached_stat_get_keys.pop
115+memcached_stat_get_value.pop
116+memcached_stat_servername.pop
117+memcached_strerror.pop
118+memcached_verbosity.pop
119+memcached_version.pop
120+memcapable.pop
121+memcat.pop
122+memcp.pop
123+memdump.pop
124+memerror.pop
125+memflush.pop
126+memrm.pop
127+memslap.pop
128+memstat.pop
129 stamp-h1
130 support/Makefile
131 support/Makefile.in
132
133=== modified file 'AUTHORS'
134--- AUTHORS 2009-12-16 19:03:49 +0000
135+++ AUTHORS 2010-01-12 00:36:12 +0000
136@@ -3,7 +3,7 @@
137 Patrick Galbraith, -- C++ Interface
138 Padraig O'Sullivan, -- C++ Interface (current one)
139 Tim Bunce, -- Docs
140-Trond Norbye, trond.norbye@sun.com -- Binary protocol, Misc
141+Trond Norbye, trond.norbye@gmail.com -- Binary protocol, Misc
142 Yin Chen, -- Ketama Work
143 Toru Maesaka, dev@torum.net -- Stats analysis
144 Eric Lambert, -- UDP work
145
146=== modified file 'ChangeLog'
147--- ChangeLog 2010-01-06 17:22:43 +0000
148+++ ChangeLog 2010-01-12 00:36:12 +0000
149@@ -1,4 +1,14 @@
150-0.36
151+0.37
152+ * Fixed build for libhashkit.
153+ * Fixed install path regression.
154+ * Modified RPM to strict check install.
155+ * Added documentation for memcached_server_cursor();
156+
157+ * Added memcached_servers_reset().
158+
159+ * Modified memcached_st to remove dead cursor_server member.
160+
161+0.36 Wed Jan 6 18:23:50 PST 2010
162 * Merged in new memslap utility.
163 * All of constants.h has been updated to match style (all old identifiers
164 continue to work).
165
166=== modified file 'Makefile.am'
167--- Makefile.am 2009-12-20 21:29:01 +0000
168+++ Makefile.am 2010-01-12 00:36:12 +0000
169@@ -10,18 +10,19 @@
170 lib_LTLIBRARIES =
171 noinst_LTLIBRARIES =
172 noinst_PROGRAMS =
173-pkginclude_HEADERS =
174-nobase_pkginclude_HEADERS =
175+include_HEADERS =
176+nobase_include_HEADERS =
177 EXTRA_HEADERS =
178 BUILT_SOURCES=
179 EXTRA_DIST = README.FIRST
180
181-SUBDIRS = docs libhashkit
182+SUBDIRS = docs
183
184 test-docs:
185 (cd docs && $(MAKE) test-docs)
186 include libmemcached/include.am
187 include clients/include.am
188+include libhashkit/include.am
189 include tests/include.am
190 include example/include.am
191 include support/include.am
192
193=== modified file 'clients/include.am'
194--- clients/include.am 2009-12-17 21:24:01 +0000
195+++ clients/include.am 2010-01-12 00:36:12 +0000
196@@ -69,7 +69,7 @@
197 clients/ms_stats.c \
198 clients/ms_task.c \
199 clients/ms_thread.c
200-clients_memslap_LDADD= $(LTLIBEVENT) clients/libgenexec.la $(CLIENTS_LDADDS)
201+clients_memslap_LDADD= $(LTLIBEVENT) clients/libgenexec.la $(CLIENTS_LDADDS) $(LIBM)
202
203 clients_memcapable_SOURCES= clients/memcapable.c
204 if BUILD_BYTEORDER
205
206=== modified file 'configure.ac'
207--- configure.ac 2009-12-20 11:18:07 +0000
208+++ configure.ac 2010-01-12 00:36:12 +0000
209@@ -6,7 +6,7 @@
210 # the COPYING file in this directory for full text.
211
212 AC_PREREQ(2.59)
213-AC_INIT([libmemcached],[0.35],[http://tangent.org/552/libmemcached.html])
214+AC_INIT([libmemcached],[0.37],[http://tangent.org/552/libmemcached.html])
215 AC_CONFIG_SRCDIR([libmemcached/memcached.c])
216 AC_CONFIG_AUX_DIR(config)
217 AM_CONFIG_HEADER([config.h])
218@@ -14,6 +14,21 @@
219
220 PANDORA_CANONICAL_TARGET
221
222+#shared library versioning
223+MEMCACHED_LIBRARY_VERSION=3:0:0
224+# | | |
225+# +------+ | +---+
226+# | | |
227+# current:revision:age
228+# | | |
229+# | | +- increment if interfaces have been added
230+# | | set to zero if interfaces have been removed or changed
231+# | +- increment if source code has changed
232+# | set to zero if current is incremented
233+# +- increment if interfaces have been added, removed or changed
234+AC_SUBST(MEMCACHED_LIBRARY_VERSION)
235+
236+
237 HASHKIT_LIBRARY_VERSION=0:0:0
238 AC_SUBST(HASHKIT_LIBRARY_VERSION)
239
240@@ -51,8 +66,7 @@
241 AC_CONFIG_FILES([
242 Makefile
243 docs/Makefile
244- libmemcached/memcached_configure.h
245- libhashkit/Makefile
246+ libmemcached/configure.h
247 support/libmemcached.pc
248 support/libmemcached.spec
249 support/libmemcached-fc.spec
250
251=== modified file 'docs/Makefile.am'
252--- docs/Makefile.am 2009-12-20 11:18:07 +0000
253+++ docs/Makefile.am 2010-01-12 00:36:12 +0000
254@@ -1,116 +1,419 @@
255-CLEANFILES= *.1 *.3
256-
257-
258-EXTRA_DIST = \
259- hashkit_create.pod \
260- hashkit_functions.pod \
261- hashkit_value.pod \
262- libmemcached.pod \
263- libmemcached_examples.pod \
264- libmemcachedutil.pod \
265- memcached_analyze.pod \
266- memcached_auto.pod \
267- memcached_behavior.pod \
268- memcached_callback.pod \
269- memcached_create.pod \
270- memcached_delete.pod \
271- memcached_dump.pod \
272- memcached_flush.pod \
273- memcached_flush_buffers.pod \
274- memcached_generate_hash_value.pod \
275- memcached_get.pod \
276- memcached_memory_allocators.pod \
277- memcached_pool.pod \
278- memcached_quit.pod \
279- memcached_server_st.pod \
280- memcached_servers.pod \
281- memcached_set.pod \
282- memcached_stats.pod \
283- memcached_strerror.pod \
284- memcached_user_data.pod \
285- memcached_verbosity.pod \
286- memcached_version.pod \
287- memcapable.pod \
288- memcat.pod \
289- memcp.pod \
290- memdump.pod \
291- memerror.pod \
292- memflush.pod \
293- memrm.pod \
294- memslap.pod \
295- memstat.pod
296+# This file generates all of man/html pages that we use for documentation.
297+#
298+# When hacking this file you need to know that we take .pod files and turn
299+# them into .pop files. .pop files are 1=1 for man pages, but one .pod
300+# file may generate many .pop files.
301+#
302+# -Brian
303+#
304+#
305+CLEANFILES= *.1 *.3 *.html *.pop *.tmp
306+
307+BUILT_SOURCES=
308+
309+EXTRA_DIST= make_index.pl
310+
311+AUTO_PAGES= \
312+ memcached_increment.pop \
313+ memcached_increment_with_initial.pop \
314+ memcached_decrement.pop \
315+ memcached_decrement_with_initial.pop
316+BUILT_SOURCES += ${AUTO_PAGES}
317+
318+BEHAVIOR_PAGES= \
319+ memcached_behavior_get.pop \
320+ memcached_behavior_set.pop
321+BUILT_SOURCES += ${BEHAVIOR_PAGES}
322+
323+CALLBACK_PAGES= \
324+ memcached_callback_get.pop \
325+ memcached_callback_set.pop
326+BUILT_SOURCES += ${CALLBACK_PAGES}
327+
328+CREATE_PAGES= \
329+ memcached_clone.pop \
330+ memcached_create.pop \
331+ memcached_free.pop \
332+ memcached_servers_reset.pop
333+BUILT_SOURCES += ${CREATE_PAGES}
334+
335+DELETE_PAGES= \
336+ memcached_delete.pop \
337+ memcached_delete_by_key.pop
338+BUILT_SOURCES += ${DELETE_PAGES}
339+
340+GENERIC_PAGES= \
341+ libmemcached.pop \
342+ libmemcached_examples.pop \
343+ libmemcachedutil.pop \
344+ memcached_analyze.pop \
345+ memcached_dump.pop \
346+ memcached_flush.pop \
347+ memcached_flush_buffers.pop \
348+ memcached_generate_hash_value.pop \
349+ memcached_quit.pop \
350+ memcached_strerror.pop \
351+ memcached_verbosity.pop \
352+ memcapable.pop \
353+ memcat.pop \
354+ memcp.pop \
355+ memdump.pop \
356+ memerror.pop \
357+ memflush.pop \
358+ memrm.pop \
359+ memslap.pop \
360+ memstat.pop
361+BUILT_SOURCES += ${GENERIC_PAGES}
362+
363+GET_PAGES= \
364+ memcached_get.pop \
365+ memcached_get_by_key.pop \
366+ memcached_fetch_result.pop \
367+ memcached_fetch_execute.pop \
368+ memcached_mget.pop \
369+ memcached_mget_by_key.pop \
370+ memcached_mget_execute.pop \
371+ memcached_mget_execute_by_key.pop \
372+ memcached_fetch.pop
373+BUILT_SOURCES += ${GET_PAGES}
374+
375+MEMORY_ALLOCATORS_PAGES= \
376+ memcached_get_memory_allocators.pop \
377+ memcached_set_memory_allocators.pop
378+BUILT_SOURCES += ${MEMORY_ALLOCATORS_PAGES}
379+
380+POOL_PAGES= \
381+ memcached_pool_behavior_get.pop \
382+ memcached_pool_behavior_set.pop \
383+ memcached_pool_create.pop \
384+ memcached_pool_destroy.pop \
385+ memcached_pool_pop.pop \
386+ memcached_pool_push.pop
387+BUILT_SOURCES += ${POOL_PAGES}
388+
389+RESULT_PAGES= \
390+ memcached_result_cas.pop \
391+ memcached_result_create.pop \
392+ memcached_result_flags.pop \
393+ memcached_result_free.pop \
394+ memcached_result_key_length.pop \
395+ memcached_result_key_value.pop \
396+ memcached_result_length.pop \
397+ memcached_result_st.pop \
398+ memcached_result_value.pop
399+BUILT_SOURCES += ${RESULT_PAGES}
400+
401+
402+SERVER_PAGES= \
403+ memcached_server_count.pop \
404+ memcached_server_cursor.pop \
405+ memcached_server_list.pop \
406+ memcached_server_add.pop \
407+ memcached_server_add_unix_socket.pop \
408+ memcached_server_push.pop
409+BUILT_SOURCES += ${SERVER_PAGES}
410+
411+SERVER_ST_PAGES= \
412+ memcached_server_list_free.pop \
413+ memcached_server_list_count.pop \
414+ memcached_server_list_append.pop \
415+ memcached_servers_parse.pop
416+BUILT_SOURCES += ${SERVER_ST_PAGES}
417+
418+SET_PAGES= \
419+ memcached_set.pop \
420+ memcached_set_by_key.pop \
421+ memcached_cas.pop \
422+ memcached_cas_by_key.pop \
423+ memcached_replace.pop \
424+ memcached_replace_by_key.pop \
425+ memcached_add.pop \
426+ memcached_add_by_key.pop \
427+ memcached_prepend.pop \
428+ memcached_prepend_by_key.pop \
429+ memcached_append.pop \
430+ memcached_append_by_key.pop
431+BUILT_SOURCES += ${SET_PAGES}
432+
433+STATS_PAGES= \
434+ memcached_stat.pop \
435+ memcached_stat_get_keys.pop .pop\
436+ memcached_stat_get_value.pop \
437+ memcached_stat_servername.pop
438+BUILT_SOURCES += ${STATS_PAGES}
439+
440+USER_DATA_PAGES= \
441+ memcached_get_user_data.pop \
442+ memcached_set_user_data.pop
443+BUILT_SOURCES += ${USER_DATA_PAGES}
444+
445+VERSION_PAGES= \
446+ memcached_version.pop \
447+ memcached_lib_version.pop
448+BUILT_SOURCES += ${VERSION_PAGES}
449+
450+
451+#
452+# These are for libhashkit
453+#
454+HASHKIT_CREATE_PAGES= \
455+ hashkit_is_allocated.pop \
456+ hashkit_create.pop \
457+ hashkit_clone.pop \
458+ hashkit_free.pop
459+BUILT_SOURCES += ${HASHKIT_CREATE_PAGES}
460+
461+HASHKIT_FUNCTIONS_PAGES= \
462+ hashkit_crc32.pop \
463+ hashkit_fnv1_32.pop \
464+ hashkit_fnv1_64.pop \
465+ hashkit_fnv1a_32.pop \
466+ hashkit_fnv1a_64.pop \
467+ hashkit_functions.pop \
468+ hashkit_hsieh.pop \
469+ hashkit_jenkins.pop \
470+ hashkit_md5.pop \
471+ hashkit_murmur.pop
472+BUILT_SOURCES += ${HASHKIT_FUNCTIONS_PAGES}
473+
474+HASHKIT_ST_PAGES= \
475+ hashkit_value.pop
476+BUILT_SOURCES += ${HASHKIT_ST_PAGES}
477+
478+
479+HTML_FILES= \
480+ hashkit_clone.html \
481+ hashkit_crc32.html \
482+ hashkit_create.html \
483+ hashkit_fnv1_32.html \
484+ hashkit_fnv1_64.html \
485+ hashkit_fnv1a_32.html \
486+ hashkit_fnv1a_64.html \
487+ hashkit_free.html \
488+ hashkit_functions.html \
489+ hashkit_hsieh.html \
490+ hashkit_is_allocated.html \
491+ hashkit_jenkins.html \
492+ hashkit_md5.html \
493+ hashkit_murmur.html \
494+ hashkit_value.html \
495+ libmemcached_examples.html \
496+ libmemcached.html \
497+ libmemcachedutil.html \
498+ memcached_add_by_key.html \
499+ memcached_add.html \
500+ memcached_analyze.html \
501+ memcached_append_by_key.html \
502+ memcached_append.html \
503+ memcached_behavior_get.html \
504+ memcached_behavior_set.html \
505+ memcached_callback_get.html \
506+ memcached_callback_set.html \
507+ memcached_cas_by_key.html \
508+ memcached_cas.html \
509+ memcached_clone.html \
510+ memcached_create.html \
511+ memcached_decrement.html \
512+ memcached_decrement_with_initial.html \
513+ memcached_delete_by_key.html \
514+ memcached_delete.html \
515+ memcached_dump.html \
516+ memcached_fetch_execute.html \
517+ memcached_fetch.html \
518+ memcached_fetch_result.html \
519+ memcached_flush_buffers.html \
520+ memcached_flush.html \
521+ memcached_free.html \
522+ memcached_generate_hash_value.html \
523+ memcached_get_by_key.html \
524+ memcached_get_memory_allocators.html \
525+ memcached_get.html \
526+ memcached_get_user_data.html \
527+ memcached_increment.html \
528+ memcached_increment_with_initial.html \
529+ memcached_lib_version.html \
530+ memcached_mget_by_key.html \
531+ memcached_mget_execute_by_key.html \
532+ memcached_mget_execute.html \
533+ memcached_mget.html \
534+ memcached_pool_behavior_get.html \
535+ memcached_pool_behavior_set.html \
536+ memcached_pool_create.html \
537+ memcached_pool_destroy.html \
538+ memcached_pool_pop.html \
539+ memcached_pool_push.html \
540+ memcached_prepend_by_key.html \
541+ memcached_prepend.html \
542+ memcached_quit.html \
543+ memcached_replace_by_key.html \
544+ memcached_replace.html \
545+ memcached_result_cas.html \
546+ memcached_result_create.html \
547+ memcached_result_flags.html \
548+ memcached_result_free.html \
549+ memcached_result_key_length.html \
550+ memcached_result_key_value.html \
551+ memcached_result_length.html \
552+ memcached_result_st.html \
553+ memcached_result_value.html \
554+ memcached_server_add.html \
555+ memcached_server_add_unix_socket.html \
556+ memcached_server_count.html \
557+ memcached_server_cursor.html \
558+ memcached_server_list_append.html \
559+ memcached_server_list_count.html \
560+ memcached_server_list_free.html \
561+ memcached_server_list.html \
562+ memcached_server_push.html \
563+ memcached_servers_parse.html \
564+ memcached_set_by_key.html \
565+ memcached_set_memory_allocators.html \
566+ memcached_set.html \
567+ memcached_set_user_data.html \
568+ memcached_stat_get_keys.html \
569+ memcached_stat_get_value.html \
570+ memcached_stat.html \
571+ memcached_stat_servername.html \
572+ memcached_strerror.html \
573+ memcached_verbosity.html \
574+ memcached_version.html \
575+ memcapable.html \
576+ memcat.html \
577+ memcp.html \
578+ memdump.html \
579+ memerror.html \
580+ memflush.html \
581+ memrm.html \
582+ memslap.html \
583+ memstat.html
584+
585+POD_FILES= \
586+ hashkit_create.pod \
587+ hashkit_functions.pod \
588+ hashkit_value.pod \
589+ libmemcached.pod \
590+ libmemcached_examples.pod \
591+ libmemcachedutil.pod \
592+ memcached_analyze.pod \
593+ memcached_auto.pod \
594+ memcached_behavior.pod \
595+ memcached_callback.pod \
596+ memcached_create.pod \
597+ memcached_delete.pod \
598+ memcached_dump.pod \
599+ memcached_flush.pod \
600+ memcached_flush_buffers.pod \
601+ memcached_generate_hash_value.pod \
602+ memcached_get.pod \
603+ memcached_memory_allocators.pod \
604+ memcached_pool.pod \
605+ memcached_quit.pod \
606+ memcached_server_st.pod \
607+ memcached_servers.pod \
608+ memcached_set.pod \
609+ memcached_stats.pod \
610+ memcached_strerror.pod \
611+ memcached_user_data.pod \
612+ memcached_verbosity.pod \
613+ memcached_version.pod \
614+ memcapable.pod \
615+ memcat.pod \
616+ memcp.pod \
617+ memdump.pod \
618+ memerror.pod \
619+ memflush.pod \
620+ memrm.pod \
621+ memslap.pod \
622+ memstat.pod
623+EXTRA_DIST+= $(POD_FILES)
624
625 man_MANS = \
626- libmemcached.3 \
627- libmemcached_examples.3 \
628- memcached_add.3 \
629- memcached_add_by_key.3 \
630- memcached_analyze.3 \
631- memcached_append.3 \
632- memcached_append_by_key.3 \
633- memcached_behavior_get.3 \
634- memcached_behavior_set.3 \
635- memcached_callback_get.3 \
636- memcached_callback_set.3 \
637- memcached_cas.3 \
638- memcached_cas_by_key.3 \
639- memcached_clone.3 \
640- memcached_create.3 \
641- memcached_decrement.3 \
642- memcached_decrement_with_initial.3 \
643- memcached_delete.3 \
644- memcached_delete_by_key.3 \
645- memcached_dump.3 \
646- memcached_fetch.3 \
647- memcached_fetch_execute.3 \
648- memcached_fetch_result.3 \
649- memcached_flush_buffers.3 \
650- memcached_free.3 \
651- memcached_generate_hash_value.3 \
652- memcached_get.3 \
653- memcached_get_by_key.3 \
654- memcached_get_memory_allocators.3 \
655- memcached_get_user_data.3 \
656- memcached_increment.3 \
657- memcached_increment_with_initial.3 \
658- memcached_lib_version.3 \
659- memcached_mget.3 \
660- memcached_mget_by_key.3 \
661- memcached_mget_execute.3 \
662- memcached_mget_execute_by_key.3 \
663- memcached_prepend.3 \
664- memcached_prepend_by_key.3 \
665- memcached_quit.3 \
666- memcached_replace.3 \
667- memcached_replace_by_key.3 \
668- memcached_server_add.3 \
669- memcached_server_count.3 \
670- memcached_server_list.3 \
671- memcached_server_list_append.3 \
672- memcached_server_list_count.3 \
673- memcached_server_list_free.3 \
674- memcached_server_push.3 \
675- memcached_servers_parse.3 \
676- memcached_set.3 \
677- memcached_set_by_key.3 \
678- memcached_set_memory_allocators.3 \
679- memcached_set_user_data.3 \
680- memcached_stat.3 \
681- memcached_stat_get_keys.3 \
682- memcached_stat_get_value.3 \
683- memcached_stat_servername.3 \
684- memcached_strerror.3 \
685- memcached_verbosity.3 \
686- memcached_version.3 \
687- memcapable.1 \
688- memcat.1 \
689- memcp.1 \
690- memdump.1 \
691- memerror.1 \
692- memflush.1 \
693- memrm.1 \
694- memslap.1 \
695- memstat.1
696+ hashkit_clone.3 \
697+ hashkit_crc32.3 \
698+ hashkit_create.3 \
699+ hashkit_fnv1_32.3 \
700+ hashkit_fnv1_64.3 \
701+ hashkit_fnv1a_32.3 \
702+ hashkit_fnv1a_64.3 \
703+ hashkit_free.3 \
704+ hashkit_functions.3 \
705+ hashkit_hsieh.3 \
706+ hashkit_is_allocated.3 \
707+ hashkit_jenkins.3 \
708+ hashkit_md5.3 \
709+ hashkit_murmur.3 \
710+ hashkit_value.3 \
711+ libmemcached.3 \
712+ libmemcached_examples.3 \
713+ memcached_add.3 \
714+ memcached_add_by_key.3 \
715+ memcached_analyze.3 \
716+ memcached_append.3 \
717+ memcached_append_by_key.3 \
718+ memcached_behavior_get.3 \
719+ memcached_behavior_set.3 \
720+ memcached_callback_get.3 \
721+ memcached_callback_set.3 \
722+ memcached_cas.3 \
723+ memcached_cas_by_key.3 \
724+ memcached_clone.3 \
725+ memcached_create.3 \
726+ memcached_decrement.3 \
727+ memcached_decrement_with_initial.3 \
728+ memcached_delete.3 \
729+ memcached_delete_by_key.3 \
730+ memcached_dump.3 \
731+ memcached_fetch.3 \
732+ memcached_fetch_execute.3 \
733+ memcached_fetch_result.3 \
734+ memcached_flush_buffers.3 \
735+ memcached_free.3 \
736+ memcached_generate_hash_value.3 \
737+ memcached_get.3 \
738+ memcached_get_by_key.3 \
739+ memcached_get_memory_allocators.3 \
740+ memcached_get_user_data.3 \
741+ memcached_increment.3 \
742+ memcached_increment_with_initial.3 \
743+ memcached_lib_version.3 \
744+ memcached_mget.3 \
745+ memcached_mget_by_key.3 \
746+ memcached_mget_execute.3 \
747+ memcached_mget_execute_by_key.3 \
748+ memcached_prepend.3 \
749+ memcached_prepend_by_key.3 \
750+ memcached_quit.3 \
751+ memcached_replace.3 \
752+ memcached_replace_by_key.3 \
753+ memcached_server_add.3 \
754+ memcached_server_count.3 \
755+ memcached_server_cursor.3 \
756+ memcached_server_list.3 \
757+ memcached_server_list_append.3 \
758+ memcached_server_list_count.3 \
759+ memcached_server_list_free.3 \
760+ memcached_server_push.3 \
761+ memcached_servers_parse.3 \
762+ memcached_set.3 \
763+ memcached_set_by_key.3 \
764+ memcached_set_memory_allocators.3 \
765+ memcached_set_user_data.3 \
766+ memcached_stat.3 \
767+ memcached_stat_get_keys.3 \
768+ memcached_stat_get_value.3 \
769+ memcached_stat_servername.3 \
770+ memcached_strerror.3 \
771+ memcached_verbosity.3 \
772+ memcached_version.3 \
773+ memcapable.1 \
774+ memcat.1 \
775+ memcp.1 \
776+ memdump.1 \
777+ memerror.1 \
778+ memflush.1 \
779+ memrm.1 \
780+ memslap.1 \
781+ memstat.1
782
783 if BUILD_LIBMEMCACHEDUTIL
784 man_MANS+= \
785@@ -124,349 +427,103 @@
786 endif
787
788
789-libmemcached.3: libmemcached.pod
790- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/libmemcached.pod > libmemcached.3
791-
792-libmemcachedutil.3: libmemcachedutil.pod
793- ${POD2MAN} -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/libmemcachedutil.pod > libmemcachedutil.3
794-
795-libmemcached_examples.3: libmemcached_examples.pod
796- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/libmemcached_examples.pod > libmemcached_examples.3
797-
798-memcached_create.3: memcached_create.pod
799- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_create.pod > memcached_create.3
800-
801-memcached_free.3: memcached_create.pod
802- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_create.pod > memcached_free.3
803-
804-memcached_clone.3: memcached_create.pod
805- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_create.pod > memcached_clone.3
806-
807-memcached_set.3: memcached_set.pod
808- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_set.3
809-
810-memcached_set_by_key.3: memcached_set.pod
811- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_set_by_key.3
812-
813-memcached_cas.3: memcached_set.pod
814- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_cas.3
815-
816-memcached_cas_by_key.3: memcached_set.pod
817- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_cas_by_key.3
818-
819-memcached_replace.3: memcached_set.pod
820- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_replace.3
821-
822-memcached_replace_by_key.3: memcached_set.pod
823- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_replace_by_key.3
824-
825-memcached_add.3: memcached_set.pod
826- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_add.3
827-
828-memcached_add_by_key.3: memcached_set.pod
829- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_add_by_key.3
830-
831-memcached_prepend.3: memcached_set.pod
832- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_prepend.3
833-
834-memcached_prepend_by_key.3: memcached_set.pod
835- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_prepend_by_key.3
836-
837-memcached_append.3: memcached_set.pod
838- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_append.3
839-
840-memcached_append_by_key.3: memcached_set.pod
841- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_set.pod > memcached_append_by_key.3
842-
843-memcached_delete.3: memcached_delete.pod
844- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_delete.pod > memcached_delete.3
845-
846-memcached_delete_by_key.3: memcached_delete.pod
847- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_delete.pod > memcached_delete_by_key.3
848-
849-memcached_increment.3:
850- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_auto.pod > memcached_increment.3
851-
852-memcached_increment_with_initial.3:
853- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_auto.pod > memcached_increment_with_initial.3
854-
855-memcached_decrement.3:
856- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_auto.pod > memcached_decrement.3
857-
858-memcached_decrement_with_initial.3:
859- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_auto.pod > memcached_decrement_with_initial.3
860-
861-memcached_dump.3: memcached_dump.pod
862- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_dump.pod > memcached_dump.3
863-
864-memcached_flush.3: memcached_flush.pod
865- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_flush.pod > memcached_flush.3
866-
867-memcached_get.3: memcached_get.pod
868- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_get.3
869-
870-memcached_get_by_key.3: memcached_get.pod
871- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_get_by_key.3
872-
873-memcached_fetch_result.3: memcached_get.pod
874- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_fetch_result.3
875-
876-memcached_fetch_execute.3: memcached_get.pod
877- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_fetch_execute.3
878-
879-memcached_mget.3: memcached_get.pod
880- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_mget.3
881-
882-memcached_mget_by_key.3: memcached_get.pod
883- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_mget_by_key.3
884-
885-memcached_mget_execute.3: memcached_get.pod
886- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_mget_execute.3
887-
888-memcached_mget_execute_by_key.3: memcached_get.pod
889- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_mget_execute_by_key.3
890-
891-memcached_fetch.3: memcached_get.pod
892- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_get.pod > memcached_fetch.3
893-
894-memcached_quit.3: memcached_quit.pod
895- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_quit.pod > memcached_quit.3
896-
897-memcached_strerror.3: memcached_strerror.pod
898- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_strerror.pod > memcached_strerror.3
899-
900-memcached_server_count.3: memcached_servers.pod
901- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_servers.pod > memcached_server_count.3
902-
903-memcached_server_list.3: memcached_servers.pod
904- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_servers.pod > memcached_server_list.3
905-
906-memcached_server_add.3: memcached_servers.pod
907- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_servers.pod > memcached_server_add.3
908-
909-memcached_server_add_unix_socket.3: memcached_servers.pod
910- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_servers.pod > memcached_server_add_unix_socket.3
911-
912-memcached_server_push.3: memcached_servers.pod
913- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_servers.pod > memcached_server_push.3
914-
915-memcached_server_list_free.3: memcached_server_st.pod
916- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_server_st.pod > memcached_server_list_free.3
917-
918-memcached_server_list_count.3: memcached_server_st.pod
919- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_server_st.pod > memcached_server_list_count.3
920-
921-memcached_server_list_append.3: memcached_server_st.pod
922- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_server_st.pod > memcached_server_list_append.3
923-
924-memcached_servers_parse.3: memcached_server_st.pod
925- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_server_st.pod > memcached_servers_parse.3
926-
927-memcached_verbosity.3: memcached_verbosity.pod
928- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_verbosity.pod > memcached_verbosity.3
929-
930-memcached_behavior_get.3: memcached_behavior.pod
931- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_behavior.pod > memcached_behavior_get.3
932-
933-memcached_behavior_set.3: memcached_behavior.pod
934- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_behavior.pod > memcached_behavior_set.3
935-
936-memcached_callback_get.3: memcached_callback.pod
937- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_callback.pod > memcached_callback_get.3
938-
939-memcached_callback_set.3: memcached_callback.pod
940- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_callback.pod > memcached_callback_set.3
941-
942-memcached_stat.3: memcached_stats.pod
943- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_stats.pod > memcached_stat.3
944-
945-memcached_stat_servername.3: memcached_stats.pod
946- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_stats.pod > memcached_stat_servername.3
947-
948-memcached_stat_get_value.3: memcached_stats.pod
949- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_stats.pod > memcached_stat_get_value.3
950-
951-memcached_stat_get_keys.3: memcached_stats.pod
952- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_stats.pod > memcached_stat_get_keys.3
953-
954-memcached_result_st.3: memcached_result_st.pod
955- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_st.3
956-
957-memcached_result_create.3: memcached_result_st.pod
958- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_create.3
959-
960-memcached_result_free.3: memcached_result_st.pod
961- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_free.3
962-
963-memcached_result_key_value.3: memcached_result_st.pod
964- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_key_value.3
965-
966-memcached_result_key_length.3: memcached_result_st.pod
967- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_key_length.3
968-
969-memcached_result_value.3: memcached_result_st.pod
970- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_value.3
971-
972-memcached_result_length.3: memcached_result_st.pod
973- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_length.3
974-
975-memcached_result_flags.3: memcached_result_st.pod
976- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_flags.3
977-
978-memcached_result_cas.3: memcached_result_st.pod
979- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_result_st.pod > memcached_result_cas.3
980-
981-memcached_version.3: memcached_version.pod
982- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_version.pod > memcached_version.3
983-
984-memcached_lib_version.3: memcached_version.pod
985- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_version.pod > memcached_lib_version.3
986-
987-memcached_flush_buffers.3: memcached_flush_buffers.pod
988- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_flush_buffers.pod > memcached_flush_buffers.3
989-
990-memcached_analyze.3: memcached_analyze.pod
991- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_analyze.pod > memcached_analyze.3
992-
993-memcached_generate_hash_value.3: memcached_generate_hash_value.pod
994- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_generate_hash_value.pod > memcached_generate_hash_value.3
995-
996-memcached_get_memory_allocators.3: memcached_memory_allocators.pod
997- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_memory_allocators.pod > memcached_get_memory_allocators.3
998-
999-memcached_set_memory_allocators.3: memcached_memory_allocators.pod
1000- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_memory_allocators.pod > memcached_set_memory_allocators.3
1001-
1002-memcached_get_user_data.3: memcached_user_data.pod
1003- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_user_data.pod > memcached_get_user_data.3
1004-
1005-memcached_set_user_data.3: memcached_user_data.pod
1006- ${POD2MAN} -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_user_data.pod > memcached_set_user_data.3
1007-
1008-memcached_pool_behavior_get.3: memcached_pool.pod
1009- ${POD2MAN} -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/memcached_pool.pod > memcached_pool_behavior_get.3
1010-
1011-memcached_pool_behavior_set.3: memcached_pool.pod
1012- ${POD2MAN} -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/memcached_pool.pod > memcached_pool_behavior_set.3
1013-
1014-memcached_pool_create.3: memcached_pool.pod
1015- ${POD2MAN} -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/memcached_pool.pod > memcached_pool_create.3
1016-
1017-memcached_pool_destroy.3: memcached_pool.pod
1018- ${POD2MAN} -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/memcached_pool.pod > memcached_pool_destroy.3
1019-
1020-memcached_pool_pop.3: memcached_pool.pod
1021- ${POD2MAN} -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/memcached_pool.pod > memcached_pool_pop.3
1022-
1023-memcached_pool_push.3: memcached_pool.pod
1024- ${POD2MAN} -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/memcached_pool.pod > memcached_pool_push.3
1025-
1026-memcp.1: memcp.pod
1027- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memcp.pod > memcp.1
1028-
1029-memslap.1: memslap.pod
1030- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memslap.pod > memslap.1
1031-
1032-memcapable.1: memcapable.pod
1033- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memcapable.pod > memcapable.1
1034-
1035-memcat.1: memcat.pod
1036- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memcat.pod > memcat.1
1037-
1038-memstat.1: memstat.pod
1039- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memstat.pod > memstat.1
1040-
1041-memrm.1: memrm.pod
1042- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memrm.pod > memrm.1
1043-
1044-memerror.1: memerror.pod
1045- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memerror.pod > memerror.1
1046-
1047-memdump.1: memdump.pod
1048- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memdump.pod > memdump.1
1049-
1050-memflush.1: memflush.pod
1051- ${POD2MAN} -c "libmemcached" -r "" -s 1 ${top_srcdir}/docs/memflush.pod > memflush.1
1052-
1053-hashkit_create.3: hashkit_create.pod
1054- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_create.pod > hashkit_create.3
1055-
1056-hashkit_clone.3: hashkit_create.pod
1057- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_create.pod > hashkit_clone.3
1058-
1059-hashkit_free.3: hashkit_create.pod
1060- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_create.pod > hashkit_free.3
1061-
1062-hashkit_is_allocated.3: hashkit_create.pod
1063- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_create.pod > hashkit_is_allocated.3
1064-
1065-hashkit_functions.3: hashkit_functions.pod
1066- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_functions.3
1067-
1068-hashkit_fnv1_64.3: hashkit_functions.pod
1069- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_fnv1_64.3
1070-
1071-hashkit_fnv1a_64.3: hashkit_functions.pod
1072- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_fnv1a_64.3
1073-
1074-hashkit_fnv1_32.3: hashkit_functions.pod
1075- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_fnv1_32.3
1076-
1077-hashkit_fnv1a_32.3: hashkit_functions.pod
1078- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_fnv1a_32.3
1079-
1080-hashkit_crc32.3: hashkit_functions.pod
1081- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_crc32.3
1082-
1083-hashkit_hsieh.3: hashkit_functions.pod
1084- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_hsieh.3
1085-
1086-hashkit_murmur.3: hashkit_functions.pod
1087- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_murmur.3
1088-
1089-hashkit_jenkins.3: hashkit_functions.pod
1090- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_jenkins.3
1091-
1092-hashkit_md5.3: hashkit_functions.pod
1093- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_functions.pod > hashkit_md5.3
1094-
1095-hashkit_value.3: hashkit_value.pod
1096- ${POD2MAN} -c "libhashkit" -r "" -s 3 ${top_srcdir}/docs/hashkit_value.pod > hashkit_value.3
1097-
1098-test-docs:
1099- ${PODCHECKER} $(top_srcdir)/docs/hashkit_create.pod
1100- ${PODCHECKER} $(top_srcdir)/docs/hashkit_functions.pod
1101- ${PODCHECKER} $(top_srcdir)/docs/hashkit_value.pod
1102- ${PODCHECKER} $(top_srcdir)/docs/libmemcached.pod
1103- ${PODCHECKER} $(top_srcdir)/docs/libmemcached_examples.pod
1104- ${PODCHECKER} $(top_srcdir)/docs/memcached_auto.pod
1105- ${PODCHECKER} $(top_srcdir)/docs/memcached_behavior.pod
1106- ${PODCHECKER} $(top_srcdir)/docs/memcached_callback.pod
1107- ${PODCHECKER} $(top_srcdir)/docs/memcached_create.pod
1108- ${PODCHECKER} $(top_srcdir)/docs/memcached_delete.pod
1109- ${PODCHECKER} $(top_srcdir)/docs/memcached_flush.pod
1110- ${PODCHECKER} $(top_srcdir)/docs/memcached_flush_buffers.pod
1111- ${PODCHECKER} $(top_srcdir)/docs/memcached_get.pod
1112- ${PODCHECKER} $(top_srcdir)/docs/memcached_memory_allocators.pod
1113- ${PODCHECKER} $(top_srcdir)/docs/memcached_pool.pod
1114- ${PODCHECKER} $(top_srcdir)/docs/memcached_quit.pod
1115- ${PODCHECKER} $(top_srcdir)/docs/memcached_server_st.pod
1116- ${PODCHECKER} $(top_srcdir)/docs/memcached_servers.pod
1117- ${PODCHECKER} $(top_srcdir)/docs/memcached_set.pod
1118- ${PODCHECKER} $(top_srcdir)/docs/memcached_stats.pod
1119- ${PODCHECKER} $(top_srcdir)/docs/memcached_strerror.pod
1120- ${PODCHECKER} $(top_srcdir)/docs/memcached_user_data.pod
1121- ${PODCHECKER} $(top_srcdir)/docs/memcached_verbosity.pod
1122- ${PODCHECKER} $(top_srcdir)/docs/memcached_version.pod
1123- ${PODCHECKER} $(top_srcdir)/docs/memcapable.pod
1124- ${PODCHECKER} $(top_srcdir)/docs/memcat.pod
1125- ${PODCHECKER} $(top_srcdir)/docs/memcp.pod
1126- ${PODCHECKER} $(top_srcdir)/docs/memerror.pod
1127- ${PODCHECKER} $(top_srcdir)/docs/memflush.pod
1128- ${PODCHECKER} $(top_srcdir)/docs/memrm.pod
1129- ${PODCHECKER} $(top_srcdir)/docs/memslap.pod
1130- ${PODCHECKER} $(top_srcdir)/docs/memstat.pod
1131-
1132-html-local:
1133- pod2htmltree "/libmemcached" .
1134-
1135+${CREATE_PAGES}:
1136+ @rm -f $@
1137+ ln -s ${top_srcdir}/docs/memcached_create.pod ${top_builddir}/docs/$@
1138+
1139+${SET_PAGES}:
1140+ @rm -f $@
1141+ ln -s ${top_srcdir}/docs/memcached_set.pod ${top_builddir}/docs/$@
1142+
1143+${DELETE_PAGES}:
1144+ @rm -f $@
1145+ ln -s ${top_srcdir}/docs/memcached_delete.pod ${top_builddir}/docs/$@
1146+
1147+${AUTO_PAGES}:
1148+ @rm -f $@
1149+ ln -s ${top_srcdir}/docs/memcached_auto.pod ${top_builddir}/docs/$@
1150+
1151+${GET_PAGES}:
1152+ @rm -f $@
1153+ ln -s ${top_srcdir}/docs/memcached_get.pod ${top_builddir}/docs/$@
1154+
1155+${SERVER_PAGES}:
1156+ @rm -f $@
1157+ ln -s ${top_srcdir}/docs/memcached_servers.pod ${top_builddir}/docs/$@
1158+
1159+${SERVER_ST_PAGES}:
1160+ @rm -f $@
1161+ ln -s ${top_srcdir}/docs/memcached_server_st.pod ${top_builddir}/docs/$@
1162+
1163+${GENERIC_PAGES}:
1164+ @rm -f $@
1165+ ln -s ${top_srcdir}/docs/$*.pod ${top_builddir}/docs/$@
1166+
1167+${BEHAVIOR_PAGES}:
1168+ @rm -f $@
1169+ ln -s ${top_srcdir}/docs/memcached_behavior.pod ${top_builddir}/docs/$@
1170+
1171+${CALLBACK_PAGES}:
1172+ @rm -f $@
1173+ ln -s ${top_srcdir}/docs/memcached_callback.pod ${top_builddir}/docs/$@
1174+
1175+${STATS_PAGES}:
1176+ @rm -f $@
1177+ ln -s ${top_srcdir}/docs/memcached_stats.pod ${top_builddir}/docs/$@
1178+
1179+${RESULT_PAGES}:
1180+ @rm -f $@
1181+ ln -s ${top_srcdir}/docs/memcached_result_st.pod ${top_builddir}/docs/$@
1182+
1183+${VERSION_PAGES}:
1184+ @rm -f $@
1185+ ln -s ${top_srcdir}/docs/memcached_version.pod ${top_builddir}/docs/$@
1186+
1187+${MEMORY_ALLOCATORS_PAGES}:
1188+ @rm -f $@
1189+ ln -s ${top_srcdir}/docs/memcached_memory_allocators.pod ${top_builddir}/docs/$@
1190+
1191+${USER_DATA_PAGES}:
1192+ @rm -f $@
1193+ ln -s ${top_srcdir}/docs/memcached_user_data.pod ${top_builddir}/docs/$@
1194+
1195+
1196+${POOL_PAGES}:
1197+ @rm -f $@
1198+ ln -s ${top_srcdir}/docs/memcached_pool.pod ${top_builddir}/docs/$@
1199+
1200+${HASHKIT_CREATE_PAGES}:
1201+ @rm -f $@
1202+ ln -s ${top_srcdir}/docs/hashkit_create.pod ${top_builddir}/docs/$@
1203+
1204+
1205+${HASHKIT_FUNCTIONS_PAGES}:
1206+ @rm -f $@
1207+ ln -s ${top_srcdir}/docs/hashkit_functions.pod ${top_builddir}/docs/$@
1208+
1209+${HASHKIT_ST_PAGES}:
1210+ @rm -f $@
1211+ ln -s ${top_srcdir}/docs/hashkit_value.pod ${top_builddir}/docs/$@
1212+
1213+test-docs: $(POD_FILES)
1214+ ${PODCHECKER} $(top_srcdir)/docs/$?
1215+
1216+html-local: html-pages html-index
1217+
1218+html-pages: $(HTML_FILES)
1219+
1220+html-index: html-pages
1221+ perl make_index.pl *.html > index.html
1222+
1223+SUFFIXES= .pop .pod .html .1 .3
1224+
1225+.pop: ${_set}
1226+
1227+.pop.html:
1228+ pod2html --infile=$< > $@
1229+
1230+.pop.1:
1231+ ${POD2MAN} -c "$*" -r "" -s 1 $< > $@
1232+
1233+.pop.3:
1234+ ${POD2MAN} -c "$*" -r "" -s 3 $< > $@
1235
1236=== modified file 'docs/libmemcached.pod'
1237--- docs/libmemcached.pod 2009-12-16 18:53:44 +0000
1238+++ docs/libmemcached.pod 2010-01-12 00:36:12 +0000
1239@@ -113,7 +113,7 @@
1240 =head1 HOME
1241
1242 To find out more information please check:
1243-L<http://tangent.org/552/libmemcached.html>
1244+L<https://launchpad.net/libmemcached>
1245
1246 =head1 AUTHOR
1247
1248
1249=== modified file 'docs/libmemcached_examples.pod'
1250--- docs/libmemcached_examples.pod 2009-12-16 18:53:44 +0000
1251+++ docs/libmemcached_examples.pod 2010-01-12 00:36:12 +0000
1252@@ -101,7 +101,7 @@
1253 =head1 HOME
1254
1255 To find out more information please check:
1256-L<http://tangent.org/552/libmemcached.html>
1257+L<https://launchpad.net/libmemcached>
1258
1259 =head1 AUTHOR
1260
1261
1262=== modified file 'docs/libmemcachedutil.pod'
1263--- docs/libmemcachedutil.pod 2009-05-12 00:51:25 +0000
1264+++ docs/libmemcachedutil.pod 2010-01-12 00:36:12 +0000
1265@@ -27,11 +27,11 @@
1266 =head1 HOME
1267
1268 To find out more information please check:
1269-L<http://tangent.org/552/libmemcached.html>
1270+L<https://launchpad.net/libmemcached>
1271
1272 =head1 AUTHOR
1273
1274-Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
1275+Trond Norbye, E<lt>trond.norbye@gmail.comE<gt>
1276
1277 =head1 SEE ALSO
1278
1279
1280=== added file 'docs/make_index.pl'
1281--- docs/make_index.pl 1970-01-01 00:00:00 +0000
1282+++ docs/make_index.pl 2010-01-12 00:36:12 +0000
1283@@ -0,0 +1,30 @@
1284+#!/usr/bin/perl -w
1285+
1286+use strict;
1287+use CGI;
1288+
1289+sub main {
1290+ my $cgi = new CGI;
1291+
1292+ print $cgi->start_html('Libmemcached Documentation') . "\n";
1293+ print $cgi->h1('Libmemcached Documentation') . "\n";
1294+
1295+ print $cgi->a({ href => "libmemcached.html" }, "Introduction to Libmemcached") . $cgi->br() . "\n";
1296+ print $cgi->a({ href => "libmemcached_examples.html" }, "Libmemcached Examples") . $cgi->br() . "\n";
1297+ print $cgi->br() . "\n";
1298+ print $cgi->br() . "\n";
1299+
1300+ foreach (@ARGV)
1301+ {
1302+ my $url= $_;
1303+ my $name= $_;
1304+ $name =~ s/\.html//g;
1305+ next if $name eq 'index';
1306+ next if $name eq 'libmemcached';
1307+ next if $name eq 'libmemcached_examples';
1308+ print "<li\>" . $cgi->a({ href => $url }, $name) . $cgi->br() . "\n";
1309+ }
1310+ print $cgi->end_html;
1311+}
1312+
1313+main();
1314
1315=== modified file 'docs/memcached_analyze.pod'
1316--- docs/memcached_analyze.pod 2009-12-16 18:53:44 +0000
1317+++ docs/memcached_analyze.pod 2010-01-12 00:36:12 +0000
1318@@ -40,7 +40,7 @@
1319 =head1 HOME
1320
1321 To find out more information please check:
1322-L<http://tangent.org/552/libmemcached.html>
1323+L<https://launchpad.net/libmemcached>
1324
1325 =head1 AUTHOR
1326
1327
1328=== modified file 'docs/memcached_auto.pod'
1329--- docs/memcached_auto.pod 2009-12-16 18:53:44 +0000
1330+++ docs/memcached_auto.pod 2010-01-12 00:36:12 +0000
1331@@ -124,7 +124,7 @@
1332 =head1 HOME
1333
1334 To find out more information please check:
1335-L<http://tangent.org/552/libmemcached.html>
1336+L<https://launchpad.net/libmemcached>
1337
1338 =head1 AUTHOR
1339
1340
1341=== modified file 'docs/memcached_behavior.pod'
1342--- docs/memcached_behavior.pod 2010-01-02 04:50:19 +0000
1343+++ docs/memcached_behavior.pod 2010-01-12 00:36:12 +0000
1344@@ -234,7 +234,7 @@
1345 =head1 HOME
1346
1347 To find out more information please check:
1348-L<http://tangent.org/552/libmemcached.html>
1349+L<https://launchpad.net/libmemcached>
1350
1351 =head1 AUTHOR
1352
1353
1354=== modified file 'docs/memcached_callback.pod'
1355--- docs/memcached_callback.pod 2009-12-16 18:53:44 +0000
1356+++ docs/memcached_callback.pod 2010-01-12 00:36:12 +0000
1357@@ -109,7 +109,7 @@
1358 =head1 HOME
1359
1360 To find out more information please check:
1361-L<http://tangent.org/552/libmemcached.html>
1362+L<https://launchpad.net/libmemcached>
1363
1364 =head1 AUTHOR
1365
1366
1367=== modified file 'docs/memcached_create.pod'
1368--- docs/memcached_create.pod 2009-12-16 18:53:44 +0000
1369+++ docs/memcached_create.pod 2010-01-12 00:36:12 +0000
1370@@ -1,6 +1,6 @@
1371 =head1 NAME
1372
1373-memcached_create, memcached_free - Create a memcached_st structure
1374+memcached_create, memcached_free, memcached_clone, memcached_servers_reset- Create a memcached_st structure
1375
1376 =head1 LIBRARY
1377
1378@@ -16,6 +16,8 @@
1379
1380 memcached_st *memcached_clone (memcached_st *destination, memcached_st *source);
1381
1382+ void memcached_servers_reset(memcached_st);
1383+
1384 =head1 DESCRIPTION
1385
1386 memcached_create() is used to create a C<memcached_st> structure that will then
1387@@ -28,6 +30,9 @@
1388 the argument for the source to clone, it is the same as a call to memcached_create().
1389 If the destination argument is NULL a C<memcached_st> will be allocated for you.
1390
1391+memcached_servers_reset() allows you to zero out the list of servers that
1392+the memcached_st has.
1393+
1394 To clean up memory associated with a C<memcached_st> structure you should pass
1395 it to memcached_free() when you are finished using it. memcached_free() is
1396 the only way to make sure all memory is deallocated when you finish using
1397@@ -48,7 +53,7 @@
1398 =head1 HOME
1399
1400 To find out more information please check:
1401-L<http://tangent.org/552/libmemcached.html>
1402+L<https://launchpad.net/libmemcached>
1403
1404 =head1 AUTHOR
1405
1406
1407=== modified file 'docs/memcached_delete.pod'
1408--- docs/memcached_delete.pod 2009-12-16 18:53:44 +0000
1409+++ docs/memcached_delete.pod 2010-01-12 00:36:12 +0000
1410@@ -44,7 +44,7 @@
1411 =head1 HOME
1412
1413 To find out more information please check:
1414-L<http://tangent.org/552/libmemcached.html>
1415+L<https://launchpad.net/libmemcached>
1416
1417 =head1 AUTHOR
1418
1419
1420=== modified file 'docs/memcached_dump.pod'
1421--- docs/memcached_dump.pod 2009-12-16 18:53:44 +0000
1422+++ docs/memcached_dump.pod 2010-01-12 00:36:12 +0000
1423@@ -39,7 +39,7 @@
1424 =head1 HOME
1425
1426 To find out more information please check:
1427-L<http://tangent.org/552/libmemcached.html>
1428+L<https://launchpad.net/libmemcached>
1429
1430 =head1 AUTHOR
1431
1432
1433=== modified file 'docs/memcached_flush.pod'
1434--- docs/memcached_flush.pod 2009-12-16 18:53:44 +0000
1435+++ docs/memcached_flush.pod 2010-01-12 00:36:12 +0000
1436@@ -32,7 +32,7 @@
1437 =head1 HOME
1438
1439 To find out more information please check:
1440-L<http://tangent.org/552/libmemcached.html>
1441+L<https://launchpad.net/libmemcached>
1442
1443 =head1 AUTHOR
1444
1445
1446=== modified file 'docs/memcached_flush_buffers.pod'
1447--- docs/memcached_flush_buffers.pod 2009-12-16 18:53:44 +0000
1448+++ docs/memcached_flush_buffers.pod 2010-01-12 00:36:12 +0000
1449@@ -28,11 +28,11 @@
1450 =head1 HOME
1451
1452 To find out more information please check:
1453-L<http://tangent.org/552/libmemcached.html>
1454+L<https://launchpad.net/libmemcached>
1455
1456 =head1 AUTHOR
1457
1458-Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
1459+Trond Norbye, E<lt>trond.norbye@gmail.comE<gt>
1460
1461 =head1 SEE ALSO
1462
1463
1464=== modified file 'docs/memcached_generate_hash_value.pod'
1465--- docs/memcached_generate_hash_value.pod 2010-01-02 04:50:19 +0000
1466+++ docs/memcached_generate_hash_value.pod 2010-01-12 00:36:12 +0000
1467@@ -46,7 +46,7 @@
1468 =head1 HOME
1469
1470 To find out more information please check:
1471-L<http://tangent.org/552/libmemcached.html>
1472+L<https://launchpad.net/libmemcached>
1473
1474 =head1 AUTHOR
1475
1476
1477=== modified file 'docs/memcached_get.pod'
1478--- docs/memcached_get.pod 2009-12-16 18:53:44 +0000
1479+++ docs/memcached_get.pod 2010-01-12 00:36:12 +0000
1480@@ -157,7 +157,7 @@
1481 =head1 HOME
1482
1483 To find out more information please check:
1484-L<http://tangent.org/552/libmemcached.html>
1485+L<https://launchpad.net/libmemcached>
1486
1487 =head1 AUTHOR
1488
1489
1490=== modified file 'docs/memcached_memory_allocators.pod'
1491--- docs/memcached_memory_allocators.pod 2009-12-16 18:53:44 +0000
1492+++ docs/memcached_memory_allocators.pod 2010-01-12 00:36:12 +0000
1493@@ -67,11 +67,11 @@
1494 =head1 HOME
1495
1496 To find out more information please check:
1497-L<http://tangent.org/552/libmemcached.html>
1498+L<https://launchpad.net/libmemcached>
1499
1500 =head1 AUTHOR
1501
1502-Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
1503+Trond Norbye, E<lt>trond.norbye@gmail.comE<gt>
1504
1505 =head1 SEE ALSO
1506
1507
1508=== modified file 'docs/memcached_pool.pod'
1509--- docs/memcached_pool.pod 2009-12-16 18:53:44 +0000
1510+++ docs/memcached_pool.pod 2010-01-12 00:36:12 +0000
1511@@ -86,11 +86,11 @@
1512 =head1 HOME
1513
1514 To find out more information please check:
1515-L<http://tangent.org/552/libmemcached.html>
1516+L<https://launchpad.net/libmemcached>
1517
1518 =head1 AUTHOR
1519
1520-Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
1521+Trond Norbye, E<lt>trond.norbye@gmail.comE<gt>
1522
1523 =head1 SEE ALSO
1524
1525
1526=== modified file 'docs/memcached_quit.pod'
1527--- docs/memcached_quit.pod 2009-05-12 15:56:43 +0000
1528+++ docs/memcached_quit.pod 2010-01-12 00:36:12 +0000
1529@@ -33,7 +33,7 @@
1530 =head1 HOME
1531
1532 To find out more information please check:
1533-L<http://tangent.org/552/libmemcached.html>
1534+L<https://launchpad.net/libmemcached>
1535
1536 =head1 AUTHOR
1537
1538
1539=== modified file 'docs/memcached_result_st.pod'
1540--- docs/memcached_result_st.pod 2009-12-16 18:53:44 +0000
1541+++ docs/memcached_result_st.pod 2010-01-12 00:36:12 +0000
1542@@ -101,7 +101,7 @@
1543 =head1 HOME
1544
1545 To find out more information please check:
1546-L<http://tangent.org/552/libmemcached.html>
1547+L<https://launchpad.net/libmemcached>
1548
1549 =head1 AUTHOR
1550
1551
1552=== modified file 'docs/memcached_server_st.pod'
1553--- docs/memcached_server_st.pod 2009-12-16 18:53:44 +0000
1554+++ docs/memcached_server_st.pod 2010-01-12 00:36:12 +0000
1555@@ -61,7 +61,7 @@
1556 =head1 HOME
1557
1558 To find out more information please check:
1559-L<http://tangent.org/552/libmemcached.html>
1560+L<https://launchpad.net/libmemcached>
1561
1562 =head1 AUTHOR
1563
1564
1565=== modified file 'docs/memcached_servers.pod'
1566--- docs/memcached_servers.pod 2009-12-19 01:28:01 +0000
1567+++ docs/memcached_servers.pod 2010-01-12 00:36:12 +0000
1568@@ -1,6 +1,6 @@
1569 =head1 NAME
1570
1571-memcached_server_count, memcached_server_list, memcached_server_add, memcached_server_push, memcached_server_get_last_disconnect - Manage server list
1572+memcached_server_count, memcached_server_list, memcached_server_add, memcached_server_push, memcached_server_get_last_disconnect, memcached_server_cursor - Manage server list
1573
1574 =head1 LIBRARY
1575
1576@@ -10,7 +10,7 @@
1577
1578 #include <memcached.h>
1579
1580- unsigned int memcached_server_count (memcached_st *ptr);
1581+ uint32_t memcached_server_count (memcached_st *ptr);
1582
1583 memcached_server_st *
1584 memcached_server_list (memcached_st *ptr);
1585@@ -41,6 +41,12 @@
1586 memcached_server_st *
1587 memcached_server_get_last_disconnect (memcached_st *ptr)
1588
1589+ memcached_return_t
1590+ memcached_server_cursor(memcached_st *ptr,
1591+ memcached_server_fn *callback,
1592+ void *context,
1593+ uint32_t number_of_callbacks);
1594+
1595
1596 =head1 DESCRIPTION
1597
1598@@ -90,6 +96,13 @@
1599 server is currently dead but if the library is reporting a server is,
1600 the returned server is a very good candidate.
1601
1602+memcached_server_cursor() takes a memcached_st and loops through the
1603+list of hosts currently in the cursor calling the list of callback
1604+functions provided. You can optionally pass in a value via
1605+context which will be provided to each callback function. An error
1606+return from any callback will terminate the loop. memcached_server_cursor()
1607+is passed the original caller memcached_st in its current state.
1608+
1609 =head1 RETURN
1610
1611 Varies, see particular functions.
1612@@ -97,7 +110,7 @@
1613 =head1 HOME
1614
1615 To find out more information please check:
1616-L<http://tangent.org/552/libmemcached.html>
1617+L<https://launchpad.net/libmemcached>
1618
1619 =head1 AUTHOR
1620
1621
1622=== modified file 'docs/memcached_set.pod'
1623--- docs/memcached_set.pod 2009-12-16 18:53:44 +0000
1624+++ docs/memcached_set.pod 2010-01-12 00:36:12 +0000
1625@@ -173,7 +173,7 @@
1626 =head1 HOME
1627
1628 To find out more information please check:
1629-L<http://tangent.org/552/libmemcached.html>
1630+L<https://launchpad.net/libmemcached>
1631
1632 =head1 AUTHOR
1633
1634
1635=== modified file 'docs/memcached_stats.pod'
1636--- docs/memcached_stats.pod 2009-12-16 18:53:44 +0000
1637+++ docs/memcached_stats.pod 2010-01-12 00:36:12 +0000
1638@@ -70,7 +70,7 @@
1639 =head1 HOME
1640
1641 To find out more information please check:
1642-L<http://tangent.org/552/libmemcached.html>
1643+L<https://launchpad.net/libmemcached>
1644
1645 =head1 AUTHOR
1646
1647
1648=== modified file 'docs/memcached_strerror.pod'
1649--- docs/memcached_strerror.pod 2009-12-19 01:28:01 +0000
1650+++ docs/memcached_strerror.pod 2010-01-12 00:36:12 +0000
1651@@ -33,7 +33,7 @@
1652 =head1 HOME
1653
1654 To find out more information please check:
1655-L<http://tangent.org/552/libmemcached.html>
1656+L<https://launchpad.net/libmemcached>
1657
1658 =head1 AUTHOR
1659
1660
1661=== modified file 'docs/memcached_user_data.pod'
1662--- docs/memcached_user_data.pod 2009-12-16 18:53:44 +0000
1663+++ docs/memcached_user_data.pod 2010-01-12 00:36:12 +0000
1664@@ -36,11 +36,11 @@
1665 =head1 HOME
1666
1667 To find out more information please check:
1668-L<http://tangent.org/552/libmemcached.html>
1669+L<https://launchpad.net/libmemcached>
1670
1671 =head1 AUTHOR
1672
1673-Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
1674+Trond Norbye, E<lt>trond.norbye@gmail.comE<gt>
1675
1676 =head1 SEE ALSO
1677
1678
1679=== modified file 'docs/memcached_verbosity.pod'
1680--- docs/memcached_verbosity.pod 2009-12-16 18:53:44 +0000
1681+++ docs/memcached_verbosity.pod 2010-01-12 00:36:12 +0000
1682@@ -28,7 +28,7 @@
1683 =head1 HOME
1684
1685 To find out more information please check:
1686-L<http://tangent.org/552/libmemcached.html>
1687+L<https://launchpad.net/libmemcached>
1688
1689 =head1 AUTHOR
1690
1691
1692=== modified file 'docs/memcached_version.pod'
1693--- docs/memcached_version.pod 2009-12-16 18:53:44 +0000
1694+++ docs/memcached_version.pod 2010-01-12 00:36:12 +0000
1695@@ -42,7 +42,7 @@
1696 =head1 HOME
1697
1698 To find out more information please check:
1699-L<http://tangent.org/552/libmemcached.html>
1700+L<https://launchpad.net/libmemcached>
1701
1702 =head1 AUTHOR
1703
1704
1705=== modified file 'docs/memcapable.pod'
1706--- docs/memcapable.pod 2010-01-02 04:50:19 +0000
1707+++ docs/memcapable.pod 2010-01-12 00:36:12 +0000
1708@@ -47,11 +47,11 @@
1709 =head1 HOME
1710
1711 To find out more information please check:
1712-L<http://tangent.org/552/libmemcached.html>
1713+L<https://launchpad.net/libmemcached>
1714
1715 =head1 AUTHOR
1716
1717-Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
1718+Trond Norbye, E<lt>trond.norbye@gmail.comE<gt>
1719
1720 =head1 SEE ALSO
1721
1722
1723=== modified file 'docs/memcat.pod'
1724--- docs/memcat.pod 2009-05-11 12:07:17 +0000
1725+++ docs/memcat.pod 2010-01-12 00:36:12 +0000
1726@@ -21,7 +21,7 @@
1727 =head1 HOME
1728
1729 To find out more information please check:
1730-L<http://tangent.org/552/libmemcached.html>
1731+L<https://launchpad.net/libmemcached>
1732
1733 =head1 AUTHOR
1734
1735
1736=== modified file 'docs/memcp.pod'
1737--- docs/memcp.pod 2009-05-11 12:07:17 +0000
1738+++ docs/memcp.pod 2010-01-12 00:36:12 +0000
1739@@ -24,7 +24,7 @@
1740 =head1 HOME
1741
1742 To find out more information please check:
1743-L<http://tangent.org/552/libmemcached.html>
1744+L<https://launchpad.net/libmemcached>
1745
1746 =head1 AUTHOR
1747
1748
1749=== modified file 'docs/memdump.pod'
1750--- docs/memdump.pod 2009-05-19 20:32:02 +0000
1751+++ docs/memdump.pod 2010-01-12 00:36:12 +0000
1752@@ -17,7 +17,7 @@
1753 =head1 HOME
1754
1755 To find out more information please check:
1756-L<http://tangent.org/552/libmemcached.html>
1757+L<https://launchpad.net/libmemcached>
1758
1759 =head1 AUTHOR
1760
1761
1762=== modified file 'docs/memerror.pod'
1763--- docs/memerror.pod 2009-05-11 12:07:17 +0000
1764+++ docs/memerror.pod 2010-01-12 00:36:12 +0000
1765@@ -16,7 +16,7 @@
1766 =head1 HOME
1767
1768 To find out more infoerroration please check:
1769-L<http://tangent.org/552/libmemcached.html>
1770+L<https://launchpad.net/libmemcached>
1771
1772 =head1 AUTHOR
1773
1774
1775=== modified file 'docs/memflush.pod'
1776--- docs/memflush.pod 2009-05-11 12:07:17 +0000
1777+++ docs/memflush.pod 2010-01-12 00:36:12 +0000
1778@@ -19,7 +19,7 @@
1779 =head1 HOME
1780
1781 To find out more information please check:
1782-L<http://tangent.org/552/libmemcached.html>
1783+L<https://launchpad.net/libmemcached>
1784
1785 =head1 AUTHOR
1786
1787
1788=== modified file 'docs/memrm.pod'
1789--- docs/memrm.pod 2009-05-11 12:07:17 +0000
1790+++ docs/memrm.pod 2010-01-12 00:36:12 +0000
1791@@ -18,7 +18,7 @@
1792 =head1 HOME
1793
1794 To find out more information please check:
1795-L<http://tangent.org/552/libmemcached.html>
1796+L<https://launchpad.net/libmemcached>
1797
1798 =head1 AUTHOR
1799
1800
1801=== modified file 'docs/memslap.pod'
1802--- docs/memslap.pod 2010-01-05 22:55:54 +0000
1803+++ docs/memslap.pod 2010-01-12 00:36:12 +0000
1804@@ -88,14 +88,14 @@
1805
1806 =head2 Effective implementation of generating key and value
1807
1808-In order to improve time efficiency and space efficiency, asynchronous
1809+In order to improve time efficiency and space efficiency,
1810 memslap creates a random characters table with 10M characters. All the
1811 suffixes of keys and values are generated from this random characters table.
1812
1813 Memslap uses the offset in the character table and the length
1814 of the string to identify a string. It can save much memory.
1815 Each key contains two parts, a prefix and a suffix. The prefix is an
1816-uint64_t, 8 bytes. In order to verify the data set before, asynchronous
1817+uint64_t, 8 bytes. In order to verify the data set before,
1818 memslap need to ensure each key is unique, so it uses the prefix to identify
1819 a key. The prefix cannot include illegal characters, such as ‘\r’, ‘\n’,
1820 ‘\0’ and ‘ ‘. And memslap has an algorithm to ensure that.
1821@@ -188,7 +188,7 @@
1822
1823 =back
1824
1825-The user must specify one server at least to run asynchronous memslap. The
1826+The user must specify one server at least to run memslap. The
1827 rest of the parameters have default values, as shown below:
1828
1829 Thread number = 1 Concurrency = 16
1830@@ -221,7 +221,7 @@
1831
1832 All the distributions are read from the configuration file specified by user
1833 with “—cfg_cmd” option. If the user does not specify a configuration file,
1834-asynchronous memslap will run with the default distribution (key size = 64,
1835+memslap will run with the default distribution (key size = 64,
1836 value size = 1024, get/set = 9:1). For information on how to edit the
1837 configuration file, refer to the “Configuration File” section.
1838
1839@@ -232,22 +232,22 @@
1840 The minimum value size is 1 bytes; the maximum value size is 1M bytes. The
1841 precision of proportion is 0.001. The proportion of distribution will be
1842 rounded to 3 decimal places.
1843-Currently, asynchronous memslap only supports set and get commands. And it
1844+Currently, memslap only supports set and get commands. And it
1845 supports 100% set and 100% get. For 100% get, it will preset some objects to
1846 the server.
1847
1848 =head2 Multi-thread and concurrency
1849
1850-The high performance of asynchronous memslap benefits from the special
1851+The high performance of memslap benefits from the special
1852 schedule of thread and concurrency. It’s important to specify the proper
1853 number of them. The default number of threads is 1; the default number of
1854 concurrency is 16. The user can use “—threads” and “--concurrency” to
1855 specify these variables.
1856
1857 If the system supports setting CPU affinity and the number of threads
1858-specified by the user is greater than 1, asynchronous memslap will try to
1859+specified by the user is greater than 1, memslap will try to
1860 bind each thread to a different CPU core. So if you want to get the best
1861-performance asynchronous memslap, it is better to specify the number of
1862+performance memslap, it is better to specify the number of
1863 thread equal to the number of CPU cores. The number of threads specified by
1864 the user can also be less or greater than the number of CPU cores. Because
1865 of the limitation of implementation, the number of concurrencies could be
1866@@ -277,15 +277,15 @@
1867
1868 --threads=24 --concurrency=288
1869
1870-The asynchronous memslap performs very well, when
1871+The memslap performs very well, when
1872 used to test the performance of memcached servers.
1873 Most of the time, the bottleneck is the network or
1874 the server. If for some reason the user wants to
1875-limit the performance of asynchronous memslap, there
1876+limit the performance of memslap, there
1877 are two ways to do this:
1878
1879 Decrease the number of threads and concurrencies.
1880-Use the option “--tps” that Asynchronous memslap
1881+Use the option “--tps” that memslap
1882 provides to limit the throughput. This option allows
1883 the user to get the expected throughput. For
1884 example, assume that the maximum throughput is 50
1885@@ -298,7 +298,7 @@
1886 Most of the time, the user does not need to specify the window size. The
1887 default window size is 10k. For Schooner Memcached, the user can specify
1888 different window sizes to get different cache miss rates based on the test
1889-case. Asynchronous memslap supports cache miss rate between 0% and 100%.
1890+case. Memslap supports cache miss rate between 0% and 100%.
1891 If you use this utility to test the performance of Schooner Memcached, you
1892 can specify a proper window size to get the expected cache miss rate. The
1893 formula for calculating window size is as follows:
1894@@ -341,7 +341,7 @@
1895
1896 =head2 Verification
1897
1898-Asynchronous memslap supports both data verification and expire-time
1899+Memslap supports both data verification and expire-time
1900 verification. The user can use "--verify=" or "-v" to specify the proportion
1901 of data verification. In theory, it supports 100% data verification. The
1902 user can use "--exp_verify=" or "-e" to specify the proportion of
1903@@ -351,14 +351,14 @@
1904
1905 For example: --exp_verify=0.01 –verify=0.1 , it means that 1% of the objects
1906 set with expire-time, 10% of the objects gotten will be verified. If the
1907-objects are gotten, asynchronous memslap will verify the expire-time and
1908+objects are gotten, memslap will verify the expire-time and
1909 value.
1910
1911 =head2 multi-servers and multi-clients
1912
1913-Asynchronous memslap supports multi-servers based on self-governed thread.
1914+Memslap supports multi-servers based on self-governed thread.
1915 There is a limitation that the number of servers cannot be greater than the
1916-number of threads. Asynchronous memslap assigns one thread to handle one
1917+number of threads. Memslap assigns one thread to handle one
1918 server at least. The user can use the "--servers=" or "-s" option to specify
1919 multi-servers.
1920
1921@@ -371,18 +371,18 @@
1922 and 4 handle server 1 (10.1.1.2); and thread 2 and 5 handle server 2
1923 (10.1.1.3).
1924
1925-All the threads and concurrencies in asynchronous memslap are self-governed.
1926+All the threads and concurrencies in memslap are self-governed.
1927
1928-So is asynchronous memslap. The user can start up several asynchronous
1929-memslap instances. The user can run asynchronous memslap on different client
1930+So is memslap. The user can start up several
1931+memslap instances. The user can run memslap on different client
1932 machines to communicate with the same memcached server at the same. It is
1933-recommended that the user start different asynchronous memslap on different
1934+recommended that the user start different memslap on different
1935 machines using the same configuration.
1936
1937 =head2 Run with execute number mode or time mode
1938
1939-The default asynchronous memslap runs with time mode. The default run time
1940-is 10 minutes. If it times out, asynchronous memslap will exit. Do not
1941+The default memslap runs with time mode. The default run time
1942+is 10 minutes. If it times out, memslap will exit. Do not
1943 specify both execute number mode and time mode at the same time; just
1944 specify one instead.
1945
1946@@ -400,7 +400,7 @@
1947
1948 --stat_freq=20s
1949
1950-asynchronous memslap will dump the statistics of the commands (get and set) at the frequency of every 20
1951+Memslap will dump the statistics of the commands (get and set) at the frequency of every 20
1952 seconds.
1953
1954 For more information on the format of dumping statistic information, refer to “Format of Output” section.
1955@@ -408,23 +408,22 @@
1956 =head2 Multi-get
1957
1958 The user can use "--division=" or "-d" to specify multi-get keys count.
1959-Asynchronous memslap by default does single get with TCP. Asynchronous
1960-memslap also supports data verification and expire-time verification for
1961-multi-get.
1962+Memslap by default does single get with TCP. Memslap also supports data
1963+verification and expire-time verification for multi-get.
1964
1965-Asynchronous memslap supports multi-get with both TCP and UDP. Because of
1966+Memslap supports multi-get with both TCP and UDP. Because of
1967 the different implementation of the ASCII protocol and binary protocol,
1968 there are some differences between the two. For the ASCII protocol,
1969-asynchronous memslap sends one “multi-get” to the server once. For the
1970-binary protocol, asynchronous memslap sends several single get commands
1971+memslap sends one “multi-get” to the server once. For the
1972+binary protocol, memslap sends several single get commands
1973 together as “multi-get” to the server.
1974
1975 =head2 UDP and TCP
1976
1977-Asynchronous memslap supports both UDP and TCP. For TCP, asynchronous
1978+Memslap supports both UDP and TCP. For TCP,
1979 memslap does not reconnect the memcached server if socket connections are
1980 lost. If all the socket connections are lost or memcached server crashes,
1981-asynchronous memslap will exit. If the user specifies the “--reconnect”
1982+memslap will exit. If the user specifies the “--reconnect”
1983 option when socket connections are lost, it will reconnect them.
1984
1985 User can use “--udp” to enable the UDP feature, but UDP comes with some
1986@@ -449,10 +448,10 @@
1987
1988 For example: --facebook --division=50 --conn_sock=200
1989
1990-The above command means that asynchronous memslap will do facebook test,
1991+The above command means that memslap will do facebook test,
1992 each concurrency has 200 socket TCP connections and one UDP socket.
1993
1994-Asynchronous memslap sets objects with the TCP socket, and multi-gets 50
1995+Memslap sets objects with the TCP socket, and multi-gets 50
1996 objects once with the UDP socket.
1997
1998 If you specify "--division=50", the key size must be less that 25 bytes
1999@@ -468,16 +467,16 @@
2000 --servers=10.1.1.1:11211,10.1.1.2:11212 –rep_write=2
2001
2002 The above command means that there are 2 replication memcached servers,
2003-asynchronous memslap will set objects to both server 0 and server 1, get
2004+memslap will set objects to both server 0 and server 1, get
2005 objects which are set to server 0 before from server 1, and also get objects
2006 which are set to server 1 before from server 0. If server 0 crashes,
2007-asynchronous memslap will only get objects from server 1. If server 0 comes
2008-back to life again, asynchronous memslap will reconnect server 0. If both
2009-server 0 and server 1 crash, asynchronous memslap will exit.
2010+memslap will only get objects from server 1. If server 0 comes
2011+back to life again, memslap will reconnect server 0. If both
2012+server 0 and server 1 crash, memslap will exit.
2013
2014 =head2 Supports thousands of TCP connections
2015
2016-Start asynchronous memslap with "--conn_sock=" or "-n" to enable this
2017+Start memslap with "--conn_sock=" or "-n" to enable this
2018 feature. Make sure that your system can support opening thousands of files
2019 and creating thousands of sockets. However, this feature does not support
2020 reconnection if sockets disconnect.
2021@@ -486,14 +485,14 @@
2022
2023 --threads=8 --concurrency=128 --conn_sock=128
2024
2025-The above command means that asynchronous memslap starts up 8 threads, each
2026+The above command means that memslap starts up 8 threads, each
2027 thread has 16 concurrencies, each concurrency has 128 TCP socket
2028 connections, and the total number of TCP socket connections is 128 * 128 =
2029 16384.
2030
2031 =head2 Supports binary protocol
2032
2033-Start asynchronous memslap with "--binary" or "-B" options to enable this
2034+Start memslap with "--binary" or "-B" options to enable this
2035 feature. It supports all the above features except UDP, because the latest
2036 memcached 1.3.3 does not implement binary UDP protocol.
2037
2038@@ -501,7 +500,7 @@
2039
2040 --binary
2041
2042-Since memcached 1.3.3 doesn't implement binary UDP protocol, asynchronous
2043+Since memcached 1.3.3 doesn't implement binary UDP protocol,
2044 memslap does not support UDP. In addition, memcached 1.3.3 does not support
2045 multi-get. If you specify "--division=50" option, it just sends 50 get
2046 commands together as “mulit-get” to the server.
2047@@ -520,7 +519,7 @@
2048 #start_len must be equal to or greater than 16
2049 #end_len must be equal to or less than 250
2050 #start_len must be equal to or greater than end_len
2051- #asynchronous memslap will generate keys according to the key range
2052+ #memslap will generate keys according to the key range
2053 #proportion: indicates keys generated from one range accounts for the total
2054 generated keys
2055 #
2056@@ -545,7 +544,7 @@
2057 #start_len must be equal to or greater than 1
2058 #end_len must be equal to or less than 1M
2059 #start_len must be equal to or greater than end_len
2060- #asynchronous memslap will generate values according to the value range
2061+ #memslap will generate values according to the value range
2062 #proportion: indicates values generated from one range accounts for the
2063 total generated values
2064 #
2065@@ -566,7 +565,7 @@
2066 #cmd
2067 #cmd_type cmd_proportion
2068 #
2069- #currently asynchronous memslap only supports get and set command.
2070+ #currently memslap only supports get and set command.
2071 #
2072 #cmd_type
2073 #set 0
2074@@ -587,7 +586,7 @@
2075
2076 =head1 Format of output
2077
2078-At the beginning, asynchronous memslap displays some configuration information as follows:
2079+At the beginning, memslap displays some configuration information as follows:
2080
2081 =over 4
2082
2083@@ -605,21 +604,21 @@
2084
2085 =back
2086
2087-=head4 Where
2088+=head2 Where
2089
2090 =over 4
2091
2092 =item threads count
2093
2094-The number of threads asynchronous memslap runs with.
2095+The number of threads memslap runs with.
2096
2097 =item concurrency
2098
2099-The number of concurrencies asynchronous memslap runs with.
2100+The number of concurrencies memslap runs with.
2101
2102 =item run time
2103
2104-How long to run asynchronous memslap.
2105+How long to run memslap.
2106
2107 =item windows size
2108
2109@@ -665,7 +664,7 @@
2110 117.93 195.60
2111 ---------------------------------------------------------------------------------------------------------------------------------
2112
2113-=head4 Where
2114+=head2 Where
2115
2116 =over 4
2117
2118@@ -727,7 +726,7 @@
2119
2120 =back
2121
2122-At the end, asynchronous memslap will output something like this:
2123+At the end, memslap will output something like this:
2124
2125 ---------------------------------------------------------------------------------------------------------------------------------
2126 Get Statistics (1257956 events)
2127@@ -780,7 +779,7 @@
2128 Run time: 20.0s Ops: 1397754 TPS: 69817 Net_rate: 59.4M/s
2129 ---------------------------------------------------------------------------------------------------------------------------------
2130
2131-=head4 Where
2132+=head2 Where
2133
2134 =over 4
2135
2136@@ -984,8 +983,6 @@
2137 =head1 HOME
2138
2139 To find out more information please check:
2140-L<http://tangent.org/552/libmemcached.html>
2141-
2142 L<http://launchpad.org/libmemcached>
2143
2144 =head1 AUTHORS
2145
2146=== modified file 'docs/memstat.pod'
2147--- docs/memstat.pod 2009-05-11 12:07:17 +0000
2148+++ docs/memstat.pod 2010-01-12 00:36:12 +0000
2149@@ -19,7 +19,7 @@
2150 =head1 HOME
2151
2152 To find out more information please check:
2153-L<http://tangent.org/552/libmemcached.html>
2154+L<http://launchpad.org/libmemcached>
2155
2156 =head1 AUTHOR
2157
2158
2159=== removed file 'libhashkit/Makefile.am'
2160--- libhashkit/Makefile.am 2009-12-17 17:28:30 +0000
2161+++ libhashkit/Makefile.am 1970-01-01 00:00:00 +0000
2162@@ -1,45 +0,0 @@
2163-# HashKit
2164-# Copyright (C) 2009 Brian Aker
2165-# All rights reserved.
2166-#
2167-# Use and distribution licensed under the BSD license. See
2168-# the COPYING file in the parent directory for full text.
2169-
2170-lib_LTLIBRARIES= libhashkit.la
2171-
2172-libhashkitincludedir= ${includedir}/libhashkit
2173-
2174-dist_libhashkitinclude_HEADERS= \
2175- algorithm.h \
2176- behavior.h \
2177- hashkit.h \
2178- strerror.h \
2179- types.h \
2180- visibility.h
2181-
2182-noinst_HEADERS= \
2183- common.h
2184-
2185-libhashkit_la_SOURCES= \
2186- crc32.c \
2187- behavior.c \
2188- default.c \
2189- fnv.c \
2190- hashkit.c \
2191- jenkins.c \
2192- ketama.c \
2193- md5.c \
2194- murmur.c \
2195- strerror.c
2196-
2197-if INCLUDE_HSIEH_SRC
2198-libhashkit_la_SOURCES+= hsieh.c
2199-endif
2200-
2201-libhashkit_la_CFLAGS= \
2202- ${AM_CFLAGS} \
2203- -DBUILDING_HASHKIT
2204-
2205-libhashkit_la_LDFLAGS= \
2206- $(LIBM) \
2207- -version-info $(HASHKIT_LIBRARY_VERSION)
2208
2209=== modified file 'libhashkit/hsieh.c'
2210--- libhashkit/hsieh.c 2009-12-17 17:28:30 +0000
2211+++ libhashkit/hsieh.c 2010-01-12 00:36:12 +0000
2212@@ -1,11 +1,11 @@
2213 /* By Paul Hsieh (C) 2004, 2005. Covered under the Paul Hsieh
2214- * derivative license.
2215+ * derivative license.
2216 * See: http://www.azillionmonkeys.com/qed/weblicense.html for license
2217 * details.
2218 * http://www.azillionmonkeys.com/qed/hash.html
2219 */
2220
2221-#include "hash_common.h"
2222+#include "common.h"
2223
2224 #undef get16bits
2225 #if (defined(__GNUC__) && defined(__i386__))
2226
2227=== added file 'libhashkit/include.am'
2228--- libhashkit/include.am 1970-01-01 00:00:00 +0000
2229+++ libhashkit/include.am 2010-01-12 00:36:12 +0000
2230@@ -0,0 +1,47 @@
2231+# vim:ft=automake
2232+# included from Top Level Makefile.am
2233+# All paths should be given relative to the root
2234+#
2235+# HashKit
2236+# Copyright (C) 2009 Brian Aker
2237+# All rights reserved.
2238+#
2239+# Use and distribution licensed under the BSD license. See
2240+# the COPYING file in the parent directory for full text.
2241+
2242+lib_LTLIBRARIES+= libhashkit/libhashkit.la
2243+
2244+nobase_include_HEADERS+= \
2245+ libhashkit/algorithm.h \
2246+ libhashkit/behavior.h \
2247+ libhashkit/hashkit.h \
2248+ libhashkit/strerror.h \
2249+ libhashkit/types.h \
2250+ libhashkit/visibility.h
2251+
2252+noinst_HEADERS+= \
2253+ libhashkit/common.h
2254+
2255+libhashkit_libhashkit_la_SOURCES= \
2256+ libhashkit/crc32.c \
2257+ libhashkit/behavior.c \
2258+ libhashkit/default.c \
2259+ libhashkit/fnv.c \
2260+ libhashkit/hashkit.c \
2261+ libhashkit/jenkins.c \
2262+ libhashkit/ketama.c \
2263+ libhashkit/md5.c \
2264+ libhashkit/murmur.c \
2265+ libhashkit/strerror.c
2266+
2267+if INCLUDE_HSIEH_SRC
2268+libhashkit_libhashkit_la_SOURCES+= libhashkit/hsieh.c
2269+endif
2270+
2271+libhashkit_libhashkit_la_CFLAGS= \
2272+ ${AM_CFLAGS} \
2273+ -DBUILDING_HASHKIT
2274+
2275+libhashkit_libhashkit_la_LDFLAGS= \
2276+ $(LIBM) \
2277+ -version-info $(HASHKIT_LIBRARY_VERSION)
2278
2279=== modified file 'libmemcached/analyze.c'
2280--- libmemcached/analyze.c 2010-01-03 01:24:11 +0000
2281+++ libmemcached/analyze.c 2010-01-12 00:36:12 +0000
2282@@ -70,7 +70,7 @@
2283
2284 *error= MEMCACHED_SUCCESS;
2285 server_count= memcached_server_count(memc);
2286- result= (memcached_analysis_st*)calloc(memc->number_of_hosts,
2287+ result= (memcached_analysis_st*)calloc(memcached_server_count(memc),
2288 sizeof(memcached_analysis_st));
2289
2290 if (!result)
2291
2292=== modified file 'libmemcached/auto.c'
2293--- libmemcached/auto.c 2009-12-16 23:01:10 +0000
2294+++ libmemcached/auto.c 2010-01-12 00:36:12 +0000
2295@@ -24,7 +24,7 @@
2296 unsigned int server_key;
2297 bool no_reply= ptr->flags.no_reply;
2298
2299- unlikely (ptr->hosts == NULL || ptr->number_of_hosts == 0)
2300+ unlikely (ptr->hosts == NULL || memcached_server_count(ptr) == 0)
2301 return MEMCACHED_NO_SERVERS;
2302
2303 if (ptr->flags.verify_key && (memcached_key_test((const char **)&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED))
2304@@ -82,7 +82,7 @@
2305 unsigned int server_key;
2306 bool no_reply= ptr->flags.no_reply;
2307
2308- unlikely (ptr->hosts == NULL || ptr->number_of_hosts == 0)
2309+ unlikely (ptr->hosts == NULL || memcached_server_count(ptr) == 0)
2310 return MEMCACHED_NO_SERVERS;
2311
2312 server_key= memcached_generate_hash(ptr, master_key, master_key_length);
2313
2314=== modified file 'libmemcached/behavior.c'
2315--- libmemcached/behavior.c 2009-12-17 07:31:42 +0000
2316+++ libmemcached/behavior.c 2010-01-12 00:36:12 +0000
2317@@ -90,7 +90,7 @@
2318 memcached_quit(ptr);
2319 break;
2320 case MEMCACHED_BEHAVIOR_USE_UDP:
2321- if (ptr->number_of_hosts)
2322+ if (memcached_server_count(ptr))
2323 {
2324 return MEMCACHED_FAILURE;
2325 }
2326
2327=== renamed file 'libmemcached/memcached_configure.h.in' => 'libmemcached/configure.h.in'
2328--- libmemcached/memcached_configure.h.in 2009-12-02 22:04:02 +0000
2329+++ libmemcached/configure.h.in 2010-01-12 00:36:12 +0000
2330@@ -1,9 +1,12 @@
2331-/*
2332- * Summary: Preprocessor symbols set from configure we need install-time
2333- *
2334- * Copy: See Copyright for the status of this software.
2335- *
2336- * Author: Trond Norbye
2337+/* LibMemcached
2338+ * Copyright (C) 2006-2009 Brian Aker, Trond Norbye
2339+ * All rights reserved.
2340+ *
2341+ * Use and distribution licensed under the BSD license. See
2342+ * the COPYING file in the parent directory for full text.
2343+ *
2344+ * Summary: Change the behavior of the memcached connection.
2345+ *
2346 */
2347
2348 #ifndef MEMCACHED_CONFIGURE_H
2349
2350=== modified file 'libmemcached/delete.c'
2351--- libmemcached/delete.c 2009-12-18 12:07:20 +0000
2352+++ libmemcached/delete.c 2010-01-12 00:36:12 +0000
2353@@ -32,7 +32,7 @@
2354 unlikely (rc != MEMCACHED_SUCCESS)
2355 return rc;
2356
2357- unlikely (ptr->hosts == NULL || ptr->number_of_hosts == 0)
2358+ unlikely (ptr->hosts == NULL || memcached_server_count(ptr) == 0)
2359 return MEMCACHED_NO_SERVERS;
2360
2361 server_key= memcached_generate_hash(ptr, master_key, master_key_length);
2362@@ -176,7 +176,7 @@
2363 for (uint32_t x= 0; x < ptr->number_of_replicas; ++x)
2364 {
2365 ++server_key;
2366- if (server_key == ptr->number_of_hosts)
2367+ if (server_key == memcached_server_count(ptr))
2368 server_key= 0;
2369
2370 memcached_server_st* server= &ptr->hosts[server_key];
2371
2372=== modified file 'libmemcached/dump.c'
2373--- libmemcached/dump.c 2009-12-17 23:46:32 +0000
2374+++ libmemcached/dump.c 2010-01-12 00:36:12 +0000
2375@@ -15,10 +15,10 @@
2376 uint32_t server_key;
2377 uint32_t x;
2378
2379- unlikely (ptr->number_of_hosts == 0)
2380+ unlikely (memcached_server_count(ptr) == 0)
2381 return MEMCACHED_NO_SERVERS;
2382
2383- for (server_key= 0; server_key < ptr->number_of_hosts; server_key++)
2384+ for (server_key= 0; server_key < memcached_server_count(ptr); server_key++)
2385 {
2386 /* 256 I BELIEVE is the upper limit of slabs */
2387 for (x= 0; x < 256; x++)
2388
2389=== modified file 'libmemcached/flush.c'
2390--- libmemcached/flush.c 2009-12-16 23:01:10 +0000
2391+++ libmemcached/flush.c 2010-01-12 00:36:12 +0000
2392@@ -26,10 +26,10 @@
2393 memcached_return_t rc;
2394 char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
2395
2396- unlikely (ptr->number_of_hosts == 0)
2397+ unlikely (memcached_server_count(ptr) == 0)
2398 return MEMCACHED_NO_SERVERS;
2399
2400- for (x= 0; x < ptr->number_of_hosts; x++)
2401+ for (x= 0; x < memcached_server_count(ptr); x++)
2402 {
2403 bool no_reply= ptr->flags.no_reply;
2404
2405@@ -56,7 +56,7 @@
2406 unsigned int x;
2407 protocol_binary_request_flush request= {.bytes= {0}};
2408
2409- unlikely (ptr->number_of_hosts == 0)
2410+ unlikely (memcached_server_count(ptr) == 0)
2411 return MEMCACHED_NO_SERVERS;
2412
2413 request.message.header.request.magic= (uint8_t)PROTOCOL_BINARY_REQ;
2414@@ -66,7 +66,7 @@
2415 request.message.header.request.bodylen= htonl(request.message.header.request.extlen);
2416 request.message.body.expiration= htonl((uint32_t) expiration);
2417
2418- for (x= 0; x < ptr->number_of_hosts; x++)
2419+ for (x= 0; x < memcached_server_count(ptr); x++)
2420 {
2421 if (ptr->flags.no_reply)
2422 request.message.header.request.opcode= PROTOCOL_BINARY_CMD_FLUSHQ;
2423@@ -80,7 +80,7 @@
2424 }
2425 }
2426
2427- for (x= 0; x < ptr->number_of_hosts; x++)
2428+ for (x= 0; x < memcached_server_count(ptr); x++)
2429 {
2430 if (memcached_server_response_count(&ptr->hosts[x]) > 0)
2431 (void)memcached_response(&ptr->hosts[x], NULL, 0, NULL);
2432
2433=== modified file 'libmemcached/flush_buffers.c'
2434--- libmemcached/flush_buffers.c 2009-12-16 23:01:10 +0000
2435+++ libmemcached/flush_buffers.c 2010-01-12 00:36:12 +0000
2436@@ -1,19 +1,19 @@
2437 #include "common.h"
2438
2439-memcached_return_t memcached_flush_buffers(memcached_st *mem)
2440+memcached_return_t memcached_flush_buffers(memcached_st *memc)
2441 {
2442 memcached_return_t ret= MEMCACHED_SUCCESS;
2443
2444- for (uint32_t x= 0; x < mem->number_of_hosts; ++x)
2445- if (mem->hosts[x].write_buffer_offset != 0)
2446+ for (uint32_t x= 0; x < memcached_server_count(memc); ++x)
2447+ if (memc->hosts[x].write_buffer_offset != 0)
2448 {
2449- if (mem->hosts[x].fd == -1 &&
2450- (ret= memcached_connect(&mem->hosts[x])) != MEMCACHED_SUCCESS)
2451+ if (memc->hosts[x].fd == -1 &&
2452+ (ret= memcached_connect(&memc->hosts[x])) != MEMCACHED_SUCCESS)
2453 {
2454 WATCHPOINT_ERROR(ret);
2455 return ret;
2456 }
2457- if (memcached_io_write(&mem->hosts[x], NULL, 0, 1) == -1)
2458+ if (memcached_io_write(&memc->hosts[x], NULL, 0, 1) == -1)
2459 ret= MEMCACHED_SOME_ERRORS;
2460 }
2461
2462
2463=== modified file 'libmemcached/get.c'
2464--- libmemcached/get.c 2009-12-17 08:03:27 +0000
2465+++ libmemcached/get.c 2010-01-12 00:36:12 +0000
2466@@ -155,12 +155,11 @@
2467 return MEMCACHED_NOT_SUPPORTED;
2468
2469 LIBMEMCACHED_MEMCACHED_MGET_START();
2470- ptr->cursor_server= 0;
2471
2472 if (number_of_keys == 0)
2473 return MEMCACHED_NOTFOUND;
2474
2475- if (ptr->number_of_hosts == 0)
2476+ if (memcached_server_count(ptr) == 0)
2477 return MEMCACHED_NO_SERVERS;
2478
2479 if (ptr->flags.verify_key && (memcached_key_test(keys, key_length, number_of_keys) == MEMCACHED_BAD_KEY_PROVIDED))
2480@@ -180,7 +179,7 @@
2481
2482 It might be optimum to bounce the connection if count > some number.
2483 */
2484- for (x= 0; x < ptr->number_of_hosts; x++)
2485+ for (x= 0; x < memcached_server_count(ptr); x++)
2486 {
2487 if (memcached_server_response_count(&ptr->hosts[x]))
2488 {
2489@@ -263,7 +262,7 @@
2490 /*
2491 Should we muddle on if some servers are dead?
2492 */
2493- for (x= 0; x < ptr->number_of_hosts; x++)
2494+ for (x= 0; x < memcached_server_count(ptr); x++)
2495 {
2496 if (memcached_server_response_count(&ptr->hosts[x]))
2497 {
2498@@ -412,7 +411,7 @@
2499 request.message.header.request.opcode= PROTOCOL_BINARY_CMD_NOOP;
2500 request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
2501
2502- for (x= 0; x < ptr->number_of_hosts; x++)
2503+ for (x= 0; x < memcached_server_count(ptr); x++)
2504 if (memcached_server_response_count(&ptr->hosts[x]))
2505 {
2506 if (memcached_io_write(&ptr->hosts[x], NULL, 0, 1) == -1)
2507@@ -457,7 +456,7 @@
2508
2509 for (x= 0; x < number_of_keys; ++x)
2510 {
2511- if (hash[x] == ptr->number_of_hosts)
2512+ if (hash[x] == memcached_server_count(ptr))
2513 continue; /* Already successfully sent */
2514
2515 uint32_t server= hash[x] + replica;
2516@@ -466,8 +465,8 @@
2517 if (randomize_read && ((server + start) <= (hash[x] + ptr->number_of_replicas)))
2518 server += start;
2519
2520- while (server >= ptr->number_of_hosts)
2521- server -= ptr->number_of_hosts;
2522+ while (server >= memcached_server_count(ptr))
2523+ server -= memcached_server_count(ptr);
2524
2525 if (dead_servers[server])
2526 continue;
2527@@ -516,7 +515,7 @@
2528 }
2529
2530 memcached_server_response_increment(&ptr->hosts[server]);
2531- hash[x]= ptr->number_of_hosts;
2532+ hash[x]= memcached_server_count(ptr);
2533 }
2534
2535 if (success)
2536@@ -547,7 +546,7 @@
2537 bool* dead_servers;
2538
2539 hash= ptr->call_malloc(ptr, sizeof(uint32_t) * number_of_keys);
2540- dead_servers= ptr->call_calloc(ptr, ptr->number_of_hosts, sizeof(bool));
2541+ dead_servers= ptr->call_calloc(ptr, memcached_server_count(ptr), sizeof(bool));
2542
2543 if (hash == NULL || dead_servers == NULL)
2544 {
2545
2546=== modified file 'libmemcached/hash.c'
2547--- libmemcached/hash.c 2009-12-17 07:20:58 +0000
2548+++ libmemcached/hash.c 2010-01-12 00:36:12 +0000
2549@@ -111,9 +111,9 @@
2550 uint32_t hash= 1; /* Just here to remove compile warning */
2551
2552
2553- WATCHPOINT_ASSERT(ptr->number_of_hosts);
2554+ WATCHPOINT_ASSERT(memcached_server_count(ptr));
2555
2556- if (ptr->number_of_hosts == 1)
2557+ if (memcached_server_count(ptr) == 1)
2558 return 0;
2559
2560 hash= memcached_generate_hash_value(key, key_length, ptr->hash);
2561@@ -150,13 +150,13 @@
2562 return right->index;
2563 }
2564 case MEMCACHED_DISTRIBUTION_MODULA:
2565- return hash % ptr->number_of_hosts;
2566+ return hash % memcached_server_count(ptr);
2567 case MEMCACHED_DISTRIBUTION_RANDOM:
2568- return (uint32_t) random() % ptr->number_of_hosts;
2569+ return (uint32_t) random() % memcached_server_count(ptr);
2570 case MEMCACHED_DISTRIBUTION_CONSISTENT_MAX:
2571 default:
2572 WATCHPOINT_ASSERT(0); /* We have added a distribution without extending the logic */
2573- return hash % ptr->number_of_hosts;
2574+ return hash % memcached_server_count(ptr);
2575 }
2576 /* NOTREACHED */
2577 }
2578@@ -169,9 +169,9 @@
2579 {
2580 uint32_t hash= 1; /* Just here to remove compile warning */
2581
2582- WATCHPOINT_ASSERT(ptr->number_of_hosts);
2583+ WATCHPOINT_ASSERT(memcached_server_count(ptr));
2584
2585- if (ptr->number_of_hosts == 1)
2586+ if (memcached_server_count(ptr) == 1)
2587 return 0;
2588
2589 if (ptr->flags.hash_with_prefix_key)
2590
2591=== modified file 'libmemcached/hosts.c'
2592--- libmemcached/hosts.c 2010-01-03 01:07:52 +0000
2593+++ libmemcached/hosts.c 2010-01-12 00:36:12 +0000
2594@@ -26,10 +26,10 @@
2595
2596 static void sort_hosts(memcached_st *ptr)
2597 {
2598- if (ptr->number_of_hosts)
2599+ if (memcached_server_count(ptr))
2600 {
2601- qsort(ptr->hosts, ptr->number_of_hosts, sizeof(memcached_server_st), compare_servers);
2602- ptr->hosts[0].count= (uint16_t) ptr->number_of_hosts;
2603+ qsort(ptr->hosts, memcached_server_count(ptr), sizeof(memcached_server_st), compare_servers);
2604+ ptr->hosts[0].number_of_hosts= memcached_server_count(ptr);
2605 }
2606 }
2607
2608@@ -60,26 +60,6 @@
2609 return MEMCACHED_SUCCESS;
2610 }
2611
2612-void server_list_free(memcached_st *ptr, memcached_server_st *servers)
2613-{
2614- unsigned int x;
2615-
2616- if (servers == NULL)
2617- return;
2618-
2619- for (x= 0; x < servers->count; x++)
2620- if (servers[x].address_info)
2621- {
2622- freeaddrinfo(servers[x].address_info);
2623- servers[x].address_info= NULL;
2624- }
2625-
2626- if (ptr)
2627- ptr->call_free(ptr, servers);
2628- else
2629- free(servers);
2630-}
2631-
2632 static uint32_t ketama_server_hash(const char *key, unsigned int key_length, int alignment)
2633 {
2634 unsigned char results[16];
2635@@ -137,7 +117,7 @@
2636 {
2637 live_servers= 0;
2638 ptr->next_distribution_rebuild= 0;
2639- for (host_index= 0; host_index < ptr->number_of_hosts; ++host_index)
2640+ for (host_index= 0; host_index < memcached_server_count(ptr); ++host_index)
2641 {
2642 if (list[host_index].next_retry <= now.tv_sec)
2643 live_servers++;
2644@@ -149,7 +129,9 @@
2645 }
2646 }
2647 else
2648- live_servers= ptr->number_of_hosts;
2649+ {
2650+ live_servers= memcached_server_count(ptr);
2651+ }
2652
2653 is_ketama_weighted= memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED);
2654 points_per_server= (uint32_t) (is_ketama_weighted ? MEMCACHED_POINTS_PER_SERVER_KETAMA : MEMCACHED_POINTS_PER_SERVER);
2655@@ -173,7 +155,7 @@
2656
2657 if (is_ketama_weighted)
2658 {
2659- for (host_index = 0; host_index < ptr->number_of_hosts; ++host_index)
2660+ for (host_index = 0; host_index < memcached_server_count(ptr); ++host_index)
2661 {
2662 if (list[host_index].weight == 0)
2663 {
2664@@ -184,7 +166,7 @@
2665 }
2666 }
2667
2668- for (host_index = 0; host_index < ptr->number_of_hosts; ++host_index)
2669+ for (host_index = 0; host_index < memcached_server_count(ptr); ++host_index)
2670 {
2671 if (is_auto_ejecting && list[host_index].next_retry > now.tv_sec)
2672 continue;
2673@@ -295,12 +277,12 @@
2674
2675 WATCHPOINT_ASSERT(ptr);
2676 WATCHPOINT_ASSERT(ptr->continuum);
2677- WATCHPOINT_ASSERT(ptr->number_of_hosts * MEMCACHED_POINTS_PER_SERVER <= MEMCACHED_CONTINUUM_SIZE);
2678+ WATCHPOINT_ASSERT(memcached_server_count(ptr) * MEMCACHED_POINTS_PER_SERVER <= MEMCACHED_CONTINUUM_SIZE);
2679 ptr->continuum_points_counter= pointer_counter;
2680 qsort(ptr->continuum, ptr->continuum_points_counter, sizeof(memcached_continuum_item_st), continuum_item_cmp);
2681
2682 #ifdef DEBUG
2683- for (pointer_index= 0; ptr->number_of_hosts && pointer_index < ((live_servers * MEMCACHED_POINTS_PER_SERVER) - 1); pointer_index++)
2684+ for (pointer_index= 0; memcached_server_count(ptr) && pointer_index < ((live_servers * MEMCACHED_POINTS_PER_SERVER) - 1); pointer_index++)
2685 {
2686 WATCHPOINT_ASSERT(ptr->continuum[pointer_index].value <= ptr->continuum[pointer_index + 1].value);
2687 }
2688@@ -319,9 +301,9 @@
2689 if (!list)
2690 return MEMCACHED_SUCCESS;
2691
2692- count= list[0].count;
2693+ count= memcached_servers_count(list);
2694 new_host_list= ptr->call_realloc(ptr, ptr->hosts,
2695- sizeof(memcached_server_st) * (count + ptr->number_of_hosts));
2696+ sizeof(memcached_server_st) * (count + memcached_server_count(ptr)));
2697
2698 if (! new_host_list)
2699 return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
2700@@ -336,13 +318,13 @@
2701 return MEMCACHED_INVALID_HOST_PROTOCOL;
2702
2703 WATCHPOINT_ASSERT(list[x].hostname[0] != 0);
2704- memcached_server_create(ptr, &ptr->hosts[ptr->number_of_hosts]);
2705+ memcached_server_create(ptr, &ptr->hosts[memcached_server_count(ptr)]);
2706 /* TODO check return type */
2707- (void)memcached_server_create_with(ptr, &ptr->hosts[ptr->number_of_hosts], list[x].hostname,
2708+ (void)memcached_server_create_with(ptr, &ptr->hosts[memcached_server_count(ptr)], list[x].hostname,
2709 list[x].port, list[x].weight, list[x].type);
2710 ptr->number_of_hosts++;
2711 }
2712- ptr->hosts[0].count= (uint16_t) ptr->number_of_hosts;
2713+ ptr->hosts[0].number_of_hosts= memcached_server_count(ptr);
2714
2715 return run_distribution(ptr);
2716 }
2717@@ -417,7 +399,7 @@
2718 return MEMCACHED_INVALID_HOST_PROTOCOL;
2719
2720 new_host_list= ptr->call_realloc(ptr, ptr->hosts,
2721- sizeof(memcached_server_st) * (ptr->number_of_hosts+1));
2722+ sizeof(memcached_server_st) * (ptr->number_of_hosts + 1));
2723
2724 if (new_host_list == NULL)
2725 return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
2726@@ -425,9 +407,10 @@
2727 ptr->hosts= new_host_list;
2728
2729 /* TODO: Check return type */
2730- (void)memcached_server_create_with(ptr, &ptr->hosts[ptr->number_of_hosts], hostname, port, weight, type);
2731+ (void)memcached_server_create_with(ptr, &ptr->hosts[memcached_server_count(ptr)], hostname, port, weight, type);
2732 ptr->number_of_hosts++;
2733- ptr->hosts[0].count= (uint16_t) ptr->number_of_hosts;
2734+
2735+ memcached_servers_set_count(&ptr->hosts[0], memcached_server_count(ptr));
2736
2737 return run_distribution(ptr);
2738 }
2739@@ -438,7 +421,7 @@
2740 memcached_st *ptr= st_ptr->root;
2741 memcached_server_st *list= ptr->hosts;
2742
2743- for (x= 0, host_index= 0; x < ptr->number_of_hosts; x++)
2744+ for (x= 0, host_index= 0; x < memcached_server_count(ptr); x++)
2745 {
2746 if (strncmp(list[x].hostname, st_ptr->hostname, MEMCACHED_MAX_HOST_LENGTH) != 0 || list[x].port != st_ptr->port)
2747 {
2748@@ -484,7 +467,7 @@
2749 count= 1;
2750 if (ptr != NULL)
2751 {
2752- count+= ptr[0].count;
2753+ count+= memcached_servers_count(ptr);
2754 }
2755
2756 new_host_list= (memcached_server_st *)realloc(ptr, sizeof(memcached_server_st) * count);
2757@@ -498,21 +481,8 @@
2758 memcached_server_create_with(NULL, &new_host_list[count-1], hostname, port, weight, MEMCACHED_CONNECTION_TCP);
2759
2760 /* Backwards compatibility hack */
2761- new_host_list[0].count= (uint16_t) count;
2762+ memcached_servers_set_count(new_host_list, count);
2763
2764 *error= MEMCACHED_SUCCESS;
2765 return new_host_list;
2766 }
2767-
2768-unsigned int memcached_server_list_count(memcached_server_st *ptr)
2769-{
2770- if (ptr == NULL)
2771- return 0;
2772-
2773- return ptr[0].count;
2774-}
2775-
2776-void memcached_server_list_free(memcached_server_st *ptr)
2777-{
2778- server_list_free(NULL, ptr);
2779-}
2780
2781=== modified file 'libmemcached/include.am'
2782--- libmemcached/include.am 2009-12-30 03:18:20 +0000
2783+++ libmemcached/include.am 2010-01-12 00:36:12 +0000
2784@@ -3,10 +3,9 @@
2785 # All paths should be given relative to the root
2786
2787 EXTRA_DIST+= \
2788+ libmemcached/configure.h.in \
2789 libmemcached/libmemcached_probes.d \
2790- libmemcached/memcached/README.txt \
2791- libmemcached/memcached_configure.h.in
2792-
2793+ libmemcached/memcached/README.txt
2794
2795 noinst_HEADERS+= \
2796 libmemcached/byteorder.h \
2797@@ -14,36 +13,34 @@
2798 libmemcached/io.h \
2799 libmemcached/internal.h \
2800 libmemcached/common.h \
2801- libmemcached/memcached/protocol_binary.h \
2802 libmemcached/protocol/common.h \
2803 libmemcached/protocol/ascii_handler.h \
2804 libmemcached/protocol/binary_handler.h
2805
2806-nobase_pkginclude_HEADERS+= \
2807- libmemcached/analyze.h \
2808- libmemcached/auto.h \
2809- libmemcached/behavior.h \
2810- libmemcached/callback.h \
2811- libmemcached/constants.h \
2812- libmemcached/dump.h \
2813- libmemcached/exception.hpp \
2814- libmemcached/get.h \
2815- libmemcached/memcached.h \
2816- libmemcached/memcached.hpp \
2817- libmemcached/memcached_configure.h \
2818- libmemcached/protocol/cache.h \
2819- libmemcached/protocol/callback.h \
2820- libmemcached/protocol_handler.h \
2821- libmemcached/result.h \
2822- libmemcached/server.h \
2823- libmemcached/stats.h \
2824- libmemcached/storage.h \
2825- libmemcached/string.h \
2826- libmemcached/types.h \
2827- libmemcached/visibility.h \
2828- libmemcached/watchpoint.h
2829-
2830-
2831+nobase_include_HEADERS+= \
2832+ libmemcached/analyze.h \
2833+ libmemcached/auto.h \
2834+ libmemcached/behavior.h \
2835+ libmemcached/callback.h \
2836+ libmemcached/configure.h \
2837+ libmemcached/constants.h \
2838+ libmemcached/dump.h \
2839+ libmemcached/exception.hpp \
2840+ libmemcached/get.h \
2841+ libmemcached/memcached.h \
2842+ libmemcached/memcached.hpp \
2843+ libmemcached/memcached/protocol_binary.h \
2844+ libmemcached/protocol/cache.h \
2845+ libmemcached/protocol/callback.h \
2846+ libmemcached/protocol_handler.h \
2847+ libmemcached/result.h \
2848+ libmemcached/server.h \
2849+ libmemcached/stats.h \
2850+ libmemcached/storage.h \
2851+ libmemcached/string.h \
2852+ libmemcached/types.h \
2853+ libmemcached/visibility.h \
2854+ libmemcached/watchpoint.h
2855
2856 lib_LTLIBRARIES+= libmemcached/libmemcachedprotocol.la
2857 libmemcached_libmemcachedprotocol_la_SOURCES = \
2858@@ -111,10 +108,12 @@
2859
2860 libmemcached_libmemcached_la_DEPENDENCIES= libmemcached/libmemcachedcallbacks.la libmemcached/libmemcachedinternal.la
2861 libmemcached_libmemcached_la_LIBADD= $(LIBM) libmemcached/libmemcachedcallbacks.la libmemcached/libmemcachedinternal.la
2862-libmemcached_libmemcached_la_LDFLAGS= ${AM_LDFLAGS} -version-info 3:0:0
2863+libmemcached_libmemcached_la_LDFLAGS= ${AM_LDFLAGS} -version-info ${MEMCACHED_LIBRARY_VERSION}
2864
2865 if BUILD_LIBMEMCACHEDUTIL
2866-pkginclude_HEADERS+= libmemcached/memcached_util.h libmemcached/util/pool.h
2867+nobase_include_HEADERS+= \
2868+ libmemcached/memcached_util.h \
2869+ libmemcached/util/pool.h
2870 lib_LTLIBRARIES+= libmemcached/libmemcachedutil.la
2871 endif
2872
2873
2874=== modified file 'libmemcached/io.c'
2875--- libmemcached/io.c 2009-12-18 11:18:05 +0000
2876+++ libmemcached/io.c 2010-01-12 00:36:12 +0000
2877@@ -156,7 +156,7 @@
2878
2879 return;
2880
2881- for (x= 0; x < ptr->number_of_hosts; x++)
2882+ for (x= 0; x < memcached_server_count(ptr); x++)
2883 {
2884 if (memcached_server_response_count(ptr, x) &&
2885 ptr->hosts[x].read_data_length < MEMCACHED_MAX_BUFFER )
2886@@ -361,7 +361,7 @@
2887 unsigned int host_index= 0;
2888
2889 for (unsigned int x= 0;
2890- x< memc->number_of_hosts && host_index < MAX_SERVERS_TO_POLL;
2891+ x< memcached_server_count(memc) && host_index < MAX_SERVERS_TO_POLL;
2892 ++x)
2893 {
2894 if (memc->hosts[x].read_buffer_length > 0) /* I have data in the buffer */
2895@@ -379,7 +379,7 @@
2896 if (host_index < 2)
2897 {
2898 /* We have 0 or 1 server with pending events.. */
2899- for (unsigned int x= 0; x< memc->number_of_hosts; ++x)
2900+ for (unsigned int x= 0; x< memcached_server_count(memc); ++x)
2901 if (memcached_server_response_count(&memc->hosts[x]) > 0)
2902 return &memc->hosts[x];
2903
2904@@ -394,11 +394,17 @@
2905 case 0:
2906 break;
2907 default:
2908- for (unsigned int x= 0; x < host_index; ++x)
2909+ for (size_t x= 0; x < host_index; ++x)
2910+ {
2911 if (fds[x].revents & POLLIN)
2912- for (unsigned int y= 0; y < memc->number_of_hosts; ++y)
2913+ {
2914+ for (unsigned int y= 0; y < memcached_server_count(memc); ++y)
2915+ {
2916 if (memc->hosts[y].fd == fds[x].fd)
2917 return &memc->hosts[y];
2918+ }
2919+ }
2920+ }
2921 }
2922
2923 return NULL;
2924
2925=== modified file 'libmemcached/memcached.c'
2926--- libmemcached/memcached.c 2009-12-18 02:37:31 +0000
2927+++ libmemcached/memcached.c 2010-01-12 00:36:12 +0000
2928@@ -44,6 +44,38 @@
2929 return ptr;
2930 }
2931
2932+void server_list_free(memcached_st *ptr, memcached_server_st *servers)
2933+{
2934+ uint32_t x;
2935+
2936+ if (servers == NULL)
2937+ return;
2938+
2939+ for (x= 0; x < memcached_servers_count(servers); x++)
2940+ if (servers[x].address_info)
2941+ {
2942+ freeaddrinfo(servers[x].address_info);
2943+ servers[x].address_info= NULL;
2944+ }
2945+
2946+ if (ptr)
2947+ {
2948+ ptr->call_free(ptr, servers);
2949+ }
2950+ else
2951+ free(servers);
2952+}
2953+
2954+void memcached_servers_reset(memcached_st *ptr)
2955+{
2956+ server_list_free(ptr, ptr->hosts);
2957+
2958+ ptr->hosts= NULL;
2959+ ptr->number_of_hosts= 0;
2960+ ptr->last_disconnected_server= NULL;
2961+ ptr->server_failure_limit= 0;
2962+}
2963+
2964 void memcached_free(memcached_st *ptr)
2965 {
2966 /* If we have anything open, lets close it now */
2967
2968=== modified file 'libmemcached/memcached.h'
2969--- libmemcached/memcached.h 2009-12-22 06:58:44 +0000
2970+++ libmemcached/memcached.h 2010-01-12 00:36:12 +0000
2971@@ -24,7 +24,7 @@
2972 #include <netinet/in.h>
2973
2974 #include <libmemcached/visibility.h>
2975-#include <libmemcached/memcached_configure.h>
2976+#include <libmemcached/configure.h>
2977 #include <libmemcached/constants.h>
2978 #include <libmemcached/types.h>
2979 #include <libmemcached/string.h>
2980@@ -52,7 +52,7 @@
2981 } options;
2982 memcached_server_distribution_t distribution;
2983 memcached_hash_t hash;
2984- uint32_t continuum_points_counter;
2985+ uint32_t continuum_points_counter; // Ketama
2986 memcached_server_st *hosts;
2987 memcached_server_st *last_disconnected_server;
2988 int32_t snd_timeout;
2989@@ -62,7 +62,6 @@
2990 uint32_t io_bytes_watermark;
2991 uint32_t io_key_prefetch;
2992 uint32_t number_of_hosts;
2993- uint32_t cursor_server;
2994 int cached_errno;
2995 struct {
2996 bool auto_eject_hosts:1;
2997@@ -84,16 +83,16 @@
2998 int32_t poll_timeout;
2999 int32_t connect_timeout;
3000 int32_t retry_timeout;
3001- uint32_t continuum_count;
3002+ uint32_t continuum_count; // Ketama
3003 int send_size;
3004 int recv_size;
3005 void *user_data;
3006- time_t next_distribution_rebuild;
3007+ time_t next_distribution_rebuild; // Ketama
3008 size_t prefix_key_length;
3009 uint32_t number_of_replicas;
3010 memcached_hash_t distribution_hash;
3011 memcached_result_st result;
3012- memcached_continuum_item_st *continuum;
3013+ memcached_continuum_item_st *continuum; // Ketama
3014 memcached_clone_fn on_clone;
3015 memcached_cleanup_fn on_cleanup;
3016 memcached_free_fn call_free;
3017@@ -109,6 +108,9 @@
3018 LIBMEMCACHED_API
3019 memcached_return_t memcached_version(memcached_st *ptr);
3020
3021+LIBMEMCACHED_API
3022+void memcached_servers_reset(memcached_st *ptr);
3023+
3024 /* Public API */
3025
3026 LIBMEMCACHED_API
3027
3028=== modified file 'libmemcached/memcached/protocol_binary.h'
3029--- libmemcached/memcached/protocol_binary.h 2009-10-05 21:00:48 +0000
3030+++ libmemcached/memcached/protocol_binary.h 2010-01-12 00:36:12 +0000
3031@@ -29,7 +29,7 @@
3032 *
3033 * Copy: See Copyright for the status of this software.
3034 *
3035- * Author: Trond Norbye <trond.norbye@sun.com>
3036+ * Author: Trond Norbye <trond.norbye@gmail.com>
3037 */
3038
3039 #ifndef PROTOCOL_BINARY_H
3040
3041=== modified file 'libmemcached/quit.c'
3042--- libmemcached/quit.c 2009-12-18 11:17:36 +0000
3043+++ libmemcached/quit.c 2010-01-12 00:36:12 +0000
3044@@ -72,12 +72,12 @@
3045 unsigned int x;
3046
3047 if (ptr->hosts == NULL ||
3048- ptr->number_of_hosts == 0)
3049+ memcached_server_count(ptr) == 0)
3050 return;
3051
3052- if (ptr->hosts && ptr->number_of_hosts)
3053+ if (ptr->hosts && memcached_server_count(ptr))
3054 {
3055- for (x= 0; x < ptr->number_of_hosts; x++)
3056+ for (x= 0; x < memcached_server_count(ptr); x++)
3057 memcached_quit_server(&ptr->hosts[x], 0);
3058 }
3059 }
3060
3061=== modified file 'libmemcached/server.c'
3062--- libmemcached/server.c 2010-01-03 01:07:52 +0000
3063+++ libmemcached/server.c 2010-01-12 00:36:12 +0000
3064@@ -113,11 +113,11 @@
3065 void *context,
3066 uint32_t number_of_callbacks)
3067 {
3068- unsigned int y;
3069+ uint32_t y;
3070
3071- for (y= 0; y < ptr->number_of_hosts; y++)
3072+ for (y= 0; y < memcached_server_count(ptr); y++)
3073 {
3074- unsigned int x;
3075+ uint32_t x;
3076
3077 for (x= 0; x < number_of_callbacks; x++)
3078 {
3079@@ -142,7 +142,7 @@
3080 unlikely (*error != MEMCACHED_SUCCESS)
3081 return NULL;
3082
3083- unlikely (ptr->number_of_hosts == 0)
3084+ unlikely (memcached_server_count(ptr) == 0)
3085 {
3086 *error= MEMCACHED_NO_SERVERS;
3087 return NULL;
3088@@ -162,10 +162,9 @@
3089
3090 const char *memcached_server_error(memcached_server_st *ptr)
3091 {
3092- if (ptr)
3093- return ptr->cached_server_error;
3094- else
3095- return NULL;
3096+ return ptr
3097+ ? ptr->cached_server_error
3098+ : NULL;
3099 }
3100
3101 void memcached_server_error_reset(memcached_server_st *ptr)
3102@@ -177,3 +176,15 @@
3103 {
3104 return ptr->last_disconnected_server;
3105 }
3106+
3107+uint32_t memcached_server_list_count(memcached_server_st *ptr)
3108+{
3109+ return (ptr == NULL)
3110+ ? 0
3111+ : memcached_servers_count(ptr);
3112+}
3113+
3114+void memcached_server_list_free(memcached_server_st *ptr)
3115+{
3116+ server_list_free(NULL, ptr);
3117+}
3118
3119=== modified file 'libmemcached/server.h'
3120--- libmemcached/server.h 2010-01-03 01:07:52 +0000
3121+++ libmemcached/server.h 2010-01-12 00:36:12 +0000
3122@@ -21,7 +21,7 @@
3123 bool is_allocated:1;
3124 bool sockaddr_inited:1;
3125 } options;
3126- uint16_t count;
3127+ uint32_t number_of_hosts;
3128 uint32_t cursor_active;
3129 in_port_t port;
3130 int cached_errno;
3131@@ -47,6 +47,16 @@
3132 char hostname[MEMCACHED_MAX_HOST_LENGTH];
3133 };
3134
3135+static inline uint32_t memcached_servers_count(memcached_server_st *servers)
3136+{
3137+ return servers->number_of_hosts;
3138+}
3139+
3140+static inline uint32_t memcached_servers_set_count(memcached_server_st *servers, uint32_t count)
3141+{
3142+ return servers->number_of_hosts= count;
3143+}
3144+
3145 #define memcached_server_count(A) (A)->number_of_hosts
3146 #define memcached_server_name(A,B) (B).hostname
3147 #define memcached_server_port(A,B) (B).port
3148
3149=== modified file 'libmemcached/stats.c'
3150--- libmemcached/stats.c 2010-01-03 01:58:40 +0000
3151+++ libmemcached/stats.c 2010-01-12 00:36:12 +0000
3152@@ -369,7 +369,7 @@
3153 return NULL;
3154 }
3155
3156- stats= ptr->call_calloc(ptr, ptr->number_of_hosts, sizeof(memcached_stat_st));
3157+ stats= ptr->call_calloc(ptr, memcached_server_count(ptr), sizeof(memcached_stat_st));
3158
3159 stats->root= ptr;
3160
3161@@ -380,7 +380,7 @@
3162 }
3163
3164 rc= MEMCACHED_SUCCESS;
3165- for (x= 0; x < ptr->number_of_hosts; x++)
3166+ for (x= 0; x < memcached_server_count(ptr); x++)
3167 {
3168 memcached_return_t temp_return;
3169
3170
3171=== modified file 'libmemcached/storage.c'
3172--- libmemcached/storage.c 2009-12-18 18:46:19 +0000
3173+++ libmemcached/storage.c 2010-01-12 00:36:12 +0000
3174@@ -77,7 +77,7 @@
3175 unlikely (rc != MEMCACHED_SUCCESS)
3176 return rc;
3177
3178- unlikely (ptr->number_of_hosts == 0)
3179+ unlikely (memcached_server_count(ptr) == 0)
3180 return MEMCACHED_NO_SERVERS;
3181
3182 if (ptr->flags.verify_key && (memcached_key_test((const char **)&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED))
3183@@ -493,7 +493,7 @@
3184 for (uint32_t x= 0; x < ptr->number_of_replicas; x++)
3185 {
3186 ++server_key;
3187- if (server_key == ptr->number_of_hosts)
3188+ if (server_key == memcached_server_count(ptr))
3189 server_key= 0;
3190
3191 memcached_server_st *srv= &ptr->hosts[server_key];
3192
3193=== modified file 'libmemcached/verbosity.c'
3194--- libmemcached/verbosity.c 2009-12-16 23:01:10 +0000
3195+++ libmemcached/verbosity.c 2010-01-12 00:36:12 +0000
3196@@ -13,7 +13,7 @@
3197 return MEMCACHED_WRITE_FAILURE;
3198
3199 rc= MEMCACHED_SUCCESS;
3200- for (x= 0; x < ptr->number_of_hosts; x++)
3201+ for (x= 0; x < memcached_server_count(ptr); x++)
3202 {
3203 memcached_return_t rrc;
3204
3205
3206=== modified file 'libmemcached/version.c'
3207--- libmemcached/version.c 2009-12-16 23:01:10 +0000
3208+++ libmemcached/version.c 2010-01-12 00:36:12 +0000
3209@@ -31,7 +31,7 @@
3210 send_length= strlen(command);
3211
3212 rc= MEMCACHED_SUCCESS;
3213- for (x= 0; x < ptr->number_of_hosts; x++)
3214+ for (x= 0; x < memcached_server_count(ptr); x++)
3215 {
3216 memcached_return_t rrc;
3217
3218@@ -75,7 +75,7 @@
3219 request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
3220
3221 rc= MEMCACHED_SUCCESS;
3222- for (x= 0; x < ptr->number_of_hosts; x++)
3223+ for (x= 0; x < memcached_server_count(ptr); x++)
3224 {
3225 memcached_return_t rrc;
3226
3227@@ -88,7 +88,8 @@
3228 }
3229 }
3230
3231- for (x= 0; x < ptr->number_of_hosts; x++)
3232+ for (x= 0; x < memcached_server_count(ptr); x++)
3233+ {
3234 if (memcached_server_response_count(&ptr->hosts[x]) > 0)
3235 {
3236 memcached_return_t rrc;
3237@@ -107,6 +108,7 @@
3238 ptr->hosts[x].minor_version= (uint8_t)strtol(p + 1, &p, 10);
3239 ptr->hosts[x].micro_version= (uint8_t)strtol(p + 1, NULL, 10);
3240 }
3241+ }
3242
3243 return rc;
3244 }
3245
3246=== modified file 'm4/pandora_canonical.m4'
3247--- m4/pandora_canonical.m4 2010-01-02 05:10:47 +0000
3248+++ m4/pandora_canonical.m4 2010-01-12 00:36:12 +0000
3249@@ -4,7 +4,7 @@
3250 dnl with or without modifications, as long as this notice is preserved.
3251
3252 dnl Which version of the canonical setup we're using
3253-AC_DEFUN([PANDORA_CANONICAL_VERSION],[0.92])
3254+AC_DEFUN([PANDORA_CANONICAL_VERSION],[0.94])
3255
3256 AC_DEFUN([PANDORA_FORCE_DEPEND_TRACKING],[
3257 AC_ARG_ENABLE([fat-binaries],
3258
3259=== modified file 'm4/pandora_have_libmemcached.m4'
3260--- m4/pandora_have_libmemcached.m4 2009-12-02 02:57:53 +0000
3261+++ m4/pandora_have_libmemcached.m4 2010-01-12 00:36:12 +0000
3262@@ -24,10 +24,28 @@
3263 memcached_dump_func *df;
3264 memcached_lib_version();
3265 ])
3266+ AC_LIB_HAVE_LINKFLAGS(memcachedprotocol,,[
3267+ #include <libmemcached/protocol_handler.h>
3268+ ],[
3269+ struct memcached_protocol_st *protocol_handle;
3270+ protocol_handle= memcached_protocol_create_instance();
3271+ ])
3272 ],[
3273 ac_cv_libmemcached="no"
3274 ])
3275
3276+ AC_CACHE_CHECK([if libmemcached has memcached_server_fn],
3277+ [pandora_cv_libmemcached_server_fn],
3278+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3279+#include <libmemcached/memcached.h>
3280+memcached_server_fn callbacks[1];
3281+ ]])],
3282+ [pandora_cv_libmemcached_server_fn=yes],
3283+ [pandora_cv_libmemcached_server_fn=no])])
3284+ AS_IF([test "x$pandora_cv_libmemcached_server_fn" = "xyes"],[
3285+ AC_DEFINE([HAVE_MEMCACHED_SERVER_FN],[1],[If we have the new memcached_server_fn typedef])
3286+ ])
3287+
3288 AM_CONDITIONAL(HAVE_LIBMEMCACHED, [test "x${ac_cv_libmemcached}" = "xyes"])
3289
3290 ])
3291@@ -41,3 +59,4 @@
3292 AS_IF([test x$ac_cv_libmemcached = xno],
3293 AC_MSG_ERROR([libmemcached is required for ${PACKAGE}]))
3294 ])
3295+
3296
3297=== modified file 'support/libmemcached.spec.in'
3298--- support/libmemcached.spec.in 2009-12-17 17:28:30 +0000
3299+++ support/libmemcached.spec.in 2010-01-12 00:36:12 +0000
3300@@ -4,7 +4,7 @@
3301 Release: 1
3302 License: BSD
3303 Group: System Environment/Libraries
3304-URL: http://tangent.org/552/libmemcached.html
3305+URL: http://launchpad.net/libmemcached
3306 Source0: http://download.tangent.org/libmemcached-%{version}.tar.gz
3307
3308 # For test suite
3309@@ -78,32 +78,65 @@
3310 %defattr (-,root,root,-)
3311 %doc AUTHORS COPYING NEWS README THANKS TODO
3312 %{_bindir}/mem*
3313-%exclude %{_libdir}/libmemcached.a
3314 %exclude %{_libdir}/libmemcached.la
3315-%exclude %{_libdir}/libmemcachedutil.a
3316-%exclude %{_libdir}/libmemcachedprotocol.a
3317+%exclude %{_libdir}/libhashkit.la
3318 %exclude %{_libdir}/libmemcachedutil.la
3319 %exclude %{_libdir}/libmemcachedprotocol.la
3320+%{_libdir}/libhashkit.so.*
3321 %{_libdir}/libmemcached.so.*
3322 %{_libdir}/libmemcachedutil.so.*
3323 %{_libdir}/libmemcachedprotocol.so.*
3324 %{_mandir}/man1/mem*
3325-%exclude libhashkit/*
3326
3327
3328 %files devel
3329 %defattr (-,root,root,-)
3330 %doc examples
3331-%{_includedir}/libmemcached
3332+%{_includedir}/libhashkit/algorithm.h
3333+%{_includedir}/libhashkit/behavior.h
3334+%{_includedir}/libhashkit/hashkit.h
3335+%{_includedir}/libhashkit/strerror.h
3336+%{_includedir}/libhashkit/types.h
3337+%{_includedir}/libhashkit/visibility.h
3338+%{_includedir}/libmemcached/analyze.h
3339+%{_includedir}/libmemcached/auto.h
3340+%{_includedir}/libmemcached/behavior.h
3341+%{_includedir}/libmemcached/callback.h
3342+%{_includedir}/libmemcached/configure.h
3343+%{_includedir}/libmemcached/constants.h
3344+%{_includedir}/libmemcached/dump.h
3345+%{_includedir}/libmemcached/exception.hpp
3346+%{_includedir}/libmemcached/get.h
3347+%{_includedir}/libmemcached/memcached.h
3348+%{_includedir}/libmemcached/memcached.hpp
3349+%{_includedir}/libmemcached/memcached_util.h
3350+%{_includedir}/libmemcached/protocol
3351+%{_includedir}/libmemcached/protocol/cache.h
3352+%{_includedir}/libmemcached/protocol/callback.h
3353+%{_includedir}/libmemcached/protocol_handler.h
3354+%{_includedir}/libmemcached/result.h
3355+%{_includedir}/libmemcached/server.h
3356+%{_includedir}/libmemcached/stats.h
3357+%{_includedir}/libmemcached/storage.h
3358+%{_includedir}/libmemcached/string.h
3359+%{_includedir}/libmemcached/types.h
3360+%{_includedir}/libmemcached/util/pool.h
3361+%{_includedir}/libmemcached/visibility.h
3362+%{_includedir}/libmemcached/watchpoint.h
3363+%{_libdir}/libhashkit.so
3364 %{_libdir}/libmemcached.so
3365+%{_libdir}/libmemcachedprotocol.so
3366 %{_libdir}/libmemcachedutil.so
3367-%{_libdir}/libmemcachedprotocol.so
3368 %{_libdir}/pkgconfig/libmemcached.pc
3369+%{_mandir}/man3/hashkit*.3.gz
3370 %{_mandir}/man3/libmemcached*.3.gz
3371 %{_mandir}/man3/memcached_*.3.gz
3372
3373
3374 %changelog
3375+* Fri Jan 8 2010 Brian Aker <brian@tangent.org> - 0.37-1
3376+- Modified to be explicit in install include files.
3377+
3378 * Sat Apr 25 2009 Remi Collet <rpms@famillecollet.com> - 0.28-1
3379 - Initial RPM from Brian Aker spec
3380 - create -devel subpackage
3381
3382=== modified file 'tests/function.c'
3383--- tests/function.c 2009-12-18 22:23:40 +0000
3384+++ tests/function.c 2010-01-12 00:36:12 +0000
3385@@ -108,8 +108,8 @@
3386 {
3387 test_ports[x]= (uint32_t)random() % 64000;
3388 rc= memcached_server_add_with_weight(local_memc, "localhost", test_ports[x], 0);
3389- test_truth(local_memc->number_of_hosts == x + 1);
3390- test_truth(local_memc->hosts[0].count == x+1);
3391+ test_truth(memcached_server_count(local_memc) == x + 1);
3392+ test_truth(memcached_servers_count(local_memc->hosts) == x+1);
3393 test_truth(rc == MEMCACHED_SUCCESS);
3394 }
3395
3396@@ -179,8 +179,8 @@
3397 {
3398 test_ports[x]= (uint32_t)(random() % 64000);
3399 rc= memcached_server_add_with_weight(local_memc, "localhost", test_ports[x], 0);
3400- test_truth(local_memc->number_of_hosts == x+1);
3401- test_truth(local_memc->hosts[0].count == x+1);
3402+ test_truth(memcached_server_count(local_memc) == x+1);
3403+ test_truth(memcached_servers_count(local_memc->hosts) == x+1);
3404 test_truth(rc == MEMCACHED_SUCCESS);
3405 }
3406
3407@@ -2030,11 +2030,7 @@
3408 size_t return_value_length;
3409
3410 /* Here we free everything before running a bunch of mget tests */
3411- {
3412- memcached_server_list_free(memc->hosts);
3413- memc->hosts= NULL;
3414- memc->number_of_hosts= 0;
3415- }
3416+ memcached_servers_reset(memc);
3417
3418
3419 /* We need to empty the server before continueing test */
3420@@ -2715,7 +2711,7 @@
3421 memcached_server_push(memc, server_pool);
3422
3423 /* verify that the server list was parsed okay. */
3424- test_truth(memc->number_of_hosts == 8);
3425+ test_truth(memcached_server_count(memc) == 8);
3426 test_truth(strcmp(server_pool[0].hostname, "10.0.1.1") == 0);
3427 test_truth(server_pool[0].port == 11211);
3428 test_truth(server_pool[0].weight == 600);
3429@@ -2866,7 +2862,7 @@
3430 memcached_server_push(memc, server_pool);
3431
3432 /* verify that the server list was parsed okay. */
3433- test_truth(memc->number_of_hosts == 8);
3434+ test_truth(memcached_server_count(memc) == 8);
3435 test_truth(strcmp(server_pool[0].hostname, "10.0.1.1") == 0);
3436 test_truth(server_pool[0].port == 11211);
3437 test_truth(server_pool[0].weight == 600);
3438@@ -3536,9 +3532,9 @@
3439 */
3440 memcached_return_t rc;
3441 rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS,
3442- memc->number_of_hosts - 1);
3443+ memcached_server_count(memc) - 1);
3444 test_truth(rc == MEMCACHED_SUCCESS);
3445- test_truth(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS) == memc->number_of_hosts - 1);
3446+ test_truth(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS) == memcached_server_count(memc) - 1);
3447
3448 return rc == MEMCACHED_SUCCESS ? TEST_SUCCESS : TEST_SKIPPED;
3449 }
3450@@ -3843,9 +3839,7 @@
3451 memcached_return_t rc;
3452 struct stat buf;
3453
3454- memcached_server_list_free(memc->hosts);
3455- memc->hosts= NULL;
3456- memc->number_of_hosts= 0;
3457+ memcached_servers_reset(memc);
3458
3459 if (stat("/tmp/memcached.socket", &buf))
3460 return TEST_SKIPPED;
3461@@ -3935,7 +3929,7 @@
3462 ** way it is supposed to do!!!!
3463 */
3464 int no_msg=0;
3465- for (uint32_t x=0; x < memc->number_of_hosts; ++x)
3466+ for (uint32_t x=0; x < memcached_server_count(memc); ++x)
3467 no_msg+=(int)(memc->hosts[x].cursor_active);
3468
3469 test_truth(no_msg == 0);
3470@@ -4212,7 +4206,7 @@
3471 * within the library, and this is not a supported interface.
3472 * This is to verify correct behavior in the library
3473 */
3474- for (uint32_t host= 0; host < memc->number_of_hosts; ++host)
3475+ for (uint32_t host= 0; host < memcached_server_count(memc); ++host)
3476 {
3477 memcached_st *memc_clone= memcached_clone(NULL, memc);
3478 memc_clone->hosts[host].port= 0;
3479@@ -4410,11 +4404,11 @@
3480
3481 static uint16_t *get_udp_request_ids(memcached_st *memc)
3482 {
3483- uint16_t *ids= malloc(sizeof(uint16_t) * memc->number_of_hosts);
3484+ uint16_t *ids= malloc(sizeof(uint16_t) * memcached_server_count(memc));
3485 assert(ids != NULL);
3486 unsigned int x;
3487
3488- for (x= 0; x < memc->number_of_hosts; x++)
3489+ for (x= 0; x < memcached_server_count(memc); x++)
3490 ids[x]= get_udp_datagram_request_id((struct udp_datagram_header_st *) memc->hosts[x].write_buffer);
3491
3492 return ids;
3493@@ -4426,7 +4420,7 @@
3494 memcached_server_st *cur_server = memc->hosts;
3495 uint16_t *cur_req_ids = get_udp_request_ids(memc);
3496
3497- for (x= 0; x < memc->number_of_hosts; x++)
3498+ for (x= 0; x < memcached_server_count(memc); x++)
3499 {
3500 test_truth(cur_server[x].cursor_active == 0);
3501 test_truth(cur_req_ids[x] == expected_req_ids[x]);
3502@@ -4449,7 +4443,7 @@
3503 || memc->hosts[0].micro_version < 6)
3504 return TEST_SKIPPED;
3505
3506- uint32_t num_hosts= memc->number_of_hosts;
3507+ uint32_t num_hosts= memcached_server_count(memc);
3508 unsigned int x= 0;
3509 memcached_server_st servers[num_hosts];
3510 memcpy(servers, memc->hosts, sizeof(memcached_server_st) * num_hosts);
3511@@ -4512,7 +4506,7 @@
3512 test_truth(memc->flags.use_udp);
3513 test_truth(memc->flags.no_reply);
3514
3515- test_truth(memc->number_of_hosts == 0);
3516+ test_truth(memcached_server_count(memc) == 0);
3517
3518 memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_USE_UDP,0);
3519 test_truth(! (memc->flags.use_udp));
3520@@ -4619,7 +4613,7 @@
3521 memcached_return_t rc;
3522 uint16_t *expected_ids= get_udp_request_ids(memc);
3523 unsigned int x;
3524- for (x= 0; x < memc->number_of_hosts;x++)
3525+ for (x= 0; x < memcached_server_count(memc); x++)
3526 increment_request_id(&expected_ids[x]);
3527
3528 rc= memcached_verbosity(memc,3);
3529@@ -4639,7 +4633,7 @@
3530 memcached_return_t rc;
3531 uint16_t *expected_ids= get_udp_request_ids(memc);
3532 unsigned int x;
3533- for (x= 0; x < memc->number_of_hosts;x++)
3534+ for (x= 0; x < memcached_server_count(memc);x++)
3535 increment_request_id(&expected_ids[x]);
3536
3537 rc= memcached_flush(memc,0);
3538@@ -4964,7 +4958,7 @@
3539 memcached_server_push(memc, server_pool);
3540
3541 /* verify that the server list was parsed okay. */
3542- test_truth(memc->number_of_hosts == 8);
3543+ test_truth(memcached_server_count(memc) == 8);
3544 test_strcmp(server_pool[0].hostname, "10.0.1.1");
3545 test_truth(server_pool[0].port == 11211);
3546 test_truth(server_pool[0].weight == 600);
3547@@ -5021,7 +5015,7 @@
3548 memcached_server_push(memc, server_pool);
3549
3550 /* verify that the server list was parsed okay. */
3551- test_truth(memc->number_of_hosts == 8);
3552+ test_truth(memcached_server_count(memc) == 8);
3553 test_strcmp(server_pool[0].hostname, "10.0.1.1");
3554 test_truth(server_pool[0].port == 11211);
3555 test_truth(server_pool[0].weight == 600);
3556@@ -5094,7 +5088,7 @@
3557 * 1024 (that should satisfy most users don't you think?). Future versions
3558 * will include a mget_execute function call if you need a higher number.
3559 */
3560- uint32_t number_of_hosts= memc->number_of_hosts;
3561+ uint32_t number_of_hosts= memcached_server_count(memc);
3562 memc->number_of_hosts= 1;
3563 const size_t max_keys= 1024;
3564 char **keys= calloc(max_keys, sizeof(char*));
3565@@ -5143,6 +5137,7 @@
3566 free(key_length);
3567
3568 memc->number_of_hosts= number_of_hosts;
3569+
3570 return TEST_SUCCESS;
3571 }
3572
3573@@ -5204,7 +5199,7 @@
3574 test_truth(rc == MEMCACHED_SUCCESS);
3575 memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, 1);
3576
3577- uint32_t number_of_hosts= memc->number_of_hosts;
3578+ uint32_t number_of_hosts= memcached_server_count(memc);
3579 memc->number_of_hosts= 1;
3580
3581 char k[250];
3582@@ -5233,7 +5228,7 @@
3583
3584 static test_return_t regression_bug_447342(memcached_st *memc)
3585 {
3586- if (memc->number_of_hosts < 3 || pre_replication(memc) != MEMCACHED_SUCCESS)
3587+ if (memcached_server_count(memc) < 3 || pre_replication(memc) != MEMCACHED_SUCCESS)
3588 return TEST_SKIPPED;
3589
3590 memcached_return_t rc;
3591@@ -5469,7 +5464,7 @@
3592 * in a non-portable way and you shouldn't be doing this. I'm only
3593 * doing this in order to verify that the library works the way it should
3594 */
3595- uint32_t number_of_hosts= memc->number_of_hosts;
3596+ uint32_t number_of_hosts= memcached_server_count(memc);
3597 memc->number_of_hosts= 1;
3598
3599 /* Ensure that we are connected to the server by setting a value */

Subscribers

People subscribed via source and target branches

to all changes: