mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-03 22:52:09 +01:00
Stop supporting non-POSIX getpwuid_r, getgrgid_r
Bug 13403 introduced support for the non-POSIX variants of these APIs found on a system called "DG/UX". Meanwhile, the complicated checks here are breaking cross-builds on systems that we actually care about. Remove the complicated checks and replace them with AC_CHECK_FUNCS. Remove the resulting dead code from a couple of .c files. https://bugzilla.gnome.org/show_bug.cgi?id=756475
This commit is contained in:
parent
c935237e75
commit
aa16359986
84
configure.ac
84
configure.ac
@ -2052,85 +2052,8 @@ glib_save_LIBS="$LIBS"
|
|||||||
# we are not doing the following for now, as this might require glib
|
# we are not doing the following for now, as this might require glib
|
||||||
# to always be linked with the thread libs on some platforms.
|
# to always be linked with the thread libs on some platforms.
|
||||||
# LIBS="$LIBS $G_THREAD_LIBS"
|
# LIBS="$LIBS $G_THREAD_LIBS"
|
||||||
AC_CHECK_FUNCS(localtime_r gmtime_r)
|
AC_CHECK_FUNCS(localtime_r gmtime_r getpwuid_r getgrgid_r)
|
||||||
AS_IF([ test "$glib_native_win32" != "yes"], [
|
|
||||||
AC_CACHE_CHECK([for posix getpwuid_r],
|
|
||||||
ac_cv_func_posix_getpwuid_r,
|
|
||||||
[AC_TRY_RUN([
|
|
||||||
#include <errno.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
int main () {
|
|
||||||
char buffer[10000];
|
|
||||||
struct passwd pwd, *pwptr = &pwd;
|
|
||||||
int error;
|
|
||||||
errno = 0;
|
|
||||||
error = getpwuid_r (0, &pwd, buffer,
|
|
||||||
sizeof (buffer), &pwptr);
|
|
||||||
return (error < 0 && errno == ENOSYS)
|
|
||||||
|| error == ENOSYS;
|
|
||||||
} ],
|
|
||||||
[ac_cv_func_posix_getpwuid_r=yes],
|
|
||||||
[ac_cv_func_posix_getpwuid_r=no])])
|
|
||||||
GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
|
|
||||||
if test "$ac_cv_func_posix_getpwuid_r" = yes; then
|
|
||||||
AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
|
|
||||||
[Have POSIX function getpwuid_r])
|
|
||||||
else
|
|
||||||
AC_CACHE_CHECK([for nonposix getpwuid_r],
|
|
||||||
ac_cv_func_nonposix_getpwuid_r,
|
|
||||||
[AC_TRY_LINK([#include <pwd.h>],
|
|
||||||
[char buffer[10000];
|
|
||||||
struct passwd pwd;
|
|
||||||
getpwuid_r (0, &pwd, buffer,
|
|
||||||
sizeof (buffer));],
|
|
||||||
[ac_cv_func_nonposix_getpwuid_r=yes],
|
|
||||||
[ac_cv_func_nonposix_getpwuid_r=no])])
|
|
||||||
GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
|
|
||||||
if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
|
|
||||||
AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
|
|
||||||
[Have non-POSIX function getpwuid_r])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
AS_IF([ test "$glib_native_win32" != "yes"], [
|
|
||||||
AC_CACHE_CHECK([for posix getgrgid_r],
|
|
||||||
ac_cv_func_posix_getgrgid_r,
|
|
||||||
[AC_TRY_RUN([
|
|
||||||
#include <errno.h>
|
|
||||||
#include <grp.h>
|
|
||||||
int main () {
|
|
||||||
char buffer[10000];
|
|
||||||
struct group grp, *grpptr = &grp;
|
|
||||||
int error;
|
|
||||||
errno = 0;
|
|
||||||
error = getgrgid_r (0, &grp, buffer,
|
|
||||||
sizeof (buffer), &grpptr);
|
|
||||||
return (error < 0 && errno == ENOSYS)
|
|
||||||
|| error == ENOSYS;
|
|
||||||
} ],
|
|
||||||
[ac_cv_func_posix_getgrgid_r=yes],
|
|
||||||
[ac_cv_func_posix_getgrgid_r=no])])
|
|
||||||
GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
|
|
||||||
AS_IF([ test "$ac_cv_func_posix_getgrgid_r" = yes ], [
|
|
||||||
AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
|
|
||||||
[Have POSIX function getgrgid_r])
|
|
||||||
], [
|
|
||||||
AC_CACHE_CHECK([for nonposix getgrgid_r],
|
|
||||||
ac_cv_func_nonposix_getgrgid_r,
|
|
||||||
[AC_TRY_LINK([#include <grp.h>],
|
|
||||||
[char buffer[10000];
|
|
||||||
struct group grp;
|
|
||||||
getgrgid_r (0, &grp, buffer,
|
|
||||||
sizeof (buffer));],
|
|
||||||
[ac_cv_func_nonposix_getgrgid_r=yes],
|
|
||||||
[ac_cv_func_nonposix_getgrgid_r=no])])
|
|
||||||
GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
|
|
||||||
if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
|
|
||||||
AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
|
|
||||||
[Have non-POSIX function getgrgid_r])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
])
|
|
||||||
LIBS="$G_THREAD_LIBS $LIBS"
|
LIBS="$G_THREAD_LIBS $LIBS"
|
||||||
AS_IF([ test x"$have_threads" = xposix], [
|
AS_IF([ test x"$have_threads" = xposix], [
|
||||||
glib_save_CPPFLAGS="$CPPFLAGS"
|
glib_save_CPPFLAGS="$CPPFLAGS"
|
||||||
@ -2180,8 +2103,7 @@ AS_IF([ test x"$have_threads" = xposix], [
|
|||||||
LIBS="$glib_save_LIBS"
|
LIBS="$glib_save_LIBS"
|
||||||
|
|
||||||
# now spit out all the warnings.
|
# now spit out all the warnings.
|
||||||
if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
|
if test "$ac_cv_func_getpwuid_r" != "yes"; then
|
||||||
test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
|
|
||||||
AC_MSG_WARN($FUNC_NO_GETPWUID_R)
|
AC_MSG_WARN($FUNC_NO_GETPWUID_R)
|
||||||
fi
|
fi
|
||||||
if test "$ac_cv_func_localtime_r" != "yes"; then
|
if test "$ac_cv_func_localtime_r" != "yes"; then
|
||||||
|
@ -1096,10 +1096,8 @@ lookup_uid_data (uid_t uid)
|
|||||||
|
|
||||||
data = g_new0 (UidData, 1);
|
data = g_new0 (UidData, 1);
|
||||||
|
|
||||||
#if defined(HAVE_POSIX_GETPWUID_R)
|
#if defined(HAVE_GETPWUID_R)
|
||||||
getpwuid_r (uid, &pwbuf, buffer, sizeof(buffer), &pwbufp);
|
getpwuid_r (uid, &pwbuf, buffer, sizeof(buffer), &pwbufp);
|
||||||
#elif defined(HAVE_NONPOSIX_GETPWUID_R)
|
|
||||||
pwbufp = getpwuid_r (uid, &pwbuf, buffer, sizeof(buffer));
|
|
||||||
#else
|
#else
|
||||||
pwbufp = getpwuid (uid);
|
pwbufp = getpwuid (uid);
|
||||||
#endif
|
#endif
|
||||||
@ -1184,10 +1182,8 @@ lookup_gid_name (gid_t gid)
|
|||||||
if (name)
|
if (name)
|
||||||
return name;
|
return name;
|
||||||
|
|
||||||
#if defined (HAVE_POSIX_GETGRGID_R)
|
#if defined (HAVE_GETGRGID_R)
|
||||||
getgrgid_r (gid, &gbuf, buffer, sizeof(buffer), &gbufp);
|
getgrgid_r (gid, &gbuf, buffer, sizeof(buffer), &gbufp);
|
||||||
#elif defined (HAVE_NONPOSIX_GETGRGID_R)
|
|
||||||
gbufp = getgrgid_r (gid, &gbuf, buffer, sizeof(buffer));
|
|
||||||
#else
|
#else
|
||||||
gbufp = getgrgid (gid);
|
gbufp = getgrgid (gid);
|
||||||
#endif
|
#endif
|
||||||
|
@ -626,7 +626,7 @@ g_get_user_database_entry (void)
|
|||||||
gint error;
|
gint error;
|
||||||
gchar *logname;
|
gchar *logname;
|
||||||
|
|
||||||
# if defined (HAVE_POSIX_GETPWUID_R) || defined (HAVE_NONPOSIX_GETPWUID_R)
|
# if defined (HAVE_GETPWUID_R)
|
||||||
struct passwd pwd;
|
struct passwd pwd;
|
||||||
# ifdef _SC_GETPW_R_SIZE_MAX
|
# ifdef _SC_GETPW_R_SIZE_MAX
|
||||||
/* This reurns the maximum length */
|
/* This reurns the maximum length */
|
||||||
@ -649,7 +649,6 @@ g_get_user_database_entry (void)
|
|||||||
buffer = g_malloc (bufsize + 6);
|
buffer = g_malloc (bufsize + 6);
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|
||||||
# ifdef HAVE_POSIX_GETPWUID_R
|
|
||||||
if (logname) {
|
if (logname) {
|
||||||
error = getpwnam_r (logname, &pwd, buffer, bufsize, &pw);
|
error = getpwnam_r (logname, &pwd, buffer, bufsize, &pw);
|
||||||
if (!pw || (pw->pw_uid != getuid ())) {
|
if (!pw || (pw->pw_uid != getuid ())) {
|
||||||
@ -660,23 +659,6 @@ g_get_user_database_entry (void)
|
|||||||
error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
|
error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
|
||||||
}
|
}
|
||||||
error = error < 0 ? errno : error;
|
error = error < 0 ? errno : error;
|
||||||
# else /* HAVE_NONPOSIX_GETPWUID_R */
|
|
||||||
# if defined(_AIX)
|
|
||||||
error = getpwuid_r (getuid (), &pwd, buffer, bufsize);
|
|
||||||
pw = error == 0 ? &pwd : NULL;
|
|
||||||
# else /* !_AIX */
|
|
||||||
if (logname) {
|
|
||||||
pw = getpwnam_r (logname, &pwd, buffer, bufsize);
|
|
||||||
if (!pw || (pw->pw_uid != getuid ())) {
|
|
||||||
/* LOGNAME is lying, fall back to looking up the uid */
|
|
||||||
pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
|
|
||||||
}
|
|
||||||
error = pw ? 0 : errno;
|
|
||||||
# endif /* !_AIX */
|
|
||||||
# endif /* HAVE_NONPOSIX_GETPWUID_R */
|
|
||||||
|
|
||||||
if (!pw)
|
if (!pw)
|
||||||
{
|
{
|
||||||
@ -702,7 +684,7 @@ g_get_user_database_entry (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (!pw);
|
while (!pw);
|
||||||
# endif /* HAVE_POSIX_GETPWUID_R || HAVE_NONPOSIX_GETPWUID_R */
|
# endif /* HAVE_GETPWUID_R */
|
||||||
|
|
||||||
if (!pw)
|
if (!pw)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user