From: akallabeth Date: Fri, 26 Jun 2020 08:57:05 +0000 (+0200) Subject: Use CMake to detect availability of getlogin_r X-Git-Tag: 2.2.0~1^2~26 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6565326bcd17a1e57747fbcfa961b7b8f13913f2;p=platform%2Fupstream%2Ffreerdp.git Use CMake to detect availability of getlogin_r (cherry picked from commit 3a5bfd2bd0eee134dbac4a98dcb3ed5227a8c6dc) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index be4fcbb..90aae3b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -671,6 +671,10 @@ if(UNIX OR CYGWIN) list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES m) set(X11_FEATURE_TYPE "RECOMMENDED") set(WAYLAND_FEATURE_TYPE "RECOMMENDED") + + include(CheckFunctionExists) + + check_function_exists(getlogin_r HAVE_GETLOGIN_R) else() set(X11_FEATURE_TYPE "DISABLED") set(WAYLAND_FEATURE_TYPE "DISABLED") diff --git a/channels/rdpdr/client/rdpdr_main.c b/channels/rdpdr/client/rdpdr_main.c index 98f526d..25c758c 100644 --- a/channels/rdpdr/client/rdpdr_main.c +++ b/channels/rdpdr/client/rdpdr_main.c @@ -600,7 +600,7 @@ static BOOL isAutomountLocation(const char* path) uid_t uid = getuid(); char uname[MAX_PATH] = { 0 }; -#ifndef getlogin_r +#ifndef HAVE_GETLOGIN_R strncpy(uname, getlogin(), sizeof(uname)); #else if (getlogin_r(uname, sizeof(uname)) != 0) diff --git a/client/X11/xf_client.c b/client/X11/xf_client.c index 189cb17..2a5569d 100644 --- a/client/X11/xf_client.c +++ b/client/X11/xf_client.c @@ -1181,9 +1181,16 @@ static BOOL xf_pre_connect(freerdp* instance) if (!settings->Username && !settings->CredentialsFromStdin && !settings->SmartcardLogon) { + int rc; char login_name[MAX_PATH] = { 0 }; - if (getlogin_r(login_name, sizeof(login_name)) == 0) +#ifdef HAVE_GETLOGIN_R + rc = getlogin_r(login_name, sizeof(login_name)); +#else + strncpy(login_name, getlogin(), sizeof(login_name)); + rc = 0; +#endif + if (rc == 0) { settings->Username = _strdup(login_name); diff --git a/config.h.in b/config.h.in index cf8f3f6..7e6fdfd 100644 --- a/config.h.in +++ b/config.h.in @@ -24,6 +24,7 @@ #cmakedefine HAVE_PTHREAD_MUTEX_TIMEDLOCK #cmakedefine HAVE_VALGRIND_MEMCHECK_H #cmakedefine HAVE_EXECINFO_H +#cmakedefine HAVE_GETLOGIN_R /* Features */ #cmakedefine SWRESAMPLE_FOUND diff --git a/winpr/libwinpr/sspicli/sspicli.c b/winpr/libwinpr/sspicli/sspicli.c index 671df6e..0394169 100644 --- a/winpr/libwinpr/sspicli/sspicli.c +++ b/winpr/libwinpr/sspicli/sspicli.c @@ -206,7 +206,7 @@ BOOL GetUserNameExA(EXTENDED_NAME_FORMAT NameFormat, LPSTR lpNameBuffer, PULONG switch (NameFormat) { case NameSamCompatible: -#ifndef getlogin_r +#ifndef HAVE_GETLOGIN_R strncpy(login, getlogin(), sizeof(login)); #else if (getlogin_r(login, sizeof(login)) != 0)