Lines Matching +full:rpc +full:- +full:if

3 /*-
4 * SPDX-License-Identifier: BSD-3-Clause
11 * - Redistributions of source code must retain the above copyright notice,
13 * - Redistributions in binary form must reproduce the above copyright notice,
16 * - Neither the name of Sun Microsystems, Inc. nor the names of its
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
48 #include <rpc/rpc.h>
56 #include "un-namespace.h"
63 #define RPCDB "/etc/rpc"
113 struct rpcent rpc; member
141 rpcent_unpack(char *p, struct rpcent *rpc, char **r_aliases, in rpcent_unpack() argument
148 if (*p == '#') in rpcent_unpack()
149 return (-1); in rpcent_unpack()
151 if (cp == NULL) in rpcent_unpack()
152 return (-1); in rpcent_unpack()
155 if (cp == NULL) in rpcent_unpack()
156 return (-1); in rpcent_unpack()
159 rpc->r_name = p; in rpcent_unpack()
162 rpc->r_number = atoi(cp); in rpcent_unpack()
163 q = rpc->r_aliases = r_aliases; in rpcent_unpack()
165 if (cp != NULL) in rpcent_unpack()
168 if (*cp == ' ' || *cp == '\t') { in rpcent_unpack()
172 if (q < &(r_aliases[aliases_size - 1])) in rpcent_unpack()
176 return -1; in rpcent_unpack()
180 if (cp != NULL) in rpcent_unpack()
193 if (p == NULL) in files_endstate()
196 f = ((struct files_state *)p)->fp; in files_endstate()
197 if (f != NULL) in files_endstate()
208 struct rpcent *rpc; in files_rpcent() local
239 rpc = va_arg(ap, struct rpcent *); in files_rpcent()
245 if (*errnop != 0) in files_rpcent()
248 if (st->fp == NULL && (st->fp = fopen(RPCDB, "r")) == NULL) { in files_rpcent()
253 if (how == nss_lt_all) in files_rpcent()
256 rewind(st->fp); in files_rpcent()
257 stayopen = st->stayopen; in files_rpcent()
261 if ((line = fgetln(st->fp, &linesize)) == NULL) { in files_rpcent()
267 if (bufsize <= linesize + _ALIGNBYTES + sizeof(char *)) { in files_rpcent()
274 aliases_size = (buffer + bufsize - in files_rpcent()
276 if (aliases_size < 1) { in files_rpcent()
285 rv = rpcent_unpack(buffer, rpc, aliases, aliases_size, errnop); in files_rpcent()
286 if (rv != 0) { in files_rpcent()
287 if (*errnop == 0) { in files_rpcent()
300 if (strcmp(rpc->r_name, name) == 0) in files_rpcent()
302 for (rp = rpc->r_aliases; *rp != NULL; rp++) { in files_rpcent()
303 if (strcmp(*rp, name) == 0) in files_rpcent()
312 rv = (rpc->r_number == number) ? NS_SUCCESS : in files_rpcent()
322 if (!stayopen && st->fp!=NULL) { in files_rpcent()
323 fclose(st->fp); in files_rpcent()
324 st->fp = NULL; in files_rpcent()
327 if ((rv == NS_SUCCESS) && (retval != NULL)) in files_rpcent()
328 *((struct rpcent **)retval) = rpc; in files_rpcent()
341 if (rv != 0) in files_setrpcent()
348 if (st->fp == NULL) in files_setrpcent()
349 st->fp = fopen(RPCDB, "r"); in files_setrpcent()
351 rewind(st->fp); in files_setrpcent()
352 st->stayopen |= f; in files_setrpcent()
355 if (st->fp != NULL) { in files_setrpcent()
356 fclose(st->fp); in files_setrpcent()
357 st->fp = NULL; in files_setrpcent()
359 st->stayopen = 0; in files_setrpcent()
373 if (p == NULL) in nis_endstate()
376 free(((struct nis_state *)p)->current); in nis_endstate()
385 struct rpcent *rpc; in nis_rpcent() local
420 rpc = va_arg(ap, struct rpcent *); in nis_rpcent()
426 if (*errnop != 0) in nis_rpcent()
429 if (st->domain[0] == '\0') { in nis_rpcent()
430 if (getdomainname(st->domain, sizeof(st->domain)) != 0) { in nis_rpcent()
441 if (!st->no_name_map) in nis_rpcent()
445 if (buf == NULL) in nis_rpcent()
447 rv = yp_match(st->domain, "rpc.byname", buf, in nis_rpcent()
454 st->stepping = 0; in nis_rpcent()
465 st->stepping = 0; in nis_rpcent()
476 if (buf == NULL) in nis_rpcent()
478 if (yp_match(st->domain, "rpc.bynumber", buf, in nis_rpcent()
485 if (!st->stepping) { in nis_rpcent()
486 rv = yp_first(st->domain, "rpc.bynumber", in nis_rpcent()
487 &st->current, in nis_rpcent()
488 &st->currentlen, &resultbuf, in nis_rpcent()
490 if (rv) { in nis_rpcent()
494 st->stepping = 1; in nis_rpcent()
496 lastkey = st->current; in nis_rpcent()
497 rv = yp_next(st->domain, "rpc.bynumber", in nis_rpcent()
498 st->current, in nis_rpcent()
499 st->currentlen, &st->current, in nis_rpcent()
500 &st->currentlen, in nis_rpcent()
503 if (rv) { in nis_rpcent()
504 st->stepping = 0; in nis_rpcent()
513 if (bufsize <= resultbuflen + 1 + _ALIGNBYTES + in nis_rpcent()
522 aliases_size = (buffer + bufsize - (char *)aliases) / in nis_rpcent()
524 if (aliases_size < 1) { in nis_rpcent()
532 * rpcent_unpack expects lines terminated with \n -- make it happy in nis_rpcent()
539 if (rpcent_unpack(buffer, rpc, aliases, aliases_size, in nis_rpcent()
541 if (*errnop == 0) in nis_rpcent()
546 if ((how == nss_lt_all) && (no_name_active != 0)) { in nis_rpcent()
547 if (strcmp(rpc->r_name, name) == 0) in nis_rpcent()
549 for (rp = rpc->r_aliases; *rp != NULL; rp++) { in nis_rpcent()
550 if (strcmp(*rp, name) == 0) in nis_rpcent()
565 if ((rv == NS_SUCCESS) && (retval != NULL)) in nis_rpcent()
566 *((struct rpcent **)retval) = rpc; in nis_rpcent()
578 if (rv != 0) in nis_setrpcent()
585 free(st->current); in nis_setrpcent()
586 st->current = NULL; in nis_setrpcent()
587 st->stepping = 0; in nis_setrpcent()
602 int rpc; in rpc_id_func() local
615 if (desired_size > *buffer_size) { in rpc_id_func()
626 rpc = va_arg(ap, int); in rpc_id_func()
629 if (desired_size > *buffer_size) { in rpc_id_func()
635 memcpy(buffer + sizeof(enum nss_lookup_type), &rpc, in rpc_id_func()
656 struct rpcent *rpc; in rpc_marshal_func() local
679 rpc = va_arg(ap, struct rpcent *); in rpc_marshal_func()
684 if (rpc->r_name != NULL) in rpc_marshal_func()
685 desired_size += strlen(rpc->r_name) + 1; in rpc_marshal_func()
687 if (rpc->r_aliases != NULL) { in rpc_marshal_func()
689 for (alias = rpc->r_aliases; *alias; ++alias) { in rpc_marshal_func()
698 if (*buffer_size < desired_size) { in rpc_marshal_func()
704 new_rpc = *rpc; in rpc_marshal_func()
712 if (new_rpc.r_name != NULL) { in rpc_marshal_func()
719 if (new_rpc.r_aliases != NULL) { in rpc_marshal_func()
743 struct rpcent *rpc; in rpc_unmarshal_func() local
765 rpc = va_arg(ap, struct rpcent *); in rpc_unmarshal_func()
770 if (orig_buf_size < in rpc_unmarshal_func()
771 buffer_size - sizeof(struct rpcent) - sizeof(char *)) { in rpc_unmarshal_func()
776 memcpy(rpc, buffer, sizeof(struct rpcent)); in rpc_unmarshal_func()
781 _ALIGN(p) - (size_t)p, in rpc_unmarshal_func()
782 buffer_size - sizeof(struct rpcent) - sizeof(char *) - in rpc_unmarshal_func()
786 NS_APPLY_OFFSET(rpc->r_name, orig_buf, p, char *); in rpc_unmarshal_func()
787 if (rpc->r_aliases != NULL) { in rpc_unmarshal_func()
788 NS_APPLY_OFFSET(rpc->r_aliases, orig_buf, p, char **); in rpc_unmarshal_func()
790 for (alias = rpc->r_aliases ; *alias; ++alias) in rpc_unmarshal_func()
794 if (retval != NULL) in rpc_unmarshal_func()
795 *((struct rpcent **)retval) = rpc; in rpc_unmarshal_func()
800 NSS_MP_CACHE_HANDLING(rpc);
806 getrpcbyname_r(const char *name, struct rpcent *rpc, char *buffer, in getrpcbyname_r() argument
812 rpc, (void *)nss_lt_name, in getrpcbyname_r()
830 name, rpc, buffer, bufsize, &ret_errno); in getrpcbyname_r()
832 if (rv == NS_SUCCESS) in getrpcbyname_r()
839 getrpcbynumber_r(int number, struct rpcent *rpc, char *buffer, in getrpcbynumber_r() argument
845 rpc, (void *)nss_lt_id, in getrpcbynumber_r()
863 number, rpc, buffer, bufsize, &ret_errno); in getrpcbynumber_r()
865 if (rv == NS_SUCCESS) in getrpcbynumber_r()
872 getrpcent_r(struct rpcent *rpc, char *buffer, size_t bufsize, in getrpcent_r() argument
877 rpc, (void *)nss_lt_all, in getrpcent_r()
895 rpc, buffer, bufsize, &ret_errno); in getrpcent_r()
897 if (rv == NS_SUCCESS) in getrpcent_r()
907 if (p == NULL) in rpcent_endstate()
910 free(((struct rpcent_state *)p)->buffer); in rpcent_endstate()
915 wrap_getrpcbyname_r(union key key, struct rpcent *rpc, char *buffer, in wrap_getrpcbyname_r() argument
918 return (getrpcbyname_r(key.name, rpc, buffer, bufsize, res)); in wrap_getrpcbyname_r()
922 wrap_getrpcbynumber_r(union key key, struct rpcent *rpc, char *buffer, in wrap_getrpcbynumber_r() argument
925 return (getrpcbynumber_r(key.number, rpc, buffer, bufsize, res)); in wrap_getrpcbynumber_r()
929 wrap_getrpcent_r(union key key __unused, struct rpcent *rpc, char *buffer, in wrap_getrpcent_r() argument
932 return (getrpcent_r(rpc, buffer, bufsize, res)); in wrap_getrpcent_r()
944 if (rv != 0) { in getrpc()
949 if (st->buffer == NULL) { in getrpc()
950 st->buffer = malloc(RPCENT_STORAGE_INITIAL); in getrpc()
951 if (st->buffer == NULL) in getrpc()
953 st->bufsize = RPCENT_STORAGE_INITIAL; in getrpc()
956 rv = fn(key, &st->rpc, st->buffer, st->bufsize, &res); in getrpc()
957 if (res == NULL && rv == ERANGE) { in getrpc()
958 free(st->buffer); in getrpc()
959 if ((st->bufsize << 1) > RPCENT_STORAGE_MAX) { in getrpc()
960 st->buffer = NULL; in getrpc()
964 st->bufsize <<= 1; in getrpc()
965 st->buffer = malloc(st->bufsize); in getrpc()
966 if (st->buffer == NULL) in getrpc()
970 if (rv != 0) in getrpc()
1011 rpc, (void *)nss_lt_all, in setrpcent()
1035 rpc, (void *)nss_lt_all, in endrpcent()