GETPWENT(3C) GETPWENT(3C) НАЗВАНИЕ getpwent, getpwuid, getpwnam, setpwent, endpwent, fgetpwent - получение элементов файла паролей СИНТАКСИС |#include | |struct passwd *getpwent ( ) | |struct passwd *getpwuid (uid) |int uid; | |struct passwd *getpwnam (name) |char *name; | |void setpwent ( ) | |void endpwent ( ) | |struct passwd *fgetpwent (f) |FILE *f; ОПИСАНИЕ Каждая из функций getpwent, getpwuid и getpwnam возвра- щает указатель на структуру типа passwd, содержащую разложенную на поля строку файла паролей /etc/passwd. Структура описана во включаемом файле : |struct passwd { | char *pw_name; | char *pw_passwd; | int pw_uid; | int pw_gid; | char *pw_age; | char *pw_comment; | char *pw_gecos; | char *pw_dir; | char *pw_shell; |}; По поводу смысла полей структуры см. passwd(4). При первом вызове функция getpwent возвращает указатель на первую структуру типа passwd в файле; при следующем вызове возвращается указатель на следующую структуру; поэтому последовательные вызовы функции можно использо- вать для просмотра всего файла. Функция getpwuid ищет с начала файла строку, содержащую заданный идентификатор пользователя uid, и возвращает указатель на структуру, соответствующую искомой строке. Функция getpwnam ищет с начала файла строку, содержащую специфицированное вход- ное имя name и возвращает указатель на соответствующую структуру. В случае неудачного поиска (в том числе из- за ошибки чтения) описанные функции возвращают пустой указатель NULL. Вызов функции setpwent приводит к переустановке указа- теля чтения на начало файла паролей, то есть после это- го вызова можно снова повторить просмотр всего файла. Функция endpwent служит для закрытия файла паролей. Функция fgetpwent возвращает указатель на очередную структуру типа passwd в потоке f, удовлетворяющем фор- мату файла /etc/passwd. ФАЙЛЫ /etc/passwd СМ. ТАКЖЕ getlogin(3C), getgrent(3C), passwd(4). ДИАГНОСТИКА В случае неудачного поиска (в том числе из-за ошибки чтения) возвращается пустой указатель NULL. ПРЕДОСТЕРЕЖЕНИЯ Описанные функции используют стандартный пакет ввода/ вывода, что приводит к неожиданному увеличению размера программ, не использующих стандартный ввод/вывод. ОГРАНИЧЕНИЯ Значения, возвращаемые описанными функциями, указывают на один и тот же статический массив, содержимое которо- го полностью изменяется после каждого вызова. Поэтому, если необходимо сохранить полученную с помощью функций информацию, следует скопировать ее.