X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=utils.py;h=59df9f3c36164a066320857fb9ef6e315003c236;hb=6d72ae4bca15c0ed410798e62d3e367cf7abcdb6;hp=1c00a1cbb9ec87bede691846e265974e07e955c7;hpb=daaee3bcc68b5702b5cea8f14dfa6c10cf304ff0;p=dak.git diff --git a/utils.py b/utils.py index 1c00a1cb..59df9f3c 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,6 @@ # Utility functions -# Copyright (C) 2000 James Troup -# $Id: utils.py,v 1.26 2001-06-10 16:35:03 troup Exp $ +# Copyright (C) 2000, 2001 James Troup +# $Id: utils.py,v 1.30 2001-07-25 15:51:15 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 @@ -45,6 +45,7 @@ cant_overwrite_exc = "Permission denied; can't overwrite existent file." file_exists_exc = "Destination file exists"; send_mail_invalid_args_exc = "Both arguments are non-null."; sendmail_failed_exc = "Sendmail invocation failed"; +tried_too_hard_exc = "Tried too hard to find a free filename."; # Valid components; used by extract_component_from_section() because # it doesn't know about Conf from it's caller. FIXME @@ -57,7 +58,7 @@ valid_components = { ###################################################################################### -def open_file(filename, mode): +def open_file(filename, mode='r'): try: f = open(filename, mode); except IOError: @@ -215,7 +216,7 @@ def build_file_list(changes, dsc): if format != "": format = float(format) if dsc == "" and (format < 1.5 or format > 2.0): - raise nk_format_exc, changes["format"]; + raise nk_format_exc, format; # No really, this has happened. Think 0 length .dsc file. if not changes.has_key("files"): @@ -455,12 +456,12 @@ def cc_fix_changes (changes): def changes_compare (a, b): try: a_changes = parse_changes(a, 0) - except changes_parse_error_exc, line: + except: return -1; try: b_changes = parse_changes(b, 0) - except changes_parse_error_exc, line: + except: return 1; cc_fix_changes (a_changes); @@ -496,3 +497,15 @@ def changes_compare (a, b): return cmp(a, b); ################################################################################ + +def find_next_free (dest, too_many=100): + extra = 0; + orig_dest = dest; + while os.path.exists(dest) and extra < too_many: + dest = orig_dest + '.' + repr(extra); + extra = extra + 1; + if extra >= too_many: + raise tried_too_hard_exc; + return dest; + +################################################################################