couchbase-memcached 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. data.tar.gz.sig +2 -0
  2. data/BENCHMARKS +134 -0
  3. data/CHANGELOG +127 -0
  4. data/LICENSE +184 -0
  5. data/Manifest +535 -0
  6. data/README +118 -0
  7. data/Rakefile +83 -0
  8. data/TODO +4 -0
  9. data/couchbase-memcached.gemspec +33 -0
  10. data/ext/extconf-make.rb +25 -0
  11. data/ext/extconf.rb +91 -0
  12. data/ext/libmemcached-0.50/AUTHORS +11 -0
  13. data/ext/libmemcached-0.50/COPYING +33 -0
  14. data/ext/libmemcached-0.50/ChangeLog +392 -0
  15. data/ext/libmemcached-0.50/Makefile.am +114 -0
  16. data/ext/libmemcached-0.50/Makefile.in +4232 -0
  17. data/ext/libmemcached-0.50/NEWS +1 -0
  18. data/ext/libmemcached-0.50/README +43 -0
  19. data/ext/libmemcached-0.50/README.FIRST +31 -0
  20. data/ext/libmemcached-0.50/README.win32 +25 -0
  21. data/ext/libmemcached-0.50/THANKS +14 -0
  22. data/ext/libmemcached-0.50/TODO +11 -0
  23. data/ext/libmemcached-0.50/aclocal.m4 +1077 -0
  24. data/ext/libmemcached-0.50/clients/client_options.h +45 -0
  25. data/ext/libmemcached-0.50/clients/execute.cc +131 -0
  26. data/ext/libmemcached-0.50/clients/execute.h +30 -0
  27. data/ext/libmemcached-0.50/clients/generator.cc +96 -0
  28. data/ext/libmemcached-0.50/clients/generator.h +36 -0
  29. data/ext/libmemcached-0.50/clients/include.am +116 -0
  30. data/ext/libmemcached-0.50/clients/memaslap.c +908 -0
  31. data/ext/libmemcached-0.50/clients/memcapable.cc +2094 -0
  32. data/ext/libmemcached-0.50/clients/memcat.cc +242 -0
  33. data/ext/libmemcached-0.50/clients/memcp.cc +317 -0
  34. data/ext/libmemcached-0.50/clients/memdump.cc +183 -0
  35. data/ext/libmemcached-0.50/clients/memerror.cc +102 -0
  36. data/ext/libmemcached-0.50/clients/memflush.cc +154 -0
  37. data/ext/libmemcached-0.50/clients/memparse.cc +68 -0
  38. data/ext/libmemcached-0.50/clients/memrm.cc +177 -0
  39. data/ext/libmemcached-0.50/clients/memslap.cc +495 -0
  40. data/ext/libmemcached-0.50/clients/memstat.cc +349 -0
  41. data/ext/libmemcached-0.50/clients/ms_atomic.h +69 -0
  42. data/ext/libmemcached-0.50/clients/ms_conn.c +3413 -0
  43. data/ext/libmemcached-0.50/clients/ms_conn.h +241 -0
  44. data/ext/libmemcached-0.50/clients/ms_memslap.h +132 -0
  45. data/ext/libmemcached-0.50/clients/ms_setting.c +1068 -0
  46. data/ext/libmemcached-0.50/clients/ms_setting.h +181 -0
  47. data/ext/libmemcached-0.50/clients/ms_sigsegv.c +126 -0
  48. data/ext/libmemcached-0.50/clients/ms_sigsegv.h +34 -0
  49. data/ext/libmemcached-0.50/clients/ms_stats.c +307 -0
  50. data/ext/libmemcached-0.50/clients/ms_stats.h +69 -0
  51. data/ext/libmemcached-0.50/clients/ms_task.c +1114 -0
  52. data/ext/libmemcached-0.50/clients/ms_task.h +94 -0
  53. data/ext/libmemcached-0.50/clients/ms_thread.c +351 -0
  54. data/ext/libmemcached-0.50/clients/ms_thread.h +78 -0
  55. data/ext/libmemcached-0.50/clients/utilities.cc +231 -0
  56. data/ext/libmemcached-0.50/clients/utilities.h +64 -0
  57. data/ext/libmemcached-0.50/config.h.in +647 -0
  58. data/ext/libmemcached-0.50/config/autorun.sh +126 -0
  59. data/ext/libmemcached-0.50/config/compile +143 -0
  60. data/ext/libmemcached-0.50/config/config.guess +1517 -0
  61. data/ext/libmemcached-0.50/config/config.rpath +666 -0
  62. data/ext/libmemcached-0.50/config/config.sub +1760 -0
  63. data/ext/libmemcached-0.50/config/depcomp +630 -0
  64. data/ext/libmemcached-0.50/config/install-sh +520 -0
  65. data/ext/libmemcached-0.50/config/ltmain.sh +9642 -0
  66. data/ext/libmemcached-0.50/config/missing +376 -0
  67. data/ext/libmemcached-0.50/config/pandora-plugin +752 -0
  68. data/ext/libmemcached-0.50/config/uncrustify.cfg +1112 -0
  69. data/ext/libmemcached-0.50/configure +27103 -0
  70. data/ext/libmemcached-0.50/configure.ac +186 -0
  71. data/ext/libmemcached-0.50/docs/conf.py.in +354 -0
  72. data/ext/libmemcached-0.50/docs/include.am +240 -0
  73. data/ext/libmemcached-0.50/docs/man/hashkit_clone.3 +88 -0
  74. data/ext/libmemcached-0.50/docs/man/hashkit_crc32.3 +105 -0
  75. data/ext/libmemcached-0.50/docs/man/hashkit_create.3 +88 -0
  76. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_32.3 +105 -0
  77. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_64.3 +105 -0
  78. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_32.3 +105 -0
  79. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_64.3 +105 -0
  80. data/ext/libmemcached-0.50/docs/man/hashkit_free.3 +88 -0
  81. data/ext/libmemcached-0.50/docs/man/hashkit_functions.3 +105 -0
  82. data/ext/libmemcached-0.50/docs/man/hashkit_hsieh.3 +105 -0
  83. data/ext/libmemcached-0.50/docs/man/hashkit_is_allocated.3 +88 -0
  84. data/ext/libmemcached-0.50/docs/man/hashkit_jenkins.3 +105 -0
  85. data/ext/libmemcached-0.50/docs/man/hashkit_md5.3 +105 -0
  86. data/ext/libmemcached-0.50/docs/man/hashkit_murmur.3 +105 -0
  87. data/ext/libmemcached-0.50/docs/man/hashkit_value.3 +66 -0
  88. data/ext/libmemcached-0.50/docs/man/libhashkit.3 +57 -0
  89. data/ext/libmemcached-0.50/docs/man/libmemcached.3 +208 -0
  90. data/ext/libmemcached-0.50/docs/man/libmemcached_check_configuration.3 +293 -0
  91. data/ext/libmemcached-0.50/docs/man/libmemcached_configuration.3 +293 -0
  92. data/ext/libmemcached-0.50/docs/man/libmemcached_examples.3 +144 -0
  93. data/ext/libmemcached-0.50/docs/man/libmemcachedutil.3 +68 -0
  94. data/ext/libmemcached-0.50/docs/man/memaslap.1 +1222 -0
  95. data/ext/libmemcached-0.50/docs/man/memcached.3 +293 -0
  96. data/ext/libmemcached-0.50/docs/man/memcached_add.3 +132 -0
  97. data/ext/libmemcached-0.50/docs/man/memcached_add_by_key.3 +132 -0
  98. data/ext/libmemcached-0.50/docs/man/memcached_analyze.3 +77 -0
  99. data/ext/libmemcached-0.50/docs/man/memcached_append.3 +111 -0
  100. data/ext/libmemcached-0.50/docs/man/memcached_append_by_key.3 +111 -0
  101. data/ext/libmemcached-0.50/docs/man/memcached_behavior_get.3 +333 -0
  102. data/ext/libmemcached-0.50/docs/man/memcached_behavior_set.3 +333 -0
  103. data/ext/libmemcached-0.50/docs/man/memcached_callback_get.3 +159 -0
  104. data/ext/libmemcached-0.50/docs/man/memcached_callback_set.3 +159 -0
  105. data/ext/libmemcached-0.50/docs/man/memcached_cas.3 +91 -0
  106. data/ext/libmemcached-0.50/docs/man/memcached_cas_by_key.3 +91 -0
  107. data/ext/libmemcached-0.50/docs/man/memcached_clone.3 +99 -0
  108. data/ext/libmemcached-0.50/docs/man/memcached_create.3 +99 -0
  109. data/ext/libmemcached-0.50/docs/man/memcached_decrement.3 +124 -0
  110. data/ext/libmemcached-0.50/docs/man/memcached_decrement_with_initial.3 +124 -0
  111. data/ext/libmemcached-0.50/docs/man/memcached_delete.3 +83 -0
  112. data/ext/libmemcached-0.50/docs/man/memcached_delete_by_key.3 +83 -0
  113. data/ext/libmemcached-0.50/docs/man/memcached_destroy_sasl_auth_data.3 +95 -0
  114. data/ext/libmemcached-0.50/docs/man/memcached_dump.3 +77 -0
  115. data/ext/libmemcached-0.50/docs/man/memcached_fetch.3 +174 -0
  116. data/ext/libmemcached-0.50/docs/man/memcached_fetch_execute.3 +174 -0
  117. data/ext/libmemcached-0.50/docs/man/memcached_fetch_result.3 +174 -0
  118. data/ext/libmemcached-0.50/docs/man/memcached_flush_buffers.3 +72 -0
  119. data/ext/libmemcached-0.50/docs/man/memcached_free.3 +99 -0
  120. data/ext/libmemcached-0.50/docs/man/memcached_generate_hash.3 +85 -0
  121. data/ext/libmemcached-0.50/docs/man/memcached_generate_hash_value.3 +85 -0
  122. data/ext/libmemcached-0.50/docs/man/memcached_get.3 +174 -0
  123. data/ext/libmemcached-0.50/docs/man/memcached_get_by_key.3 +174 -0
  124. data/ext/libmemcached-0.50/docs/man/memcached_get_memory_allocators.3 +111 -0
  125. data/ext/libmemcached-0.50/docs/man/memcached_get_sasl_callbacks.3 +95 -0
  126. data/ext/libmemcached-0.50/docs/man/memcached_get_user_data.3 +79 -0
  127. data/ext/libmemcached-0.50/docs/man/memcached_increment.3 +124 -0
  128. data/ext/libmemcached-0.50/docs/man/memcached_increment_with_initial.3 +124 -0
  129. data/ext/libmemcached-0.50/docs/man/memcached_lib_version.3 +76 -0
  130. data/ext/libmemcached-0.50/docs/man/memcached_mget.3 +174 -0
  131. data/ext/libmemcached-0.50/docs/man/memcached_mget_by_key.3 +174 -0
  132. data/ext/libmemcached-0.50/docs/man/memcached_mget_execute.3 +174 -0
  133. data/ext/libmemcached-0.50/docs/man/memcached_mget_execute_by_key.3 +174 -0
  134. data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_get.3 +139 -0
  135. data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_set.3 +139 -0
  136. data/ext/libmemcached-0.50/docs/man/memcached_pool_create.3 +139 -0
  137. data/ext/libmemcached-0.50/docs/man/memcached_pool_destroy.3 +139 -0
  138. data/ext/libmemcached-0.50/docs/man/memcached_pool_pop.3 +139 -0
  139. data/ext/libmemcached-0.50/docs/man/memcached_pool_push.3 +139 -0
  140. data/ext/libmemcached-0.50/docs/man/memcached_pool_st.3 +139 -0
  141. data/ext/libmemcached-0.50/docs/man/memcached_prepend.3 +111 -0
  142. data/ext/libmemcached-0.50/docs/man/memcached_prepend_by_key.3 +111 -0
  143. data/ext/libmemcached-0.50/docs/man/memcached_quit.3 +74 -0
  144. data/ext/libmemcached-0.50/docs/man/memcached_replace.3 +132 -0
  145. data/ext/libmemcached-0.50/docs/man/memcached_replace_by_key.3 +132 -0
  146. data/ext/libmemcached-0.50/docs/man/memcached_sasl_set_auth_data.3 +95 -0
  147. data/ext/libmemcached-0.50/docs/man/memcached_server_add.3 +141 -0
  148. data/ext/libmemcached-0.50/docs/man/memcached_server_count.3 +141 -0
  149. data/ext/libmemcached-0.50/docs/man/memcached_server_cursor.3 +141 -0
  150. data/ext/libmemcached-0.50/docs/man/memcached_server_list.3 +141 -0
  151. data/ext/libmemcached-0.50/docs/man/memcached_server_list_append.3 +111 -0
  152. data/ext/libmemcached-0.50/docs/man/memcached_server_list_count.3 +111 -0
  153. data/ext/libmemcached-0.50/docs/man/memcached_server_list_free.3 +111 -0
  154. data/ext/libmemcached-0.50/docs/man/memcached_server_push.3 +141 -0
  155. data/ext/libmemcached-0.50/docs/man/memcached_servers_parse.3 +111 -0
  156. data/ext/libmemcached-0.50/docs/man/memcached_set.3 +132 -0
  157. data/ext/libmemcached-0.50/docs/man/memcached_set_by_key.3 +132 -0
  158. data/ext/libmemcached-0.50/docs/man/memcached_set_memory_allocators.3 +111 -0
  159. data/ext/libmemcached-0.50/docs/man/memcached_set_sasl_callbacks.3 +95 -0
  160. data/ext/libmemcached-0.50/docs/man/memcached_set_user_data.3 +79 -0
  161. data/ext/libmemcached-0.50/docs/man/memcached_stat.3 +116 -0
  162. data/ext/libmemcached-0.50/docs/man/memcached_stat_execute.3 +116 -0
  163. data/ext/libmemcached-0.50/docs/man/memcached_stat_get_keys.3 +116 -0
  164. data/ext/libmemcached-0.50/docs/man/memcached_stat_get_value.3 +116 -0
  165. data/ext/libmemcached-0.50/docs/man/memcached_stat_servername.3 +116 -0
  166. data/ext/libmemcached-0.50/docs/man/memcached_strerror.3 +69 -0
  167. data/ext/libmemcached-0.50/docs/man/memcached_verbosity.3 +66 -0
  168. data/ext/libmemcached-0.50/docs/man/memcached_version.3 +76 -0
  169. data/ext/libmemcached-0.50/docs/man/memcapable.1 +92 -0
  170. data/ext/libmemcached-0.50/docs/man/memcat.1 +71 -0
  171. data/ext/libmemcached-0.50/docs/man/memcp.1 +77 -0
  172. data/ext/libmemcached-0.50/docs/man/memdump.1 +66 -0
  173. data/ext/libmemcached-0.50/docs/man/memerror.1 +65 -0
  174. data/ext/libmemcached-0.50/docs/man/memflush.1 +73 -0
  175. data/ext/libmemcached-0.50/docs/man/memrm.1 +72 -0
  176. data/ext/libmemcached-0.50/docs/man/memslap.1 +59 -0
  177. data/ext/libmemcached-0.50/docs/man/memstat.1 +70 -0
  178. data/ext/libmemcached-0.50/example/include.am +24 -0
  179. data/ext/libmemcached-0.50/example/interface_v0.c +594 -0
  180. data/ext/libmemcached-0.50/example/interface_v1.c +411 -0
  181. data/ext/libmemcached-0.50/example/memcached_light.c +474 -0
  182. data/ext/libmemcached-0.50/example/memcached_light.h +7 -0
  183. data/ext/libmemcached-0.50/example/storage.c +172 -0
  184. data/ext/libmemcached-0.50/example/storage.h +27 -0
  185. data/ext/libmemcached-0.50/example/storage_innodb.c +535 -0
  186. data/ext/libmemcached-0.50/libhashkit/algorithm.cc +69 -0
  187. data/ext/libmemcached-0.50/libhashkit/algorithm.h +96 -0
  188. data/ext/libmemcached-0.50/libhashkit/behavior.cc +9 -0
  189. data/ext/libmemcached-0.50/libhashkit/behavior.h +26 -0
  190. data/ext/libmemcached-0.50/libhashkit/common.h +33 -0
  191. data/ext/libmemcached-0.50/libhashkit/configure.h.in +19 -0
  192. data/ext/libmemcached-0.50/libhashkit/crc32.cc +86 -0
  193. data/ext/libmemcached-0.50/libhashkit/digest.cc +62 -0
  194. data/ext/libmemcached-0.50/libhashkit/digest.h +30 -0
  195. data/ext/libmemcached-0.50/libhashkit/fnv.cc +75 -0
  196. data/ext/libmemcached-0.50/libhashkit/function.cc +156 -0
  197. data/ext/libmemcached-0.50/libhashkit/function.h +44 -0
  198. data/ext/libmemcached-0.50/libhashkit/hashkit.cc +100 -0
  199. data/ext/libmemcached-0.50/libhashkit/hashkit.h +95 -0
  200. data/ext/libmemcached-0.50/libhashkit/hashkit.hpp +97 -0
  201. data/ext/libmemcached-0.50/libhashkit/hsieh.cc +70 -0
  202. data/ext/libmemcached-0.50/libhashkit/include.am +69 -0
  203. data/ext/libmemcached-0.50/libhashkit/jenkins.cc +214 -0
  204. data/ext/libmemcached-0.50/libhashkit/ketama.cc +164 -0
  205. data/ext/libmemcached-0.50/libhashkit/md5.cc +367 -0
  206. data/ext/libmemcached-0.50/libhashkit/murmur.cc +77 -0
  207. data/ext/libmemcached-0.50/libhashkit/one_at_a_time.cc +34 -0
  208. data/ext/libmemcached-0.50/libhashkit/str_algorithm.cc +58 -0
  209. data/ext/libmemcached-0.50/libhashkit/str_algorithm.h +48 -0
  210. data/ext/libmemcached-0.50/libhashkit/strerror.cc +25 -0
  211. data/ext/libmemcached-0.50/libhashkit/strerror.h +23 -0
  212. data/ext/libmemcached-0.50/libhashkit/types.h +90 -0
  213. data/ext/libmemcached-0.50/libhashkit/visibility.h +48 -0
  214. data/ext/libmemcached-0.50/libmemcached/allocators.cc +119 -0
  215. data/ext/libmemcached-0.50/libmemcached/allocators.h +87 -0
  216. data/ext/libmemcached-0.50/libmemcached/analyze.cc +110 -0
  217. data/ext/libmemcached-0.50/libmemcached/analyze.h +66 -0
  218. data/ext/libmemcached-0.50/libmemcached/array.c +128 -0
  219. data/ext/libmemcached-0.50/libmemcached/array.h +75 -0
  220. data/ext/libmemcached-0.50/libmemcached/auto.cc +383 -0
  221. data/ext/libmemcached-0.50/libmemcached/auto.h +111 -0
  222. data/ext/libmemcached-0.50/libmemcached/basic_string.h +55 -0
  223. data/ext/libmemcached-0.50/libmemcached/behavior.cc +590 -0
  224. data/ext/libmemcached-0.50/libmemcached/behavior.h +86 -0
  225. data/ext/libmemcached-0.50/libmemcached/byteorder.cc +90 -0
  226. data/ext/libmemcached-0.50/libmemcached/byteorder.h +52 -0
  227. data/ext/libmemcached-0.50/libmemcached/callback.cc +160 -0
  228. data/ext/libmemcached-0.50/libmemcached/callback.h +61 -0
  229. data/ext/libmemcached-0.50/libmemcached/common.h +182 -0
  230. data/ext/libmemcached-0.50/libmemcached/configure.h.in +52 -0
  231. data/ext/libmemcached-0.50/libmemcached/connect.cc +626 -0
  232. data/ext/libmemcached-0.50/libmemcached/constants.h +167 -0
  233. data/ext/libmemcached-0.50/libmemcached/delete.cc +266 -0
  234. data/ext/libmemcached-0.50/libmemcached/delete.h +57 -0
  235. data/ext/libmemcached-0.50/libmemcached/do.cc +100 -0
  236. data/ext/libmemcached-0.50/libmemcached/do.hpp +49 -0
  237. data/ext/libmemcached-0.50/libmemcached/dump.cc +107 -0
  238. data/ext/libmemcached-0.50/libmemcached/dump.h +51 -0
  239. data/ext/libmemcached-0.50/libmemcached/error.cc +419 -0
  240. data/ext/libmemcached-0.50/libmemcached/error.h +61 -0
  241. data/ext/libmemcached-0.50/libmemcached/error.hpp +87 -0
  242. data/ext/libmemcached-0.50/libmemcached/exception.hpp +63 -0
  243. data/ext/libmemcached-0.50/libmemcached/fetch.cc +267 -0
  244. data/ext/libmemcached-0.50/libmemcached/fetch.h +53 -0
  245. data/ext/libmemcached-0.50/libmemcached/flush.cc +149 -0
  246. data/ext/libmemcached-0.50/libmemcached/flush.h +49 -0
  247. data/ext/libmemcached-0.50/libmemcached/flush_buffers.cc +66 -0
  248. data/ext/libmemcached-0.50/libmemcached/flush_buffers.h +49 -0
  249. data/ext/libmemcached-0.50/libmemcached/get.cc +842 -0
  250. data/ext/libmemcached-0.50/libmemcached/get.h +135 -0
  251. data/ext/libmemcached-0.50/libmemcached/hash.cc +178 -0
  252. data/ext/libmemcached-0.50/libmemcached/hash.h +68 -0
  253. data/ext/libmemcached-0.50/libmemcached/hosts.cc +516 -0
  254. data/ext/libmemcached-0.50/libmemcached/include.am +183 -0
  255. data/ext/libmemcached-0.50/libmemcached/initialize_query.cc +70 -0
  256. data/ext/libmemcached-0.50/libmemcached/initialize_query.h +51 -0
  257. data/ext/libmemcached-0.50/libmemcached/internal.h +46 -0
  258. data/ext/libmemcached-0.50/libmemcached/io.cc +920 -0
  259. data/ext/libmemcached-0.50/libmemcached/io.h +119 -0
  260. data/ext/libmemcached-0.50/libmemcached/is.h +48 -0
  261. data/ext/libmemcached-0.50/libmemcached/key.cc +23 -0
  262. data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.d +30 -0
  263. data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.h +118 -0
  264. data/ext/libmemcached-0.50/libmemcached/memcached.cc +437 -0
  265. data/ext/libmemcached-0.50/libmemcached/memcached.h +214 -0
  266. data/ext/libmemcached-0.50/libmemcached/memcached.hpp +799 -0
  267. data/ext/libmemcached-0.50/libmemcached/memcached/README.txt +7 -0
  268. data/ext/libmemcached-0.50/libmemcached/memcached/protocol_binary.h +726 -0
  269. data/ext/libmemcached-0.50/libmemcached/memcached/vbucket.h +26 -0
  270. data/ext/libmemcached-0.50/libmemcached/memcached_util.h +44 -0
  271. data/ext/libmemcached-0.50/libmemcached/memory.h +79 -0
  272. data/ext/libmemcached-0.50/libmemcached/options.cc +178 -0
  273. data/ext/libmemcached-0.50/libmemcached/options.h +49 -0
  274. data/ext/libmemcached-0.50/libmemcached/options.hpp +56 -0
  275. data/ext/libmemcached-0.50/libmemcached/options/context.h +151 -0
  276. data/ext/libmemcached-0.50/libmemcached/options/include.am +19 -0
  277. data/ext/libmemcached-0.50/libmemcached/options/parser.am +0 -0
  278. data/ext/libmemcached-0.50/libmemcached/options/parser.cc +2324 -0
  279. data/ext/libmemcached-0.50/libmemcached/options/parser.h +122 -0
  280. data/ext/libmemcached-0.50/libmemcached/options/scanner.cc +3203 -0
  281. data/ext/libmemcached-0.50/libmemcached/options/scanner.h +479 -0
  282. data/ext/libmemcached-0.50/libmemcached/options/server.h +60 -0
  283. data/ext/libmemcached-0.50/libmemcached/options/symbol.h +57 -0
  284. data/ext/libmemcached-0.50/libmemcached/parse.cc +110 -0
  285. data/ext/libmemcached-0.50/libmemcached/parse.h +23 -0
  286. data/ext/libmemcached-0.50/libmemcached/platform.h +56 -0
  287. data/ext/libmemcached-0.50/libmemcached/prefix_key.cc +65 -0
  288. data/ext/libmemcached-0.50/libmemcached/prefix_key.h +49 -0
  289. data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.c +963 -0
  290. data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.h +40 -0
  291. data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.c +1121 -0
  292. data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.h +47 -0
  293. data/ext/libmemcached-0.50/libmemcached/protocol/cache.c +149 -0
  294. data/ext/libmemcached-0.50/libmemcached/protocol/cache.h +116 -0
  295. data/ext/libmemcached-0.50/libmemcached/protocol/callback.h +418 -0
  296. data/ext/libmemcached-0.50/libmemcached/protocol/common.h +163 -0
  297. data/ext/libmemcached-0.50/libmemcached/protocol/include.am +26 -0
  298. data/ext/libmemcached-0.50/libmemcached/protocol/pedantic.c +202 -0
  299. data/ext/libmemcached-0.50/libmemcached/protocol/protocol_handler.c +365 -0
  300. data/ext/libmemcached-0.50/libmemcached/protocol_handler.h +215 -0
  301. data/ext/libmemcached-0.50/libmemcached/purge.cc +90 -0
  302. data/ext/libmemcached-0.50/libmemcached/quit.cc +139 -0
  303. data/ext/libmemcached-0.50/libmemcached/quit.h +55 -0
  304. data/ext/libmemcached-0.50/libmemcached/response.cc +619 -0
  305. data/ext/libmemcached-0.50/libmemcached/response.h +57 -0
  306. data/ext/libmemcached-0.50/libmemcached/result.cc +173 -0
  307. data/ext/libmemcached-0.50/libmemcached/result.h +100 -0
  308. data/ext/libmemcached-0.50/libmemcached/return.h +98 -0
  309. data/ext/libmemcached-0.50/libmemcached/sasl.c +408 -0
  310. data/ext/libmemcached-0.50/libmemcached/sasl.h +86 -0
  311. data/ext/libmemcached-0.50/libmemcached/server.cc +351 -0
  312. data/ext/libmemcached-0.50/libmemcached/server.h +169 -0
  313. data/ext/libmemcached-0.50/libmemcached/server_list.cc +88 -0
  314. data/ext/libmemcached-0.50/libmemcached/server_list.h +77 -0
  315. data/ext/libmemcached-0.50/libmemcached/stats.cc +623 -0
  316. data/ext/libmemcached-0.50/libmemcached/stats.h +96 -0
  317. data/ext/libmemcached-0.50/libmemcached/storage.cc +567 -0
  318. data/ext/libmemcached-0.50/libmemcached/storage.h +133 -0
  319. data/ext/libmemcached-0.50/libmemcached/strerror.cc +189 -0
  320. data/ext/libmemcached-0.50/libmemcached/strerror.h +50 -0
  321. data/ext/libmemcached-0.50/libmemcached/string.cc +253 -0
  322. data/ext/libmemcached-0.50/libmemcached/string.h +121 -0
  323. data/ext/libmemcached-0.50/libmemcached/touch.cc +106 -0
  324. data/ext/libmemcached-0.50/libmemcached/touch.h +59 -0
  325. data/ext/libmemcached-0.50/libmemcached/types.h +117 -0
  326. data/ext/libmemcached-0.50/libmemcached/util.h +40 -0
  327. data/ext/libmemcached-0.50/libmemcached/util/flush.cc +61 -0
  328. data/ext/libmemcached-0.50/libmemcached/util/flush.h +50 -0
  329. data/ext/libmemcached-0.50/libmemcached/util/include.am +34 -0
  330. data/ext/libmemcached-0.50/libmemcached/util/ping.cc +62 -0
  331. data/ext/libmemcached-0.50/libmemcached/util/ping.h +49 -0
  332. data/ext/libmemcached-0.50/libmemcached/util/pool.cc +392 -0
  333. data/ext/libmemcached-0.50/libmemcached/util/pool.h +78 -0
  334. data/ext/libmemcached-0.50/libmemcached/util/version.cc +87 -0
  335. data/ext/libmemcached-0.50/libmemcached/util/version.h +53 -0
  336. data/ext/libmemcached-0.50/libmemcached/verbosity.cc +97 -0
  337. data/ext/libmemcached-0.50/libmemcached/verbosity.h +50 -0
  338. data/ext/libmemcached-0.50/libmemcached/version.cc +214 -0
  339. data/ext/libmemcached-0.50/libmemcached/version.h +52 -0
  340. data/ext/libmemcached-0.50/libmemcached/virtual_bucket.c +118 -0
  341. data/ext/libmemcached-0.50/libmemcached/virtual_bucket.h +59 -0
  342. data/ext/libmemcached-0.50/libmemcached/visibility.h +51 -0
  343. data/ext/libmemcached-0.50/libmemcached/watchpoint.h +110 -0
  344. data/ext/libmemcached-0.50/libtest/callbacks.h +21 -0
  345. data/ext/libmemcached-0.50/libtest/collection.h +19 -0
  346. data/ext/libmemcached-0.50/libtest/common.h +50 -0
  347. data/ext/libmemcached-0.50/libtest/core.h +11 -0
  348. data/ext/libmemcached-0.50/libtest/error.h +18 -0
  349. data/ext/libmemcached-0.50/libtest/failed.h +52 -0
  350. data/ext/libmemcached-0.50/libtest/framework.cc +57 -0
  351. data/ext/libmemcached-0.50/libtest/framework.h +137 -0
  352. data/ext/libmemcached-0.50/libtest/get.h +22 -0
  353. data/ext/libmemcached-0.50/libtest/include.am +52 -0
  354. data/ext/libmemcached-0.50/libtest/runner.h +19 -0
  355. data/ext/libmemcached-0.50/libtest/server.c +355 -0
  356. data/ext/libmemcached-0.50/libtest/server.h +43 -0
  357. data/ext/libmemcached-0.50/libtest/stats.h +30 -0
  358. data/ext/libmemcached-0.50/libtest/strerror.h +14 -0
  359. data/ext/libmemcached-0.50/libtest/test.cc +319 -0
  360. data/ext/libmemcached-0.50/libtest/test.h +162 -0
  361. data/ext/libmemcached-0.50/libtest/test.hpp +46 -0
  362. data/ext/libmemcached-0.50/libtest/visibility.h +69 -0
  363. data/ext/libmemcached-0.50/m4/ac_cxx_header_stdcxx_98.m4 +83 -0
  364. data/ext/libmemcached-0.50/m4/acx_pthread.m4 +271 -0
  365. data/ext/libmemcached-0.50/m4/byteorder.m4 +19 -0
  366. data/ext/libmemcached-0.50/m4/deprecated.m4 +17 -0
  367. data/ext/libmemcached-0.50/m4/eagain.m4 +28 -0
  368. data/ext/libmemcached-0.50/m4/enable_utillib.m4 +16 -0
  369. data/ext/libmemcached-0.50/m4/gettext.m4 +379 -0
  370. data/ext/libmemcached-0.50/m4/hsieh.m4 +18 -0
  371. data/ext/libmemcached-0.50/m4/iconv.m4 +214 -0
  372. data/ext/libmemcached-0.50/m4/lib-ld.m4 +110 -0
  373. data/ext/libmemcached-0.50/m4/lib-link.m4 +767 -0
  374. data/ext/libmemcached-0.50/m4/lib-prefix.m4 +221 -0
  375. data/ext/libmemcached-0.50/m4/libtool.m4 +7851 -0
  376. data/ext/libmemcached-0.50/m4/ltoptions.m4 +369 -0
  377. data/ext/libmemcached-0.50/m4/ltsugar.m4 +123 -0
  378. data/ext/libmemcached-0.50/m4/ltversion.m4 +23 -0
  379. data/ext/libmemcached-0.50/m4/lt~obsolete.m4 +98 -0
  380. data/ext/libmemcached-0.50/m4/memaslap.m4 +9 -0
  381. data/ext/libmemcached-0.50/m4/memcached.m4 +31 -0
  382. data/ext/libmemcached-0.50/m4/murmur.m4 +18 -0
  383. data/ext/libmemcached-0.50/m4/pandora_64bit.m4 +60 -0
  384. data/ext/libmemcached-0.50/m4/pandora_bison.m4 +33 -0
  385. data/ext/libmemcached-0.50/m4/pandora_canonical.m4 +418 -0
  386. data/ext/libmemcached-0.50/m4/pandora_check_compiler_version.m4 +37 -0
  387. data/ext/libmemcached-0.50/m4/pandora_check_cxx_standard.m4 +23 -0
  388. data/ext/libmemcached-0.50/m4/pandora_cinttypes.m4 +39 -0
  389. data/ext/libmemcached-0.50/m4/pandora_clock_gettime.m4 +15 -0
  390. data/ext/libmemcached-0.50/m4/pandora_compile_stdcxx_0x.m4 +103 -0
  391. data/ext/libmemcached-0.50/m4/pandora_cstdint.m4 +38 -0
  392. data/ext/libmemcached-0.50/m4/pandora_cxx_demangle.m4 +27 -0
  393. data/ext/libmemcached-0.50/m4/pandora_enable_dtrace.m4 +60 -0
  394. data/ext/libmemcached-0.50/m4/pandora_ensure_gcc_version.m4 +62 -0
  395. data/ext/libmemcached-0.50/m4/pandora_extensions.m4 +16 -0
  396. data/ext/libmemcached-0.50/m4/pandora_fdatasync.m4 +25 -0
  397. data/ext/libmemcached-0.50/m4/pandora_flex.m4 +33 -0
  398. data/ext/libmemcached-0.50/m4/pandora_have_better_malloc.m4 +66 -0
  399. data/ext/libmemcached-0.50/m4/pandora_have_boost.m4 +93 -0
  400. data/ext/libmemcached-0.50/m4/pandora_have_gcc_atomics.m4 +37 -0
  401. data/ext/libmemcached-0.50/m4/pandora_have_innodb.m4 +41 -0
  402. data/ext/libmemcached-0.50/m4/pandora_have_libaio.m4 +56 -0
  403. data/ext/libmemcached-0.50/m4/pandora_have_libavahi.m4 +41 -0
  404. data/ext/libmemcached-0.50/m4/pandora_have_libbdb.m4 +40 -0
  405. data/ext/libmemcached-0.50/m4/pandora_have_libboost_date_time.m4 +46 -0
  406. data/ext/libmemcached-0.50/m4/pandora_have_libboost_filesystem.m4 +47 -0
  407. data/ext/libmemcached-0.50/m4/pandora_have_libboost_iostreams.m4 +49 -0
  408. data/ext/libmemcached-0.50/m4/pandora_have_libboost_options.m4 +47 -0
  409. data/ext/libmemcached-0.50/m4/pandora_have_libboost_regex.m4 +54 -0
  410. data/ext/libmemcached-0.50/m4/pandora_have_libboost_test.m4 +45 -0
  411. data/ext/libmemcached-0.50/m4/pandora_have_libboost_thread.m4 +54 -0
  412. data/ext/libmemcached-0.50/m4/pandora_have_libcassandra.m4 +44 -0
  413. data/ext/libmemcached-0.50/m4/pandora_have_libcurl.m4 +62 -0
  414. data/ext/libmemcached-0.50/m4/pandora_have_libdl.m4 +51 -0
  415. data/ext/libmemcached-0.50/m4/pandora_have_libdrizzle.m4 +61 -0
  416. data/ext/libmemcached-0.50/m4/pandora_have_libevent.m4 +66 -0
  417. data/ext/libmemcached-0.50/m4/pandora_have_libgearman.m4 +41 -0
  418. data/ext/libmemcached-0.50/m4/pandora_have_libgtest.m4 +47 -0
  419. data/ext/libmemcached-0.50/m4/pandora_have_libhaildb.m4 +43 -0
  420. data/ext/libmemcached-0.50/m4/pandora_have_libhashkit.m4 +42 -0
  421. data/ext/libmemcached-0.50/m4/pandora_have_libinnodb.m4 +64 -0
  422. data/ext/libmemcached-0.50/m4/pandora_have_libldap.m4 +73 -0
  423. data/ext/libmemcached-0.50/m4/pandora_have_libmemcached.m4 +106 -0
  424. data/ext/libmemcached-0.50/m4/pandora_have_libmysqlclient.m4 +146 -0
  425. data/ext/libmemcached-0.50/m4/pandora_have_libndbclient.m4 +80 -0
  426. data/ext/libmemcached-0.50/m4/pandora_have_libpcre.m4 +73 -0
  427. data/ext/libmemcached-0.50/m4/pandora_have_libpq.m4 +46 -0
  428. data/ext/libmemcached-0.50/m4/pandora_have_libpqxx.m4 +44 -0
  429. data/ext/libmemcached-0.50/m4/pandora_have_libsqlite3.m4 +42 -0
  430. data/ext/libmemcached-0.50/m4/pandora_have_libtokyocabinet.m4 +54 -0
  431. data/ext/libmemcached-0.50/m4/pandora_have_libuuid.m4 +55 -0
  432. data/ext/libmemcached-0.50/m4/pandora_have_libvbucket.m4 +40 -0
  433. data/ext/libmemcached-0.50/m4/pandora_have_libxml2.m4 +52 -0
  434. data/ext/libmemcached-0.50/m4/pandora_have_libz.m4 +51 -0
  435. data/ext/libmemcached-0.50/m4/pandora_have_protobuf.m4 +82 -0
  436. data/ext/libmemcached-0.50/m4/pandora_have_sasl.m4 +133 -0
  437. data/ext/libmemcached-0.50/m4/pandora_have_thrift.m4 +45 -0
  438. data/ext/libmemcached-0.50/m4/pandora_header_assert.m4 +23 -0
  439. data/ext/libmemcached-0.50/m4/pandora_header_stdcxx_98.m4 +83 -0
  440. data/ext/libmemcached-0.50/m4/pandora_intltool.m4 +225 -0
  441. data/ext/libmemcached-0.50/m4/pandora_libtool.m4 +25 -0
  442. data/ext/libmemcached-0.50/m4/pandora_optimize.m4 +75 -0
  443. data/ext/libmemcached-0.50/m4/pandora_platform.m4 +117 -0
  444. data/ext/libmemcached-0.50/m4/pandora_plugins.m4 +62 -0
  445. data/ext/libmemcached-0.50/m4/pandora_print_callstack.m4 +61 -0
  446. data/ext/libmemcached-0.50/m4/pandora_pthread.m4 +258 -0
  447. data/ext/libmemcached-0.50/m4/pandora_python3_devel.m4 +236 -0
  448. data/ext/libmemcached-0.50/m4/pandora_run_cpplint.m4 +8 -0
  449. data/ext/libmemcached-0.50/m4/pandora_sasl.m4 +133 -0
  450. data/ext/libmemcached-0.50/m4/pandora_shared_ptr.m4 +59 -0
  451. data/ext/libmemcached-0.50/m4/pandora_stack_direction.m4 +39 -0
  452. data/ext/libmemcached-0.50/m4/pandora_stl_hash.m4 +94 -0
  453. data/ext/libmemcached-0.50/m4/pandora_swig.m4 +39 -0
  454. data/ext/libmemcached-0.50/m4/pandora_use_pipe.m4 +36 -0
  455. data/ext/libmemcached-0.50/m4/pandora_vc_build.m4 +168 -0
  456. data/ext/libmemcached-0.50/m4/pandora_version.m4 +11 -0
  457. data/ext/libmemcached-0.50/m4/pandora_visibility.m4 +75 -0
  458. data/ext/libmemcached-0.50/m4/pandora_warnings.m4 +447 -0
  459. data/ext/libmemcached-0.50/m4/pandora_with_gettext.m4 +44 -0
  460. data/ext/libmemcached-0.50/m4/pandora_with_lua.m4 +55 -0
  461. data/ext/libmemcached-0.50/m4/pandora_with_memcached.m4 +41 -0
  462. data/ext/libmemcached-0.50/m4/pandora_with_perl.m4 +81 -0
  463. data/ext/libmemcached-0.50/m4/pandora_with_php.m4 +56 -0
  464. data/ext/libmemcached-0.50/m4/pandora_with_python.m4 +37 -0
  465. data/ext/libmemcached-0.50/m4/pandora_with_python3.m4 +44 -0
  466. data/ext/libmemcached-0.50/m4/pandora_with_r.m4 +33 -0
  467. data/ext/libmemcached-0.50/m4/pandora_with_ruby.m4 +79 -0
  468. data/ext/libmemcached-0.50/m4/pandora_with_valgrind.m4 +17 -0
  469. data/ext/libmemcached-0.50/m4/pkg.m4 +157 -0
  470. data/ext/libmemcached-0.50/m4/po.m4 +449 -0
  471. data/ext/libmemcached-0.50/m4/progtest.m4 +92 -0
  472. data/ext/libmemcached-0.50/m4/protocol_binary.m4 +36 -0
  473. data/ext/libmemcached-0.50/m4/setsockopt.m4 +73 -0
  474. data/ext/libmemcached-0.50/m4/socket_send_flags.m4 +66 -0
  475. data/ext/libmemcached-0.50/poll/include.am +8 -0
  476. data/ext/libmemcached-0.50/poll/poll.c +77 -0
  477. data/ext/libmemcached-0.50/poll/poll.h +45 -0
  478. data/ext/libmemcached-0.50/support/include.am +11 -0
  479. data/ext/libmemcached-0.50/support/libmemcached-fc.spec.in +105 -0
  480. data/ext/libmemcached-0.50/support/libmemcached.pc.in +10 -0
  481. data/ext/libmemcached-0.50/support/libmemcached.spec.in +281 -0
  482. data/ext/libmemcached-0.50/support/set_benchmark.sh +5 -0
  483. data/ext/libmemcached-0.50/tests/atomsmasher.cc +295 -0
  484. data/ext/libmemcached-0.50/tests/basic.cc +134 -0
  485. data/ext/libmemcached-0.50/tests/basic.h +66 -0
  486. data/ext/libmemcached-0.50/tests/cpp_example.cc +195 -0
  487. data/ext/libmemcached-0.50/tests/deprecated.cc +72 -0
  488. data/ext/libmemcached-0.50/tests/deprecated.h +49 -0
  489. data/ext/libmemcached-0.50/tests/error_conditions.cc +63 -0
  490. data/ext/libmemcached-0.50/tests/error_conditions.h +48 -0
  491. data/ext/libmemcached-0.50/tests/hash_plus.cc +225 -0
  492. data/ext/libmemcached-0.50/tests/hash_results.h +127 -0
  493. data/ext/libmemcached-0.50/tests/hashkit_functions.cc +619 -0
  494. data/ext/libmemcached-0.50/tests/include.am +342 -0
  495. data/ext/libmemcached-0.50/tests/ketama_test_cases.h +121 -0
  496. data/ext/libmemcached-0.50/tests/ketama_test_cases_spy.h +118 -0
  497. data/ext/libmemcached-0.50/tests/libmemcached_world.h +205 -0
  498. data/ext/libmemcached-0.50/tests/mem_functions.cc +6648 -0
  499. data/ext/libmemcached-0.50/tests/mem_udp.cc +510 -0
  500. data/ext/libmemcached-0.50/tests/output_plus.res +5 -0
  501. data/ext/libmemcached-0.50/tests/parser.cc +599 -0
  502. data/ext/libmemcached-0.50/tests/parser.h +109 -0
  503. data/ext/libmemcached-0.50/tests/plus.cpp +240 -0
  504. data/ext/libmemcached-0.50/tests/pool.cc +78 -0
  505. data/ext/libmemcached-0.50/tests/pool.h +49 -0
  506. data/ext/libmemcached-0.50/tests/print.cc +58 -0
  507. data/ext/libmemcached-0.50/tests/print.h +51 -0
  508. data/ext/libmemcached-0.50/tests/replication.cc +333 -0
  509. data/ext/libmemcached-0.50/tests/replication.h +64 -0
  510. data/ext/libmemcached-0.50/tests/start.cc +29 -0
  511. data/ext/libmemcached-0.50/tests/string.cc +174 -0
  512. data/ext/libmemcached-0.50/tests/string.h +67 -0
  513. data/ext/libmemcached-0.50/tests/virtual_buckets.cc +143 -0
  514. data/ext/libmemcached-0.50/tests/virtual_buckets.h +51 -0
  515. data/ext/libmemcached-0.50/win32/include.am +11 -0
  516. data/ext/libmemcached-0.50/win32/wrappers.h +55 -0
  517. data/ext/rlibmemcached.i +263 -0
  518. data/ext/rlibmemcached_wrap.c +16732 -0
  519. data/lib/memcached.rb +32 -0
  520. data/lib/memcached/auth.rb +16 -0
  521. data/lib/memcached/behaviors.rb +77 -0
  522. data/lib/memcached/exceptions.rb +84 -0
  523. data/lib/memcached/experimental.rb +48 -0
  524. data/lib/memcached/memcached.rb +660 -0
  525. data/lib/memcached/rails.rb +133 -0
  526. data/test/profile/benchmark.rb +245 -0
  527. data/test/profile/c_profiler.rb +14 -0
  528. data/test/profile/exercise.rb +185 -0
  529. data/test/profile/rb_profiler.rb +21 -0
  530. data/test/profile/valgrind.rb +10 -0
  531. data/test/setup.rb +30 -0
  532. data/test/teardown.rb +0 -0
  533. data/test/test_helper.rb +19 -0
  534. data/test/unit/binding_test.rb +8 -0
  535. data/test/unit/memcached_experimental_test.rb +274 -0
  536. data/test/unit/memcached_test.rb +1293 -0
  537. data/test/unit/rails_test.rb +122 -0
  538. metadata +650 -0
  539. metadata.gz.sig +0 -0
