]> git.wh0rd.org - dump.git/blobdiff - dump/traverse.c
Compatibility between dumps made on little endian machines vs. big endian machines...
[dump.git] / dump / traverse.c
index f149b120b13555d31245e7fc9f09ea61d94cde84..204f518de8e5b6cf712eb9913361673745eedac8 100644 (file)
@@ -40,7 +40,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: traverse.c,v 1.14 2000/01/21 10:17:41 stelian Exp $";
+       "$Id: traverse.c,v 1.16 2000/02/10 09:42:32 stelian Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -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; idx<iexclude_num; idx++) {
+                       if (ino == iexclude_list[idx]) {
+                               msg("Excluding inode number %d\n", ino);
+                               return; /* if in list then skip */
+                       }
+               }
+       }
+
        if (mode == IFDIR)
                SETINO(ino, dumpdirmap);
        if (WANTTODUMP(dp)) {
@@ -788,22 +803,21 @@ static int
 convert_dir(struct ext2_dir_entry *dirent, int offset, int blocksize, char *buf, void *private)
 {
        struct convert_dir_context *p;
-       struct direct *dp;
+       struct olddirect *dp;
        int reclen;
 
        p = (struct convert_dir_context *)private;
 
        reclen = EXT2_DIR_REC_LEN((dirent->name_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';