[cygrunsrv - a wrapper for unix daemons to make them controllable as windows services] branch main, updated. 2ccaad8e5824470d81cea58ccab08a367d9689c0

Corinna Vinschen via Cygwin-apps-cvs <[email protected]> Fri, 24 Apr 2026 11:55:17 +0000 (GMT)
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>



Diff:
---
 cygrunsrv.cc | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/cygrunsrv.cc b/cygrunsrv.cc
index dab879022d94..6951244e7c1f 100644
--- a/cygrunsrv.cc
+++ b/cygrunsrv.cc
@@ -809,7 +809,8 @@ install_service (const char *name, const char *crspath, const char *disp,
 		 type_t type, char *user, char *pass, char **deps,
 		 int interactive)
 {
-  char mypath[MAX_PATH];
+  char mypath[MAX_PATH+2];
+  char* mypath_p = mypath;
   SC_HANDLE sm = (SC_HANDLE) 0;
   SC_HANDLE sh = (SC_HANDLE) 0;
   char userbuf[INTERNET_MAX_HOST_NAME_LENGTH + UNLEN + 2];
@@ -824,9 +825,11 @@ install_service (const char *name, const char *crspath, const char *disp,
   if (!san.server ())
     check_system_mounts ();
 
+  mypath[0] = '"';
+  mypath_p++;
   if (crspath)		  /* Got path, nothing to do. */
     {
-      cygwin_conv_path (CCP_POSIX_TO_WIN_A, crspath, mypath, MAX_PATH);
+      cygwin_conv_path (CCP_POSIX_TO_WIN_A, crspath, mypath_p, MAX_PATH);
       if (strcasecmp (mypath + strlen (mypath) - 4, ".exe") != 0)
         strcat (mypath, ".exe");
     }
@@ -837,15 +840,16 @@ install_service (const char *name, const char *crspath, const char *disp,
 			       KEY_READ, &cyg_root_key)) != ERROR_SUCCESS)
 	err_out_set_error (RegOpenKeyEx, ret);
       if ((ret = RegQueryValueEx (cyg_root_key, (PCHAR) CYG_ROOT_VAL, 0, &type,
-				  (BYTE *) mypath, &size)) != ERROR_SUCCESS)
+				  (BYTE *) mypath_p, &size)) != ERROR_SUCCESS)
 	err_out_set_error (RegQueryValueEx, ret);
-      strcat (mypath, "\\bin\\cygrunsrv.exe");
+      strcat (mypath_p, "\\bin\\cygrunsrv.exe");
     }
   else			  /* Get own full path. */
     {
-      if (!GetModuleFileName (NULL, mypath, MAX_PATH))
+      if (!GetModuleFileName (NULL, mypath_p, MAX_PATH))
 	err_out (GetModuleFileName);
     }
+  strcat (mypath_p, "\"");
   /* Open service manager database. */
   if (!(sm = OpenSCManager (san.server (), NULL,
 			    SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE)))