From d81c573b1b55a210015cc2286c886202ad15ac71 Mon Sep 17 00:00:00 2001 From: midipix Date: Jul 16 2024 04:05:54 +0000 Subject: tpax_archive_add_queue_item(): also record the system (stat) inode information. --- diff --git a/src/internal/tpax_driver_impl.h b/src/internal/tpax_driver_impl.h index 3df8244..8251fb0 100644 --- a/src/internal/tpax_driver_impl.h +++ b/src/internal/tpax_driver_impl.h @@ -65,6 +65,7 @@ struct tpax_dirent { int depth; int flags; dev_t stdev; + ino_t stino; size_t nsize; const char * prefix; const struct tpax_dirent * parent; diff --git a/src/logic/tpax_archive_enqueue.c b/src/logic/tpax_archive_enqueue.c index 8685cad..edab132 100644 --- a/src/logic/tpax_archive_enqueue.c +++ b/src/logic/tpax_archive_enqueue.c @@ -193,6 +193,7 @@ static int tpax_archive_add_queue_item( const struct tpax_dirent * parent, const char * prefix, dev_t stdev, + ino_t stino, int depth, int flags, int fdat, @@ -233,6 +234,7 @@ static int tpax_archive_add_queue_item( cdent->depth = depth; cdent->flags = flags; cdent->stdev = stdev; + cdent->stino = stino; cdent->nsize = needed; cdent->parent = parent; cdent->prefix = prefix; @@ -365,7 +367,7 @@ static int tpax_archive_enqueue_dir_entries( if (tpax_archive_add_queue_item( dctx,dirent,dent,0, - st.st_dev,depth, + st.st_dev,st.st_ino,depth, TPAX_ITEM_IMPLICIT, fd,&fkeep) < 0) return tpax_archive_enqueue_ret( @@ -404,7 +406,7 @@ static int tpax_archive_enqueue_dir_entries( if (tpax_archive_add_queue_item( dctx,lnkent,cdent,0, - lnkst.st_dev,depth+1, + lnkst.st_dev,lnkst.st_ino,depth+1, TPAX_ITEM_IMPLICIT|TPAX_ITEM_SYMLINK, fd,&fkeep) < 0) return tpax_archive_enqueue_ret( @@ -515,7 +517,8 @@ int tpax_archive_enqueue( /* add to queue */ if (tpax_archive_add_queue_item( dctx,dirent,0,prefix, - uctx->st->st_dev,0, + uctx->st->st_dev, + uctx->st->st_ino,0, TPAX_ITEM_EXPLICIT, fdat,&fkeep) < 0) return tpax_archive_enqueue_ret( @@ -548,7 +551,7 @@ int tpax_archive_enqueue( if (tpax_archive_add_queue_item( dctx,lnkent,cdent,0, - lnkst.st_dev,1, + lnkst.st_dev,lnkst.st_ino,1, TPAX_ITEM_EXPLICIT|TPAX_ITEM_SYMLINK, fdat,&fkeep) < 0) return tpax_archive_enqueue_ret(