X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fmetaproxy_prog.cpp;h=2719870ab5609062d99101f703f0f527e642321b;hb=c1d953eee6c00432493bc364da6284704ccd9cc2;hp=c1f612306c5335d61d4f8135b21c9133012c067e;hpb=c92f67c2cee4deb11f96b79ff10a6f7a5ba49f15;p=metaproxy-moved-to-github.git diff --git a/src/metaproxy_prog.cpp b/src/metaproxy_prog.cpp index c1f6123..2719870 100644 --- a/src/metaproxy_prog.cpp +++ b/src/metaproxy_prog.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2010 Index Data + Copyright (C) 2005-2011 Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -52,26 +52,33 @@ static pid_t process_group = 0; static void sig_term_handler(int s) { kill(-process_group, SIGTERM); /* kill all children processes as well */ - exit(0); + _exit(0); } #endif -static void handler(void *data) +static void handler_debug(void *data) { - routerp = (mp::RouterFleXML*) data; - -#if HAVE_UNISTD_H - /* make the current working process group leader */ - setpgid(0, 0); +#if HAVE_UNISTD_H process_group = getpgid(0); // save process group ID signal(SIGTERM, sig_term_handler); #endif + routerp = (mp::RouterFleXML*) data; + routerp->start(); mp::Package pack; pack.router(*routerp).move(); /* should never exit */ } +static void handler_normal(void *data) +{ +#if HAVE_UNISTD_H + /* make the current working process group leader */ + setpgid(0, 0); +#endif + handler_debug(data); +} + static int sc_main( yaz_sc_t s, int argc, char **argv) @@ -124,7 +131,11 @@ static int sc_main( uid = arg; break; case 'V': - std::cout << VERSION "\n"; + std::cout << VERSION; +#ifdef VERSION_SHA1 + std::cout << " " VERSION_SHA1; +#endif + std::cout << "\n"; return 0; break; case 'w': @@ -153,7 +164,12 @@ static int sc_main( return 1; } - yaz_log(YLOG_LOG, "Metaproxy " VERSION " started"); + yaz_log(YLOG_LOG, "Metaproxy start " VERSION +#ifdef VERSION_SHA1 + " " VERSION_SHA1 +#endif + ); + xmlDocPtr doc = xmlReadFile(fname, NULL, XML_PARSE_XINCLUDE + XML_PARSE_NOBLANKS @@ -189,7 +205,8 @@ static int sc_main( yaz_sc_running(s); - yaz_daemon("metaproxy", mode, handler, router, pidfile, uid); + yaz_daemon("metaproxy", mode, mode == YAZ_DAEMON_DEBUG ? + handler_debug : handler_normal, router, pidfile, uid); } catch (std::logic_error &e) { yaz_log (YLOG_FATAL,"std::logic error: %s" , e.what() );