From d17f308b24a332d1767888e086ece9a2e71a891d Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Tue, 24 Oct 2023 10:10:52 +0200 Subject: Cleanup: gensquashfs: remove tree walk for force-uid/gid If the --force-uid or --force-gid flags are used, don't do a recursive tree walk after the fact, instead simply apply the settings at the source (e.g. tree iterator). Signed-off-by: David Oberhollenzer --- bin/gensquashfs/src/mkfs.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) (limited to 'bin/gensquashfs/src/mkfs.c') diff --git a/bin/gensquashfs/src/mkfs.c b/bin/gensquashfs/src/mkfs.c index f5164ce..320e250 100644 --- a/bin/gensquashfs/src/mkfs.c +++ b/bin/gensquashfs/src/mkfs.c @@ -93,20 +93,6 @@ static int pack_files(sqfs_block_processor_t *data, fstree_t *fs, return 0; } -static void override_owner_dfs(const options_t *opt, tree_node_t *n) -{ - if (opt->force_uid) - n->uid = opt->force_uid_value; - - if (opt->force_gid) - n->gid = opt->force_gid_value; - - if (S_ISDIR(n->mode)) { - for (n = n->data.children; n != NULL; n = n->next) - override_owner_dfs(opt, n); - } -} - int main(int argc, char **argv) { int status = EXIT_FAILURE; @@ -146,9 +132,10 @@ int main(int argc, char **argv) int ret; memset(&cfg, 0, sizeof(cfg)); - cfg.flags = opt.dirscan_flags | DIR_SCAN_KEEP_UID | - DIR_SCAN_KEEP_GID | DIR_SCAN_KEEP_MODE; cfg.def_mtime = sqfs.fs.defaults.mtime; + cfg.def_uid = opt.force_uid_value; + cfg.def_gid = opt.force_gid_value; + cfg.flags = opt.dirscan_flags; dir = dir_tree_iterator_create(opt.packdir, &cfg); if (dir == NULL) @@ -159,13 +146,10 @@ int main(int argc, char **argv) if (ret != 0) goto out; } else { - if (fstree_from_file(&sqfs.fs, opt.infile, opt.packdir)) + if (fstree_from_file(&sqfs.fs, opt.infile, &opt)) goto out; } - if (opt.force_uid || opt.force_gid) - override_owner_dfs(&opt, sqfs.fs.root); - if (fstree_post_process(&sqfs.fs)) goto out; -- cgit v1.2.3