diff -r 636e05eb48f6 -r ce9790523346 src/server/util/util.c --- a/src/server/util/util.c Sat Jan 12 14:00:47 2013 +0100 +++ b/src/server/util/util.c Sun Jan 13 14:16:45 2013 +0100 @@ -132,3 +132,43 @@ return p + negative; } + + + +#ifndef XP_WIN32 +NSAPI_PUBLIC struct passwd * +util_getpwnam(const char *name, struct passwd *result, char *buffer, + int buflen) +{ + struct passwd *rv; + +#if defined(AIX) || defined(LINUX) || defined(HPUX) + errno = getpwnam_r(name, result, buffer, buflen, &rv); + if (errno != 0) + rv = NULL; +#else + rv = getpwnam_r(name, result, buffer, buflen); +#endif + + return rv; +} +#endif + + +#ifndef XP_WIN32 +NSAPI_PUBLIC struct passwd * +util_getpwuid(uid_t uid, struct passwd *result, char *buffer, int buflen) +{ + struct passwd *rv; + +#if defined(AIX) || defined(LINUX) || defined(HPUX) + errno = getpwuid_r(uid, result, buffer, buflen, &rv); + if (errno != 0) + rv = NULL; +#else + rv = getpwuid_r(uid, result, buffer, buflen); +#endif + + return rv; +} +#endif