X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=dump%2Ftraverse.c;h=f485ab31ae88a0bc79d14d022387495c764051e9;hb=30a43325fdf58f596d4219fcabb6d46b8d884bdf;hp=3c0c378cb66b1c4a7dfdfb2f08deb34e2ad82417;hpb=b9c89cf40bc9563ad83acfede581627718d656ee;p=dump.git diff --git a/dump/traverse.c b/dump/traverse.c index 3c0c378..f485ab3 100644 --- a/dump/traverse.c +++ b/dump/traverse.c @@ -2,7 +2,7 @@ * Ported to Linux's Second Extended File System as part of the * dump and restore backup suit * Remy Card , 1994-1997 - * Stelian Pop , 1999 + * Stelian Pop , 1999-2000 */ /*- @@ -40,7 +40,7 @@ #ifndef lint static const char rcsid[] = - "$Id: traverse.c,v 1.13 2000/01/13 09:38:26 stelian Exp $"; + "$Id: traverse.c,v 1.17 2000/03/03 11:43:35 stelian Exp $"; #endif /* not lint */ #include @@ -164,7 +164,7 @@ blockest(struct dinode *dp) /* calculate the number of indirect blocks on the dump tape */ blkest += howmany(sizeest - NDADDR * fs->blocksize / TP_BSIZE, - TP_NINDIR); + NINDIR(sblock) * EXT2_FRAGS_PER_BLOCK(fs->super)); } #else if (dp->di_size > sblock->fs_bsize * NDADDR) { @@ -190,6 +190,9 @@ blockest(struct dinode *dp) #define WANTTODUMP(dp) CHANGEDSINCE(dp, spcl.c_ddate) #endif +extern ino_t iexclude_list[IEXCLUDE_MAXNUM]; /* the inode exclude list */ +extern int iexclude_num; /* number of elements in the list */ + /* * Determine if given inode should be dumped */ @@ -217,6 +220,18 @@ mapfileino(ino_t ino, long *tapesize, int *dirskipped) * to the usedinomap. */ SETINO(ino, usedinomap); + + /* 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; idxname_len & 0xFF) + 1); if (((p->offset + reclen - 1) / p->bs) != (p->offset / p->bs)) { - dp = (struct direct *)(p->buf + p->prev_offset); + dp = (struct olddirect *)(p->buf + p->prev_offset); dp->d_reclen += p->bs - (p->offset % p->bs); p->offset += p->bs - (p->offset % p->bs); } - dp = (struct direct *)(p->buf + p->offset); + dp = (struct olddirect *)(p->buf + p->offset); dp->d_ino = dirent->inode; dp->d_reclen = reclen; - dp->d_type = 0; dp->d_namlen = dirent->name_len & 0xFF; strncpy(dp->d_name, dirent->name, dp->d_namlen); dp->d_name[dp->d_namlen] = '\0';