diff options
| author | Jacques Vidrine <nectar@FreeBSD.org> | 2004-01-09 13:43:49 +0000 |
|---|---|---|
| committer | Jacques Vidrine <nectar@FreeBSD.org> | 2004-01-09 13:43:49 +0000 |
| commit | c849849d06646ec6fc9e67d4329c634f9a8dd751 (patch) | |
| tree | 9830bf12756c06757b6c6257578e50e701a2e090 /lib/libc | |
| parent | 2735d723cbae6dab4a452646a5b5a34427a44c18 (diff) | |
Notes
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/net/nss_compat.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/libc/net/nss_compat.c b/lib/libc/net/nss_compat.c index 844110339d85..a81ec8ab7c8d 100644 --- a/lib/libc/net/nss_compat.c +++ b/lib/libc/net/nss_compat.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include "namespace.h" #include <sys/param.h> +#include <errno.h> #include <nss.h> #include <pthread.h> #include <pthread_np.h> @@ -96,9 +97,10 @@ __nss_compat_getgrnam_r(void *retval, void *mdata, va_list ap) bufsize = va_arg(ap, size_t); errnop = va_arg(ap, int *); status = fn(name, grp, buffer, bufsize, errnop); + status = __nss_compat_result(status, *errnop); if (status == NS_SUCCESS) *(struct group **)retval = grp; - return (__nss_compat_result(status)); + return (status); } @@ -120,9 +122,10 @@ __nss_compat_getgrgid_r(void *retval, void *mdata, va_list ap) bufsize = va_arg(ap, size_t); errnop = va_arg(ap, int *); status = fn(gid, grp, buffer, bufsize, errnop); + status = __nss_compat_result(status, *errnop); if (status == NS_SUCCESS) *(struct group **)retval = grp; - return (__nss_compat_result(status)); + return (status); } @@ -144,11 +147,12 @@ __nss_compat_getgrent_r(void *retval, void *mdata, va_list ap) bufsize = va_arg(ap, size_t); errnop = va_arg(ap, int *); status = fn(grp, buffer, bufsize, errnop); + status = __nss_compat_result(status, *errnop); if (status == NS_SUCCESS) *(struct group **)retval = grp; - else + else if (status != NS_RETURN) SET_TERMINATOR(group, &terminator); - return (__nss_compat_result(status)); + return (status); } @@ -194,9 +198,10 @@ __nss_compat_getpwnam_r(void *retval, void *mdata, va_list ap) bufsize = va_arg(ap, size_t); errnop = va_arg(ap, int *); status = fn(name, pwd, buffer, bufsize, errnop); + status = __nss_compat_result(status, *errnop); if (status == NS_SUCCESS) *(struct passwd **)retval = pwd; - return (__nss_compat_result(status)); + return (status); } @@ -218,9 +223,10 @@ __nss_compat_getpwuid_r(void *retval, void *mdata, va_list ap) bufsize = va_arg(ap, size_t); errnop = va_arg(ap, int *); status = fn(uid, pwd, buffer, bufsize, errnop); + status = __nss_compat_result(status, *errnop); if (status == NS_SUCCESS) *(struct passwd **)retval = pwd; - return (__nss_compat_result(status)); + return (status); } @@ -242,11 +248,12 @@ __nss_compat_getpwent_r(void *retval, void *mdata, va_list ap) bufsize = va_arg(ap, size_t); errnop = va_arg(ap, int *); status = fn(pwd, buffer, bufsize, errnop); + status = __nss_compat_result(status, *errnop); if (status == NS_SUCCESS) *(struct passwd **)retval = pwd; - else + else if (status != NS_RETURN) SET_TERMINATOR(passwd, &terminator); - return (__nss_compat_result(status)); + return (status); } |
