aboutsummaryrefslogtreecommitdiff
path: root/tar
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-07-03 15:08:15 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-07-03 15:17:57 +0200
commit70dcf39f5926a66d76eb9fde2cbaef4b6a23a9e1 (patch)
treee4bfefd6c4559ad3abbd89af546099cb56a24040 /tar
parentb8d4983147141310383d423b1bcb9d19a490977a (diff)
tar writer: replace PAX headers with GNU extensions
Some experiments seem to indicate that the various GNU extensions are more widely supported than their POSIX equivalents[1]. Possibly because they are easier to implement and possibly because of the wide spread use of GNU tar. This commit replaces the PAX writer in the write_tar_header implementation with a GNU extension based writer. The writer is also cleaned up by removing all global state. The record counter is moved outside into the tar2sqfs program and passed in as function argument. [1] https://dev.gentoo.org/~mgorny/articles/portability-of-tar-features.html Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tar')
-rw-r--r--tar/sqfs2tar.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/tar/sqfs2tar.c b/tar/sqfs2tar.c
index e8b8736..e568bb4 100644
--- a/tar/sqfs2tar.c
+++ b/tar/sqfs2tar.c
@@ -42,6 +42,7 @@ static const char *usagestr =
"\n";
static const char *filename;
+static unsigned int record_counter;
static void process_args(int argc, char **argv)
{
@@ -121,7 +122,8 @@ static int write_tree_dfs(fstree_t *fs, tree_node_t *n, data_reader_t *data)
fstree_node_stat(fs, n, &sb);
target = S_ISLNK(sb.st_mode) ? n->data.slink_target : NULL;
- ret = write_tar_header(STDOUT_FILENO, &sb, name, target);
+ ret = write_tar_header(STDOUT_FILENO, &sb, name, target,
+ record_counter++);
free(name);
if (ret < 0)