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"
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):
else:
return default_apt_config
+def which_alias_file():
+ hostname = socket.gethostbyaddr(socket.gethostname())[0]
+ aliasfn = '/var/lib/misc/'+hostname+'/forward-alias'
+ if os.path.exists(aliasfn):
+ return aliasfn
+ else:
+ return None
+
################################################################################
# Escape characters which have meaning to SQL's regex comparison operator ('~')
################################################################################
+# checks if the user part of the email is listed in the alias file
+
+def is_email_alias(email):
+ aliasfn = which_alias_file()
+ uid = email.split('@')[0]
+ if not aliasfn:
+ return False
+ for l in open(aliasfn):
+ if l.startswith(uid+': '):
+ return True
+ return False
+
+################################################################################
+
apt_pkg.init()
Cnf = apt_pkg.newConfiguration()