PWCACHE(3)

PWCACHE(3) | Library Functions Manual | PWCACHE(3)

# NAME

`pwcache`, `user_from_uid`, `uid_from_user`, `pwcache_userdb`, `group_from_gid`, `gid_from_group`, `pwcache_groupdb` —
cache password and group entries

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <pwd.h>`

const char *
`user_from_uid`(uid_t uid, int nouser);

int
`uid_from_user`(const char *name, uid_t *uid);

int
`pwcache_userdb`(int (*setpassent)(int), void (*endpwent)(void), struct passwd * (*getpwnam)(const char *), struct passwd * (*getpwuid)(uid_t));

`#include <grp.h>`

const char *
`group_from_gid`(gid_t gid, int nogroup);

int
`gid_from_group`(const char *name, gid_t *gid);

int
`pwcache_groupdb`(int (*setgroupent)(int), void (*endgrent)(void), struct group * (*getgrnam)(const char *), struct group * (*getgrgid)(gid_t));

# DESCRIPTION

The `user_from_uid`() function returns the user name associated with the argument uid. The user name is cached so that multiple calls with the same uid do not require additional calls to getpwuid(3). If there is no user associated with the uid, a pointer is returned to a string representation of the uid, unless the argument nouser is non-zero, in which case a `NULL` pointer is returned.

The `group_from_gid`() function returns the group name associated with the argument gid. The group name is cached so that multiple calls with the same gid do not require additional calls to getgrgid(3). If there is no group associated with the gid, a pointer is returned to a string representation of the gid, unless the argument nogroup is non-zero, in which case a `NULL` pointer is returned.

The `uid_from_user`() function returns the uid associated with the argument name. The uid is cached so that multiple calls with the same name do not require additional calls to getpwnam(3). If there is no uid associated with the name, the `uid_from_user`() function returns -1; otherwise it stores the uid at the location pointed to by uid and returns 0.

The `gid_from_group`() function returns the gid associated with the argument name. The gid is cached so that multiple calls with the same name do not require additional calls to getgrnam(3). If there is no gid associated with the name, the `gid_from_group`() function returns -1; otherwise it stores the gid at the location pointed to by gid and returns 0.

The `pwcache_userdb`() function changes the user database access routines which `user_from_uid`() and `uid_from_user`() call to search for users. The caches are flushed and the existing `endpwent`() method is called before switching to the new routines. getpwnam and getpwuid must be provided, and setpassent and endpwent may be `NULL` pointers.

The `pwcache_groupdb`() function changes the group database access routines which `group_from_gid`() and `gid_from_group`() call to search for groups. The caches are flushed and the existing `endgrent`() method is called before switching to the new routines. getgrnam and getgrgid must be provided, and setgroupent and endgrent may be `NULL` pointers.

# SEE ALSO

getgrgid(3), getgrnam(3), getpwnam(3), getpwuid(3)

# HISTORY

The `user_from_uid`() and `group_from_gid`() functions first appeared in 4.4BSD.

The `uid_from_user`() and `gid_from_group`() functions first appeared in NetBSD 1.4.

The `pwcache_userdb`() and `pwcache_groupdb`() functions first appeared in NetBSD 1.6.

January 24, 2002 | NetBSD 9.5