X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils.py;h=27d8f67a1bf9b3c21379fd87f5f7edaa3a61d11f;hb=660b1949dc2e704ccd9bb8a4686d68f90fbe32d2;hp=71b44fc3b1a46ae6c26f0eb6fbbee9bfda92fd96;hpb=e84597db51975546f2a3dfb25d5e47780cc031e9;p=dak.git diff --git a/utils.py b/utils.py index 71b44fc3..27d8f67a 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,6 @@ # Utility functions -# Copyright (C) 2000 James Troup -# $Id: utils.py,v 1.25 2001-06-01 00:17:45 troup Exp $ +# Copyright (C) 2000, 2001 James Troup +# $Id: utils.py,v 1.28 2001-07-07 03:10:51 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,16 @@ 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 + +valid_components = { + "main": "", + "contrib": "", + "non-free": "" + }; ###################################################################################### @@ -77,7 +87,9 @@ def str_isnum (s): ###################################################################################### -# What a mess. FIXME +# Prefix and components hardcoded into this like a good'un; need to unhardcod at some +# stage. [FIXME] + def extract_component_from_section(section): component = ""; @@ -85,15 +97,23 @@ def extract_component_from_section(section): component = string.split(section, '/')[0]; if string.lower(component) == "non-us" and string.count(section, '/') > 0: s = string.split(section, '/')[1]; - if s == "main" or s == "non-free" or s == "contrib": # Avoid e.g. non-US/libs + if valid_components.has_key(s): # Avoid e.g. non-US/libs component = string.split(section, '/')[0]+ '/' + string.split(section, '/')[1]; if string.lower(section) == "non-us": component = "non-US/main"; - + + # non-US prefix is case insensitive + if string.lower(component)[:6] == "non-us": + component = "non-US"+component[6:]; + + # Expand default component if component == "": - component = "main"; - elif string.lower(component) == "non-us": + if valid_components.has_key(section): + component = section; + else: + component = "main"; + elif component == "non-US": component = "non-US/main"; return (section, component); @@ -477,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; + +################################################################################