diff --git a/lib/roken/Makefile.in b/lib/roken/Makefile.in index 0fe3e3e3d..65bb93683 100644 --- a/lib/roken/Makefile.in +++ b/lib/roken/Makefile.in @@ -31,7 +31,8 @@ SHLIBEXT = @SHLIBEXT@ SHARED = @SHARED@ LIB = $(LIBNAME).$(LIBEXT) -OBJECTS = k_getpwnam.o signal.o tm2time.o verify.o inaddr2str.o mini_inetd.o \ +OBJECTS = k_getpwuid.o k_getpwnam.o signal.o tm2time.o \ + verify.o inaddr2str.o mini_inetd.o \ @LIBOBJS@ all: $(LIB) diff --git a/lib/roken/k_getpwuid.c b/lib/roken/k_getpwuid.c new file mode 100644 index 000000000..1e15d9b86 --- /dev/null +++ b/lib/roken/k_getpwuid.c @@ -0,0 +1,28 @@ +#ifdef HAVE_CONFIG_H +#include +RCSID("$Id$"); +#endif /* HAVE_CONFIG_H */ + +#include "roken.h" +#ifdef HAVE_SHADOW_H +#include +#endif + +struct passwd * +k_getpwuid (uid_t uid) +{ + struct passwd *p; + + p = getpwuid (uid); +#ifdef HAVE_GETSPUID + if (p) + { + struct spwd *spwd; + + spwd = getspuid (uid); + if (spwd) + p->pw_passwd = spwd->sp_pwdp; + } +#endif + return p; +} diff --git a/lib/roken/roken.h b/lib/roken/roken.h index 1d72b7641..f168df07e 100644 --- a/lib/roken/roken.h +++ b/lib/roken/roken.h @@ -82,6 +82,7 @@ char *getstr(char *id, char **cpp); #include struct passwd *k_getpwnam (char *user); +struct passwd *k_getpwuid (uid_t uid); #include #include diff --git a/lib/roken/roken.h.in b/lib/roken/roken.h.in index 1d72b7641..f168df07e 100644 --- a/lib/roken/roken.h.in +++ b/lib/roken/roken.h.in @@ -82,6 +82,7 @@ char *getstr(char *id, char **cpp); #include struct passwd *k_getpwnam (char *user); +struct passwd *k_getpwuid (uid_t uid); #include #include