wcmd: strip quotes around executable and retry on error
Thomas Kho
tkho at ucla.edu
Thu Jul 6 16:31:24 CDT 2006
wcmd: strip quotes around executable and retry on error
wcmd currently gives a 'File not found' error for the command:
`./wine wcmd /c "notepad test.txt"` because it only tries to execute the
program "notepad text.txt". In XP, cmd.exe starts notepad.exe with test.txt as
its argument upon not finding a "notepad text.txt" executable.
Thomas Kho
---
programs/wcmd/wcmdmain.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/programs/wcmd/wcmdmain.c b/programs/wcmd/wcmdmain.c
index 1af01eb..7c2a387 100644
--- a/programs/wcmd/wcmdmain.c
+++ b/programs/wcmd/wcmdmain.c
@@ -614,6 +614,20 @@ char filetorun[MAX_PATH];
status = CreateProcess (NULL, command, NULL, NULL, TRUE,
0, NULL, NULL, &st, &pe);
+ if (!status && GetLastError() == ERROR_FILE_NOT_FOUND && command[0]=='"') {
+ /* strip first set of unescaped quotes and try again */
+ char *src = command, *dest = command;
+ src++;
+ while(*src!='"') { /* find matching " */
+ if (*src=='\\') /* skip escaped character */
+ *dest++ = *src++;
+ *dest++=*src++;
+ }
+ src++;
+ while((*dest++=*src++)!='\0') ; /* empty body */
+ status = CreateProcess (NULL, command, NULL, NULL, TRUE,
+ 0, NULL, NULL, &st, &pe);
+ }
if (!status) {
WCMD_print_error ();
return;
More information about the wine-patches
mailing list