X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=dump%2Ftraverse.c;h=2a160fa95f31a3ff716ad78bd6a34a49784af95a;hp=df59305113a4288ca7b9b148099b9af8f87a6fe5;hb=6d732772201861bc57348f4ad5c0970ac00b5d93;hpb=e4a8bde40a6d8319d1b28e054e1a419ba3df2363 diff --git a/dump/traverse.c b/dump/traverse.c index df59305..2a160fa 100644 --- a/dump/traverse.c +++ b/dump/traverse.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: traverse.c,v 1.34 2001/06/18 10:58:28 stelian Exp $"; + "$Id: traverse.c,v 1.36 2001/07/19 09:03:44 stelian Exp $"; #endif /* not lint */ #include @@ -102,9 +102,6 @@ static void dmpindir __P((dump_ino_t ino, daddr_t blk, int level, fsizeT *size)) static int searchdir __P((dump_ino_t ino, daddr_t blkno, long size, long filesize)); #endif static void mapfileino __P((dump_ino_t ino, struct dinode const *dp, long *tapesize, int *dirskipped)); -static int exclude_ino __P((dump_ino_t ino)); -extern dump_ino_t iexclude_list[IEXCLUDE_MAXNUM]; /* the inode exclude list */ -extern int iexclude_num; /* number of elements in list */ #ifdef HAVE_EXT2_JOURNAL_INUM #define ext2_journal_ino(sb) (sb->s_journal_inum) @@ -162,13 +159,12 @@ int dump_fs_open(const char *disk, ext2_filsys *fs) else { if (es->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL && - journal_ino && !exclude_ino(journal_ino)) { - iexclude_list[iexclude_num++] = journal_ino; - msg("Exclude ext3 journal inode %u\n", + journal_ino) { + msg("Exclude journal inode %u\n", journal_ino); + do_exclude_ino(journal_ino); } - if (!exclude_ino(EXT2_RESIZE_INO)) - iexclude_list[iexclude_num++] = EXT2_RESIZE_INO; + do_exclude_ino(EXT2_RESIZE_INO); } } return retval; @@ -224,22 +220,6 @@ blockest(struct dinode const *dp) return (blkest + 1); } -/* - * This tests whether an inode is in the exclude list - */ -int -exclude_ino(dump_ino_t ino) -{ - /* 04-Feb-00 ILC */ - if (iexclude_num) { /* if there are inodes in the exclude list */ - int idx; /* then check this inode against it */ - for (idx = 0; idx < iexclude_num; idx++) - if (ino == iexclude_list[idx]) - return 1; - } - return 0; -} - /* Auxiliary macro to pick up files changed since previous dump. */ #define CHANGEDSINCE(dp, t) \ ((dp)->di_mtime >= (t) || (dp)->di_ctime >= (t)) @@ -921,8 +901,8 @@ dumpino(struct dinode *dp, dump_ino_t ino) ext2fs_block_iterate2(fs, (ext2_ino_t)ino, 0, NULL, dumponeblock, (void *)&bc); /* deal with holes at the end of the inode */ - remaining = i_size - bc.next_block*sblock->fs_fsize; - if (remaining > 0) + if (i_size > bc.next_block*sblock->fs_fsize) { + remaining = i_size - bc.next_block*sblock->fs_fsize; for (i = 0; i < howmany(remaining, sblock->fs_fsize); i++) { bc.buf[bc.cnt++] = 0; if (bc.cnt == bc.max) { @@ -930,6 +910,7 @@ dumpino(struct dinode *dp, dump_ino_t ino) bc.cnt = 0; } } + } if (bc.cnt > 0) { blksout (bc.buf, bc.cnt, bc.ino); }