bpo-40094: Fix which.py script exit code (GH-19286)

It now uses os.waitstatus_to_exitcode() to convert os.system() exit
status into an exit code.
diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-04-02-01-22-21.bpo-40094.1XQQF6.rst b/Misc/NEWS.d/next/Tools-Demos/2020-04-02-01-22-21.bpo-40094.1XQQF6.rst
new file mode 100644
index 0000000..042550d
--- /dev/null
+++ b/Misc/NEWS.d/next/Tools-Demos/2020-04-02-01-22-21.bpo-40094.1XQQF6.rst
@@ -0,0 +1,3 @@
+Fix ``which.py`` script exit code: it now uses
+:func:`os.waitstatus_to_exitcode` to convert :func:`os.system` exit status
+into an exit code.
diff --git a/Tools/scripts/which.py b/Tools/scripts/which.py
index df54ce0..b42e07c 100755
--- a/Tools/scripts/which.py
+++ b/Tools/scripts/which.py
@@ -49,6 +49,7 @@
                     msg(filename + ': not executable')
             if longlist:
                 sts = os.system('ls ' + longlist + ' ' + filename)
+                sts = os.waitstatus_to_exitcode(sts)
                 if sts: msg('"ls -l" exit status: ' + repr(sts))
         if not ident:
             msg(prog + ': not found')