public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH][Libiberty] Support empty arguments in pex-win32
@ 2016-09-16 16:44 Andrew Stubbs
  2016-09-16 18:24 ` DJ Delorie
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Stubbs @ 2016-09-16 16:44 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 244 bytes --]

Hi,

This patch fixes a libiberty bug in which zero-length arguments to 
"pex_run" subprocesses were silently dropped on MinGW.

Basically, the code does not quote parameters unless it has to, but this 
corner-case was forgotten.

OK?

Andrew


[-- Attachment #2: Support-empty-arguments-in-pex-win32.patch --]
[-- Type: text/x-patch, Size: 1759 bytes --]

2016-09-16  Andrew Stubbs  <ams@codesourcery.com>

	libiberty/
	* pex-win32.c (argv_to_cmdline): Quote zero-length parameters.

	libiberty/testsuite/
	* test-pexecute.c (main): Insert check for zero-length parameters.

Index: libiberty/pex-win32.c
===================================================================
--- libiberty/pex-win32.c	(revision 240189)
+++ libiberty/pex-win32.c	(working copy)
@@ -370,6 +370,8 @@
 	      cmdline_len++;
 	    }
 	}
+      if (j == 0)
+	needs_quotes = 1;
       /* Trailing backslashes also need to be escaped because they will be
          followed by the terminating quote.  */
       if (needs_quotes)
@@ -394,6 +396,8 @@
               break;
             }
         }
+      if (j == 0)
+	needs_quotes = 1;
 
       if (needs_quotes)
         {
Index: libiberty/testsuite/test-pexecute.c
===================================================================
--- libiberty/testsuite/test-pexecute.c	(revision 240189)
+++ libiberty/testsuite/test-pexecute.c	(working copy)
@@ -285,8 +285,22 @@
     ERROR ("echo exit status failed");
   pex_free (pex1);
 
+  /* Check empty parameters don't get lost.  */
   pex1 = TEST_PEX_INIT (PEX_USE_PIPES, "temp");
   subargv[1] = "echo";
+  subargv[2] = "foo";
+  subargv[3] = "";
+  subargv[4] = "bar";
+  subargv[5] = NULL;
+  TEST_PEX_RUN (pex1, 0, "./test-pexecute", subargv, NULL, NULL);
+  e = TEST_PEX_READ_OUTPUT (pex1);
+  CHECK_LINE (e, "foo  bar");  /* Two spaces!  */
+  if (TEST_PEX_GET_STATUS_1 (pex1) != 0)
+    ERROR ("echo exit status failed");
+  pex_free (pex1);
+
+  pex1 = TEST_PEX_INIT (PEX_USE_PIPES, "temp");
+  subargv[1] = "echo";
   subargv[2] = "bar";
   subargv[3] = NULL;
   TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".x", NULL);

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH][Libiberty] Support empty arguments in pex-win32
  2016-09-16 16:44 [PATCH][Libiberty] Support empty arguments in pex-win32 Andrew Stubbs
@ 2016-09-16 18:24 ` DJ Delorie
  2016-09-19 11:02   ` Andrew Stubbs
  0 siblings, 1 reply; 3+ messages in thread
From: DJ Delorie @ 2016-09-16 18:24 UTC (permalink / raw)
  To: Andrew Stubbs; +Cc: gcc-patches


This is OK.  Thanks!

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH][Libiberty] Support empty arguments in pex-win32
  2016-09-16 18:24 ` DJ Delorie
@ 2016-09-19 11:02   ` Andrew Stubbs
  0 siblings, 0 replies; 3+ messages in thread
From: Andrew Stubbs @ 2016-09-19 11:02 UTC (permalink / raw)
  To: DJ Delorie, Andrew Stubbs; +Cc: gcc-patches

On 16/09/16 19:12, DJ Delorie wrote:
> This is OK.  Thanks!

Thanks, committed.

Andrew

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-09-19 10:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-16 16:44 [PATCH][Libiberty] Support empty arguments in pex-win32 Andrew Stubbs
2016-09-16 18:24 ` DJ Delorie
2016-09-19 11:02   ` Andrew Stubbs

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).