Closes #17028: Allowed Python arguments to be supplied to launcher.

This commit is contained in:
Vinay Sajip 2013-01-29 22:29:25 +00:00
parent 64a5562f4c
commit 2ae8c6316f
1 changed files with 13 additions and 9 deletions

View File

@ -1208,6 +1208,7 @@ process(int argc, wchar_t ** argv)
void * version_data; void * version_data;
VS_FIXEDFILEINFO * file_info; VS_FIXEDFILEINFO * file_info;
UINT block_size; UINT block_size;
int index;
wp = get_env(L"PYLAUNCH_DEBUG"); wp = get_env(L"PYLAUNCH_DEBUG");
if ((wp != NULL) && (*wp != L'\0')) if ((wp != NULL) && (*wp != L'\0'))
@ -1295,13 +1296,6 @@ process(int argc, wchar_t ** argv)
else { else {
p = argv[1]; p = argv[1];
plen = wcslen(p); plen = wcslen(p);
if (p[0] != L'-') {
read_commands();
maybe_handle_shebang(&argv[1], command);
}
/* No file with shebang, or an unrecognised shebang.
* Is the first arg a special version qualifier?
*/
valid = (*p == L'-') && validate_version(&p[1]); valid = (*p == L'-') && validate_version(&p[1]);
if (valid) { if (valid) {
ip = locate_python(&p[1]); ip = locate_python(&p[1]);
@ -1311,6 +1305,16 @@ installed", &p[1]);
command += wcslen(p); command += wcslen(p);
command = skip_whitespace(command); command = skip_whitespace(command);
} }
else {
for (index = 1; index < argc; ++index) {
if (*argv[index] != L'-')
break;
}
if (index < argc) {
read_commands();
maybe_handle_shebang(&argv[index], command);
}
}
} }
if (!valid) { if (!valid) {
ip = locate_python(L""); ip = locate_python(L"");
@ -1329,7 +1333,7 @@ installed", &p[1]);
fwprintf(stdout, L"\ fwprintf(stdout, L"\
Python Launcher for Windows Version %s\n\n", version_text); Python Launcher for Windows Version %s\n\n", version_text);
fwprintf(stdout, L"\ fwprintf(stdout, L"\
usage: %s [ launcher-arguments ] script [ script-arguments ]\n\n", argv[0]); usage: %s [ launcher-arguments ] [ python-arguments ] script [ script-arguments ]\n\n", argv[0]);
fputws(L"\ fputws(L"\
Launcher arguments:\n\n\ Launcher arguments:\n\n\
-2 : Launch the latest Python 2.x version\n\ -2 : Launch the latest Python 2.x version\n\
@ -1362,4 +1366,4 @@ int cdecl wmain(int argc, wchar_t ** argv)
return process(argc, argv); return process(argc, argv);
} }
#endif #endif