Browse code

don't hardlink 0-length files

Matt Domsch authored on 2013/12/04 23:03:01
Showing 2 changed files
... ...
@@ -35,7 +35,8 @@ class FileDict(SortedDict):
35 35
         self[relative_file]['md5'] = md5
36 36
         return md5
37 37
 
38
-    def record_hardlink(self, relative_file, dev, inode, md5):
38
+    def record_hardlink(self, relative_file, dev, inode, md5, size):
39
+        if size == 0: return # don't record 0-length files
39 40
         if dev == 0 or inode == 0: return # Windows
40 41
         if dev not in self.hardlinks:
41 42
             self.hardlinks[dev] = dict()
... ...
@@ -247,7 +247,7 @@ def fetch_local_list(args, is_src = False, recursive = None):
247 247
                             except IOError:
248 248
                                 continue
249 249
                             cache.add(sr.st_dev, sr.st_ino, sr.st_mtime, sr.st_size, md5)
250
-                    loc_list.record_hardlink(relative_file, sr.st_dev, sr.st_ino, md5)
250
+                    loc_list.record_hardlink(relative_file, sr.st_dev, sr.st_ino, md5, sr.st_size)
251 251
         return loc_list, single_file
252 252
 
253 253
     def _maintain_cache(cache, local_list):