diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-07-03 15:08:15 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-07-03 15:17:57 +0200 |
commit | 70dcf39f5926a66d76eb9fde2cbaef4b6a23a9e1 (patch) | |
tree | e4bfefd6c4559ad3abbd89af546099cb56a24040 /tar/sqfs2tar.c | |
parent | b8d4983147141310383d423b1bcb9d19a490977a (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/sqfs2tar.c')
-rw-r--r-- | tar/sqfs2tar.c | 4 |
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) |