run_init: fix build when crypt() is not in unistd.h

According to [1], crypt() support in POSIX is optional, so include
also <crypt.h> when _XOPEN_CRYPT is not defined or is defined to -1.
Without this I can't build run_init from source out-of-the-box on
Fedora 29.

[1] http://man7.org/linux/man-pages/man3/crypt.3.html#NOTES

Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
This commit is contained in:
Ondrej Mosnacek 2019-05-13 13:58:26 +02:00 committed by Stephen Smalley
parent 159d5063d3
commit 9adafb6d51

View File

@ -159,6 +159,14 @@ int authenticate_via_pam(const struct passwd *p_passwd_line)
#include <shadow.h> /* for shadow passwd functions */
#include <string.h> /* for strlen(), memset() */
/*
* crypt() may not be defined in unistd.h; see:
* http://man7.org/linux/man-pages/man3/crypt.3.html#NOTES
*/
#if !defined(_XOPEN_CRYPT) || _XOPEN_CRYPT == -1
#include <crypt.h>
#endif
#define PASSWORD_PROMPT _("Password:") /* prompt for getpass() */
int authenticate_via_shadow_passwd(const struct passwd *);