+int check_options(int argc, char **argv)
+{
+ int ret = 0, r;
+ char *arg;
+
+ while ((ret = options("a:iszSl:v:u:c:w:t:k:", argv, argc, &arg)) != -2)
+ {
+ switch (ret)
+ {
+ case 0:
+ add_listener(arg, control_block.default_proto);
+ break;
+ case 'z':
+ control_block.default_proto = PROTO_Z3950;
+ break;
+ case 's':
+ control_block.default_proto = PROTO_SR;
+ break;
+ case 'S':
+ control_block.dynamic = 0;
+ break;
+ case 'l':
+ strcpy(control_block.logfile, arg ? arg : "");
+ log_init(control_block.loglevel, me, control_block.logfile);
+ break;
+ case 'v':
+ control_block.loglevel = log_mask_str(arg);
+ log_init(control_block.loglevel, me, control_block.logfile);
+ break;
+ case 'a':
+ strcpy(control_block.apdufile, arg ? arg : "");
+ break;
+ case 'u':
+ strcpy(control_block.setuid, arg ? arg : "");
+ break;
+ case 'c':
+ strcpy(control_block.configname, arg ? arg : "");
+ break;
+ case 't':
+ if (!arg || !(r = atoi(arg)))
+ {
+ fprintf(stderr, "%s: Specify positive timeout for -t.\n", me);
+ return(1);
+ }
+ control_block.idle_timeout = r;
+ break;
+ case 'k':
+ if (!arg || !(r = atoi(arg)))
+ {
+ fprintf(stderr, "%s: Specify positive timeout for -t.\n", me);
+ return(1);
+ }
+ control_block.maxrecordsize = r * 1024;
+ break;
+ case 'i':
+ control_block.inetd = 1;
+ break;
+ case 'w':
+ if (chdir(arg))
+ {
+ perror(arg);
+ return(1);
+ }
+ break;
+ default:
+ fprintf(stderr, "Usage: %s [ -i -a <pdufile> -v <loglevel>"
+ " -l <logfile> -u <user> -c <config> -t <minutes>"
+ " -k <kilobytes>"
+ " -zsS <listener-addr> -w <directory> ... ]\n", me);
+ return(1);
+ }
+ }
+ return 0;
+}
+
+#ifdef WIN32