diff --git a/apport-unpack b/apport-unpack index 350c617..b2f3171 100755 --- a/apport-unpack +++ b/apport-unpack @@ -14,6 +14,7 @@ import sys, os, os.path, gettext from apport import unicode_gettext as _, fatal +import gzip import problem_report @@ -51,8 +52,12 @@ if report == '-': pr.load(sys.stdin, binary=False) else: try: - with open(report, 'rb') as f: - pr.load(f, binary=False) + if report.endswith('.gz'): + with gzip.open(report, 'rb') as f: + pr.load(f, binary=False) + else: + with open(report, 'rb') as f: + pr.load(f, binary=False) except IOError as e: fatal(str(e)) for k in pr: @@ -65,7 +70,11 @@ for k in pr: else: f.write(pr[k]) try: - with open(report, 'rb') as f: - pr.extract_keys(f, bin_keys, dir) + if report.endswith('.gz'): + with gzip.open(report, 'rb') as f: + pr.extract_keys(f, bin_keys, dir) + else: + with open(report, 'rb') as f: + pr.extract_keys(f, bin_keys, dir) except IOError as e: fatal(str(e))