596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen#ifndef IPWD_H
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen#define IPWD_H
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen#include <pwd.h>
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen#include <grp.h>
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen/* Replacements for standard getpw/gr*(), fixing their ability to report errors
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen properly. As with standard getpw/gr*(), second call overwrites data used
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen by the first one.
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen Functions return 1 if user/group is found, 0 if not or
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen -1 if error (with errno set). */
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainenint i_getpwnam(const char *name, struct passwd *pwd_r);
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainenint i_getpwuid(uid_t uid, struct passwd *pwd_r);
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainenint i_getgrnam(const char *name, struct group *grp_r);
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainenint i_getgrgid(gid_t gid, struct group *grp_r);
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen/* Free memory used by above functions. */
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainenvoid ipwd_deinit(void);
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen
596f582a422eddef951ee445f9a0ed3d4bf14ff8Timo Sirainen#endif