X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils.py;h=8445fd4d664289f1f6f9ad91335626546a27d2b5;hb=bd377d74e836353932847343062f114edd1140a4;hp=2b40501cfac2bf6e59298578800cbf7a1a7a45e5;hpb=2ccf4d8d6768f6ccc439955dbd68dd27596b309d;p=dak.git diff --git a/utils.py b/utils.py index 2b40501c..8445fd4d 100644 --- a/utils.py +++ b/utils.py @@ -2,7 +2,7 @@ # Utility functions # Copyright (C) 2000, 2001, 2002, 2003, 2004 James Troup -# $Id: utils.py,v 1.61 2004-01-21 03:20:52 troup Exp $ +# $Id: utils.py,v 1.65 2004-04-01 17:13:10 troup Exp $ ################################################################################ @@ -45,7 +45,7 @@ re_parse_maintainer = re.compile(r"^\s*(\S.*\S)\s*\<([^\> \t]+)\>"); changes_parse_error_exc = "Can't parse line in .changes file"; invalid_dsc_format_exc = "Invalid .dsc file"; nk_format_exc = "Unknown Format: in .changes file"; -no_files_exc = "No Files: field in .dsc file."; +no_files_exc = "No Files: field in .dsc or .changes file."; cant_open_exc = "Can't read file."; unknown_hostname_exc = "Unknown hostname"; cant_overwrite_exc = "Permission denied; can't overwrite existent file." @@ -93,7 +93,7 @@ def extract_component_from_section(section): if section.find('/') != -1: component = section.split('/')[0]; - if component.lower() == "non-us" and section.count('/') > 0: + if component.lower() == "non-us" and section.find('/') != -1: s = component + '/' + section.split('/')[1]; if Cnf.has_key("Component::%s" % s): # Avoid e.g. non-US/libs component = s; @@ -176,8 +176,8 @@ def parse_changes(filename, dsc_whitespace_rules=0): if line.startswith("-----BEGIN PGP SIGNATURE"): break; if line.startswith("-----BEGIN PGP SIGNED MESSAGE"): + inside_signature = 1; if dsc_whitespace_rules: - inside_signature = 1; while index < num_of_lines and line != "": index += 1; line = indexed_lines[index]; @@ -274,7 +274,7 @@ def fix_maintainer (maintainer): rfc822 = maintainer; name = ""; email = ""; - if m != None and len(m.groups()) == 2: + if m and len(m.groups()) == 2: name = m.group(1); email = m.group(2); if name.find(',') != -1 or name.find('.') != -1: @@ -928,6 +928,29 @@ def clean_symlink (src, dest, root): ################################################################################ +def temp_filename(directory=None, dotprefix=None, perms=0700): + """Return a secure and unique filename by pre-creating it. +If 'directory' is non-null, it will be the directory the file is pre-created in. +If 'dotprefix' is non-null, the filename will be prefixed with a '.'.""" + + if directory: + old_tempdir = tempfile.tempdir; + tempfile.tempdir = directory; + + filename = tempfile.mktemp(); + + if dotprefix: + filename = "%s/.%s" % (os.path.dirname(filename), os.path.basename(filename)); + fd = os.open(filename, os.O_RDWR|os.O_CREAT|os.O_EXCL, perms); + os.close(fd); + + if directory: + tempfile.tempdir = old_tempdir; + + return filename; + +################################################################################ + apt_pkg.init(); Cnf = apt_pkg.newConfiguration();