@@ -0,0 +1,231 @@
1
+ /* LibMemcached
2
+ * Copyright (C) 2006-2009 Brian Aker
3
+ * All rights reserved.
4
+ *
5
+ * Use and distribution licensed under the BSD license. See
6
+ * the COPYING file in the parent directory for full text.
7
+ *
8
+ * Summary:
9
+ *
10
+ */
11
+ #include "config.h"
12
+
13
+ #include <clients/utilities.h>
14
+ #include <cstdio>
15
+ #include <cstring>
16
+ #include <ctype.h>
17
+
18
+
19
+ long int timedif(struct timeval a, struct timeval b)
20
+ {
21
+ long us, s;
22
+
23
+ us = (int)(a.tv_usec - b.tv_usec);
24
+ us /= 1000;
25
+ s = (int)(a.tv_sec - b.tv_sec);
26
+ s *= 1000;
27
+ return s + us;
28
+ }
29
+
30
+ void version_command(const char *command_name)
31
+ {
32
+ printf("%s v%u.%u\n", command_name, 1U, 0U);
33
+ exit(0);
34
+ }
35
+
36
+ static const char *lookup_help(memcached_options option)
37
+ {
38
+ switch (option)
39
+ {
40
+ case OPT_SERVERS: return("List which servers you wish to connect to.");
41
+ case OPT_VERSION: return("Display the version of the application and then exit.");
42
+ case OPT_HELP: return("Display this message and then exit.");
43
+ case OPT_VERBOSE: return("Give more details on the progression of the application.");
44
+ case OPT_DEBUG: return("Provide output only useful for debugging.");
45
+ case OPT_FLAG: return("Provide flag information for storage operation.");
46
+ case OPT_EXPIRE: return("Set the expire option for the object.");
47
+ case OPT_SET: return("Use set command with memcached when storing.");
48
+ case OPT_REPLACE: return("Use replace command with memcached when storing.");
49
+ case OPT_ADD: return("Use add command with memcached when storing.");
50
+ case OPT_SLAP_EXECUTE_NUMBER: return("Number of times to execute the given test.");
51
+ case OPT_SLAP_INITIAL_LOAD: return("Number of key pairs to load before executing tests.");
52
+ case OPT_SLAP_TEST: return("Test to run (currently \"get\" or \"set\").");
53
+ case OPT_SLAP_CONCURRENCY: return("Number of users to simulate with load.");
54
+ case OPT_SLAP_NON_BLOCK: return("Set TCP up to use non-blocking IO.");
55
+ case OPT_SLAP_TCP_NODELAY: return("Set TCP socket up to use nodelay.");
56
+ case OPT_FLUSH: return("Flush servers before running tests.");
57
+ case OPT_HASH: return("Select hash type.");
58
+ case OPT_BINARY: return("Switch to binary protocol.");
59
+ case OPT_ANALYZE: return("Analyze the provided servers.");
60
+ case OPT_UDP: return("Use UDP protocol when communicating with server.");
61
+ case OPT_USERNAME: return "Username to use for SASL authentication";
62
+ case OPT_PASSWD: return "Password to use for SASL authentication";
63
+ case OPT_FILE: return "Path to file in which to save result";
64
+ case OPT_STAT_ARGS: return "Argument for statistics";
65
+ default: WATCHPOINT_ASSERT(0);
66
+ };
67
+
68
+ WATCHPOINT_ASSERT(0);
69
+ return "forgot to document this function :)";
70
+ }
71
+
72
+ void help_command(const char *command_name, const char *description,
73
+ const struct option *long_options,
74
+ memcached_programs_help_st *options)
75
+ {
76
+ unsigned int x;
77
+ (void)options;
78
+
79
+ printf("%s v%u.%u\n\n", command_name, 1U, 0U);
80
+ printf("\t%s\n\n", description);
81
+ printf("Current options. A '=' means the option takes a value.\n\n");
82
+
83
+ for (x= 0; long_options[x].name; x++)
84
+ {
85
+ const char *help_message;
86
+
87
+ printf("\t --%s%c\n", long_options[x].name,
88
+ long_options[x].has_arg ? '=' : ' ');
89
+ if ((help_message= lookup_help(memcached_options(long_options[x].val))))
90
+ printf("\t\t%s\n", help_message);
91
+ }
92
+
93
+ printf("\n");
94
+ exit(0);
95
+ }
96
+
97
+ void process_hash_option(memcached_st *memc, char *opt_hash)
98
+ {
99
+ uint64_t set;
100
+ memcached_return_t rc;
101
+
102
+ if (opt_hash == NULL)
103
+ return;
104
+
105
+ set= MEMCACHED_HASH_DEFAULT; /* Just here to solve warning */
106
+ if (!strcasecmp(opt_hash, "CRC"))
107
+ set= MEMCACHED_HASH_CRC;
108
+ else if (!strcasecmp(opt_hash, "FNV1_64"))
109
+ set= MEMCACHED_HASH_FNV1_64;
110
+ else if (!strcasecmp(opt_hash, "FNV1A_64"))
111
+ set= MEMCACHED_HASH_FNV1A_64;
112
+ else if (!strcasecmp(opt_hash, "FNV1_32"))
113
+ set= MEMCACHED_HASH_FNV1_32;
114
+ else if (!strcasecmp(opt_hash, "FNV1A_32"))
115
+ set= MEMCACHED_HASH_FNV1A_32;
116
+ else if (!strcasecmp(opt_hash, "NONE"))
117
+ set= MEMCACHED_HASH_NONE;
118
+ else
119
+ {
120
+ fprintf(stderr, "hash: type not recognized %s\n", opt_hash);
121
+ exit(1);
122
+ }
123
+
124
+ rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, set);
125
+ if (rc != MEMCACHED_SUCCESS)
126
+ {
127
+ fprintf(stderr, "hash: memcache error %s\n", memcached_strerror(memc, rc));
128
+ exit(1);
129
+ }
130
+ }
131
+
132
+ #ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
133
+ static char *username;
134
+ static char *passwd;
135
+
136
+ static int get_username(void *context, int id, const char **result, unsigned int *len)
137
+ {
138
+ (void)context;
139
+ if (!result || (id != SASL_CB_USER && id != SASL_CB_AUTHNAME))
140
+ return SASL_BADPARAM;
141
+
142
+ *result= username;
143
+ if (len)
144
+ *len= (username == NULL) ? 0 : (unsigned int)strlen(username);
145
+
146
+ return SASL_OK;
147
+ }
148
+
149
+ static int get_password(sasl_conn_t *conn, void *context, int id,
150
+ sasl_secret_t **psecret)
151
+ {
152
+ (void)context;
153
+ static sasl_secret_t* ptr;
154
+
155
+ if (!conn || ! psecret || id != SASL_CB_PASS)
156
+ return SASL_BADPARAM;
157
+
158
+ if (passwd == NULL)
159
+ {
160
+ *psecret= NULL;
161
+ return SASL_OK;
162
+ }
163
+
164
+ size_t len= strlen(passwd);
165
+ ptr= (sasl_secret_t *)malloc(sizeof(sasl_secret_t) + len +1);
166
+ if (not ptr)
167
+ return SASL_NOMEM;
168
+
169
+ ptr->len= len;
170
+ memcpy(ptr->data, passwd, len);
171
+ ptr->data[len]= 0;
172
+
173
+ *psecret= ptr;
174
+ return SASL_OK;
175
+ }
176
+
177
+ typedef int (*local_sasl_fn)(void);
178
+
179
+ /* callbacks we support */
180
+ static sasl_callback_t sasl_callbacks[] = {
181
+ { SASL_CB_USER, (local_sasl_fn)get_username, NULL },
182
+ { SASL_CB_AUTHNAME, (local_sasl_fn)get_username, NULL },
183
+ { SASL_CB_PASS, (local_sasl_fn)get_password, NULL },
184
+ { SASL_CB_LIST_END, NULL, NULL }
185
+ };
186
+ #endif
187
+
188
+ bool initialize_sasl(memcached_st *memc, char *user, char *password)
189
+ {
190
+ #ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
191
+ if (user != NULL && password != NULL)
192
+ {
193
+ username= user;
194
+ passwd= password;
195
+
196
+ if (sasl_client_init(NULL) != SASL_OK)
197
+ {
198
+ fprintf(stderr, "Failed to initialize sasl library!\n");
199
+ return false;
200
+ }
201
+ memcached_set_sasl_callbacks(memc, sasl_callbacks);
202
+ }
203
+ #else
204
+ (void)memc;
205
+ (void)user;
206
+ (void)password;
207
+ #endif
208
+
209
+ return true;
210
+ }
211
+
212
+ void shutdown_sasl(void)
213
+ {
214
+ #ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
215
+ if (username != NULL || passwd != NULL)
216
+ sasl_done();
217
+ #endif
218
+ }
219
+
220
+ void initialize_sockets(void)
221
+ {
222
+ /* Define the function for all platforms to avoid #ifdefs in each program */
223
+ #ifdef WIN32
224
+ WSADATA wsaData;
225
+ if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0)
226
+ {
227
+ fprintf(stderr, "Socket Initialization Error. Program aborted\n");
228
+ exit(EXIT_FAILURE);
229
+ }
230
+ #endif
231
+ }
@@ -0,0 +1,64 @@
1
+ /* LibMemcached
2
+ * Copyright (C) 2006-2009 Brian Aker
3
+ * All rights reserved.
4
+ *
5
+ * Use and distribution licensed under the BSD license. See
6
+ * the COPYING file in the parent directory for full text.
7
+ *
8
+ * Summary:
9
+ *
10
+ */
11
+
12
+ #pragma once
13
+
14
+ #include <getopt.h>
15
+ #include <libmemcached/memcached.h>
16
+ #include "libmemcached/watchpoint.h"
17
+ #include "client_options.h"
18
+
19
+ #if TIME_WITH_SYS_TIME
20
+ # include <sys/time.h>
21
+ # include <time.h>
22
+ #else
23
+ # if HAVE_SYS_TIME_H
24
+ # include <sys/time.h>
25
+ # else
26
+ # include <time.h>
27
+ # endif
28
+ #endif
29
+
30
+ #ifdef __sun
31
+ /* For some odd reason the option struct on solaris defines the argument
32
+ * as char* and not const char*
33
+ */
34
+ #define OPTIONSTRING char*
35
+ #else
36
+ #define OPTIONSTRING const char*
37
+ #endif
38
+
39
+ typedef struct memcached_programs_help_st memcached_programs_help_st;
40
+
41
+ struct memcached_programs_help_st
42
+ {
43
+ char *not_used_yet;
44
+ };
45
+
46
+ #ifdef __cplusplus
47
+ extern "C" {
48
+ #endif
49
+
50
+ char *strdup_cleanup(const char *str);
51
+ void cleanup(void);
52
+ long int timedif(struct timeval a, struct timeval b);
53
+ void version_command(const char *command_name);
54
+ void help_command(const char *command_name, const char *description,
55
+ const struct option *long_options,
56
+ memcached_programs_help_st *options);
57
+ void process_hash_option(memcached_st *memc, char *opt_hash);
58
+ bool initialize_sasl(memcached_st *memc, char *user, char *password);
59
+ void shutdown_sasl(void);
60
+ void initialize_sockets(void);
61
+
62
+ #ifdef __cplusplus
63
+ } // extern "C"
64
+ #endif
@@ -0,0 +1,647 @@
1
+ /* config.h.in. Generated from configure.ac by autoheader. */
2
+
3
+
4
+ #ifndef __CONFIG_H__
5
+ #define __CONFIG_H__
6
+
7
+ /* _SYS_FEATURE_TESTS_H is Solaris, _FEATURES_H is GCC */
8
+ #if defined( _SYS_FEATURE_TESTS_H) || defined(_FEATURES_H)
9
+ #error "You should include config.h as your first include file"
10
+ #endif
11
+
12
+ #include <config/top.h>
13
+
14
+
15
+
16
+ #ifndef CONFIG_H
17
+ #define CONFIG_H
18
+
19
+ #ifdef _SYS_FEATURE_TESTS_H
20
+ #error "You should include config.h as your first include file"
21
+ #endif
22
+
23
+ #ifdef WIN32
24
+ #define _WIN32_WINNT 0x0501
25
+ #endif
26
+
27
+
28
+ /* Define if building universal (internal helper macro) */
29
+ #undef AC_APPLE_UNIVERSAL_BUILD
30
+
31
+ /* the location of <cinttypes> */
32
+ #undef CINTTYPES_H
33
+
34
+ /* the location of <cstdint> */
35
+ #undef CSTDINT_H
36
+
37
+ /* Another magical number */
38
+ #undef EAI_SYSTEM
39
+
40
+ /* Define to 1 if you have the <assert.h> header file. */
41
+ #undef HAVE_ASSERT_H
42
+
43
+ /* Define to 1 if you have the `atomic_add_32' function. */
44
+ #undef HAVE_ATOMIC_ADD_32
45
+
46
+ /* Define to 1 if you have the `atomic_add_64' function. */
47
+ #undef HAVE_ATOMIC_ADD_64
48
+
49
+ /* Define to 1 if you have the <atomic.h> header file. */
50
+ #undef HAVE_ATOMIC_H
51
+
52
+ /* Define to 1 if you have the `backtrace' function. */
53
+ #undef HAVE_BACKTRACE
54
+
55
+ /* Define to 1 if you have the `backtrace_symbols_fd' function. */
56
+ #undef HAVE_BACKTRACE_SYMBOLS_FD
57
+
58
+ /* Have a working clock_gettime function */
59
+ #undef HAVE_CLOCK_GETTIME
60
+
61
+ /* Define to 1 if you have the declaration of `madvise', and to 0 if you
62
+ don't. */
63
+ #undef HAVE_DECL_MADVISE
64
+
65
+ /* Define to 1 if you have the <dlfcn.h> header file. */
66
+ #undef HAVE_DLFCN_H
67
+
68
+ /* Enables DTRACE Support */
69
+ #undef HAVE_DTRACE
70
+
71
+ /* Define to 1 if you have the `event_base_free' function. */
72
+ #undef HAVE_EVENT_BASE_FREE
73
+
74
+ /* Define to 1 if you have the `event_base_get_method' function. */
75
+ #undef HAVE_EVENT_BASE_GET_METHOD
76
+
77
+ /* Define to 1 if you have the `event_base_new' function. */
78
+ #undef HAVE_EVENT_BASE_NEW
79
+
80
+ /* Define to 1 if you have the <execinfo.h> header file. */
81
+ #undef HAVE_EXECINFO_H
82
+
83
+ /* Define to 1 if you have the <fnmatch.h> header file. */
84
+ #undef HAVE_FNMATCH_H
85
+
86
+ /* Define to 1 if compiler provides atomic builtins. */
87
+ #undef HAVE_GCC_ATOMIC_BUILTINS
88
+
89
+ /* Define to 1 if you have the `getline' function. */
90
+ #undef HAVE_GETLINE
91
+
92
+ /* Enables hsieh hashing support */
93
+ #undef HAVE_HSIEH_HASH
94
+
95
+ /* Have ntohll */
96
+ #undef HAVE_HTONLL
97
+
98
+ /* Define to 1 if you have the <inttypes.h> header file. */
99
+ #undef HAVE_INTTYPES_H
100
+
101
+ /* Define to 1 if you have the `bind' library (-lbind). */
102
+ #undef HAVE_LIBBIND
103
+
104
+ /* Define to 1 if you have the `c_p' library (-lc_p). */
105
+ #undef HAVE_LIBC_P
106
+
107
+ /* Define if you have the event library. */
108
+ #undef HAVE_LIBEVENT
109
+
110
+ /* Define if you have the innodb library. */
111
+ #undef HAVE_LIBINNODB
112
+
113
+ /* Enables libmemcachedutil Support */
114
+ #undef HAVE_LIBMEMCACHEDUTIL
115
+
116
+ /* Define to 1 if you have the `mtmalloc' library (-lmtmalloc). */
117
+ #undef HAVE_LIBMTMALLOC
118
+
119
+ /* Define if you have the sasl library. */
120
+ #undef HAVE_LIBSASL
121
+
122
+ /* Define if you have the sasl2 library. */
123
+ #undef HAVE_LIBSASL2
124
+
125
+ /* Define to 1 if you have the `socket' library (-lsocket). */
126
+ #undef HAVE_LIBSOCKET
127
+
128
+ /* Define to 1 if you have the `tcmalloc' library (-ltcmalloc). */
129
+ #undef HAVE_LIBTCMALLOC
130
+
131
+ /* Define to 1 if you have the `tcmalloc-minimal' library
132
+ (-ltcmalloc-minimal). */
133
+ #undef HAVE_LIBTCMALLOC_MINIMAL
134
+
135
+ /* Define to 1 if you have the `umem' library (-lumem). */
136
+ #undef HAVE_LIBUMEM
137
+
138
+ /* Define to 1 if you have the <memory.h> header file. */
139
+ #undef HAVE_MEMORY_H
140
+
141
+ /* Define to 1 if you have a MSG_DONTWAIT */
142
+ #undef HAVE_MSG_DONTWAIT
143
+
144
+ /* Define to 1 if you have a HAVE_MSG_MORE */
145
+ #undef HAVE_MSG_MORE
146
+
147
+ /* Define to 1 if you have a MSG_NOSIGNAL */
148
+ #undef HAVE_MSG_NOSIGNAL
149
+
150
+ /* Enables murmur hashing support */
151
+ #undef HAVE_MURMUR_HASH
152
+
153
+ /* For some non posix threads */
154
+ #undef HAVE_NONPOSIX_PTHREAD_GETSPECIFIC
155
+
156
+ /* For some non posix threads */
157
+ #undef HAVE_NONPOSIX_PTHREAD_MUTEX_INIT
158
+
159
+ /* sigwait with one argument */
160
+ #undef HAVE_NONPOSIX_SIGWAIT
161
+
162
+ /* Define to 1 if you have the <poll.h> header file. */
163
+ #undef HAVE_POLL_H
164
+
165
+ /* Define to 1 if you have the `printstack' function. */
166
+ #undef HAVE_PRINTSTACK
167
+
168
+ /* Define if you have POSIX threads libraries and header files. */
169
+ #undef HAVE_PTHREAD
170
+
171
+ /* Define to 1 if you have the `pthread_attr_create' function. */
172
+ #undef HAVE_PTHREAD_ATTR_CREATE
173
+
174
+ /* Define to 1 if you have the `pthread_attr_getstacksize' function. */
175
+ #undef HAVE_PTHREAD_ATTR_GETSTACKSIZE
176
+
177
+ /* Define to 1 if you have the `pthread_attr_setprio' function. */
178
+ #undef HAVE_PTHREAD_ATTR_SETPRIO
179
+
180
+ /* Define to 1 if you have the `pthread_attr_setschedparam' function. */
181
+ #undef HAVE_PTHREAD_ATTR_SETSCHEDPARAM
182
+
183
+ /* pthread_attr_setscope */
184
+ #undef HAVE_PTHREAD_ATTR_SETSCOPE
185
+
186
+ /* Define to 1 if you have the `pthread_attr_setstacksize' function. */
187
+ #undef HAVE_PTHREAD_ATTR_SETSTACKSIZE
188
+
189
+ /* Define to 1 if you have the `pthread_condattr_create' function. */
190
+ #undef HAVE_PTHREAD_CONDATTR_CREATE
191
+
192
+ /* Define to 1 if you have the `pthread_getsequence_np' function. */
193
+ #undef HAVE_PTHREAD_GETSEQUENCE_NP
194
+
195
+ /* Define to 1 if you have the `pthread_key_delete' function. */
196
+ #undef HAVE_PTHREAD_KEY_DELETE
197
+
198
+ /* Define to 1 if you have the `pthread_rwlock_rdlock' function. */
199
+ #undef HAVE_PTHREAD_RWLOCK_RDLOCK
200
+
201
+ /* Define to 1 if you have the `pthread_setprio' function. */
202
+ #undef HAVE_PTHREAD_SETPRIO
203
+
204
+ /* Define to 1 if you have the `pthread_setprio_np' function. */
205
+ #undef HAVE_PTHREAD_SETPRIO_NP
206
+
207
+ /* Define to 1 if you have the `pthread_setschedparam' function. */
208
+ #undef HAVE_PTHREAD_SETSCHEDPARAM
209
+
210
+ /* Define to 1 if you have the `pthread_sigmask' function. */
211
+ #undef HAVE_PTHREAD_SIGMASK
212
+
213
+ /* Define to 1 if you have the `pthread_yield_np' function. */
214
+ #undef HAVE_PTHREAD_YIELD_NP
215
+
216
+ /* pthread_yield function with one argument */
217
+ #undef HAVE_PTHREAD_YIELD_ONE_ARG
218
+
219
+ /* pthread_yield that doesn't take any arguments */
220
+ #undef HAVE_PTHREAD_YIELD_ZERO_ARG
221
+
222
+ /* Define to 1 if you have a working SO_RCVTIMEO */
223
+ #undef HAVE_RCVTIMEO
224
+
225
+ /* POSIX readdir_r */
226
+ #undef HAVE_READDIR_R
227
+
228
+ /* Define to 1 if you have the `rwlock_init' function. */
229
+ #undef HAVE_RWLOCK_INIT
230
+
231
+ /* POSIX sigwait */
232
+ #undef HAVE_SIGWAIT
233
+
234
+ /* Define to 1 if you have a working SO_SNDTIMEO */
235
+ #undef HAVE_SNDTIMEO
236
+
237
+ /* Define to 1 if you have the <stdint.h> header file. */
238
+ #undef HAVE_STDINT_H
239
+
240
+ /* Define to 1 if you have the <stdlib.h> header file. */
241
+ #undef HAVE_STDLIB_H
242
+
243
+ /* Define to 1 if you have the <strings.h> header file. */
244
+ #undef HAVE_STRINGS_H
245
+
246
+ /* Define to 1 if you have the <string.h> header file. */
247
+ #undef HAVE_STRING_H
248
+
249
+ /* Define to 1 if you have the <sys/sdt.h> header file. */
250
+ #undef HAVE_SYS_SDT_H
251
+
252
+ /* Define to 1 if you have the <sys/socket.h> header file. */
253
+ #undef HAVE_SYS_SOCKET_H
254
+
255
+ /* Define to 1 if you have the <sys/stat.h> header file. */
256
+ #undef HAVE_SYS_STAT_H
257
+
258
+ /* Define to 1 if you have the <sys/types.h> header file. */
259
+ #undef HAVE_SYS_TYPES_H
260
+
261
+ /* Define to 1 if you have the <sys/wait.h> header file. */
262
+ #undef HAVE_SYS_WAIT_H
263
+
264
+ /* Define to 1 if you have the <ucontext.h> header file. */
265
+ #undef HAVE_UCONTEXT_H
266
+
267
+ /* Define to 1 if you have the <unistd.h> header file. */
268
+ #undef HAVE_UNISTD_H
269
+
270
+ /* Add additional valgrind code for testing with valgrind. */
271
+ #undef HAVE_VALGRIND
272
+
273
+ /* Define to 1 or 0, depending whether the compiler supports simple visibility
274
+ declarations. */
275
+ #undef HAVE_VISIBILITY
276
+
277
+ /* Define to 1 if you have the <winsock2.h> header file. */
278
+ #undef HAVE_WINSOCK2_H
279
+
280
+ /* CPU of Build System */
281
+ #undef HOST_CPU
282
+
283
+ /* OS of Build System */
284
+ #undef HOST_OS
285
+
286
+ /* Vendor of Build System */
287
+ #undef HOST_VENDOR
288
+
289
+ /* Define to the sub-directory in which libtool stores uninstalled libraries.
290
+ */
291
+ #undef LT_OBJDIR
292
+
293
+ /* Name of the memcached binary used in make test */
294
+ #undef MEMCACHED_BINARY
295
+
296
+ /* Define to 1 if assertions should be disabled. */
297
+ #undef NDEBUG
298
+
299
+ /* Define to 1 if your C compiler doesn't accept -c and -o together. */
300
+ #undef NO_MINUS_C_MINUS_O
301
+
302
+ /* Name of package */
303
+ #undef PACKAGE
304
+
305
+ /* Define to the address where bug reports for this package should be sent. */
306
+ #undef PACKAGE_BUGREPORT
307
+
308
+ /* Define to the full name of this package. */
309
+ #undef PACKAGE_NAME
310
+
311
+ /* Define to the full name and version of this package. */
312
+ #undef PACKAGE_STRING
313
+
314
+ /* Define to the one symbol short name of this package. */
315
+ #undef PACKAGE_TARNAME
316
+
317
+ /* Define to the home page for this package. */
318
+ #undef PACKAGE_URL
319
+
320
+ /* Define to the version of this package. */
321
+ #undef PACKAGE_VERSION
322
+
323
+ /* Version of the software */
324
+ #undef PANDORA_RELEASE_VERSION
325
+
326
+ /* Define to necessary symbol if this constant uses a non-standard name on
327
+ your system. */
328
+ #undef PTHREAD_CREATE_JOINABLE
329
+
330
+ /* Define if system doesn't define */
331
+ #undef RUSAGE_THREAD
332
+
333
+ /* Size of long long as computed by sizeof() */
334
+ #undef SIZEOF_LONG_LONG
335
+
336
+ /* The size of `off_t', as computed by sizeof. */
337
+ #undef SIZEOF_OFF_T
338
+
339
+ /* Size of size_t as computed by sizeof() */
340
+ #undef SIZEOF_SIZE_T
341
+
342
+ /* Define if ISO C++ 1998 header files are present. */
343
+ #undef STDCXX_98_HEADERS
344
+
345
+ /* Define to 1 if you have the ANSI C header files. */
346
+ #undef STDC_HEADERS
347
+
348
+ /* CPU of Target System */
349
+ #undef TARGET_CPU
350
+
351
+ /* OS of Target System */
352
+ #undef TARGET_OS
353
+
354
+ /* Whether we are building for FreeBSD */
355
+ #undef TARGET_OS_FREEBSD
356
+
357
+ /* Whether we build for Linux */
358
+ #undef TARGET_OS_LINUX
359
+
360
+ /* Whether we build for OSX */
361
+ #undef TARGET_OS_OSX
362
+
363
+ /* Whether we are building for Solaris */
364
+ #undef TARGET_OS_SOLARIS
365
+
366
+ /* Whether we are building for Windows */
367
+ #undef TARGET_OS_WINDOWS
368
+
369
+ /* Vendor of Target System */
370
+ #undef TARGET_VENDOR
371
+
372
+ /* Define to 1 if time_t is unsigned */
373
+ #undef TIME_T_UNSIGNED
374
+
375
+ /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
376
+ #undef TIME_WITH_SYS_TIME
377
+
378
+ /* Define to 1 if your <sys/time.h> declares `struct tm'. */
379
+ #undef TM_IN_SYS_TIME
380
+
381
+ /* Define to true if you want to use functions from atomic.h */
382
+ #undef USE_ATOMIC_H
383
+
384
+ /* Define to true if you need to test for eagain */
385
+ #undef USE_EAGAIN
386
+
387
+ /* Enable extensions on AIX 3, Interix. */
388
+ #ifndef _ALL_SOURCE
389
+ # undef _ALL_SOURCE
390
+ #endif
391
+ /* Enable GNU extensions on systems that have them. */
392
+ #ifndef _GNU_SOURCE
393
+ # undef _GNU_SOURCE
394
+ #endif
395
+ /* Enable threading extensions on Solaris. */
396
+ #ifndef _POSIX_PTHREAD_SEMANTICS
397
+ # undef _POSIX_PTHREAD_SEMANTICS
398
+ #endif
399
+ /* Enable extensions on HP NonStop. */
400
+ #ifndef _TANDEM_SOURCE
401
+ # undef _TANDEM_SOURCE
402
+ #endif
403
+ /* Enable general extensions on Solaris. */
404
+ #ifndef __EXTENSIONS__
405
+ # undef __EXTENSIONS__
406
+ #endif
407
+
408
+
409
+ /* Version number of package */
410
+ #undef VERSION
411
+
412
+ /* Version of Windows */
413
+ #undef WINVER
414
+
415
+ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
416
+ significant byte first (like Motorola and SPARC, unlike Intel). */
417
+ #if defined AC_APPLE_UNIVERSAL_BUILD
418
+ # if defined __BIG_ENDIAN__
419
+ # define WORDS_BIGENDIAN 1
420
+ # endif
421
+ #else
422
+ # ifndef WORDS_BIGENDIAN
423
+ # undef WORDS_BIGENDIAN
424
+ # endif
425
+ #endif
426
+
427
+ /* Number of bits in a file offset, on hosts where this is settable. */
428
+ #undef _FILE_OFFSET_BITS
429
+
430
+ /* Define for large files, on AIX-style hosts. */
431
+ #undef _LARGE_FILES
432
+
433
+ /* Define to 1 if on MINIX. */
434
+ #undef _MINIX
435
+
436
+ /* Define to 2 if the system does not provide POSIX.1 features except with
437
+ this defined. */
438
+ #undef _POSIX_1_SOURCE
439
+
440
+ /* Define to 1 if you need to in order for `stat' and other things to work. */
441
+ #undef _POSIX_SOURCE
442
+
443
+ /* Cause Sun Studio to not be quite so strict with standards conflicts */
444
+ #undef _STLP_NO_NEW_C_HEADERS
445
+
446
+ /* Magical number to make things work */
447
+ #undef _WIN32_WINNT
448
+
449
+ /* Workaround for bug in FreeBSD headers */
450
+ #undef __APPLE_CC__
451
+
452
+ /* Use STDC Constant Macros in C++ */
453
+ #undef __STDC_CONSTANT_MACROS
454
+
455
+ /* Use STDC Format Macros in C++ */
456
+ #undef __STDC_FORMAT_MACROS
457
+
458
+ /* Use STDC Limit Macros in C++ */
459
+ #undef __STDC_LIMIT_MACROS
460
+
461
+ /* Define to empty if `const' does not conform to ANSI C. */
462
+ #undef const
463
+
464
+ /* Define to `__inline__' or `__inline' if that's what the C compiler
465
+ calls it, or to nothing if 'inline' is not supported under any name. */
466
+ #ifndef __cplusplus
467
+ #undef inline
468
+ #endif
469
+
470
+ /* Define to the equivalent of the C99 'restrict' keyword, or to
471
+ nothing if this is not supported. Do not define if restrict is
472
+ supported directly. */
473
+ #undef restrict
474
+ /* Work around a bug in Sun C++: it does not support _Restrict or
475
+ __restrict__, even though the corresponding Sun C compiler ends up with
476
+ "#define restrict _Restrict" or "#define restrict __restrict__" in the
477
+ previous line. Perhaps some future version of Sun C++ will work with
478
+ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
479
+ #if defined __SUNPRO_CC && !defined __RESTRICT
480
+ # define _Restrict
481
+ # define __restrict__
482
+ #endif
483
+
484
+ /* Define to `unsigned int' if <sys/types.h> does not define. */
485
+ #undef size_t
486
+
487
+ /* Define to empty if the keyword `volatile' does not work. Warning: valid
488
+ code using `volatile' can become incorrect without. Disable with care. */
489
+ #undef volatile
490
+
491
+
492
+ #ifndef HAVE_SYS_SOCKET_H
493
+ # define SHUT_RD SD_RECEIVE
494
+ # define SHUT_WR SD_SEND
495
+ # define SHUT_RDWR SD_BOTH
496
+ #endif
497
+
498
+
499
+
500
+ #if defined(__cplusplus)
501
+ # include CSTDINT_H
502
+ # include CINTTYPES_H
503
+ #else
504
+ # include <stdint.h>
505
+ # include <inttypes.h>
506
+ #endif
507
+
508
+ #if !defined(HAVE_ULONG) && !defined(__USE_MISC)
509
+ # define HAVE_ULONG 1
510
+ typedef unsigned long int ulong;
511
+ #endif
512
+
513
+ /* To hide the platform differences between MS Windows and Unix, I am
514
+ * going to use the Microsoft way and #define the Microsoft-specific
515
+ * functions to the unix way. Microsoft use a separate subsystem for sockets,
516
+ * but Unix normally just use a filedescriptor on the same functions. It is
517
+ * a lot easier to map back to the unix way with macros than going the other
518
+ * way without side effect ;-)
519
+ */
520
+ #ifdef TARGET_OS_WINDOWS
521
+ #define random() rand()
522
+ #define srandom(a) srand(a)
523
+ #define get_socket_errno() WSAGetLastError()
524
+ #else
525
+ #define INVALID_SOCKET -1
526
+ #define SOCKET_ERROR -1
527
+ #define closesocket(a) close(a)
528
+ #define get_socket_errno() errno
529
+ #endif
530
+
531
+ #if defined(__cplusplus)
532
+ # if defined(DEBUG)
533
+ # include <cassert>
534
+ # include <cstddef>
535
+ # endif
536
+ template<typename To, typename From>
537
+ inline To implicit_cast(From const &f) {
538
+ return f;
539
+ }
540
+ template<typename To, typename From> // use like this: down_cast<T*>(foo);
541
+ inline To down_cast(From* f) { // so we only accept pointers
542
+ // Ensures that To is a sub-type of From *. This test is here only
543
+ // for compile-time type checking, and has no overhead in an
544
+ // optimized build at run-time, as it will be optimized away
545
+ // completely.
546
+ if (false) {
547
+ implicit_cast<From*, To>(0);
548
+ }
549
+
550
+ #if defined(DEBUG)
551
+ assert(f == NULL || dynamic_cast<To>(f) != NULL); // RTTI: debug mode only!
552
+ #endif
553
+ return static_cast<To>(f);
554
+ }
555
+ #endif /* defined(__cplusplus) */
556
+
557
+ #endif /* __CONFIG_H__ */
558
+
559
+
560
+
561
+ #ifdef HAVE_SYS_WAIT_H
562
+ #include <sys/wait.h>
563
+ #endif
564
+
565
+ #ifdef HAVE_FNMATCH_H
566
+ #include <fnmatch.h>
567
+ #endif
568
+
569
+ #ifdef HAVE_POLL_H
570
+ #include <poll.h>
571
+ #else
572
+ #include "poll/poll.h"
573
+ #endif
574
+
575
+ /* To hide the platform differences between MS Windows and Unix, I am
576
+ * going to use the Microsoft way and #define the Microsoft-specific
577
+ * functions to the unix way. Microsoft use a separate subsystem for sockets,
578
+ * but Unix normally just use a filedescriptor on the same functions. It is
579
+ * a lot easier to map back to the unix way with macros than going the other
580
+ * way without side effect ;-)
581
+ */
582
+ #ifdef WIN32
583
+ #include "win32/wrappers.h"
584
+ #define get_socket_errno() WSAGetLastError()
585
+ #else
586
+ #define INVALID_SOCKET -1
587
+ #define SOCKET_ERROR -1
588
+ #define closesocket(a) close(a)
589
+ #define get_socket_errno() errno
590
+ #endif
591
+
592
+ #ifndef HAVE_MSG_NOSIGNAL
593
+ #define MSG_NOSIGNAL 0
594
+ #endif
595
+
596
+ #ifndef HAVE_MSG_DONTWAIT
597
+ #define MSG_DONTWAIT 0
598
+ #endif
599
+
600
+ #ifndef HAVE_MSG_MORE
601
+ #define MSG_MORE 0
602
+ #endif
603
+
604
+ #endif
605
+
606
+
607
+
608
+ #ifdef __cplusplus
609
+ #include <cstdio>
610
+ #define PANDORA_PRINTSTACK_STD_PREFIX std::
611
+ #else
612
+ #include <stdio.h>
613
+ #define PANDORA_PRINTSTACK_STD_PREFIX
614
+ #endif
615
+
616
+ #if defined(HAVE_UCONTEXT_H) && defined(HAVE_PRINTSTACK)
617
+ #include <ucontext.h>
618
+ #define pandora_print_callstack(a) \
619
+ printstack(PANDORA_PRINTSTACK_STD_PREFIX fileno(a))
620
+ #elif defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && defined(HAVE_BACKTRACE_SYMBOLS_FD)
621
+
622
+ #include <execinfo.h>
623
+
624
+ #define pandora_print_callstack(a) \
625
+ { \
626
+ void *stack[100]; \
627
+ int depth = backtrace(stack, 100); \
628
+ backtrace_symbols_fd(stack, depth, PANDORA_PRINTSTACK_STD_PREFIX fileno(a)); \
629
+ }
630
+ #elif defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && defined(HAVE_BACKTRACE_SYMBOLS) && !defined(HAVE_BACKTRACE_SYMBOLS_FD)
631
+
632
+ #include <execinfo.h>
633
+
634
+ #define pandora_print_callstack(a) \
635
+ { \
636
+ void *stack[100]; \
637
+ int depth= backtrace(stack, 100); \
638
+ char **symbol= backtrace_symbols(stack, depth); \
639
+ for (int x= 0; x < size; ++x) \
640
+ PANDORA_PRINTSTACK_STD_PREFIX fprintf(a, "%s\n", symbol[x]); \
641
+ }
642
+ #else
643
+ #define pandora_print_callstack(a) \
644
+ PANDORA_PRINTSTACK_STD_PREFIX fprintf(a, \
645
+ "Stackdump not supported for this platform\n");
646
+ #endif
647
+