diff options
| author | Hajimu UMEMOTO <ume@FreeBSD.org> | 2010-08-28 17:06:22 +0000 |
|---|---|---|
| committer | Hajimu UMEMOTO <ume@FreeBSD.org> | 2010-08-28 17:06:22 +0000 |
| commit | c93734c0184c75b3c4993229dd956e1c508b20c5 (patch) | |
| tree | c308aa7eba638f6daf3135b13d8c446208e5cec2 /lib/libc/net/getproto.c | |
| parent | 7d6f2dcaf34eb5134197c2fc4f92c752fa0f2ff9 (diff) | |
Notes
Diffstat (limited to 'lib/libc/net/getproto.c')
| -rw-r--r-- | lib/libc/net/getproto.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/libc/net/getproto.c b/lib/libc/net/getproto.c index 85b40e146a41..cb3a3ed942d3 100644 --- a/lib/libc/net/getproto.c +++ b/lib/libc/net/getproto.c @@ -33,6 +33,7 @@ static char sccsid[] = "@(#)getproto.c 8.1 (Berkeley) 6/4/93"; #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include <errno.h> #include <netdb.h> #include <nsswitch.h> #include "netdb_private.h" @@ -72,7 +73,7 @@ files_getprotobynumber(void *retval, void *mdata, va_list ap) errnop = va_arg(ap, int *); if ((ped = __protoent_data_init()) == NULL) { - *errnop = -1; + *errnop = errno; return (NS_NOTFOUND); } @@ -83,12 +84,12 @@ files_getprotobynumber(void *retval, void *mdata, va_list ap) if (!ped->stayopen) __endprotoent_p(ped); if (error != 0) { - *errnop = -1; + *errnop = errno; return (NS_NOTFOUND); } if (__copy_protoent(&pe, pptr, buffer, buflen) != 0) { - *errnop = -1; - return (NS_NOTFOUND); + *errnop = errno; + return (NS_RETURN); } *((struct protoent **)retval) = pptr; @@ -120,10 +121,11 @@ getprotobynumber_r(int proto, struct protoent *pptr, char *buffer, rv = nsdispatch(result, dtab, NSDB_PROTOCOLS, "getprotobynumber_r", defaultsrc, proto, pptr, buffer, buflen, &ret_errno); - if (rv == NS_SUCCESS) - return (0); - else - return (ret_errno); + if (rv != NS_SUCCESS) { + errno = ret_errno; + return ((ret_errno != 0) ? ret_errno : -1); + } + return (0); } struct protoent * |
