-#!/usr/bin/env python2.7
+#!/usr/bin/env python
# encoding: UTF-8
from __future__ import absolute_import, division
MAX_LEN = 1024
SO_RE = re.compile(r'^\.so\s+(.*)$')
-def process_file(name):
- full_name = os.path.join(os.getcwd(), name)
+SUFFIXES = {
+ 'xz': '.xz',
+ 'bzip2': '.bz2',
+ 'gzip': '.gz',
+}
+
+def process_file(name, suffix):
+ full_name = os.path.abspath(name)
m = MAN_NAME_RE.search(full_name)
if not m:
return False
s = f.read(MAX_LEN+1)
if len(s) > MAX_LEN:
return False
- s = s.strip()
- if '\n' in s:
- return False
- m = SO_RE.search(s)
+ lines = [line for line in s.rstrip().split('\n') if not line.startswith('.\\"')]
+ if len(lines) != 1:
+ return False
+ m = SO_RE.search(lines[0])
if not m:
return False
link = m.group(1)
elif '/' in link:
link = '../' + link
os.unlink(name)
- os.symlink(link, name)
+ os.symlink(link + suffix, name + suffix)
print 'Converted {} into a symlink to {}'.format(full_name, link)
return True
else:
compressor = args[:dashes]
all_files = args[dashes+1:]
+ if compressor:
+ suffix = SUFFIXES.get(compressor[0], '')
+ else:
+ suffix = ''
files = []
for name in all_files:
- if not process_file(name):
+ if not process_file(name, suffix):
files.append(name)
if not compressor or not files:
return 0