Module: wine Branch: master Commit: bfdfae1c7fadb61b5249984955ceb5d498f43aed URL: http://source.winehq.org/git/wine.git/?a=commit;h=bfdfae1c7fadb61b5249984955...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Aug 20 14:57:37 2010 +0200
wscript.exe: Improved argument parsing.
---
programs/wscript/Makefile.in | 2 +- programs/wscript/main.c | 29 +++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/programs/wscript/Makefile.in b/programs/wscript/Makefile.in index a45dddf..efb59ce 100644 --- a/programs/wscript/Makefile.in +++ b/programs/wscript/Makefile.in @@ -4,7 +4,7 @@ SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = wscript.exe APPMODE = -mwindows -municode -IMPORTS = uuid oleaut32 ole32 advapi32 +IMPORTS = uuid shell32 oleaut32 ole32 advapi32 EXTRADEFS = -DWINE_NO_UNICODE_MACROS
RC_SRCS = \ diff --git a/programs/wscript/main.c b/programs/wscript/main.c index 612bb54..0ea7011 100644 --- a/programs/wscript/main.c +++ b/programs/wscript/main.c @@ -320,21 +320,38 @@ static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScri
int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cmdshow) { + const WCHAR *ext, *filename = NULL; IActiveScriptParse *parser; IActiveScript *script; - const WCHAR *ext; + WCHAR **argv; CLSID clsid; + int argc, i;
WINE_TRACE("(%p %p %s %x)\n", hInst, hPrevInst, wine_dbgstr_w(cmdline), cmdshow);
- if(!*cmdline) + argv = CommandLineToArgvW(cmdline, &argc); + if(!argv) return 1;
- ext = strchrW(cmdline, '.'); + for(i=0; i<argc; i++) { + if(*argv[i] == '/' || *argv[i] == '-') { + WINE_FIXME("Unsupported argument %s\n", wine_dbgstr_w(argv[i])); + }else { + filename = argv[i]; + break; + } + } + + if(!filename) { + WINE_FIXME("No file name specified\n"); + return 1; + } + + ext = strchrW(filename, '.'); if(!ext) - ext = cmdline; + ext = filename; if(!get_engine_clsid(ext, &clsid)) { - WINE_FIXME("Could not fine engine for %s\n", wine_dbgstr_w(ext)); + WINE_FIXME("Could not find engine for %s\n", wine_dbgstr_w(ext)); return 1; }
@@ -347,7 +364,7 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm }
if(init_engine(script, parser)) { - run_script(cmdline, script, parser); + run_script(filename, script, parser); IActiveScript_Close(script); ITypeInfo_Release(host_ti); }else {