Make Rod Grimes's life a little simpler: replace all exit(1)'s with

seperate exit values depending on the error. (The error values are
#defined and commented near the top of the file for clarity). This
is to help write a small bit of shell script for /etc/rc that calls
ypwhich a few times after ypbind is invoked to make sure we're
actually bound to a server before proceeding (if we aren't, the
automounter can fail if it's using NIS maps).
This commit is contained in:
Bill Paul 1995-04-22 00:23:59 +00:00
parent cca32e93aa
commit 8a5bd1a2a3
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=7990

View File

@ -42,6 +42,12 @@ static char rcsid[] = "ypwhich.c,v 1.2 1993/05/16 02:49:10 deraadt Exp";
#include <rpcsvc/yp_prot.h> #include <rpcsvc/yp_prot.h>
#include <rpcsvc/ypclnt.h> #include <rpcsvc/ypclnt.h>
#define ERR_USAGE 1 /* bad arguments - display 'usage' message */
#define ERR_NOSUCHHOST 2 /* no such host */
#define ERR_NOBINDING 3 /* error from ypbind -- domain not bound */
#define ERR_NOYPBIND 4 /* ypbind not running */
#define ERR_NOMASTER 5 /* could not find master server */
extern bool_t xdr_domainname(); extern bool_t xdr_domainname();
struct ypalias { struct ypalias {
@ -62,7 +68,7 @@ usage()
fprintf(stderr, "Usage:\n"); fprintf(stderr, "Usage:\n");
fprintf(stderr, "\typwhich [-d domain] [[-t] -m [mname] | host]\n"); fprintf(stderr, "\typwhich [-d domain] [[-t] -m [mname] | host]\n");
fprintf(stderr, "\typwhich -x\n"); fprintf(stderr, "\typwhich -x\n");
exit(1); exit(ERR_USAGE);
} }
@ -166,7 +172,7 @@ char **argv;
sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
if(bind_host(domainname, &sin)) if(bind_host(domainname, &sin))
exit(1); exit(ERR_NOBINDING);
break; break;
case 1: case 1:
bzero(&sin, sizeof sin); bzero(&sin, sizeof sin);
@ -176,13 +182,13 @@ char **argv;
if(!hent) { if(!hent) {
fprintf(stderr, "ypwhich: host %s unknown\n", fprintf(stderr, "ypwhich: host %s unknown\n",
argv[optind]); argv[optind]);
exit(1); exit(ERR_NOSUCHHOST);
} }
bcopy((char *)hent->h_addr_list[0], bcopy((char *)hent->h_addr_list[0],
(char *)&sin.sin_addr, sizeof sin.sin_addr); (char *)&sin.sin_addr, sizeof sin.sin_addr);
} }
if(bind_host(domainname, &sin)) if(bind_host(domainname, &sin))
exit(1); exit(ERR_NOBINDING);
break; break;
default: default:
usage(); usage();
@ -206,11 +212,11 @@ char **argv;
break; break;
case YPERR_YPBIND: case YPERR_YPBIND:
fprintf(stderr, "ypwhich: not running ypbind\n"); fprintf(stderr, "ypwhich: not running ypbind\n");
exit(1); exit(ERR_NOYPBIND);
default: default:
fprintf(stderr, "Can't find master for map %s. Reason: %s\n", fprintf(stderr, "Can't find master for map %s. Reason: %s\n",
map, yperr_string(r)); map, yperr_string(r));
exit(1); exit(ERR_NOMASTER);
} }
exit(0); exit(0);
} }
@ -239,11 +245,11 @@ char **argv;
break; break;
case YPERR_YPBIND: case YPERR_YPBIND:
fprintf(stderr, "ypwhich: not running ypbind\n"); fprintf(stderr, "ypwhich: not running ypbind\n");
exit(1); exit(ERR_NOYPBIND);
default: default:
fprintf(stderr, "Can't get map list for domain %s. Reason: %s\n", fprintf(stderr, "Can't get map list for domain %s. Reason: %s\n",
domainname, yperr_string(r)); domainname, yperr_string(r));
exit(1); exit(ERR_NOMASTER);
} }
exit(0); exit(0);
} }