X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fhas.cc;h=b957bc6a49a23ce26e1c46f116985241084101d2;hb=9d09bd78e83c7798b273e98df63bc9dd76c7b5a9;hp=a7a09cb4da909cb10e3f4eb80eb18a5ecbec4c82;hpb=19f4ac3359a324785d2c7f094d378cd4afa1b76e;p=awesomized%2Flibmemcached diff --git a/libtest/has.cc b/libtest/has.cc index a7a09cb4..b957bc6a 100644 --- a/libtest/has.cc +++ b/libtest/has.cc @@ -43,6 +43,18 @@ namespace libtest { +bool has_libmemcached_sasl(void) +{ +#if defined(LIBMEMCACHED_WITH_SASL_SUPPORT) && LIBMEMCACHED_WITH_SASL_SUPPORT + if (LIBMEMCACHED_WITH_SASL_SUPPORT) + { + return true; + } +#endif + + return false; +} + bool has_libmemcached(void) { #if defined(HAVE_LIBMEMCACHED) && HAVE_LIBMEMCACHED @@ -85,7 +97,7 @@ bool has_postgres_support(void) bool has_gearmand() { -#if defined(HAVE_GEARMAND_BINARY) && HAVE_GEARMAND_BINARY +#if defined(GEARMAND_BINARY) && defined(HAVE_GEARMAND_BINARY) && HAVE_GEARMAND_BINARY if (HAVE_GEARMAND_BINARY) { std::stringstream arg_buffer; @@ -111,7 +123,7 @@ bool has_gearmand() bool has_drizzled() { -#if defined(HAVE_DRIZZLED_BINARY) && HAVE_DRIZZLED_BINARY +#if defined(DRIZZLED_BINARY) && defined(HAVE_DRIZZLED_BINARY) && HAVE_DRIZZLED_BINARY if (HAVE_DRIZZLED_BINARY) { if (access(DRIZZLED_BINARY, X_OK) == 0) @@ -126,7 +138,7 @@ bool has_drizzled() bool has_mysqld() { -#if defined(HAVE_MYSQLD_BUILD) && HAVE_MYSQLD_BUILD +#if defined(MYSQLD_BINARY) && defined(HAVE_MYSQLD_BUILD) && HAVE_MYSQLD_BUILD if (HAVE_MYSQLD_BUILD) { if (access(MYSQLD_BINARY, X_OK) == 0) @@ -141,11 +153,11 @@ bool has_mysqld() static char memcached_binary_path[FILENAME_MAX]; -static void initialize_curl_startup() +static void initialize_memcached_binary_path() { - memcached_binary_path[0]= NULL; + memcached_binary_path[0]= 0; -#if defined(HAVE_MEMCACHED_BINARY) && HAVE_MEMCACHED_BINARY +#if defined(MEMCACHED_BINARY) && defined(HAVE_MEMCACHED_BINARY) && HAVE_MEMCACHED_BINARY if (HAVE_MEMCACHED_BINARY) { std::stringstream arg_buffer; @@ -170,7 +182,7 @@ static pthread_once_t memcached_binary_once= PTHREAD_ONCE_INIT; static void initialize_memcached_binary(void) { int ret; - if ((ret= pthread_once(&memcached_binary_once, initialize_curl_startup)) != 0) + if ((ret= pthread_once(&memcached_binary_once, initialize_memcached_binary_path)) != 0) { FATAL(strerror(ret)); } @@ -181,6 +193,7 @@ bool has_memcached() initialize_memcached_binary(); if (memcached_binary_path[0]) + if (memcached_binary_path[0] and (strlen(memcached_binary_path) > 0)) { return true; } @@ -200,29 +213,61 @@ const char* memcached_binary() return NULL; } -bool has_memcached_sasl() +static char memcached_sasl_binary_path[FILENAME_MAX]; + +static void initialize_has_memcached_sasl() { -#if defined(HAVE_MEMCACHED_SASL_BINARY) && HAVE_MEMCACHED_SASL_BINARY - if (HAVE_MEMCACHED_SASL_BINARY) + memcached_sasl_binary_path[0]= 0; + +#if defined(MEMCACHED_BINARY) && defined(HAVE_MEMCACHED_BINARY) && HAVE_MEMCACHED_BINARY + if (HAVE_MEMCACHED_BINARY) { - if (access(MEMCACHED_SASL_BINARY, X_OK) == 0) + std::stringstream arg_buffer; + + char *getenv_ptr; + if (bool((getenv_ptr= getenv("PWD"))) and strcmp(MEMCACHED_BINARY, "memcached/memcached") == 0) { - return true; + arg_buffer << getenv_ptr; + arg_buffer << "/"; + } + arg_buffer << MEMCACHED_BINARY; + + if (access(arg_buffer.str().c_str(), X_OK) == 0) + { + strncpy(memcached_sasl_binary_path, arg_buffer.str().c_str(), FILENAME_MAX); } } #endif +} + +bool has_memcached_sasl() +{ + initialize_has_memcached_sasl(); + + if (memcached_sasl_binary_path[0] and (strlen(memcached_sasl_binary_path) > 0)) + { + return true; + } return false; } const char *gearmand_binary() { +#if defined(GEARMAND_BINARY) return GEARMAND_BINARY; +#else + return NULL; +#endif } const char *drizzled_binary() { +#if defined(DRIZZLED_BINARY) return DRIZZLED_BINARY; +#else + return NULL; +#endif } } // namespace libtest