X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils.py;h=8a8c8e93440a22d4c39b881930dd8a1a515ccb28;hb=4b41dc06229eed89f52f397fc7df5d665fa092cf;hp=6326806f92441c9ca5a145b72e1e99d2096e88cf;hpb=bb8283ad6274e461fc78a00b2a52c6594c53e13d;p=dak.git diff --git a/utils.py b/utils.py index 6326806f..8a8c8e93 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,6 @@ # Utility functions # Copyright (C) 2000 James Troup -# $Id: utils.py,v 1.7 2000-12-05 04:27:48 troup Exp $ +# $Id: utils.py,v 1.11 2001-01-16 21:52:37 troup Exp $ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,6 +29,7 @@ nk_format_exc = "Unknown Format: in .changes file"; no_files_exc = "No Files: field in .dsc file."; cant_open_exc = "Can't read file."; unknown_hostname_exc = "Unknown hostname"; +cant_overwrite_exc = "Permission denied; can't overwrite existent file." ###################################################################################### @@ -104,10 +105,13 @@ def build_file_list(changes, dsc): break s = string.split(i) section = priority = component = "" - if dsc != "": - (md5, size, name) = s - else: - (md5, size, section, priority, name) = s + try: + if dsc != "": + (md5, size, name) = s + else: + (md5, size, section, priority, name) = s + except ValueError: + raise changes_parse_error_exc, i if section == "": section = "-" if priority == "": priority = "-" @@ -188,6 +192,9 @@ def send_mail (message, filename): def poolify (source, component): if component != "": component = component + '/'; + # FIXME: this is nasty + component = string.lower(component); + component = string.replace(component, 'non-us/', 'non-US/'); if source[:3] == "lib": return component + source[:4] + '/' + source + '/' else: @@ -205,9 +212,12 @@ def move (src, dest): os.makedirs(dest_dir, 02775); os.umask(umask); #print "Moving %s to %s..." % (src, dest); - shutil.copy2(src, dest); if os.path.exists(dest) and os.path.isdir(dest): dest = dest + '/' + os.path.basename(src); + # Check for overwrite permission on existent files + if os.path.exists(dest) and not os.access(dest, os.W_OK): + raise cant_overwrite_exc + shutil.copy2(src, dest); os.chmod(dest, 0664); os.unlink(src); @@ -221,9 +231,11 @@ def copy (src, dest): os.makedirs(dest_dir, 02775); os.umask(umask); #print "Copying %s to %s..." % (src, dest); - shutil.copy2(src, dest); if os.path.exists(dest) and os.path.isdir(dest): dest = dest + '/' + os.path.basename(src); + if os.path.exists(dest) and not os.access(dest, os.W_OK): + raise cant_overwrite_exc + shutil.copy2(src, dest); os.chmod(dest, 0664); ###################################################################################### @@ -265,3 +277,12 @@ def regex_safe (s): ###################################################################################### +def size_type (c): + t = " b"; + if c > 10000: + c = c / 1000; + t = " Kb"; + if c > 10000: + c = c / 1000; + t = " Mb"; + return ("%d%s" % (c, t))