aboutsummaryrefslogtreecommitdiff
path: root/bin/tar2sqfs/src/process_tarball.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-06-08 13:22:13 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-06-08 13:22:13 +0200
commit5b1a81160a6d0e63ab1360e8777009b913464d89 (patch)
treee7254884dbf60d245f674702b5bd0c361f7ffaf3 /bin/tar2sqfs/src/process_tarball.c
parent9c9ef7cae619e95232f44be21d4648edb5f0777a (diff)
Move tar compressor auto wrapping code from tar2sqfs into libtar
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'bin/tar2sqfs/src/process_tarball.c')
-rw-r--r--bin/tar2sqfs/src/process_tarball.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/bin/tar2sqfs/src/process_tarball.c b/bin/tar2sqfs/src/process_tarball.c
index 9ad7d9a..91572ec 100644
--- a/bin/tar2sqfs/src/process_tarball.c
+++ b/bin/tar2sqfs/src/process_tarball.c
@@ -148,16 +148,10 @@ static int set_root_attribs(sqfs_writer_t *sqfs, dir_iterator_t *it,
return 0;
}
-int process_tarball(istream_t *input_file, sqfs_writer_t *sqfs)
+int process_tarball(dir_iterator_t *it, sqfs_writer_t *sqfs)
{
- dir_iterator_t *it = tar_open_stream(input_file);
size_t rootlen = root_becomes == NULL ? 0 : strlen(root_becomes);
- if (it == NULL) {
- fputs("Creating tar stream: out-of-memory\n", stderr);
- return -1;
- }
-
for (;;) {
bool skip = false, is_root = false, is_prefixed = true;
dir_entry_t *ent = NULL;
@@ -168,7 +162,7 @@ int process_tarball(istream_t *input_file, sqfs_writer_t *sqfs)
if (ret > 0)
break;
if (ret < 0)
- goto fail;
+ return -1;
if (ent->mtime < 0)
ent->mtime = 0;
@@ -181,7 +175,7 @@ int process_tarball(istream_t *input_file, sqfs_writer_t *sqfs)
if (ret != 0) {
sqfs_perror(ent->name, "read link", ret);
free(ent);
- goto fail;
+ return -1;
}
}
@@ -235,12 +229,8 @@ int process_tarball(istream_t *input_file, sqfs_writer_t *sqfs)
free(ent);
free(link);
if (ret)
- goto fail;
+ return -1;
}
- sqfs_drop(it);
return 0;
-fail:
- sqfs_drop(it);
- return -1;
}