.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH GETPASS 3 2013\-06\-21 Linux "Linux Programmer's Manual"
+.TH GETPASS 3 2014\-08\-19 Linux "Linux Programmer's Manual"
.SH 名前
getpass \- パスワードを取得する
.SH 書式
\fB#include <unistd.h>\fP
.sp
-\fBchar *getpass( const char *\fP\fIprompt\fP\fB);\fP
+\fBchar *getpass(const char *\fP\fIprompt\fP\fB);\fP
.sp
.in -4n
glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照):
echo をオフにし、一行 (「パスワード」) を読み込み、端末の状態を元に戻して、再び \fI/dev/tty\fP をクローズする。
.SH 返り値
\fBgetpass\fP() 関数は入力されたパスワード (の最初の \fBPASS_MAX\fP バイトまで) が書きこまれた、
-スタティックなバッファーへのポインターを返す。 末尾の改行は含まれない。この文字列は NULL バイト (\(aq\e0\(aq) で終端される。
+スタティックなバッファーへのポインターを返す。 末尾の改行は含まれない。この文字列はヌルバイト (\(aq\e0\(aq) で終端される。
このバッファーは、以降の関数コールで上書きされるかもしれない。 エラーが起こると、端末の状態を復元し、 \fIerrno\fP を適切な値に設定して、NULL
を返す。
.SH エラー
.SH 準拠
SUSv2 には存在するが、過去の名残 (LEGACY) と位置付けられている。 POSIX.1\-2001 で削除された。
.SH 注意
-libc4 と libc5 では、 \fIprompt\fP は \fI/dev/tty\fP にではなく \fIstderr\fP に出力された。さらに、
-\fI/dev/tty\fP がオープンできない場合は、パスワードは \fIstdin\fP から読み込まれた。 スタティックなバッファーの長さは 128
-バイトだったので、 パスワードの最初の 127 文字だけが返された。 パスワードを読んでいる途中には、シグナルの発行 (\fBSIGINT\fP,
-\fBSIGQUIT\fP, \fBSIGSTOP\fP, \fBSIGSTOP\fP) は無効にされ、 それぞれに対応する文字 (通常は Ctrl\-C,
-Ctrl\-\e, Ctrl\-Z, Ctrl\-Y) はそのままパスワードの一部として渡された。 libc 5.4.19 からは行編集が無効にされ、
-したがってバックスペースなどもパスワードの一部とみなされるようになった。
+.\" 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
-glibc2 では、 \fI/dev/tty\fP がオープンできない場合は \fIprompt\fP は \fIstderr\fP に書き出され、パスワードは
-\fIstdin\fP から読み込まれた。 パスワードの長さには制限はなく、 行編集も無効にはされなかった。
+GNU C ライブラリの実装では、 \fI/dev/tty\fP がオープンできない場合は \fIprompt\fP は \fIstderr\fP
+に書き出され、パスワードは \fIstdin\fP から読み込まれた。 パスワードの長さには制限はなく、 行編集も無効にはされなかった。
.PP
+.\" Libc4 and libc5 have never supported
+.\" .B PASS_MAX
+.\" or
+.\" .BR _SC_PASS_MAX .
SUSv2 によれば、 \fBPASS_MAX\fP の値が 8 以下の場合は、この値は \fI<limits.h>\fP
で定義されていなければならない。 いずれの場合でもこの値は \fIsysconf(_SC_PASS_MAX)\fP によって取得できる。
-しかし、POSIX.2 は定数 \fBPASS_MAX\fP, \fB_SC_PASS_MAX\fP と関数 \fBgetpass\fP() を取り下げた。 libc4
-と libc5 では、 \fBPASS_MAX\fP と \fB_SC_PASS_MAX\fP は一度もサポートされたことはない。 glibc2 は
-\fB_SC_PASS_MAX\fP を受付け、 \fBBUFSIZE\fP (例えば 8192) を返す。
+しかし、POSIX.2 は定数 \fBPASS_MAX\fP, \fB_SC_PASS_MAX\fP と関数 \fBgetpass\fP() を取り下げた。 glibc
+版は \fB_SC_PASS_MAX\fP を受け付け、 \fBBUFSIZE\fP (例えば 8192) を返す。
.SH バグ
この関数を呼び出したプロセスは、 できる限り早くそのパスワードを消去 (ゼロクリア) し、 クリアテキストのパスワードが
そのプロセスのアドレス空間で見えないようにすべきである。
.SH 関連項目
\fBcrypt\fP(3)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。