bpo-34062: Add missing launcher argument and make behavior consistent between short...
authorBrendan Gerrity <brerrity@gmail.com>
Fri, 31 Aug 2018 15:15:42 +0000 (08:15 -0700)
committerSteve Dower <steve.dower@microsoft.com>
Fri, 31 Aug 2018 15:15:42 +0000 (08:15 -0700)
Added previously missing "--list" argument.
Made "--list" and "--list-paths" behavior consistent with the corresponding "-0" and "-0p" arguments.

Misc/NEWS.d/next/Windows/2018-08-21-19-28-23.bpo-34062.3gxsA3.rst [new file with mode: 0644]
PC/launcher.c

diff --git a/Misc/NEWS.d/next/Windows/2018-08-21-19-28-23.bpo-34062.3gxsA3.rst b/Misc/NEWS.d/next/Windows/2018-08-21-19-28-23.bpo-34062.3gxsA3.rst
new file mode 100644 (file)
index 0000000..ca71945
--- /dev/null
@@ -0,0 +1 @@
+Fixed the '--list' and '--list-paths' arguments for the py.exe launcher
index 455f42b617c01cafac70058ec98efaf6b4f31625..fcc3abb63de6c5e3162f3985efc5b0944df568bc 100644 (file)
@@ -1466,7 +1466,6 @@ process(int argc, wchar_t ** argv)
     wchar_t * p;
     int rc = 0;
     size_t plen;
-    size_t slen;
     INSTALLED_PYTHON * ip;
     BOOL valid;
     DWORD size, attrs;
@@ -1602,10 +1601,11 @@ process(int argc, wchar_t ** argv)
     else {
         p = argv[1];
         plen = wcslen(p);
-        if (argc == 2) {
-            slen = wcslen(L"-0");
-            if(!wcsncmp(p, L"-0", slen)) /* Starts with -0 */
-                valid = show_python_list(argv); /* Check for -0 FIRST */
+        if ((argc == 2) && 
+            (!wcsncmp(p, L"-0", wcslen(L"-0")) || /* Starts with -0 or --list */
+            !wcsncmp(p, L"--list", wcslen(L"--list"))))
+        {
+            valid = show_python_list(argv); /* Check for -0 or --list FIRST */
         }
         valid = valid && (*p == L'-') && validate_version(&p[1]);
         if (valid) {
@@ -1638,10 +1638,13 @@ installed, use -0 for available pythons", &p[1]);
     if (!valid) {
         if ((argc == 2) && (!_wcsicmp(p, L"-h") || !_wcsicmp(p, L"--help")))
             show_help_text(argv);
-        if ((argc == 2) && (!_wcsicmp(p, L"-0") || !_wcsicmp(p, L"-0p")))
-            executable = NULL; /* Info call only */
-        else
+        if ((argc == 2) &&
+            (!_wcsicmp(p, L"-0") || !_wcsicmp(p, L"--list") ||
+            !_wcsicmp(p, L"-0p") || !_wcsicmp(p, L"--list-paths")))
         {
+            executable = NULL; /* Info call only */
+        }
+        else {
             /* Look for an active virtualenv */
             executable = find_python_by_venv();