X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=server%2Fstatserv.c;h=5f32259e51c7430756558fb6b48513e6f557c5dd;hb=c7fa0e1f18e00b58b65b39b3c36cb68930e3838c;hp=84190dda2ed3794a2ff1462bf82f7421535a8d11;hpb=2f5c9e5bc97a81a1e83f825146453a4a89696274;p=yaz-moved-to-github.git diff --git a/server/statserv.c b/server/statserv.c index 84190dd..5f32259 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -4,7 +4,19 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: statserv.c,v $ - * Revision 1.10 1995-03-29 15:40:16 quinn + * Revision 1.14 1995-03-31 09:18:58 quinn + * Added logging. + * + * Revision 1.13 1995/03/30 16:08:39 quinn + * Little mods. + * + * Revision 1.12 1995/03/30 13:29:02 quinn + * Smallish + * + * Revision 1.11 1995/03/30 12:18:17 quinn + * Fixed bug. + * + * Revision 1.10 1995/03/29 15:40:16 quinn * Ongoing work. Statserv is now dynamic by default * * Revision 1.9 1995/03/27 08:34:30 quinn @@ -56,8 +68,11 @@ #include #include #include +#ifdef USE_XTIMOSI #include +#endif #include +#include static char *me = ""; static int dynamic = 1; /* fork on incoming connection */ @@ -86,12 +101,12 @@ static void listener(IOCHAN h, int event) if (pipe(hand) < 0) { - perror("pipe"); + logf(LOG_FATAL|LOG_ERRNO, "pipe"); exit(1); } if ((res = fork()) < 0) { - perror("fork"); + logf(LOG_FATAL|LOG_ERRNO, "fork"); exit(1); } else if (res == 0) /* child */ @@ -110,20 +125,20 @@ static void listener(IOCHAN h, int event) if ((res = read(hand[0], dummy, 1)) < 0 && errno != EINTR) { - perror("handshake read"); + logf(LOG_FATAL|LOG_ERRNO, "handshake read"); exit(1); } else if (res >= 0) break; } - fprintf(stderr, "P: Child has taken the call\n"); + logf(LOG_DEBUG, "P: Child has taken the call"); close(hand[0]); return; } } if ((res = cs_listen(line, 0, 0)) < 0) { - fprintf(stderr, "cs_listen failed.\n"); + logf(LOG_FATAL, "cs_listen failed."); return; } else if (res == 1) @@ -139,7 +154,7 @@ static void listener(IOCHAN h, int event) if (!(new_line = cs_accept(line))) { - fprintf(stderr, "Accept failed.\n"); + logf(LOG_FATAL, "Accept failed."); iochan_setflags(h, EVENT_INPUT | EVENT_EXCEPT); /* reset listener */ return; } @@ -154,9 +169,8 @@ static void listener(IOCHAN h, int event) iochan_destroy(pp); } /* release dad */ - fprintf(stderr, "Releasing parent\n"); + logf(LOG_DEBUG, "Releasing parent"); close(hand[1]); - fprintf(stderr, "New fd is %d\n", cs_fileno(new_line)); } else iochan_setflags(h, EVENT_INPUT | EVENT_EXCEPT); /* reset listener */ @@ -164,19 +178,19 @@ static void listener(IOCHAN h, int event) if (!(new_chan = iochan_create(cs_fileno(new_line), ir_session, EVENT_INPUT))) { - fprintf(stderr, "Failed to create iochan\n"); + logf(LOG_FATAL, "Failed to create iochan"); exit(1); } if (!(newas = create_association(new_chan, new_line))) { - fprintf(stderr, "Failed to create new assoc.\n"); + logf(LOG_FATAL, "Failed to create new assoc."); exit(1); } iochan_setdata(new_chan, newas); } else { - fprintf(stderr, "Bad event on listener.\n"); + logf(LOG_FATAL, "Bad event on listener."); exit(1); } } @@ -192,7 +206,7 @@ static void add_listener(char *where, int what) void *ap; IOCHAN lst; - fprintf(stderr, "Adding %s %s listener on %s\n", + 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) @@ -210,6 +224,7 @@ static void add_listener(char *where, int what) } type = tcpip_type; } +#ifdef USE_XTIMOSI else if (!strcmp(mode, "osi")) { if (!(ap = mosi_strtoaddr(addr))) @@ -219,6 +234,7 @@ static void add_listener(char *where, int what) } type = mosi_type; } +#endif else { fprintf(stderr, "You must specify either 'osi:' or 'tcp:'.\n"); @@ -232,13 +248,13 @@ static void add_listener(char *where, int what) if (cs_bind(l, ap, CS_SERVER) < 0) { fprintf(stderr, "Failed to bind.\n"); - perror(where); + logf(LOG_FATAL|LOG_ERRNO, where); exit(1); } if (!(lst = iochan_create(cs_fileno(l), listener, EVENT_INPUT | EVENT_EXCEPT))) { - fprintf(stderr, "Failed to create IOCHAN-type\n"); + logf(LOG_FATAL, "Failed to create IOCHAN-type\n"); exit(1); } iochan_setdata(lst, l); @@ -254,10 +270,12 @@ int statserv_main(int argc, char **argv) { int ret, listeners = 0; char *arg; - int protocol = CS_Z3950;; + int protocol = CS_Z3950; + char *logfile = 0; + int loglevel = LOG_DEFAULT_LEVEL; me = argv[0]; - while ((ret = options("szSl:", argv, argc, &arg)) != -2) + while ((ret = options("szSl:v:", argv, argc, &arg)) != -2) switch (ret) { case 0: @@ -267,13 +285,22 @@ int statserv_main(int argc, char **argv) case 'z': protocol = CS_Z3950; break; case 's': protocol = CS_SR; break; case 'S': dynamic = 0; break; + case 'l': + logfile = arg; + log_init(loglevel, me, logfile); + break; + case 'v': + loglevel = log_mask_str(arg); + log_init(loglevel, me, logfile); + break; default: - fprintf(stderr, "Usage: %s [ -zsS ... ]\n", me); + fprintf(stderr, "Usage: %s [ -v -l -zsS ... ]\n", me); exit(1); } if (dynamic) signal(SIGCHLD, catchchld); if (!listeners) add_listener(DEFAULT_LISTENER, protocol); + logf(LOG_LOG, "Entering event loop."); return event_loop(); }