aboutsummaryrefslogtreecommitdiff
path: root/bin/gensquashfs/src/mkfs.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-10-24 10:10:52 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-10-24 15:57:18 +0200
commitd17f308b24a332d1767888e086ece9a2e71a891d (patch)
tree765ab17e800cd4c5d9f2c2e3716d93e1aaac2c0b /bin/gensquashfs/src/mkfs.c
parentdce63f71c4b901e776686cca351d4ff55badb425 (diff)
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 <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'bin/gensquashfs/src/mkfs.c')
-rw-r--r--bin/gensquashfs/src/mkfs.c24
1 files changed, 4 insertions, 20 deletions
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;