X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils.py;h=938134e8fc11764f327f5b3aec2d195881ce5580;hb=44f2da9067ea5da81209d77b685d052771f35c54;hp=f9d40b0c466453913080827fb597bb89b5e44a94;hpb=8db87c142a2f0816360df7302b6a1177f318b00f;p=dak.git diff --git a/utils.py b/utils.py index f9d40b0c..938134e8 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,6 @@ # Utility functions # Copyright (C) 2000, 2001 James Troup -# $Id: utils.py,v 1.34 2001-09-27 01:24:15 troup Exp $ +# $Id: utils.py,v 1.36 2001-11-18 19:57:58 rmurray 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 @@ re_issource = re.compile (r"(.+)_(.+?)\.(orig\.tar\.gz|diff\.gz|tar\.gz|dsc)"); re_single_line_field = re.compile(r"^(\S*)\s*:\s*(.*)"); re_multi_line_field = re.compile(r"^\s(.*)"); +re_taint_free = re.compile(r"^[-+\.\w]+$"); re_parse_maintainer = re.compile(r"^\s*(\S.*\S)\s*\<([^\> \t]+)\>"); @@ -44,19 +45,8 @@ 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": "" - }; - default_config = "/etc/katie/katie.conf"; default_apt_config = "/etc/katie/apt.conf"; -DefaultCnf = apt_pkg.newConfiguration(); -apt_pkg.ReadConfigFileISC(DefaultCnf,default_config); ###################################################################################### @@ -93,9 +83,6 @@ def str_isnum (s): ###################################################################################### -# Prefix and components hardcoded into this like a good'un; need to unhardcod at some -# stage. [FIXME] - def extract_component_from_section(section): component = ""; @@ -103,7 +90,7 @@ 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 valid_components.has_key(s): # Avoid e.g. non-US/libs + if Cnf.has_key("Component::%s" % s): # Avoid e.g. non-US/libs component = string.split(section, '/')[0]+ '/' + string.split(section, '/')[1]; if string.lower(section) == "non-us": @@ -115,7 +102,7 @@ def extract_component_from_section(section): # Expand default component if component == "": - if valid_components.has_key(section): + if Cnf.has_key("Component::%s" % section): component = section; else: component = "main"; @@ -140,12 +127,12 @@ def extract_component_from_section(section): # "-----BEGIN PGP SIGNATURE-----". def parse_changes(filename, dsc_whitespace_rules): - changes_in = open_file(filename,'r'); + changes_in = open_file(filename); error = ""; changes = {}; lines = changes_in.readlines(); - if lines == []: + if not lines: raise changes_parse_error_exc, "[Empty changes file]"; # Reindex by line number so we can easily verify the format of @@ -169,13 +156,13 @@ def parse_changes(filename, dsc_whitespace_rules): if index > max(indices): raise invalid_dsc_format_exc, index; line = indexed_lines[index]; - if line[:24] != "-----BEGIN PGP SIGNATURE": + if string.find(line, "-----BEGIN PGP SIGNATURE") != 0: raise invalid_dsc_format_exc, index; inside_signature = 0; break; - if line[:24] == "-----BEGIN PGP SIGNATURE": + if string.find(line, "-----BEGIN PGP SIGNATURE") == 0: break; - if line[:29] == "-----BEGIN PGP SIGNED MESSAGE": + if string.find(line, "-----BEGIN PGP SIGNED MESSAGE") == 0: if dsc_whitespace_rules: inside_signature = 1; while index < max(indices) and line != "": @@ -278,9 +265,6 @@ def fix_maintainer (maintainer): # sendmail wrapper, takes _either_ a message string or a file as arguments def send_mail (message, filename): - #### FIXME, how do I get this out of Cnf in katie? - sendmail_command = "/usr/sbin/sendmail -odq -oi -t"; - # Sanity check arguments if message != "" and filename != "": raise send_mail_invalid_args_exc; @@ -293,7 +277,7 @@ def send_mail (message, filename): os.close (fd); # Invoke sendmail - (result, output) = commands.getstatusoutput("%s < %s" % (sendmail_command, filename)); + (result, output) = commands.getstatusoutput("%s < %s" % (Cnf["Dinstall::SendmailCommand"], filename)); if (result != 0): raise sendmail_failed_exc, output; @@ -365,7 +349,7 @@ def copy (src, dest, overwrite = 0): def where_am_i (): res = socket.gethostbyaddr(socket.gethostname()); - database_hostname = DefaultCnf.get("Config::" + res[0] + "::DatabaseHostname"); + database_hostname = Cnf.get("Config::" + res[0] + "::DatabaseHostname"); if database_hostname: return database_hostname; else: @@ -373,15 +357,15 @@ def where_am_i (): def which_conf_file (): res = socket.gethostbyaddr(socket.gethostname()); - if DefaultCnf.get("Config::" + res[0] + "::KatieConfig"): - return DefaultCnf["Config::" + res[0] + "::KatieConfig"] + if Cnf.get("Config::" + res[0] + "::KatieConfig"): + return Cnf["Config::" + res[0] + "::KatieConfig"] else: return default_config; def which_apt_conf_file (): res = socket.gethostbyaddr(socket.gethostname()); - if DefaultCnf.get("Config::" + res[0] + "::AptConfig"): - return DefaultCnf["Config::" + res[0] + "::AptConfig"] + if Cnf.get("Config::" + res[0] + "::AptConfig"): + return Cnf["Config::" + res[0] + "::AptConfig"] else: return default_apt_config; @@ -510,3 +494,18 @@ def result_join (original, sep = '\t'): return string.join(list, sep); ################################################################################ + +def get_conf(): + return Cnf; + +################################################################################ + +apt_pkg.init() + +Cnf = apt_pkg.newConfiguration(); +apt_pkg.ReadConfigFileISC(Cnf,default_config); + +if which_conf_file() != default_config: + apt_pkg.ReadConfigFileISC(Cnf,which_conf_file()) + +################################################################################