mirror of https://github.com/python/cpython
Issue #20306: The pw_gecos and pw_passwd fields are not required by POSIX.
If they aren't present, set them to an empty string.
This commit is contained in:
parent
8e1da5823b
commit
267b639a26
|
@ -75,10 +75,18 @@ mkpwent(struct passwd *p)
|
||||||
#define SETS(i,val) sets(v, i, val)
|
#define SETS(i,val) sets(v, i, val)
|
||||||
|
|
||||||
SETS(setIndex++, p->pw_name);
|
SETS(setIndex++, p->pw_name);
|
||||||
|
#if defined(HAVE_STRUCT_PASSWD_PW_PASSWD)
|
||||||
SETS(setIndex++, p->pw_passwd);
|
SETS(setIndex++, p->pw_passwd);
|
||||||
|
#else
|
||||||
|
SETS(setIndex++, "");
|
||||||
|
#endif
|
||||||
PyStructSequence_SET_ITEM(v, setIndex++, _PyLong_FromUid(p->pw_uid));
|
PyStructSequence_SET_ITEM(v, setIndex++, _PyLong_FromUid(p->pw_uid));
|
||||||
PyStructSequence_SET_ITEM(v, setIndex++, _PyLong_FromGid(p->pw_gid));
|
PyStructSequence_SET_ITEM(v, setIndex++, _PyLong_FromGid(p->pw_gid));
|
||||||
|
#if defined(HAVE_STRUCT_PASSWD_PW_GECOS)
|
||||||
SETS(setIndex++, p->pw_gecos);
|
SETS(setIndex++, p->pw_gecos);
|
||||||
|
#else
|
||||||
|
SETS(setIndex++, "");
|
||||||
|
#endif
|
||||||
SETS(setIndex++, p->pw_dir);
|
SETS(setIndex++, p->pw_dir);
|
||||||
SETS(setIndex++, p->pw_shell);
|
SETS(setIndex++, p->pw_shell);
|
||||||
|
|
||||||
|
|
|
@ -12916,6 +12916,33 @@ cat >>confdefs.h <<_ACEOF
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
ac_fn_c_check_member "$LINENO" "struct passwd" "pw_gecos" "ac_cv_member_struct_passwd_pw_gecos" "
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
|
||||||
|
"
|
||||||
|
if test "x$ac_cv_member_struct_passwd_pw_gecos" = xyes; then :
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_STRUCT_PASSWD_PW_GECOS 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
ac_fn_c_check_member "$LINENO" "struct passwd" "pw_passwd" "ac_cv_member_struct_passwd_pw_passwd" "
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
|
||||||
|
"
|
||||||
|
if test "x$ac_cv_member_struct_passwd_pw_passwd" = xyes; then :
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_STRUCT_PASSWD_PW_PASSWD 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3762,6 +3762,10 @@ AC_CHECK_MEMBERS([struct stat.st_flags])
|
||||||
AC_CHECK_MEMBERS([struct stat.st_gen])
|
AC_CHECK_MEMBERS([struct stat.st_gen])
|
||||||
AC_CHECK_MEMBERS([struct stat.st_birthtime])
|
AC_CHECK_MEMBERS([struct stat.st_birthtime])
|
||||||
AC_CHECK_MEMBERS([struct stat.st_blocks])
|
AC_CHECK_MEMBERS([struct stat.st_blocks])
|
||||||
|
AC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_passwd], [], [], [[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
]])
|
||||||
|
|
||||||
AC_MSG_CHECKING(for time.h that defines altzone)
|
AC_MSG_CHECKING(for time.h that defines altzone)
|
||||||
AC_CACHE_VAL(ac_cv_header_time_altzone,[
|
AC_CACHE_VAL(ac_cv_header_time_altzone,[
|
||||||
|
|
|
@ -916,6 +916,12 @@
|
||||||
/* Define to 1 if you have the <stropts.h> header file. */
|
/* Define to 1 if you have the <stropts.h> header file. */
|
||||||
#undef HAVE_STROPTS_H
|
#undef HAVE_STROPTS_H
|
||||||
|
|
||||||
|
/* Define to 1 if `pw_gecos' is a member of `struct passwd'. */
|
||||||
|
#undef HAVE_STRUCT_PASSWD_PW_GECOS
|
||||||
|
|
||||||
|
/* Define to 1 if `pw_passwd' is a member of `struct passwd'. */
|
||||||
|
#undef HAVE_STRUCT_PASSWD_PW_PASSWD
|
||||||
|
|
||||||
/* Define to 1 if `st_birthtime' is a member of `struct stat'. */
|
/* Define to 1 if `st_birthtime' is a member of `struct stat'. */
|
||||||
#undef HAVE_STRUCT_STAT_ST_BIRTHTIME
|
#undef HAVE_STRUCT_STAT_ST_BIRTHTIME
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue