diff options
author | millert <> | 2004-10-25 03:09:01 +0000 |
---|---|---|
committer | millert <> | 2004-10-25 03:09:01 +0000 |
commit | 42489d4b990a8793c837811c34a869ec16d055ba (patch) | |
tree | 36483a751887031181b8128f629bde9b388ecac4 /src/lib/libc/net/getservent.c | |
parent | eae90a29f226809527585d7ba688d0af8627db58 (diff) | |
download | openbsd-42489d4b990a8793c837811c34a869ec16d055ba.tar.gz openbsd-42489d4b990a8793c837811c34a869ec16d055ba.tar.bz2 openbsd-42489d4b990a8793c837811c34a869ec16d055ba.zip |
Change return value of reentrant getproto* and getserv* to match the
IBM/Digital API.
Diffstat (limited to 'src/lib/libc/net/getservent.c')
-rw-r--r-- | src/lib/libc/net/getservent.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/lib/libc/net/getservent.c b/src/lib/libc/net/getservent.c index 9cf53774d6..3eaf2a4adc 100644 --- a/src/lib/libc/net/getservent.c +++ b/src/lib/libc/net/getservent.c | |||
@@ -28,7 +28,7 @@ | |||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #if defined(LIBC_SCCS) && !defined(lint) | 30 | #if defined(LIBC_SCCS) && !defined(lint) |
31 | static char rcsid[] = "$OpenBSD: getservent.c,v 1.8 2004/10/17 20:24:23 millert Exp $"; | 31 | static char rcsid[] = "$OpenBSD: getservent.c,v 1.9 2004/10/25 03:09:01 millert Exp $"; |
32 | #endif /* LIBC_SCCS and not lint */ | 32 | #endif /* LIBC_SCCS and not lint */ |
33 | 33 | ||
34 | #include <sys/types.h> | 34 | #include <sys/types.h> |
@@ -65,7 +65,7 @@ endservent_r(struct servent_data *sd) | |||
65 | sd->stayopen = 0; | 65 | sd->stayopen = 0; |
66 | } | 66 | } |
67 | 67 | ||
68 | struct servent * | 68 | int |
69 | getservent_r(struct servent *se, struct servent_data *sd) | 69 | getservent_r(struct servent *se, struct servent_data *sd) |
70 | { | 70 | { |
71 | char *p, *cp, **q, *endp; | 71 | char *p, *cp, **q, *endp; |
@@ -74,10 +74,10 @@ getservent_r(struct servent *se, struct servent_data *sd) | |||
74 | int serrno; | 74 | int serrno; |
75 | 75 | ||
76 | if (sd->fp == NULL && (sd->fp = fopen(_PATH_SERVICES, "r" )) == NULL) | 76 | if (sd->fp == NULL && (sd->fp = fopen(_PATH_SERVICES, "r" )) == NULL) |
77 | return (NULL); | 77 | return (-1); |
78 | again: | 78 | again: |
79 | if ((p = fgetln(sd->fp, &len)) == NULL) | 79 | if ((p = fgetln(sd->fp, &len)) == NULL) |
80 | return (NULL); | 80 | return (-1); |
81 | if (len == 0 || *p == '#' || *p == '\n') | 81 | if (len == 0 || *p == '#' || *p == '\n') |
82 | goto again; | 82 | goto again; |
83 | if (p[len-1] == '\n') | 83 | if (p[len-1] == '\n') |
@@ -86,7 +86,7 @@ again: | |||
86 | len = cp - p; | 86 | len = cp - p; |
87 | cp = realloc(sd->line, len + 1); | 87 | cp = realloc(sd->line, len + 1); |
88 | if (cp == NULL) | 88 | if (cp == NULL) |
89 | return (NULL); | 89 | return (-1); |
90 | sd->line = se->s_name = memcpy(cp, p, len); | 90 | sd->line = se->s_name = memcpy(cp, p, len); |
91 | cp[len] = '\0'; | 91 | cp[len] = '\0'; |
92 | p = strpbrk(cp, " \t"); | 92 | p = strpbrk(cp, " \t"); |
@@ -111,7 +111,7 @@ again: | |||
111 | serrno = errno; | 111 | serrno = errno; |
112 | endservent_r(sd); | 112 | endservent_r(sd); |
113 | errno = serrno; | 113 | errno = serrno; |
114 | return (NULL); | 114 | return (-1); |
115 | } | 115 | } |
116 | } | 116 | } |
117 | q = se->s_aliases = sd->aliases; | 117 | q = se->s_aliases = sd->aliases; |
@@ -130,7 +130,7 @@ again: | |||
130 | serrno = errno; | 130 | serrno = errno; |
131 | endservent_r(sd); | 131 | endservent_r(sd); |
132 | errno = serrno; | 132 | errno = serrno; |
133 | return (NULL); | 133 | return (-1); |
134 | } | 134 | } |
135 | sd->maxaliases *= 2; | 135 | sd->maxaliases *= 2; |
136 | q = (char **)p + (q - se->s_aliases); | 136 | q = (char **)p + (q - se->s_aliases); |
@@ -142,7 +142,7 @@ again: | |||
142 | *cp++ = '\0'; | 142 | *cp++ = '\0'; |
143 | } | 143 | } |
144 | *q = NULL; | 144 | *q = NULL; |
145 | return (se); | 145 | return (0); |
146 | } | 146 | } |
147 | 147 | ||
148 | struct servent_data _servent_data; /* shared with getservby{name,port}.c */ | 148 | struct servent_data _servent_data; /* shared with getservby{name,port}.c */ |
@@ -164,5 +164,7 @@ getservent(void) | |||
164 | { | 164 | { |
165 | static struct servent serv; | 165 | static struct servent serv; |
166 | 166 | ||
167 | return getservent_r(&serv, &_servent_data); | 167 | if (getservent_r(&serv, &_servent_data) != 0) |
168 | return (NULL); | ||
169 | return (&serv); | ||
168 | } | 170 | } |