]> granicus.if.org Git - python/commitdiff
Closes #17028: Allowed Python arguments to be supplied to launcher.
authorVinay Sajip <vinay_sajip@yahoo.co.uk>
Tue, 29 Jan 2013 22:29:25 +0000 (22:29 +0000)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>
Tue, 29 Jan 2013 22:29:25 +0000 (22:29 +0000)
PC/launcher.c

index df2580b337f99c077a0070cbde73dfdc2e344136..3efd9d9d166f3296d952da69a0ef3eeb99c62cd0 100644 (file)
@@ -1208,6 +1208,7 @@ process(int argc, wchar_t ** argv)
     void * version_data;
     VS_FIXEDFILEINFO * file_info;
     UINT block_size;
+    int index;
 
     wp = get_env(L"PYLAUNCH_DEBUG");
     if ((wp != NULL) && (*wp != L'\0'))
@@ -1295,13 +1296,6 @@ process(int argc, wchar_t ** argv)
     else {
         p = argv[1];
         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]);
         if (valid) {
             ip = locate_python(&p[1]);
@@ -1311,6 +1305,16 @@ installed", &p[1]);
             command += wcslen(p);
             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) {
         ip = locate_python(L"");
@@ -1329,7 +1333,7 @@ installed", &p[1]);
             fwprintf(stdout, L"\
 Python Launcher for Windows Version %s\n\n", version_text);
             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"\
 Launcher arguments:\n\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);
 }
 
-#endif
\ No newline at end of file
+#endif