]> git.phdru.name Git - dotfiles.git/commitdiff
mc: Separate stdout and stderr; use `.communicate()`
authorOleg Broytman <phd@phdru.name>
Tue, 7 Mar 2023 22:23:25 +0000 (01:23 +0300)
committerOleg Broytman <phd@phdru.name>
Tue, 7 Mar 2023 22:23:25 +0000 (01:23 +0300)
Check return code and stderr.

bin/mc_type.py

index 8292646646afc972baa3ea59dc829a15d8a30a65..dbcf94d5ab3eeaa8372ca779b546e96e89c57279 100755 (executable)
@@ -7,12 +7,13 @@ assert mc in ['/usr/local/bin/mc', '/usr/bin/mc']
 
 mc = subprocess.Popen([mc, '--version'],
                       stdout=subprocess.PIPE,
-                      stderr=subprocess.STDOUT)
-mc.wait()
-mc_version = mc.stdout.readline()
-mc.stdout.read()
-mc.stdout.close()
+                      stderr=subprocess.PIPE,
+                      close_fds=True, env={})
+stdout, stderr = mc.communicate()
+if mc.returncode or stderr:
+    sys.exit('Error reading mc version: (%d) %s' % (mc.returncode, stderr))
 
+mc_version = stdout.split('\n')[0]
 if mc_version.startswith('Midnight Commander'):
     mc_version = mc_version.split()[2]
 elif mc_version.startswith('GNU Midnight Commander') or \