mirror of https://gitee.com/openkylin/wget.git
90 lines
2.7 KiB
Plaintext
90 lines
2.7 KiB
Plaintext
# getpass.m4 serial 20
|
|
dnl Copyright (C) 2002-2003, 2005-2006, 2009-2023 Free Software Foundation,
|
|
dnl Inc.
|
|
dnl This file is free software; the Free Software Foundation
|
|
dnl gives unlimited permission to copy and/or distribute it,
|
|
dnl with or without modifications, as long as this notice is preserved.
|
|
|
|
# Provide a getpass() function if the system doesn't have it.
|
|
AC_DEFUN_ONCE([gl_FUNC_GETPASS],
|
|
[
|
|
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
|
|
|
dnl Persuade Solaris <unistd.h> and <stdlib.h> to declare getpass().
|
|
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
|
|
|
dnl Persuade Android <unistd.h> to not define getpass() as an inline function.
|
|
AC_DEFINE([NO_INLINE_GETPASS], [1], [Define to 1 on Android.])
|
|
|
|
AC_CHECK_FUNCS_ONCE([getpass])
|
|
if test $ac_cv_func_getpass = no; then
|
|
HAVE_GETPASS=0
|
|
fi
|
|
])
|
|
|
|
# Provide the GNU getpass() implementation. It supports passwords of
|
|
# arbitrary length (not just 8 bytes as on HP-UX).
|
|
AC_DEFUN([gl_FUNC_GETPASS_GNU],
|
|
[
|
|
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
|
AC_REQUIRE([gl_FUNC_GETPASS])
|
|
|
|
if test $ac_cv_func_getpass = yes; then
|
|
AC_CACHE_CHECK([for getpass without length limitations],
|
|
[gl_cv_func_getpass_good],
|
|
[AC_EGREP_CPP([Lucky GNU user],
|
|
[
|
|
#include <features.h>
|
|
#ifdef __GNU_LIBRARY__
|
|
#if (__GLIBC__ >= 2) && !defined __UCLIBC__
|
|
Lucky GNU user
|
|
#endif
|
|
#endif
|
|
],
|
|
[gl_cv_func_getpass_good=yes],
|
|
[gl_cv_func_getpass_good=no])
|
|
])
|
|
if test $gl_cv_func_getpass_good != yes; then
|
|
REPLACE_GETPASS_FOR_GETPASS_GNU=1
|
|
fi
|
|
fi
|
|
])
|
|
|
|
# Prerequisites of lib/getpass.c.
|
|
AC_DEFUN([gl_PREREQ_GETPASS], [
|
|
AC_CHECK_HEADERS_ONCE([stdio_ext.h termios.h])
|
|
gl_CHECK_FUNCS_ANDROID([__fsetlocking], [[#include <stdio_ext.h>]])
|
|
AC_CHECK_DECLS([__fsetlocking],,,
|
|
[[#include <stdio.h>
|
|
#if HAVE_STDIO_EXT_H
|
|
#include <stdio_ext.h>
|
|
#endif]])
|
|
AC_CHECK_DECLS_ONCE([fflush_unlocked])
|
|
AC_CHECK_DECLS_ONCE([flockfile])
|
|
AC_CHECK_DECLS_ONCE([fputs_unlocked])
|
|
AC_CHECK_DECLS_ONCE([funlockfile])
|
|
AC_CHECK_DECLS_ONCE([putc_unlocked])
|
|
gl_HAVE_TCGETATTR
|
|
|
|
dnl We can't use AC_CHECK_FUNC here, because tcsetattr() is defined as a
|
|
dnl static inline function when compiling for Android 4.4 or older.
|
|
AC_CACHE_CHECK([for tcsetattr], [gl_cv_func_tcsetattr],
|
|
[AC_LINK_IFELSE(
|
|
[AC_LANG_PROGRAM(
|
|
[[#include <termios.h>
|
|
struct termios x;
|
|
]],
|
|
[[return tcsetattr(0,0,&x);]])
|
|
],
|
|
[gl_cv_func_tcsetattr=yes],
|
|
[gl_cv_func_tcsetattr=no])
|
|
])
|
|
if test $gl_cv_func_tcsetattr = yes; then
|
|
HAVE_TCSETATTR=1
|
|
else
|
|
HAVE_TCSETATTR=0
|
|
fi
|
|
AC_DEFINE_UNQUOTED([HAVE_TCSETATTR], [$HAVE_TCSETATTR],
|
|
[Define to 1 if the system has the 'tcsetattr' function.])
|
|
])
|