From e8d4a4b06783f74ff4e6a32f4f4b2622473d1b3c Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 5 Dec 2000 19:05:10 +0000 Subject: [PATCH] Service automatically starts in the directory from which it was installed. --- server/service.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/server/service.c b/server/service.c index b112e2f..22ec699 100644 --- a/server/service.c +++ b/server/service.c @@ -3,7 +3,10 @@ * Based on code written by * Chas Woodfield, Fretwell Downing Datasystems. * $Log: service.c,v $ - * Revision 1.3 1999-06-10 11:45:30 adam + * Revision 1.4 2000-12-05 19:05:10 adam + * Service automatically starts in the directory from which it was installed. + * + * Revision 1.3 1999/06/10 11:45:30 adam * Added bend_start, bend_stop handlers and removed pre_init. * Handlers bend_start/bend_stop are called when service/daemon is * started/stopped. @@ -43,6 +46,7 @@ #include #include #include +#include #include "service.h" @@ -231,7 +235,7 @@ void CmdInstallService(int argc, char *argv[], BOOL bAutoStart) SC_HANDLE schService; SC_HANDLE schSCManager; - TCHAR szPath[1024]; + TCHAR szPath[2048]; if (GetModuleFileName(NULL, szPath, 512) == 0) { @@ -240,8 +244,15 @@ void CmdInstallService(int argc, char *argv[], BOOL bAutoStart) else { int i; + char cwdstr[_MAX_PATH]; + + if (!_getcwd(cwdstr, sizeof(cwdstr))) + strcpy (cwdstr, "."); + + strcat (szPath, TEXT(" -runservice \"")); + strcat (szPath, cwdstr); + strcat (szPath, "\""); - strcat (szPath, TEXT(" -runservice")); for (i = 1; i < argc; i++) { /* We will add the given command line arguments to the command */ @@ -413,7 +424,9 @@ BOOL CheckServiceArguments(int argc, char *argv[]) else if (stricmp ("-runservice", argv[i]) == 0) { /* We can carry on, if we reached here */ + chdir(argv[i+1]); argv[i] = ""; + argv[i+1] = ""; return(TRUE); } } -- 1.7.10.4