summaryrefslogtreecommitdiffstats
path: root/lib/libc/net/getproto.c
diff options
context:
space:
mode:
authorhrs <hrs@FreeBSD.org>2011-05-29 02:53:52 +0000
committerhrs <hrs@FreeBSD.org>2011-05-29 02:53:52 +0000
commit8fe640108653f13042f1b15213769e338aa524f6 (patch)
tree91f5675a7c792e61d68635707501027daa3f566f /lib/libc/net/getproto.c
parent97f64b711efa9ff0011bef5d46cf9645638a38f9 (diff)
parentf3726238c8e8206eb1df4cfaf3f00947ceba3cce (diff)
downloadFreeBSD-src-8fe640108653f13042f1b15213769e338aa524f6.zip
FreeBSD-src-8fe640108653f13042f1b15213769e338aa524f6.tar.gz
Merge from head@222434.
Diffstat (limited to 'lib/libc/net/getproto.c')
-rw-r--r--lib/libc/net/getproto.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/libc/net/getproto.c b/lib/libc/net/getproto.c
index 85b40e1..b923edf 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
+ if (rv != NS_SUCCESS) {
+ errno = ret_errno;
return (ret_errno);
+ }
+ return (0);
}
struct protoent *
OpenPOWER on IntegriCloud