version 1.10, 1999/03/19 22:21:27 |
version 1.11, 1999/03/20 15:36:12 |
|
|
#include <rpcsvc/yp.h> |
#include <rpcsvc/yp.h> |
#include <rpcsvc/ypclnt.h> |
#include <rpcsvc/ypclnt.h> |
|
|
|
#include "yplib_host.h" |
|
|
struct ypalias { |
struct ypalias { |
char *alias, *name; |
char *alias, *name; |
} ypaliases[] = { |
} ypaliases[] = { |
|
|
usage() |
usage() |
{ |
{ |
fprintf(stderr, "Usage:\n"); |
fprintf(stderr, "Usage:\n"); |
fprintf(stderr, "\typwhich [-d domain] [[-t] -m [mname] | host]\n"); |
fprintf(stderr, "\typwhich [-d domain] [[-h host] [-t] -m [mname] | host]\n"); |
fprintf(stderr, "\typwhich -x\n"); |
fprintf(stderr, "\typwhich -x\n"); |
exit(1); |
exit(1); |
} |
} |
|
|
struct sockaddr_in sin; |
struct sockaddr_in sin; |
int notrans, mode, getmap; |
int notrans, mode, getmap; |
int c, r, i; |
int c, r, i; |
|
CLIENT *client; |
|
char *host = NULL; |
|
|
map = NULL; |
map = NULL; |
getmap = notrans = mode = 0; |
getmap = notrans = mode = 0; |
|
|
if (domain == NULL) |
if (domain == NULL) |
errx(1, "YP domain name not set"); |
errx(1, "YP domain name not set"); |
|
|
while ((c = getopt(argc, argv, "xd:mt")) != -1) |
while ((c = getopt(argc, argv, "xd:h:mt")) != -1) |
switch(c) { |
switch(c) { |
case 'x': |
case 'x': |
for (i=0; i<sizeof ypaliases/sizeof ypaliases[0]; i++) |
for (i=0; i<sizeof ypaliases/sizeof ypaliases[0]; i++) |
printf("Use \"%s\" for \"%s\"\n", |
printf("Use \"%s\" for \"%s\"\n", |
ypaliases[i].alias, ypaliases[i].name); |
ypaliases[i].alias, ypaliases[i].name); |
exit(0); |
exit(0); |
|
case 'h': |
|
host = optarg; |
|
break; |
case 'd': |
case 'd': |
domain = optarg; |
domain = optarg; |
break; |
break; |
|
|
if (argc > 1) |
if (argc > 1) |
usage(); |
usage(); |
|
|
|
if (host != NULL) { |
|
client = yp_bind_host(host,YPPROG,YPVERS,0,1); |
|
} |
|
|
if (argv[0]) { |
if (argv[0]) { |
map = argv[0]; |
map = argv[0]; |
for (i=0; (!notrans) && i<sizeof ypaliases/sizeof ypaliases[0]; i++) |
for (i=0; (!notrans) && i<sizeof ypaliases/sizeof ypaliases[0]; i++) |
if (strcmp(map, ypaliases[i].alias) == 0) |
if (strcmp(map, ypaliases[i].alias) == 0) |
map = ypaliases[i].name; |
map = ypaliases[i].name; |
|
|
r = yp_master(domain, map, &master); |
if (host != NULL) { |
|
r = yp_master_host(client, domain, map, &master); |
|
} else { |
|
r = yp_master(domain, map, &master); |
|
} |
switch (r) { |
switch (r) { |
case 0: |
case 0: |
printf("%s\n", master); |
printf("%s\n", master); |
|
|
} |
} |
|
|
ypml = NULL; |
ypml = NULL; |
r = yp_maplist(domain, &ypml); |
if (host != NULL) { |
|
r = yp_maplist_host(client, domain, &ypml); |
|
} else { |
|
r = yp_maplist(domain, &ypml); |
|
} |
r = 0; |
r = 0; |
switch(r) { |
switch(r) { |
case 0: |
case 0: |
for (y = ypml; y; ) { |
for (y = ypml; y; ) { |
ypml = y; |
ypml = y; |
r = yp_master(domain, ypml->map, &master); |
if (host != NULL) { |
|
r = yp_master_host(client, |
|
domain, ypml->map, &master); |
|
} else { |
|
r = yp_master(domain, ypml->map, &master); |
|
} |
switch(r) { |
switch(r) { |
case 0: |
case 0: |
printf("%s %s\n", ypml->map, master); |
printf("%s %s\n", ypml->map, master); |