diff --git a/cmake/CheckFunctions.cmake b/cmake/CheckFunctions.cmake index 9d3f9f95..cbfbed44 100644 --- a/cmake/CheckFunctions.cmake +++ b/cmake/CheckFunctions.cmake @@ -22,3 +22,4 @@ CHECK_FUNCTION_EXISTS (nl_langinfo HAVE_NL_LANGINFO) CHECK_FUNCTION_EXISTS (setlocale HAVE_SETLOCALE) CHECK_FUNCTION_EXISTS (poll HAVE_POLL) CHECK_FUNCTION_EXISTS (getpwuid HAVE_GETPWUID) +CHECK_FUNCTION_EXISTS (cuserid HAVE_CUSERID) diff --git a/include/ma_config.h.in b/include/ma_config.h.in index 8d462e9e..1e57257f 100644 --- a/include/ma_config.h.in +++ b/include/ma_config.h.in @@ -45,6 +45,7 @@ #cmakedefine HAVE_THR_YIELD 1 #cmakedefine HAVE_VASPRINTF 1 #cmakedefine HAVE_VSNPRINTF 1 +#cmakedefine HAVE_CUSERID 1 /* * types and sizes diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index 6e1ee05c..a4e7466b 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -497,7 +497,7 @@ struct passwd *getpwuid(uid_t); char* getlogin(void); #endif -#if !defined(MSDOS) && ! defined(VMS) && !defined(_WIN32) && !defined(OS2) +#if !defined(_WIN32) void read_user_name(char *name) { if (geteuid() == 0) @@ -507,13 +507,14 @@ void read_user_name(char *name) #ifdef HAVE_GETPWUID struct passwd *skr; const char *str; - if ((str=getlogin()) == NULL) + if ((skr=getpwuid(geteuid())) != NULL) { - if ((skr=getpwuid(geteuid())) != NULL) - str=skr->pw_name; - else if (!(str=getenv("USER")) && !(str=getenv("LOGNAME")) && - !(str=getenv("LOGIN"))) - str="UNKNOWN_USER"; + str=skr->pw_name; + } else if ((str=getlogin()) == NULL) + { + if (!(str=getenv("USER")) && !(str=getenv("LOGNAME")) && + !(str=getenv("LOGIN"))) + str="UNKNOWN_USER"; } ma_strmake(name,str,USERNAME_LENGTH); #elif defined(HAVE_CUSERID)