diff --git a/System.c b/System.c index fdf2b28720c517de8c57b4e4965c6f152ee309e4..a2d575c1d65e975b02afa31220d8cecc5dcfb1d7 100644 --- a/System.c +++ b/System.c @@ -287,6 +287,15 @@ static int kwsysSystem_Shell__GetArgumentSize(const char* in, ++size; } } + else if(*c == '%') + { + if(flags & kwsysSystem_Shell_Flag_VSIDE) + { + /* In a VS IDE a percent is written %% so we need one extra + characters. */ + size += 1; + } + } } /* Check whether the argument needs surrounding quotes. */ @@ -432,6 +441,20 @@ static char* kwsysSystem_Shell__GetArgument(const char* in, char* out, *out++ = '#'; } } + else if(*c == '%') + { + if(flags & kwsysSystem_Shell_Flag_VSIDE) + { + /* In a VS IDE a percent is written %%. */ + *out++ = '%'; + *out++ = '%'; + } + else + { + /* Otherwise a percent is written just %. */ + *out++ = '%'; + } + } else { /* Store this character. */