static int rpc(int argc, char *argv[]) { struct rpcent *re; int i, rv = RV_OK; setrpcent(1); if (argc == 2) { while ((re = getrpcent()) != NULL) RPCPRINT; } else { for (i = 2; i < argc; i++) { const char *err; long long id = strtonum(argv[i], 0, UINT_MAX, &err); if (!err) re = getrpcbynumber((int)id); else re = getrpcbyname(argv[i]); if (re != NULL) RPCPRINT; else { rv = RV_NOTFOUND; break; } } } endrpcent(); return rv; }
static struct rpcent * interpret(char *val, int len) { struct rpcdata *d = _rpcdata(); char *p; char *cp, **q; if (d == NULL) return (0); strlcpy(d->line, val, sizeof(d->line)); p = d->line; p[len] = '\n'; if (*p == '#') return (getrpcent()); cp = strpbrk(p, "#\n"); if (cp == NULL) return (getrpcent()); *cp = '\0'; cp = strpbrk(p, " \t"); if (cp == NULL) return (getrpcent()); *cp++ = '\0'; /* THIS STUFF IS INTERNET SPECIFIC */ d->rpc.r_name = d->line; while (*cp == ' ' || *cp == '\t') cp++; d->rpc.r_number = atoi(cp); q = d->rpc.r_aliases = d->rpc_aliases; cp = strpbrk(cp, " \t"); if (cp != NULL) *cp++ = '\0'; while (cp && *cp) { if (*cp == ' ' || *cp == '\t') { cp++; continue; } if (q < &(d->rpc_aliases[MAXALIASES - 1])) *q++ = cp; cp = strpbrk(cp, " \t"); if (cp != NULL) *cp++ = '\0'; } *q = NULL; return (&d->rpc); }
int getrpcent_r(struct rpcent *result_buf, char *buffer, size_t buflen, struct rpcent **result) { int ret; __UCLIBC_MUTEX_LOCK(mylock); ret = __copy_rpcent(getrpcent(), result_buf, buffer, buflen, result); __UCLIBC_MUTEX_UNLOCK(mylock); return ret; }
struct rpcent *getrpcbynumber(register int number) { register struct rpcdata *d = _rpcdata(); register struct rpcent *rpc; if (d == NULL) return NULL; setrpcent(0); while ((rpc = getrpcent())) { if (rpc->r_number == number) break; } endrpcent(); return rpc; }
struct rpcent * getrpcbynumber(int number) { struct rpcdata *d = _rpcdata(); struct rpcent *p; if (d == NULL) return (0); setrpcent(0); while ((p = getrpcent())) { if (p->r_number == number) break; } endrpcent(); return (p); }
static int rpcent_fill_test_data(struct rpcent_test_data *td) { struct rpcent *rpc; setrpcent(1); while ((rpc = getrpcent()) != NULL) { if (rpcent_test_correctness(rpc, NULL) == 0) TEST_DATA_APPEND(rpcent, td, rpc); else return (-1); } endrpcent(); return (0); }
struct rpcent *getrpcbyname(const char *name) { struct rpcent *rpc; char **rp; setrpcent(0); while ((rpc = getrpcent())) { if (strcmp(rpc->r_name, name) == 0) return rpc; for (rp = rpc->r_aliases; *rp != NULL; rp++) { if (strcmp(*rp, name) == 0) return rpc; } } endrpcent(); return NULL; }
struct rpcent * getrpcbyname(char *name) { struct rpcent *rpc; char **rp; setrpcent(0); while ((rpc = getrpcent())) { if (strcmp(rpc->r_name, name) == 0) goto done; for (rp = rpc->r_aliases; *rp != NULL; rp++) { if (strcmp(*rp, name) == 0) goto done; } } done: endrpcent(); return (rpc); }
struct rpcent * getrpcbynumber(register int number) { register struct rpcdata *d = get_rpcdata(); register struct rpcent *p; int reason; char adrstr[16], *val = NULL; int vallen; if (d == 0) return (0); setrpcent(0); while (p = getrpcent()) { if (p->r_number == number) break; } endrpcent(); return (p); }
static void test_rpc (void) { struct rpcent *rptr; rptr = getrpcbyname ("portmap"); output_rpcent ("getrpcyname (\"portmap\")", rptr); rptr = getrpcbynumber (100000); output_rpcent ("getrpcbynumber (100000)", rptr); setrpcent (0); do { rptr = getrpcent (); output_rpcent ("getrpcent ()", rptr); } while (rptr != NULL); endrpcent (); }
/* * rpc */ static int rpc(int argc, char *argv[]) { struct rpcent *re; unsigned long id; int i, rv; assert(argc > 1); assert(argv != NULL); #define RPCPRINT printfmtstrings(re->r_aliases, " ", " ", \ "%-16s %6d", \ re->r_name, re->r_number) setrpcent(1); rv = RV_OK; if (argc == 2) { while ((re = getrpcent()) != NULL) RPCPRINT; } else { for (i = 2; i < argc; i++) { if (parsenum(argv[i], &id)) re = getrpcbynumber((int)id); else re = getrpcbyname(argv[i]); if (re != NULL) RPCPRINT; else { rv = RV_NOTFOUND; break; } } } endrpcent(); return rv; }
static struct rpcent * interpret( char *val, int len) { register struct rpcdata *d = _rpcdata(); char *p; register char *cp, **q; if (d == 0) return (NULL); strncpy(d->line, val, len); p = d->line; d->line[len] = '\n'; if (*p == '#') return (getrpcent()); cp = strchr(p, '#'); if (cp == NULL) { cp = strchr(p, '\n'); if (cp == NULL) return (getrpcent()); } *cp = '\0'; cp = strchr(p, ' '); if (cp == NULL) { cp = strchr(p, '\t'); if (cp == NULL) return (getrpcent()); } *cp++ = '\0'; /* THIS STUFF IS INTERNET SPECIFIC */ d->rpc.r_name = d->line; while (*cp == ' ' || *cp == '\t') cp++; d->rpc.r_number = atoi(cp); q = d->rpc.r_aliases = d->rpc_aliases; cp = strchr(p, ' '); if (cp != NULL) *cp++ = '\0'; else { cp = strchr(p, '\t'); if (cp != NULL) *cp++ = '\0'; } while (cp && *cp) { if (*cp == ' ' || *cp == '\t') { cp++; continue; } if (q < &(d->rpc_aliases[MAXALIASES - 1])) *q++ = cp; cp = strchr(p, ' '); if (cp != NULL) *cp++ = '\0'; else { cp = strchr(p, '\t'); if (cp != NULL) *cp++ = '\0'; } } *q = NULL; return (&d->rpc); }