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; }
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; }