GETPASS(3)

НАЗВАНИЕ
getpass - получает пароль

СИНТАКСИС
#include <unistd.h>

char *getpass( const char * prompt );

ОПИСАНИЕ
Эта фукция является устаревшей. Не надо использовать ее.

Функция getpass() открывает /dev/tty (управляющий терминал процесса), выводит строку prompt, выключая режим показа вводимых символов. Читает одну строку ("пароль"), затем восстанавливает состояние терминала и закрывает /dev/tty.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция getpass возвращает указатель на статический буфер содержащий (первые PASS_MAX байтов) пароль без символа перевода строки, оканчивающийся NUL. Этот буфер может быть перезаписан следующим вызовом. При ошибке, состояние терминала восстанавливается, errno устанавливается соответствующим образом и возвращается NULL.

НАЙДЕННЫЕ ОШИБКИ
Функция может завершиться неудачно если:

ENXIO
    Процесс не имеет управляющего терминала.

ЗАМЕЧАНИЯ
Для libc4 и libc5, строка prompt не записывается на устройство /dev/tty, а отправляется в поток stderr. Кроме того, если /dev/tty не может быть открыт, то пароль читается из потока stdin. Статический буфер имеет длину 128, т.о. возвращаются только первые 127 символов пароля. Во время чтения пароля генерация сигналов (SIGINT, SIGQUIT, SIGSTOP, SIGTSTOP) отключена и соответствующие символы (обычно control-C, control-\, control-Z и control-Y) посылаются как часть пароля. С libc 5.4.19 также отключена возможность редактирования, т.е. символ Backspace и подобные ему, будут рассматриваться как часть пароля. Для glibc2, если /dev/tty не может быть открыт, то строка prompt выводится в поток ошибок stderr, а пароль читается из стандартного потока ввода stdin. При это нет ограничения на длину пароля и строку можно редактировать.

В SUSv2 значение PASS_MAX должно быть определено в <limits.h>. В этом случае он больше, чем 8, и может быть найден используя sysconf(_SC_PASS_MAX). Однако, из стандарта POSIX.2 константы PASS_MAX, _SC_PASS_MAX и функция getpass() убраны. Libc4 и libc5 никогда не поддерживали PASS_MAX и _SC_PASS_MAX. Glibc2 допускает _SC_PASS_MAX и возвращает BUSIZ (напр. 8192).

ФАЙЛЫ
/dev/tty

СМ. ТАКЖЕ
crypt(3)

ПРИМЕЧАНИЯ ПО ИСТОРИИ
Функция getpass появилась в Version 7 AT&T UNIX.

НАЙДЕННЫЕ ОШИБКИ
Вызывающий процесс должен как можно скорее обнулить пароль во избежание возможности просмотра незашифрованного пароля в адресном пространстве процесса.