This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
Re: [Patch] Make cygcheck handle Windows paths with spaces
- From: "Pierre A. Humblet" <pierre at phumblet dot no-ip dot org>
- To: <cygwin-patches at cygwin dot com>
- Date: Mon, 05 Jan 2009 10:19:59 -0500
- Subject: Re: [Patch] Make cygcheck handle Windows paths with spaces
- References: <00ad01c96abb$3ccee370$640410ac@wirelessworld.airvananet.com>
Oops, I didn't notice that one line required a double fix.
Pierre
2009-01-05 Pierre Humblet <Pierre.Humblet@ieee.org>
* cygcheck.cc (dump_sysinfo_services): Quote the path for popen.
Index: cygcheck.cc
===================================================================
RCS file: /cvs/src/src/winsup/utils/cygcheck.cc,v
retrieving revision 1.106
diff -u -p -r1.106 cygcheck.cc
--- cygcheck.cc 31 Dec 2008 01:44:36 -0000 1.106
+++ cygcheck.cc 5 Jan 2009 15:05:56 -0000
@@ -1137,7 +1137,7 @@ dump_sysinfo_services ()
/* For verbose mode, just run cygrunsrv --list --verbose and copy output
verbatim; otherwise run cygrunsrv --list and then cygrunsrv --query for
each service. */
- snprintf (buf, sizeof (buf), (verbose ? "\"%s\" --list --verbose" : "%s --list"),
+ snprintf (buf, sizeof (buf), (verbose ? "\"%s\" --list --verbose" : "\"%s\" --list"),
cygrunsrv);
if ((f = popen (buf, "rt")) == NULL)
{
----- Original Message -----
From: "Pierre A. Humblet" <pierre@phumblet.no-ip.org>
To: <cygwin-patches@cygwin.com>
Sent: Tuesday, December 30, 2008 3:14 PM
Subject: [Patch] Make cygcheck handle Window paths with spaces
| Formatting is more likely to be preserved in the attached files.
|
| Pierre
|
| 2008-12-30 Pierre Humblet <Pierre.Humblet@ieee.org>
|
| * cygcheck.cc (pretty_id): Quote the path for popen.
| (dump_sysinfo_services): Ditto.
|
|
| Index: cygcheck.cc
| ===================================================================
| RCS file: /cvs/src/src/winsup/utils/cygcheck.cc,v
| retrieving revision 1.105
| diff -u -p -r1.105 cygcheck.cc
| --- cygcheck.cc 12 Sep 2008 22:43:10 -0000 1.105
| +++ cygcheck.cc 30 Dec 2008 19:20:32 -0000
| @@ -1032,9 +1032,10 @@ pretty_id (const char *s, char *cygwin,
| return;
| }
|
| - FILE *f = popen (id, "rt");
| -
| char buf[16384];
| + snprintf (buf, sizeof (buf), "\"%s\"", id);
| + FILE *f = popen (buf, "rt");
| +
| buf[0] = '\0';
| fgets (buf, sizeof (buf), f);
| pclose (f);
| @@ -1118,7 +1119,7 @@ dump_sysinfo_services ()
| }
|
| /* check for a recent cygrunsrv */
| - snprintf (buf, sizeof (buf), "%s --version", cygrunsrv);
| + snprintf (buf, sizeof (buf), "\"%s\" --version", cygrunsrv);
| if ((f = popen (buf, "rt")) == NULL)
| {
| printf ("Failed to execute '%s', skipping services check.\n", buf);
| @@ -1136,7 +1137,7 @@ dump_sysinfo_services ()
| /* For verbose mode, just run cygrunsrv --list --verbose and copy output
| verbatim; otherwise run cygrunsrv --list and then cygrunsrv --query for
| each service. */
| - snprintf (buf, sizeof (buf), (verbose ? "%s --list --verbose" : "%s --list"),
| + snprintf (buf, sizeof (buf), (verbose ? "\"%s\" --list --verbose" : "%s --list"),
| cygrunsrv);
| if ((f = popen (buf, "rt")) == NULL)
| {
| @@ -1167,7 +1168,7 @@ dump_sysinfo_services ()
| if (nchars > 0)
| for (char *srv = strtok (buf, "\n"); srv; srv = strtok (NULL, "\n"))
| {
| - snprintf (buf2, sizeof (buf2), "%s --query %s", cygrunsrv, srv);
| + snprintf (buf2, sizeof (buf2), "\"%s\" --query %s", cygrunsrv, srv);
| if ((f = popen (buf2, "rt")) == NULL)
| {
| printf ("Failed to execute '%s', skipping services check.\n", buf2);
|