![]() |
![]() |
![]() |
Get an entry from the shadow password database
#include <sys/types.h> #include <shadow.h> struct spwd* getspent( void ); struct spwd* getspent_r( struct spwd* result, char* buffer, int buflen );
libc
The getspent() and getspent_r() functions return the next entry from the shadow password database. The getspent() function uses a static buffer that's overwritten by each call.
![]() |
The fgetspent(), getspent(), getspnam(), and functions share the same static buffer. |
The getspent() function returns a pointer to an object of type struct spwd containing the next entry from the shadow password database. When getspent() is first called, the database is opened, and remains open until either a NULL is returned to signify end-of-file, or endspent() is called.
The getspent() function uses the following functions, and as a result errno can be set to a valid error for any of these calls:
#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(); return( EXIT_SUCCESS ); }
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | No |
Thread | No |
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |
errno, fgetspent(), getgrent(), getlogin(), getspnam(), getpwuid()
![]() |
![]() |
![]() |