.\" Copyright (c) 2000 Andries Brouwer (aeb@cwi.nl)
.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
-.\" License along with this manual; if not, write to the Free
-.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
-.\" USA.
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
.\"
-.TH GETPASS 3 2000-12-05 "Linux Manpage" "Linux Programmer's Manual"
+.TH GETPASS 3 2016-03-15 "Linux" "Linux Programmer's Manual"
.SH NAME
getpass \- get a password
.SH SYNOPSIS
.B #include <unistd.h>
.sp
-.B "char *getpass( const char *" prompt );
+.BI "char *getpass(const char *" prompt );
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.sp
+.BR getpass ():
+.ad l
+.RS 4
+.PD 0
+.TP 4
+Since glibc 2.2.2:
+.nf
+_XOPEN_SOURCE && ! (_POSIX_C_SOURCE\ >=\ 200112L)
+ || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+ || /* Glibc versions <= 2.19: */ _BSD_SOURCE
+.fi
+.TP 4
+Before glibc 2.2.2:
+none
+.PD
+.RE
+.ad b
.SH DESCRIPTION
-This function is obsolete. Do not use it.
+This function is obsolete.
+Do not use it.
+If you want to read input without terminal echoing enabled,
+see the description of the
+.I ECHO
+flag in
+.BR termios (3).
.PP
The
.BR getpass ()
restores the terminal state and closes
.I /dev/tty
again.
-.SH "RETURN VALUE"
+.SH RETURN VALUE
The function
.BR getpass ()
-returns a pointer to a static buffer containing the
-(first PASS_MAX bytes of) the password without the trailing
-newline, terminated by a NUL.
+returns a pointer to a static buffer containing (the first
+.B PASS_MAX
+bytes of) the password without the trailing
+newline, terminated by a null byte (\(aq\\0\(aq).
This buffer may be overwritten by a following call.
On error, the terminal state is restored,
.I errno
The function may fail if
.TP
.B ENXIO
-The process does not have a controlling terminal.
-.SH NOTES
-For libc4 and libc5, the prompt is not written to
-.I /dev/tty
-but to
-.IR stderr .
-Moreover, if
+The process does not have a controlling terminal.
+.SH FILES
.I /dev/tty
-cannot be opened, the password is read from
-.IR stdin .
-The static buffer has length 128 so that only the first 127
-bytes of the password are returned.
-While reading the password, signal generation (SIGINT, SIGQUIT,
-SIGSTOP, SIGTSTOP) is disabled and the corresponding characters
-(usually control-C, control-\e, control-Z and control-Y)
-are transmitted as part of the password.
-Since libc 5.4.19 also line editing is disabled, so that also
-backspace and the like will be seen as part of the password.
+.\" .SH HISTORY
+.\" A
+.\" .BR getpass ()
+.\" function appeared in Version 7 AT&T UNIX.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR getpass ()
+T} Thread safety MT-Unsafe term
+.TE
+.SH CONFORMING TO
+Present in SUSv2, but marked LEGACY.
+Removed in POSIX.1-2001.
+.SH NOTES
+.\" For libc4 and libc5, the prompt is not written to
+.\" .I /dev/tty
+.\" but to
+.\" .IR stderr .
+.\" Moreover, if
+.\" .I /dev/tty
+.\" cannot be opened, the password is read from
+.\" .IR stdin .
+.\" The static buffer has length 128 so that only the first 127
+.\" bytes of the password are returned.
+.\" While reading the password, signal generation
+.\" .RB ( SIGINT ,
+.\" .BR SIGQUIT ,
+.\" .BR SIGSTOP ,
+.\" .BR SIGTSTP )
+.\" is disabled and the corresponding characters
+.\" (usually control-C, control-\e, control-Z and control-Y)
+.\" are transmitted as part of the password.
+.\" Since libc 5.4.19 also line editing is disabled, so that also
+.\" backspace and the like will be seen as part of the password.
.PP
-For glibc2, if
+In the GNU C library implementation, if
.I /dev/tty
cannot be opened, the prompt is written to
.I stderr
There is no limit on the length of the password.
Line editing is not disabled.
.PP
-According to the SUSv2, the value of PASS_MAX must be defined in
+According to SUSv2, the value of
+.B PASS_MAX
+must be defined in
.I <limits.h>
in case it is smaller than 8, and can in any case be obtained using
.IR sysconf(_SC_PASS_MAX) .
-However, POSIX.2 withdraws the constants PASS_MAX
-and _SC_PASS_MAX, and the function
-.B getpass ().
-Libc4 and libc5 have never supported PASS_MAX or _SC_PASS_MAX.
-Glibc2 accepts _SC_PASS_MAX and returns BUFSIZ (e.g., 8192).
-.SH FILES
-.I /dev/tty
-.SH "SEE ALSO"
-.BR crypt (3)
-.SH HISTORY
-A
-.BR getpass ()
-function appeared in Version 7 AT&T UNIX.
+However, POSIX.2 withdraws the constants
+.B PASS_MAX
+and
+.BR _SC_PASS_MAX ,
+and the function
+.BR getpass ().
+.\" Libc4 and libc5 have never supported
+.\" .B PASS_MAX
+.\" or
+.\" .BR _SC_PASS_MAX .
+The glibc version accepts
+.B _SC_PASS_MAX
+and returns
+.B BUFSIZ
+(e.g., 8192).
.SH BUGS
The calling process should zero the password as soon as possible to avoid
leaving the cleartext password visible in the process's address space.
+.SH SEE ALSO
+.BR crypt (3)