BUG: Fix windows command line escape for empty arg
On Windows the KWSys System package generates escapes for command-line arguments. This fix enables quoting of the empty string as an argument. This also adds a test to pass an empty argument to a custom command.
This commit is contained in:
parent
adb6bf82b0
commit
0a83aa6f57
|
@ -170,6 +170,12 @@ flag later when we understand applications of this better.
|
|||
static int kwsysSystem_Shell__ArgumentNeedsQuotes(const char* in, int isUnix,
|
||||
int flags)
|
||||
{
|
||||
/* The empty string needs quotes. */
|
||||
if(!*in)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Scan the string for characters that require quoting. */
|
||||
{
|
||||
const char* c;
|
||||
|
|
|
@ -346,7 +346,7 @@ ENDIF(NOT MINGW)
|
|||
# | < > << >> &> 2>&1 1>&2
|
||||
# to allow custom commands to perform redirection.
|
||||
|
||||
FOREACH(arg ${CHECK_ARGS})
|
||||
FOREACH(arg ${CHECK_ARGS} "")
|
||||
SET(ARG "${arg}")
|
||||
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARG "${ARG}")
|
||||
STRING(REGEX REPLACE "\"" "\\\\\"" ARG "${ARG}")
|
||||
|
@ -367,7 +367,7 @@ ADD_CUSTOM_COMMAND(
|
|||
COMMAND ${CMAKE_COMMAND} -DMARK_FILE=${CMAKE_CURRENT_BINARY_DIR}/check_mark.txt
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/check_mark.cmake
|
||||
COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/check_command_line
|
||||
${CHECK_ARGS}
|
||||
${CHECK_ARGS} ""
|
||||
VERBATIM
|
||||
COMMENT "Checking custom command line escapes (single'quote)"
|
||||
)
|
||||
|
@ -377,7 +377,7 @@ ADD_CUSTOM_TARGET(do_check_command_line ALL
|
|||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/command_line_check
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Checking custom target command escapes"
|
||||
COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/check_command_line
|
||||
${CHECK_ARGS}
|
||||
${CHECK_ARGS} ""
|
||||
VERBATIM
|
||||
COMMENT "Checking custom target command line escapes ($dollar-signs$)"
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue