]> git.wh0rd.org - dump.git/blobdiff - dump/traverse.c
Fix incorrect hole handling.
[dump.git] / dump / traverse.c
index 491d43ad28169b5b949817d656ed9398b2351348..34be0ec9115bb8ddc369dac0c2bab5976c5af978 100644 (file)
@@ -37,7 +37,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: traverse.c,v 1.69 2010/04/28 09:29:50 stelian Exp $";
+       "$Id: traverse.c,v 1.72 2011/02/21 10:36:47 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
@@ -240,7 +240,7 @@ blockest(struct dinode const *dp)
 #define MSINCE(dp, t) \
        ((dp)->di_mtime >= (t))
 #define        CHANGEDSINCE(dp, t) \
-       (CSINCE(dp, t) || MSINCE(dp, t))
+       CSINCE(dp, t)
 
 /* The NODUMP_FLAG macro tests if a file has the nodump flag. */
 #ifdef UF_NODUMP
@@ -574,9 +574,10 @@ mapdirs(dump_ino_t maxino, long long *tapesize)
                 * in usedinomap, but we have to go through it anyway 
                 * to propagate the nodump attribute.
                 */
+               if ((isdir & 1) == 0)
+                       continue;
                nodump = (TSTINO(ino, usedinomap) == 0);
-               if ((isdir & 1) == 0 ||
-                   (TSTINO(ino, dumpinomap) && nodump == 0))
+               if (TSTINO(ino, dumpinomap) && nodump == 0)
                        continue;
                dp = getino(ino);
 #ifdef __linux__
@@ -991,7 +992,7 @@ dumpino(struct dinode *dp, dump_ino_t ino, int metaonly)
        bc.buf = (int *)malloc (bc.max * sizeof (int));
        bc.cnt = 0;
        bc.ino = ino;
-       bc.next_block = NDADDR;
+       bc.next_block = 0;
 
        ext2fs_block_iterate2(fs, (ext2_ino_t)ino, BLOCK_FLAG_DATA_ONLY, NULL, dumponeblock, (void *)&bc);
        /* deal with holes at the end of the inode */