]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/utils.py
more safety nets when our functions do not do what we expect from them
[dak.git] / daklib / utils.py
index 02278e9130f78579a8e04dea6aef8cd998a55ca8..8e06cf35cc6dbbc795b008865c64991b2d9dbfc3 100755 (executable)
@@ -250,6 +250,7 @@ def check_hash(where, files, hashname, hashfunc):
 
     rejmsg = []
     for f in files.keys():
+        file_handle = None
         try:
             file_handle = open_file(f)
 
@@ -264,10 +265,12 @@ def check_hash(where, files, hashname, hashfunc):
                 rejmsg.append("%s: %s check failed in %s" % (f, hashname,
                     where))
         except CantOpenError:
-            # XXX: IS THIS THE BLOODY CASE WHEN THE FILE'S IN THE POOL!?
+            # TODO: This happens when the file is in the pool.
+            warn("Cannot open file %s" % f)
             continue
         finally:
-            file_handle.close()
+            if file_handle:
+                file_handle.close()
     return rejmsg
 
 ################################################################################
@@ -278,7 +281,15 @@ def check_size(where, files):
 
     rejmsg = []
     for f in files.keys():
-        actual_size = os.stat(f)[stat.ST_SIZE]
+        try:
+            entry = os.stat(f)
+        except OSError, exc:
+            if exc.errno == 2:
+                # TODO: This happens when the file is in the pool.
+                continue
+            raise
+
+        actual_size = entry[stat.ST_SIZE]
         size = int(files[f]["size"])
         if size != actual_size:
             rejmsg.append("%s: actual file size (%s) does not match size (%s) in %s"