]> git.decadent.org.uk Git - dak.git/blobdiff - utils.py
2004-02-27 James Troup <james@nocrew.org> * rose (process_tree): use 'if var in...
[dak.git] / utils.py
index c5571a67e94753fc741fa0dcb1ab210ce2f16401..c537bf8f34df16b1492319b5dbf517e4136284f9 100644 (file)
--- a/utils.py
+++ b/utils.py
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
 
 # Utility functions
-# Copyright (C) 2000, 2001, 2002, 2003  James Troup <james@nocrew.org>
-# $Id: utils.py,v 1.58 2003-09-07 13:54:20 troup Exp $
+# Copyright (C) 2000, 2001, 2002, 2003, 2004  James Troup <james@nocrew.org>
+# $Id: utils.py,v 1.64 2004-03-11 00:20:51 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;
@@ -155,16 +155,16 @@ def parse_changes(filename, dsc_whitespace_rules=0):
 
     inside_signature = 0;
 
-    indices = indexed_lines.keys()
+    num_of_lines = len(indexed_lines.keys());
     index = 0;
     first = -1;
-    while index < max(indices):
+    while index < num_of_lines:
         index += 1;
         line = indexed_lines[index];
         if line == "":
             if dsc_whitespace_rules:
                 index += 1;
-                if index > max(indices):
+                if index > num_of_lines:
                     raise invalid_dsc_format_exc, index;
                 line = indexed_lines[index];
                 if not line.startswith("-----BEGIN PGP SIGNATURE"):
@@ -176,12 +176,15 @@ 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 < max(indices) and line != "":
+                while index < num_of_lines and line != "":
                     index += 1;
                     line = indexed_lines[index];
             continue;
+        # If we're not inside the signed data, don't process anything
+        if not inside_signature:
+            continue;
         slf = re_single_line_field.match(line);
         if slf:
             field = slf.groups()[0].lower();
@@ -271,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:
@@ -327,10 +330,10 @@ def move (src, dest, overwrite = 0, perms = 0664):
     # Don't overwrite unless forced to
     if os.path.exists(dest):
         if not overwrite:
-            raise file_exists_exc;
+            fubar("Can't move %s to %s - file already exists." % (src, dest));
         else:
             if not os.access(dest, os.W_OK):
-                raise cant_overwrite_exc
+                fubar("Can't move %s to %s - can't write to existing file." % (src, dest));
     shutil.copy2(src, dest);
     os.chmod(dest, perms);
     os.unlink(src);