X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Futils.py;h=27c3af38e422e1c5658462e5a0ccc4197cff749b;hb=f3db7ee80798580c7e5a0e1f48e008bc22a8bdfc;hp=1b35feef2eb697e930152b85ca612b3f1ea9e29e;hpb=9f371390bb90395b2f2f0b65c91c21047896774a;p=dak.git diff --git a/daklib/utils.py b/daklib/utils.py index 1b35feef..27c3af38 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -235,6 +235,10 @@ def parse_changes(filename, signing_rules=0): changes_in = open_file(filename) content = changes_in.read() changes_in.close() + try: + unicode(content, 'utf-8') + except UnicodeError: + raise ChangesUnicodeError, "Changes file not proper utf-8" return parse_deb822(content, signing_rules) ################################################################################ @@ -1346,7 +1350,10 @@ def check_signature (sig_filename, reject, data_filename="", keyrings=None, auto if len(args) >= 1: timestamp = args[0] if timestamp.count("T") == 0: - expiredate = time.strftime("%Y-%m-%d", time.gmtime(timestamp)) + try: + expiredate = time.strftime("%Y-%m-%d", time.gmtime(float(timestamp))) + except ValueError: + expiredate = "unknown (%s)" % (timestamp) else: expiredate = timestamp reject("The key used to sign %s has expired on %s" % (sig_filename, expiredate)) @@ -1492,6 +1499,25 @@ def is_email_alias(email): ################################################################################ +def get_changes_files(dir): + """ + Takes a directory and lists all .changes files in it (as well as chdir'ing + to the directory; this is due to broken behaviour on the part of p-u/p-a + when you're not in the right place) + + Returns a list of filenames + """ + try: + # Much of the rest of p-u/p-a depends on being in the right place + os.chdir(dir) + changes_files = [x for x in os.listdir(dir) if x.endswith('.changes')] + except OSError, e: + fubar("Failed to read list from directory %s (%s)" % (dir, e)) + + return changes_files + +################################################################################ + apt_pkg.init() Cnf = apt_pkg.newConfiguration() @@ -1506,8 +1532,8 @@ def generate_contents_information(filename): """ Generate a list of flies contained in a .deb - @type filename: string - @param filename: the path to a data.tar.gz or data.tar.bz2 + @ptype filename: string + @param filename: the path to a .deb @rtype: list @return: a list of files in the data.tar.* portion of the .deb