diff options
Diffstat (limited to 'Source/kwsys/System.c')
-rw-r--r-- | Source/kwsys/System.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/Source/kwsys/System.c b/Source/kwsys/System.c index 288513f..62807c8 100644 --- a/Source/kwsys/System.c +++ b/Source/kwsys/System.c @@ -222,7 +222,7 @@ static int kwsysSystem_Shell__GetArgumentSize(const char* in, } } - /* Check whether this character needs escaping. */ + /* Check whether this character needs escaping for the shell. */ if(isUnix) { /* On Unix a few special characters need escaping even inside a @@ -261,7 +261,7 @@ static int kwsysSystem_Shell__GetArgumentSize(const char* in, } } - /* The dollar sign needs special handling in some environments. */ + /* Check whether this character needs escaping for a make tool. */ if(*c == '$') { if(flags & kwsysSystem_Shell_Flag_Make) @@ -277,6 +277,16 @@ static int kwsysSystem_Shell__GetArgumentSize(const char* in, size += 2; } } + else if(*c == '#') + { + if((flags & kwsysSystem_Shell_Flag_Make) && + (flags & kwsysSystem_Shell_Flag_WatcomWMake)) + { + /* In Watcom WMake makefiles a pound is written $# so we need + one extra character. */ + ++size; + } + } } /* Check whether the argument needs surrounding quotes. */ @@ -333,7 +343,7 @@ static char* kwsysSystem_Shell__GetArgument(const char* in, char* out, } } - /* Check whether this character needs escaping. */ + /* Check whether this character needs escaping for the shell. */ if(isUnix) { /* On Unix a few special characters need escaping even inside a @@ -377,7 +387,7 @@ static char* kwsysSystem_Shell__GetArgument(const char* in, char* out, } } - /* The dollar sign needs special handling in some environments. */ + /* Check whether this character needs escaping for a make tool. */ if(*c == '$') { if(flags & kwsysSystem_Shell_Flag_Make) @@ -405,6 +415,23 @@ static char* kwsysSystem_Shell__GetArgument(const char* in, char* out, *out++ = '$'; } } + else if(*c == '#') + { + if((flags & kwsysSystem_Shell_Flag_Make) && + (flags & kwsysSystem_Shell_Flag_WatcomWMake)) + { + /* In Watcom WMake makefiles a pound is written $#. The make + tool will replace it with just # before passing it to the + shell. */ + *out++ = '$'; + *out++ = '#'; + } + else + { + /* Otherwise a pound is written just #. */ + *out++ = '#'; + } + } else { /* Store this character. */ |