X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Futils.py;h=16cc1ff16ed54df640d0ccbfb1da8e5879e4eef2;hb=330833cdf958e43962e208f8021e0e44f1fc100c;hp=8b80f2466065fcc38831793d103d9d7b6fb01b06;hpb=195caf3ae4b2150a7234de64d0907d74f9a4c0be;p=dak.git diff --git a/daklib/utils.py b/daklib/utils.py index 8b80f246..16cc1ff1 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -43,6 +43,7 @@ re_taint_free = re.compile(r"^[-+~/\.\w]+$") re_parse_maintainer = re.compile(r"^\s*(\S.*\S)\s*\<([^\>]+)\>") re_srchasver = re.compile(r"^(\S+)\s+\((\S+)\)$") +re_verwithext = re.compile(r"^(\d+)(?:\.(\d+))(?:\s+\((\S+)\))?$") changes_parse_error_exc = "Can't parse line in .changes file" invalid_dsc_format_exc = "Invalid .dsc file" @@ -237,11 +238,17 @@ def build_file_list(changes, is_a_dsc=0, field="files", hashname="md5sum"): raise no_files_exc # Make sure we recognise the format of the Files: field - format = changes.get("format", "0.0").split(".",1) - if len(format) == 2: - format = int(format[0]), int(format[1]) + format = re_verwithext.search(changes.get("format", "0.0")) + if not format: + raise nk_format_exc, "%s" % (changes.get("format","0.0")) + + format = format.groups() + if format[1] == None: + format = int(float(format[0])), 0, format[2] else: - format = int(float(format[0])), 0 + format = int(format[0]), int(format[1]), format[2] + if format[2] == None: + format = format[:2] if is_a_dsc: if format != (1,0):