diff --git a/CMakeLists.txt b/CMakeLists.txt index b12298b7..520f7c5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ # This is the LGPL libmariadb project. CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) - +INCLUDE(CheckFunctionExists) IF(COMMAND CMAKE_POLICY) SET(OLD_POLICIES CMP0026 CMP0042 CMP0045) SET(NEW_POLICIES CMP0003 CMP0022 CMP0023) @@ -139,8 +139,11 @@ SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF") SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF") SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF") +ADD_DEFINITIONS(-D_GNU_SOURCE=1) +CHECK_FUNCTION_EXISTS(program_invocation_short_name HAVE_PROGRAM_INVOCATION_SHORT_NAME) +CHECK_FUNCTION_EXISTS(getprogname HAVE_GETPROGNAME) + IF(CMAKE_COMPILER_IS_GNUCC) - ADD_DEFINITIONS(-D_GNU_SOURCE=1) INCLUDE(CheckCCompilerFlag) SET(GCC_FLAGS -Wunused -Wno-uninitialized -Wall -Wextra -Wformat-security -Wno-init-self -Wwrite-strings -Wshift-count-overflow -Wdeclaration-after-statement) FOREACH(GCC_FLAG ${GCC_FLAGS}) diff --git a/include/ma_config.h.in b/include/ma_config.h.in index 899c500d..044fe775 100644 --- a/include/ma_config.h.in +++ b/include/ma_config.h.in @@ -84,6 +84,7 @@ #cmakedefine HAVE_GETPAGESIZE 1 #cmakedefine HAVE_GETPASS 1 #cmakedefine HAVE_GETPASSPHRASE 1 +#cmakedefine HAVE_GETPROGNAME 1 #cmakedefine HAVE_GETPWNAM 1 #cmakedefine HAVE_GETPWUID 1 #cmakedefine HAVE_GETRLIMIT 1 @@ -109,6 +110,7 @@ #cmakedefine HAVE_PERROR 1 #cmakedefine HAVE_POLL 1 #cmakedefine HAVE_PREAD 1 +#cmakedefine HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 #cmakedefine HAVE_PTHREAD_ATTR_CREATE 1 #cmakedefine HAVE_PTHREAD_ATTR_GETSTACKSIZE 1 #cmakedefine HAVE_PTHREAD_ATTR_SETPRIO 1 diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index d8f3ada0..6d82ff6b 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -2663,17 +2663,16 @@ mysql_optionsv(MYSQL *mysql,enum mysql_option option, ...) case MYSQL_READ_DEFAULT_GROUP: if (!arg1 || !((char *)arg1)[0]) { -#if defined(__APPLE__) || defined(__FreeBSD__) - const char * appname = getprogname(); -#elif defined(_GNU_SOURCE) +#if defined(HAVE_PROGRAM_INVOCATION_SHORT_NAME) const char * appname = program_invocation_short_name; +#elif defined(HAVE_GETPROGNAME) + const char * appname = getprogname(); #elif defined(WIN32) - char appname[FN_REFLEN]= ""; - - if (GetModuleFileName(NULL, appname, FN_REFLEN)) + char module_filename[MAX_PATH]; + char appname[MAX_PATH]=""; + if (GetModuleFileName(NULL, module_filename, MAX_PATH)) { - PathStripPath(appname); - PathRemoveExtension(appname); + _splitpath(module_filename,NULL, NULL, appname, NULL); } #else const char * appname = "";