2 do_gnent(which,gimme,arglast)
7 register ARRAY *ary = stack;
8 register int sp = arglast[0];
11 struct netent *getnetbyname();
12 struct netent *getnetbyaddr();
13 struct netent *getnetent();
16 if (which == O_GNBYNAME) {
17 char *name = str_get(ary->ary_array[sp+1]);
19 nent = getnetbyname(name);
21 else if (which == O_GNBYADDR) {
22 unsigned long addr = U_L(str_gnum(ary->ary_array[sp+1]));
23 int addrtype = (int)str_gnum(ary->ary_array[sp+2]);
25 nent = getnetbyaddr((long)addr,addrtype);
30 if (gimme != G_ARRAY) {
31 astore(ary, ++sp, TARG = str_mortal(&str_undef));
33 if (which == O_GNBYNAME)
34 str_numset(TARG, (double)nent->n_net);
36 str_set(TARG, nent->n_name);
43 (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
44 str_set(TARG, nent->n_name);
45 (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
46 for (elem = nent->n_aliases; *elem; elem++) {
51 (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
52 str_numset(TARG, (double)nent->n_addrtype);
53 (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
54 str_numset(TARG, (double)nent->n_net);
58 (void)astore(ary, ++sp, str_mortal(&str_no));