diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-11-18 08:53:27 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-11-18 09:15:47 +0100 |
commit | bca4dfec757a0c3c62551427268c65de06107db4 (patch) | |
tree | 9272e4c42ddd94aebbb075115832875876959bd5 /mkfs | |
parent | 84210b0ba9f2d2208981fb71967bdcf6001f44b2 (diff) |
Remove pushd/popd usage from gensquashfs packing code
We don't do any directory operations aftwerwards, so we can just
chdir into the input directory.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'mkfs')
-rw-r--r-- | mkfs/mkfs.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c index b000652..2e89813 100644 --- a/mkfs/mkfs.c +++ b/mkfs/mkfs.c @@ -9,22 +9,33 @@ static int set_working_dir(options_t *opt) { const char *ptr; + char *path; - if (opt->packdir != NULL) - return pushd(opt->packdir); + if (opt->packdir != NULL) { + if (chdir(opt->packdir)) { + perror(opt->packdir); + return -1; + } + return 0; + } ptr = strrchr(opt->infile, '/'); - if (ptr != NULL) - return pushdn(opt->infile, ptr - opt->infile); + if (ptr == NULL) + return 0; - return 0; -} + path = strndup(opt->infile, ptr - opt->infile); + if (path == NULL) { + perror("constructing input directory path"); + return -1; + } -static int restore_working_dir(options_t *opt) -{ - if (opt->packdir != NULL || strrchr(opt->infile, '/') != NULL) - return popd(); + if (chdir(path)) { + perror(path); + free(path); + return -1; + } + free(path); return 0; } @@ -84,7 +95,7 @@ static int pack_files(sqfs_data_writer_t *data, fstree_t *fs, stats->bytes_read += filesize; } - return restore_working_dir(opt); + return 0; } static int relabel_tree_dfs(const char *filename, sqfs_xattr_writer_t *xwr, |