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")
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)
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);
#cmakedefine HAVE_PTHREAD_MUTEX_TIMEDLOCK
#cmakedefine HAVE_VALGRIND_MEMCHECK_H
#cmakedefine HAVE_EXECINFO_H
+#cmakedefine HAVE_GETLOGIN_R
/* Features */
#cmakedefine SWRESAMPLE_FOUND
switch (NameFormat)
{
case NameSamCompatible:
-#ifndef getlogin_r
+#ifndef HAVE_GETLOGIN_R
strncpy(login, getlogin(), sizeof(login));
#else
if (getlogin_r(login, sizeof(login)) != 0)