X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fstatserv.c;h=9246daa8645041a12e86603e0021d4dceede6e6e;hb=55c6ac70550af857d80ef233147dbc986e4095e1;hp=ec506a5cd8be5cb2fd3eaceddd6e2c26133c3b85;hpb=068a5a7412f492019b4d6f5e89158098d44368f7;p=yaz-moved-to-github.git diff --git a/server/statserv.c b/server/statserv.c index ec506a5..9246daa 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -7,7 +7,11 @@ * Chas Woodfield, Fretwell Downing Datasystem. * * $Log: statserv.c,v $ - * Revision 1.43 1997-10-31 12:20:09 adam + * Revision 1.44 1997-11-07 13:31:52 adam + * Added NT Service name part of statserv_options_block. Moved NT + * service utility to server library. + * + * Revision 1.43 1997/10/31 12:20:09 adam * Improved memory debugging for xmalloc/nmem.c. References to NMEM * instead of ODR in n ESPEC-1 handling in source d1_espec.c. * Bug fix: missing fclose in data1_read_espec1. @@ -156,6 +160,7 @@ #include #include #include +#include "service.h" #else #include #include @@ -192,7 +197,8 @@ static statserv_options_block control_block = { 1024*1024, /* maximum PDU size (approx.) to allow */ "default-config", /* configuration name to pass to backend */ "", /* set user id */ - NULL + NULL, /* pre init handler */ + "Z39.50 Server" /* NT Service Name */ }; /* @@ -404,11 +410,11 @@ static void listener(IOCHAN h, int event) } logf(LOG_DEBUG, "Setting timeout %d", control_block.idle_timeout); iochan_setdata(new_chan, newas); - iochan_settimeout(new_chan, control_block.idle_timeout * 60); + iochan_settimeout(new_chan, control_block.idle_timeout * 60); #ifndef WINDOWS logf(LOG_DEBUG, "Determining client address"); a = cs_addrstr(new_line); - logf(LOG_LOG, "Accepted connection from %s", a ? a : "[Unknown]"); + logf(LOG_LOG, "Accepted connection from %s", a ? a : "[Unknown]"); #endif /* Now what we need todo is create a new thread with this iochan as the parameter */ @@ -708,7 +714,8 @@ void statserv_setcontrol(statserv_options_block *block) memcpy(&control_block, block, sizeof(*block)); } -int statserv_main(int argc, char **argv) + +int statserv_start(int argc, char **argv) { int ret, listeners = 0, inetd = 0, r; char *arg; @@ -829,3 +836,62 @@ int statserv_main(int argc, char **argv) nmem_exit (); return ret; } + +#ifdef WINDOWS +typedef struct _Args +{ + char **argv; + int argc; +} Args; + +static Args ArgDetails; + +/* name of the executable */ +#define SZAPPNAME "server" + +/* list of service dependencies - "dep1\0dep2\0\0" */ +#define SZDEPENDENCIES "" + +int statserv_main(int argc, char **argv) +{ + statserv_options_block *cb = statserv_getcontrol(); + + /* Lets setup the Arg structure */ + ArgDetails.argc = argc; + ArgDetails.argv = argv; + + /* Now setup the service with the service controller */ + SetupService(argc, argv, &ArgDetails, SZAPPNAME, + cb->service_name, /* internal service name */ + cb->service_name, /* displayed name of the service */ + SZDEPENDENCIES); + return 0; +} + +int StartAppService(void *pHandle, int argc, char **argv) +{ + /* Initializes the App */ + return 1; +} + +void RunAppService(void *pHandle) +{ + Args *pArgs = (Args *)pHandle; + + /* Starts the app running */ + statserv_start(pArgs->argc, pArgs->argv); +} + +void StopAppService(void *pHandle) +{ + /* Stops the app */ + statserv_closedown(); +} +#else +int statserv_main(int argc, char **argv) +{ + int ret = statserv_start (argc, argv); + statserv_closedown (); + return ret; +} +#endif