From ad83b0f167f3e65a2aa04cf358d1f995f1241a3c Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sun, 16 Jun 2019 12:36:37 +0200 Subject: sqfs2tar: cleanup tar header generation - use struct stat instead of tree node - compact some of the code Signed-off-by: David Oberhollenzer --- tar/sqfs2tar.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'tar/sqfs2tar.c') diff --git a/tar/sqfs2tar.c b/tar/sqfs2tar.c index f7f7e71..1be1b7e 100644 --- a/tar/sqfs2tar.c +++ b/tar/sqfs2tar.c @@ -105,7 +105,8 @@ static int terminate_archive(void) static int write_tree_dfs(fstree_t *fs, tree_node_t *n, data_reader_t *data) { - char *name; + char *name, *target; + struct stat sb; int ret; if (n->parent != NULL || !S_ISDIR(n->mode)) { @@ -117,7 +118,10 @@ static int write_tree_dfs(fstree_t *fs, tree_node_t *n, data_reader_t *data) assert(canonicalize_name(name) == 0); - ret = write_tar_header(STDOUT_FILENO, fs, n, name); + 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); free(name); if (ret < 0) -- cgit v1.2.3