Получить запись из базы данных теневых паролей
#include <sys/types.h>#include <shadow.h>struct spwd * getspent( void );struct spwd * getspent_r( struct spwd *result,char *buffer,int buflen );
Эти аргументы применимы только к getspent_r():
_SC_GETPW_R_SIZE_MAX
.libc
Функции getspent() и getspent_r() возвращают следующую запись из базы данных теневых паролей. Функция getspent() использует статический буфер, который перезаписывается при каждом вызове.
Функция getspent() возвращает указатель на структуру struct spwd, содержащую следующую запись из базы данных теневых паролей. При первом вызове getspent(), база данных открывается и остается открытой до тех пор, пока либо не будет возвращено значение NULL
для обозначения конца файла, либо не будет вызвана endspent().
Функция getspent() вызывает следующие функции, и как следствие, errno может быть установлен в одном из этих вызовов:
#include <stdio.h>#include <stdlib.h>#include <pwd.h>#include <shadow.h>/** This program loops, reading a login name from standard* input and checking to see if it is a valid name. If it* is not valid, the entire contents of the name in the* password database are printed.*/int main( int argc, char **argv ){struct spwd *sp;char buf[80];setpwent();while ( gets( buf ) != NULL ){if ( (sp = getspnam( buf )) != (struct spwd *)0 ){printf( "Valid login name is: %s\n", sp->sp_namp );} else {setspent();while ( (sp = getspent()) != (struct spwd *)0 )printf( "%s\n", sp->sp_namp );endspent();}}endpwent();return (EXIT_SUCCESS);}
Unix
getspent()
getspent_r()
struct spwd, errno, fgetspent(), getgrent(), getlogin(), getspnam(), getpwuid(), putspent(), setspent()
Предыдущий раздел: Описание API системной библиотеки