--- projects/cms/source/ihost/ihost.c 2002/05/19 19:42:41 1.16 +++ projects/cms/source/ihost/ihost.c 2002/05/20 12:28:46 1.17 @@ -31,6 +31,7 @@ #include #include +#define versionNo 0.8 #define RECONFIGURE_RETURN_CODE 2 #define UDP_MAX_PACKET_SIZE 8192 @@ -410,6 +411,17 @@ int send_stats(ihost_state_t *ihost_state, char *data_ return 0; } +void usage(char *progname){ + fprintf(stderr, "Usage %s [options] server port\n", progname); + fprintf(stderr, "Options\n"); + fprintf(stderr, " -v Verbose, the more v flags the more verbose, eg -vv\n"); + fprintf(stderr, " -d Daemon mode, self backgrounding\n"); + fprintf(stderr, " -s Send errors to syslog\n"); + fprintf(stderr, " -V Print version number\n"); + fprintf(stderr, " -h Prints this help page\n"); + exit(1); +} + int main(int argc, char **argv){ ihost_state_t ihost_state; int heartbeat_exit; @@ -418,6 +430,10 @@ int main(int argc, char **argv){ int sleep_delay=0; char *xml_stats; + int cmdopt; + extern int optind; + int verbose=0, daemon=0, syslog=0 ; + /* NULL'ify so i can tell if i need to free it or not */ ihost_state.fm_host=NULL; ihost_state.my_fqdn=NULL; @@ -427,13 +443,44 @@ int main(int argc, char **argv){ ihost_state.key=NULL; errf_set_progname(argv[0]); - if(argc!=3){ - errf_usage(" "); - exit(1); + + while((cmdopt=getopt(argc, argv, "vdshV")) != -1){ + switch(cmdopt){ + case 'v': + verbose++; + break; + + case 'd': + daemon=1; + break; + + case 's': + syslog=1; + break; + + case 'h': + usage(argv[0]); + break; + case 'V': + errf("%s version %f",argv[0], versionNo); + break; + default: + usage(argv[0]); + exit(1); + } } - ihost_state.fm_host=argv[1]; - ihost_state.fm_port=atoi(argv[2]); + if(argc!=optind+2){ + usage(argv[0]); + exit(1); + } + ihost_state.fm_host=argv[optind]; + ihost_state.fm_port=atoi(argv[optind+1]); + if(ihost_state.fm_port==0){ + errf("Invalid port number"); + usage(argv[0]); + } + printf("%s\n%d\n",ihost_state.fm_host, ihost_state.fm_port); if(ihost_configure(&ihost_state)!=0){ errf("configure failed");