diff options
Diffstat (limited to 'mkfs')
| -rw-r--r-- | mkfs/mkfs.c | 41 | 
1 files changed, 14 insertions, 27 deletions
diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c index 654534d..a739322 100644 --- a/mkfs/mkfs.c +++ b/mkfs/mkfs.c @@ -1,44 +1,25 @@  /* SPDX-License-Identifier: GPL-3.0-or-later */  #include "mkfs.h" -static int process_file(data_writer_t *data, tree_node_t *n, bool quiet) +static int process_file(data_writer_t *data, file_info_t *fi, bool quiet)  {  	int ret, infd; -	char *name; -	if (!quiet) { -		name = fstree_get_path(n); -		printf("packing %s\n", name); -		free(name); -	} +	if (!quiet) +		printf("packing %s\n", fi->input_file); -	infd = open(n->data.file->input_file, O_RDONLY); +	infd = open(fi->input_file, O_RDONLY);  	if (infd < 0) { -		perror(n->data.file->input_file); +		perror(fi->input_file);  		return -1;  	} -	ret = write_data_from_fd(data, n->data.file, infd, 0); +	ret = write_data_from_fd(data, fi, infd, 0);  	close(infd);  	return ret;  } -static int pack_files_dfs(data_writer_t *data, tree_node_t *n, bool quiet) -{ -	if (S_ISREG(n->mode)) -		return process_file(data, n, quiet); - -	if (S_ISDIR(n->mode)) { -		for (n = n->data.dir->children; n != NULL; n = n->next) { -			if (pack_files_dfs(data, n, quiet)) -				return -1; -		} -	} - -	return 0; -} -  static int set_working_dir(options_t *opt)  {  	const char *ptr; @@ -63,11 +44,15 @@ static int restore_working_dir(options_t *opt)  static int pack_files(data_writer_t *data, fstree_t *fs, options_t *opt)  { +	file_info_t *fi; +  	if (set_working_dir(opt))  		return -1; -	if (pack_files_dfs(data, fs->root, opt->quiet)) -		return -1; +	for (fi = fs->files; fi != NULL; fi = fi->next) { +		if (process_file(data, fi, opt->quiet)) +			return -1; +	}  	if (data_writer_flush_fragments(data))  		return -1; @@ -145,6 +130,8 @@ int main(int argc, char **argv)  	if (fstree_gen_inode_table(&fs))  		goto out_outfd; +	fstree_gen_file_list(&fs); +  	super.inode_count = fs.inode_tbl_size - 2;  #ifdef WITH_SELINUX  | 
