]> git.phdru.name Git - dotfiles.git/blob - bin/mc_type.py
mc: Separate stdout and stderr; use `.communicate()`
[dotfiles.git] / bin / mc_type.py
1 #! /usr/bin/env python
2
3 import sys, subprocess
4
5 mc = sys.argv[1]
6 assert mc in ['/usr/local/bin/mc', '/usr/bin/mc']
7
8 mc = subprocess.Popen([mc, '--version'],
9                       stdout=subprocess.PIPE,
10                       stderr=subprocess.PIPE,
11                       close_fds=True, env={})
12 stdout, stderr = mc.communicate()
13 if mc.returncode or stderr:
14     sys.exit('Error reading mc version: (%d) %s' % (mc.returncode, stderr))
15
16 mc_version = stdout.split('\n')[0]
17 if mc_version.startswith('Midnight Commander'):
18     mc_version = mc_version.split()[2]
19 elif mc_version.startswith('GNU Midnight Commander') or \
20      mc_version.startswith('The Midnight Commander'):
21     mc_version = mc_version.split()[3]
22 else:
23     sys.exit('Unknown mc version')
24
25 if '.' in mc_version:
26     major, minor = [int(v) for v in mc_version.split('.')[:2]]
27     if major < 4:
28         print('old')
29     elif (major == 4) and (minor < 6):
30         print('old')
31     else:
32         print('new')
33 else:
34     print('new')