X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;ds=inline;f=src%2Fpazpar2.c;h=0ede6be1f79f70fd3fdc6dc8034338080beb835a;hb=e0fd929c14a4b675290d3179239a5e6a45e55418;hp=0a32283667618eeaa48cde0191e852b0af7f1f6a;hpb=f89a08d579f270d78b6e48a04ec63cef23539c88;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2.c b/src/pazpar2.c index 0a32283..0ede6be 100644 --- a/src/pazpar2.c +++ b/src/pazpar2.c @@ -20,7 +20,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #if HAVE_CONFIG_H #include #endif - +#ifdef WIN32 +#include +#endif #include #include @@ -30,6 +32,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "settings.h" #include +#include + void child_handler(void *data) { start_proxy(); @@ -52,7 +56,7 @@ void child_handler(void *data) static void show_version(void) { char yaz_version_str[80]; - printf("Pazpar2 " VERSION "\n"); + printf("Pazpar2 " PACKAGE_VERSION "\n"); yaz_version(yaz_version_str, 0); @@ -65,7 +69,23 @@ static void show_version(void) exit(0); } -int main(int argc, char **argv) +#ifdef WIN32 +static int tcpip_init (void) +{ + WORD requested; + WSADATA wd; + + requested = MAKEWORD(1, 1); + if (WSAStartup(requested, &wd)) + return 0; + return 1; +} +#endif + + +static int sc_main( + yaz_sc_t s, + int argc, char **argv) { int daemon = 0; int ret; @@ -74,13 +94,15 @@ int main(int argc, char **argv) const char *pidfile = 0; const char *uid = 0; +#ifndef WIN32 if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) yaz_log(YLOG_WARN|YLOG_ERRNO, "signal"); +#else + tcpip_init(); +#endif yaz_log_init_prefix("pazpar2"); -#if YAZ_VERSIONL >= 0x03001B yaz_log_xml_errors(0, YLOG_WARN); -#endif while ((ret = options("dDf:h:l:p:t:u:VX", argv, argc, &arg)) != -2) { @@ -129,8 +151,12 @@ int main(int argc, char **argv) " -u uid\n" " -V show version\n" " -X debug mode\n" +#ifdef WIN32 + " -install install windows service\n" + " -remove remove windows service\n" +#endif ); - exit(1); + return 1; } } @@ -139,16 +165,21 @@ int main(int argc, char **argv) { yaz_log(YLOG_FATAL, "Logfile must be given (option -l) for daemon " "mode"); - exit(1); + return 1; } if (!config) { yaz_log(YLOG_FATAL, "Load config with -f"); - exit(1); + return 1; } global_parameters.server = config->servers; - start_http_listener(); + ret = start_http_listener(); + if (ret) + return ret; /* error starting http listener */ + + yaz_sc_running(s); + yaz_daemon("pazpar2", (global_parameters.debug_mode ? YAZ_DAEMON_DEBUG : 0) + (daemon ? YAZ_DAEMON_FORK : 0) + YAZ_DAEMON_KEEPALIVE, @@ -158,6 +189,22 @@ int main(int argc, char **argv) } +static void sc_stop(yaz_sc_t s) +{ + http_close_server(); +} + +int main(int argc, char **argv) +{ + int ret; + yaz_sc_t s = yaz_sc_create("pazpar2", "Pazpar2"); + + ret = yaz_sc_program(s, argc, argv, sc_main, sc_stop); + + yaz_sc_destroy(&s); + exit(ret); +} + /* * Local variables: * c-basic-offset: 4