[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19906 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19906 - gnunet/src/util |
Date: |
Tue, 21 Feb 2012 20:08:08 +0100 |
Author: grothoff
Date: 2012-02-21 20:08:08 +0100 (Tue, 21 Feb 2012)
New Revision: 19906
Modified:
gnunet/src/util/os_priority.c
Log:
LRN: Escape-trailing-slash-when-spawning-W32-process:
Modified: gnunet/src/util/os_priority.c
===================================================================
--- gnunet/src/util/os_priority.c 2012-02-21 17:57:52 UTC (rev 19905)
+++ gnunet/src/util/os_priority.c 2012-02-21 19:08:08 UTC (rev 19906)
@@ -638,7 +638,7 @@
char *cmd, *idx;
STARTUPINFOW start;
PROCESS_INFORMATION proc;
- int argc;
+ int argc, arg_count;
HANDLE stdin_handle;
HANDLE stdout_handle;
@@ -707,19 +707,24 @@
while (NULL != (arg = argv[argc++]))
{
if (cmdlen == 0)
- cmdlen = cmdlen + strlen (path) + 3;
+ cmdlen = cmdlen + strlen (path) + 4;
else
- cmdlen = cmdlen + strlen (arg) + 3;
+ cmdlen = cmdlen + strlen (arg) + 4;
}
+ arg_count = argc;
cmd = idx = GNUNET_malloc (sizeof (char) * (cmdlen + 1));
argc = 0;
while (NULL != (arg = argv[argc++]))
{
+ /* This is to escape trailing slash */
+ char arg_lastchar = arg[strlen (arg) - 1];
if (idx == cmd)
- idx += sprintf (idx, "\"%s\" ", path);
+ idx += sprintf (idx, "\"%s%s\"%s", path,
+ arg_lastchar == '\\' ? "\\" : "", argc + 1 == arg_count ? "" : " ");
else
- idx += sprintf (idx, "\"%s\" ", arg);
+ idx += sprintf (idx, "\"%s%s\"%s", arg,
+ arg_lastchar == '\\' ? "\\" : "", argc + 1 == arg_count ? "" : " ");
}
memset (&start, 0, sizeof (start));
@@ -1103,7 +1108,7 @@
arg = non_const_argv;
while (*arg)
{
- cmdlen = cmdlen + strlen (*arg) + 3;
+ cmdlen = cmdlen + strlen (*arg) + 4;
arg++;
}
@@ -1112,7 +1117,9 @@
arg = non_const_argv;
while (*arg)
{
- idx += sprintf (idx, "\"%s\" ", *arg);
+ char arg_last_char = (*arg)[strlen (*arg) - 1];
+ idx += sprintf (idx, "\"%s%s\"%s", *arg,
+ arg_last_char == '\\' ? "\\" : "", *(arg + 1) ? " " : "");
arg++;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19906 - gnunet/src/util,
gnunet <=