X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcallback.c;h=dcb3ddeb17d0f87a3235f6b7042e8d26fa65c1bd;hb=2a1e29bce497c25fad73b9d74db4a3daf74413b5;hp=e87d775cf908b5dc86d6ca1a7261843866eceaae;hpb=965bde2b42f5ef2dd7b55b6b4b74822e7cfaa1de;p=m6w6%2Flibmemcached diff --git a/libmemcached/callback.c b/libmemcached/callback.c index e87d775c..dcb3ddeb 100644 --- a/libmemcached/callback.c +++ b/libmemcached/callback.c @@ -9,52 +9,22 @@ * */ -#include "common.h" +#include "libmemcached/common.h" #include -#include -#include -/* +/* These functions provide data and function callback support */ -memcached_return_t memcached_callback_set(memcached_st *ptr, - const memcached_callback_t flag, +memcached_return_t memcached_callback_set(memcached_st *ptr, + const memcached_callback_t flag, void *data) { switch (flag) { case MEMCACHED_CALLBACK_PREFIX_KEY: { - char *key= (char *)data; - - if (key) - { - size_t key_length= strlen(key); - - if (memcached_key_test((const char **)&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED) - { - return MEMCACHED_BAD_KEY_PROVIDED; - } - - if ((key_length > MEMCACHED_PREFIX_KEY_MAX_SIZE -1) - || (strcpy(ptr->prefix_key, key) == NULL)) - { - ptr->prefix_key_length= 0; - return MEMCACHED_BAD_KEY_PROVIDED; - } - else - { - ptr->prefix_key_length= key_length; - } - } - else - { - memset(ptr->prefix_key, 0, MEMCACHED_PREFIX_KEY_MAX_SIZE); - ptr->prefix_key_length= 0; - } - - break; + return memcached_set_prefix_key(ptr, (char*)data, data ? strlen((char*)data) : 0); } case MEMCACHED_CALLBACK_USER_DATA: { @@ -113,7 +83,7 @@ memcached_return_t memcached_callback_set(memcached_st *ptr, return MEMCACHED_SUCCESS; } -void *memcached_callback_get(memcached_st *ptr, +void *memcached_callback_get(memcached_st *ptr, const memcached_callback_t flag, memcached_return_t *error) { @@ -126,15 +96,15 @@ void *memcached_callback_get(memcached_st *ptr, { case MEMCACHED_CALLBACK_PREFIX_KEY: { - if (ptr->prefix_key[0] == 0) + if (ptr->prefix_key) { - *error= MEMCACHED_FAILURE; - return NULL; + *error= MEMCACHED_SUCCESS; + return (void *)memcached_array_string(ptr->prefix_key); } else { - *error= MEMCACHED_SUCCESS; - return (void *)ptr->prefix_key; + *error= MEMCACHED_FAILURE; + return NULL; } } case MEMCACHED_CALLBACK_USER_DATA: