1 From b37f1f229dcbd009a0c5cdbd969bc3e79b064f18 Mon Sep 17 00:00:00 2001
2 From: Erik Faye-Lund <kusmabite@gmail.com>
3 Date: Wed, 14 Oct 2009 16:59:43 +0200
4 Subject: [PATCH] escape double quotes in command line
7 http://code.google.com/p/ccache-win32/issues/detail?id=4
9 execute.c | 48 +++++++++++++++++++++++++++++++++++++++++++-----
10 1 files changed, 43 insertions(+), 5 deletions(-)
12 diff --git a/execute.c b/execute.c
13 index 7d876b3..4059f4b 100644
20 -static char *argvtos(char **argv)
21 +char *argvtos(char **argv)
28 for (i = 0, len = 0; argv[i]; i++) {
29 - len += strlen(argv[i]) + 3;
31 + for (j = 0; argv[i][j]; j++) {
32 + char c = argv[i][j];
35 + } else if (c == '"') {
36 + len += 2 * bs_count + 2;
39 + len += bs_count + 1;
43 + len += bs_count * 2;
48 str = ptr = (char *)malloc(len + 1);
49 @@ -35,8 +51,30 @@ static char *argvtos(char **argv)
50 for (i = 0; argv[i]; i++) {
51 len = strlen(argv[i]);
53 - memcpy(ptr, argv[i], len);
56 + for (j = 0; argv[i][j]; j++) {
57 + char c = argv[i][j];
60 + } else if (c == '"') {
61 + for (; bs_count > 0; bs_count--) {
68 + for (; bs_count > 0; bs_count--) {
74 + for (; bs_count > 0; bs_count--) {