diff options
Diffstat (limited to 'src/logic/tpax_archive_write.c')
-rw-r--r-- | src/logic/tpax_archive_write.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/logic/tpax_archive_write.c b/src/logic/tpax_archive_write.c index a881bd9..f01bb7b 100644 --- a/src/logic/tpax_archive_write.c +++ b/src/logic/tpax_archive_write.c @@ -110,6 +110,7 @@ static int tpax_archive_write_impl( int fdcwd, int fdout) { + int ret; struct tpax_unit_ctx * uctx; struct tpax_ustar_header uhdr; const struct stat * st; @@ -210,9 +211,14 @@ static int tpax_archive_write_impl( dpos = hpos + sizeof(uhdr); /* header */ - if (tpax_meta_init_ustar_header( - dctx,apath,st, - slnk,&uhdr) < 0) + if (dctx->cctx->drvflags & TPAX_DRIVER_WRITE_FORMAT_RUSTAR) { + ret = tpax_meta_init_rustar_header(apath,st,slnk,&uhdr); + + } else if (dctx->cctx->drvflags & TPAX_DRIVER_WRITE_FORMAT_USTAR) { + ret = tpax_meta_init_ustar_header(apath,st,slnk,&uhdr); + } + + if (ret < 0) return tpax_archive_write_ret( TPAX_NESTED_ERROR(dctx), dctx,uctx); |