X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcallback.c;h=29fcd1f8429de08ad9c676d5c67769f60b76f384;hb=ce11ec5eadbc51ff26aa6b64f52cf36e6b703f46;hp=aadde22caad7fab48db5b568f01395e2fcd99520;hpb=c38f53f67c27b36858e456fcb86a725d5c27b977;p=awesomized%2Flibmemcached diff --git a/libmemcached/callback.c b/libmemcached/callback.c index aadde22c..29fcd1f8 100644 --- a/libmemcached/callback.c +++ b/libmemcached/callback.c @@ -9,17 +9,17 @@ * */ -#include "common.h" +#include "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) @@ -38,7 +38,7 @@ memcached_return_t memcached_callback_set(memcached_st *ptr, } if ((key_length > MEMCACHED_PREFIX_KEY_MAX_SIZE -1) - || (strcpy(ptr->prefix_key, key) == NULL)) + || (strncpy(ptr->prefix_key, key, MEMCACHED_PREFIX_KEY_MAX_SIZE) == NULL)) { ptr->prefix_key_length= 0; return MEMCACHED_BAD_KEY_PROVIDED; @@ -50,7 +50,7 @@ memcached_return_t memcached_callback_set(memcached_st *ptr, } else { - memset(ptr->prefix_key, 0, MEMCACHED_PREFIX_KEY_MAX_SIZE); + ptr->prefix_key[0]= 0; ptr->prefix_key_length= 0; } @@ -105,6 +105,7 @@ memcached_return_t memcached_callback_set(memcached_st *ptr, ptr->delete_trigger= func; break; } + case MEMCACHED_CALLBACK_MAX: default: return MEMCACHED_FAILURE; } @@ -112,7 +113,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) { @@ -125,15 +126,15 @@ void *memcached_callback_get(memcached_st *ptr, { case MEMCACHED_CALLBACK_PREFIX_KEY: { - if (ptr->prefix_key[0] == 0) + if (ptr->prefix_key_length) { - *error= MEMCACHED_FAILURE; - return NULL; + *error= MEMCACHED_SUCCESS; + return (void *)ptr->prefix_key; } else { - *error= MEMCACHED_SUCCESS; - return (void *)ptr->prefix_key; + *error= MEMCACHED_FAILURE; + return NULL; } } case MEMCACHED_CALLBACK_USER_DATA: @@ -178,6 +179,7 @@ void *memcached_callback_get(memcached_st *ptr, *error= ptr->delete_trigger ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE; return *(void **)&ptr->delete_trigger; } + case MEMCACHED_CALLBACK_MAX: default: WATCHPOINT_ASSERT(0); *error= MEMCACHED_FAILURE;