diff options
Diffstat (limited to 'bin/gensquashfs/src/mkfs.c')
-rw-r--r-- | bin/gensquashfs/src/mkfs.c | 24 |
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; |