* Sebastian Hammer, Adam Dickmeiss
*
* $Log: statserv.c,v $
- * Revision 1.14 1995-03-31 09:18:58 quinn
+ * Revision 1.16 1995-04-10 10:23:40 quinn
+ * Some work to add scan and other things.
+ *
+ * Revision 1.15 1995/03/31 10:16:51 quinn
+ * Fixed logging.
+ *
+ * Revision 1.14 1995/03/31 09:18:58 quinn
* Added logging.
*
* Revision 1.13 1995/03/30 16:08:39 quinn
#include <dmalloc.h>
#include <log.h>
-static char *me = "";
-static int dynamic = 1; /* fork on incoming connection */
+static char *me = "statserver";
+int dynamic = 1; /* fork on incoming connection */
+static int loglevel = LOG_DEFAULT_LEVEL;
+char *apdufile = 0;
#define DEFAULT_LISTENER "tcp:localhost:9999"
}
else if (res == 0) /* child */
{
+ char nbuf[100];
+
close(hand[0]);
child = 1;
+ sprintf(nbuf, "%s(%d)", me, getpid());
+ log_init(loglevel, nbuf, 0);
}
else /* parent */
{
}
else if (res == 1)
return;
+ logf(LOG_DEBUG, "listen ok");
iochan_setevent(h, EVENT_OUTPUT);
iochan_setflags(h, EVENT_OUTPUT | EVENT_EXCEPT); /* set up for acpt */
}
iochan_setflags(h, EVENT_INPUT | EVENT_EXCEPT); /* reset listener */
return;
}
+ logf(LOG_DEBUG, "accept ok");
if (dynamic)
{
IOCHAN pp;
exit(1);
}
iochan_setdata(new_chan, newas);
+ logf(LOG_LOG, "accepted connection");
}
else
{
void *ap;
IOCHAN lst;
- logf(LOG_LOG, "Adding %s %s listener on %s",
- dynamic ? "dynamic" : "static",
- what == PROTO_SR ? "SR" : "Z3950", where);
if (!where || sscanf(where, "%[^:]:%s", mode, addr) != 2)
{
fprintf(stderr, "%s: Address format: ('tcp'|'osi')':'<address>.\n",
fprintf(stderr, "You must specify either 'osi:' or 'tcp:'.\n");
exit(1);
}
+ logf(LOG_LOG, "Adding %s %s listener on %s",
+ dynamic ? "dynamic" : "static",
+ what == PROTO_SR ? "SR" : "Z3950", where);
if (!(l = cs_create(type, 0, what)))
{
- fprintf(stderr, "Failed to create listener\n");
+ logf(LOG_FATAL|LOG_ERRNO, "Failed to create listener");
exit(1);
}
if (cs_bind(l, ap, CS_SERVER) < 0)
{
- fprintf(stderr, "Failed to bind.\n");
- logf(LOG_FATAL|LOG_ERRNO, where);
+ logf(LOG_FATAL|LOG_ERRNO, "Failed to bind to %s", where);
exit(1);
}
if (!(lst = iochan_create(cs_fileno(l), listener, EVENT_INPUT |
EVENT_EXCEPT)))
{
- logf(LOG_FATAL, "Failed to create IOCHAN-type\n");
+ logf(LOG_FATAL|LOG_ERRNO, "Failed to create IOCHAN-type");
exit(1);
}
iochan_setdata(lst, l);
char *arg;
int protocol = CS_Z3950;
char *logfile = 0;
- int loglevel = LOG_DEFAULT_LEVEL;
me = argv[0];
- while ((ret = options("szSl:v:", argv, argc, &arg)) != -2)
+ while ((ret = options("a:szSl:v:", argv, argc, &arg)) != -2)
switch (ret)
{
case 0:
case 's': protocol = CS_SR; break;
case 'S': dynamic = 0; break;
case 'l':
- logfile = arg;
- log_init(loglevel, me, logfile);
- break;
+ logfile = arg;
+ log_init(loglevel, me, logfile);
+ break;
case 'v':
- loglevel = log_mask_str(arg);
- log_init(loglevel, me, logfile);
- break;
+ loglevel = log_mask_str(arg);
+ log_init(loglevel, me, logfile);
+ break;
+ case 'a':
+ apdufile = arg; break;
default:
fprintf(stderr, "Usage: %s [ -v <loglevel> -l <logfile> -zsS <listener-addr> ... ]\n", me);
exit(1);
if (!listeners)
add_listener(DEFAULT_LISTENER, protocol);
logf(LOG_LOG, "Entering event loop.");
+
return event_loop();
}