]> git.decadent.org.uk Git - dak.git/blobdiff - utils.py
sync
[dak.git] / utils.py
index 54ab406be8cb505f45513a156d66e6e04854a0cb..8a8c8e93440a22d4c39b881930dd8a1a515ccb28 100644 (file)
--- a/utils.py
+++ b/utils.py
@@ -1,6 +1,6 @@
 # Utility functions
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: utils.py,v 1.8 2000-12-13 03:18:50 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 = "-"
@@ -208,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);
 
@@ -224,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);
 
 ######################################################################################
@@ -268,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))