[PATCH] erofs-utils: lib: chagne function definition of erofs_blocklist_open()
Hongzhen Luo
hongzhen at linux.alibaba.com
Tue Jul 2 21:56:47 AEST 2024
Modified the definition of the function `erofs_blocklist_open` to accept
a file pointer rather than a string, for external use in liberofs.
Signed-off-by: Hongzhen Luo <hongzhen at linux.alibaba.com>
---
include/erofs/block_list.h | 2 +-
lib/block_list.c | 9 ++++-----
mkfs/main.c | 21 ++++++++++++++-------
3 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/include/erofs/block_list.h b/include/erofs/block_list.h
index 9f9975e..00da82c 100644
--- a/include/erofs/block_list.h
+++ b/include/erofs/block_list.h
@@ -13,7 +13,7 @@ extern "C"
#include "internal.h"
-int erofs_blocklist_open(char *filename, bool srcmap);
+int erofs_blocklist_open(FILE *fp, bool srcmap);
void erofs_blocklist_close(void);
void tarerofs_blocklist_write(erofs_blk_t blkaddr, erofs_blk_t nblocks,
diff --git a/lib/block_list.c b/lib/block_list.c
index f47a746..d11e2cd 100644
--- a/lib/block_list.c
+++ b/lib/block_list.c
@@ -13,12 +13,11 @@
static FILE *block_list_fp;
bool srcmap_enabled;
-int erofs_blocklist_open(char *filename, bool srcmap)
+int erofs_blocklist_open(FILE *fp, bool srcmap)
{
- block_list_fp = fopen(filename, "w");
-
- if (!block_list_fp)
- return -errno;
+ if (!fp)
+ return -ENOENT;
+ block_list_fp = fp;
srcmap_enabled = srcmap;
return 0;
}
diff --git a/mkfs/main.c b/mkfs/main.c
index 63ed877..79780d7 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -1133,6 +1133,10 @@ int main(int argc, char **argv)
erofs_blk_t nblocks;
struct timeval t;
FILE *packedfile = NULL;
+ FILE *mp_fp;
+#ifdef WITH_ANDROID
+ FILE *cfg_fp;
+#endif
u32 crc;
erofs_init_configure();
@@ -1173,11 +1177,13 @@ int main(int argc, char **argv)
erofs_err("failed to load fs config %s", cfg.fs_config_file);
return 1;
}
-
- if (cfg.block_list_file &&
- erofs_blocklist_open(cfg.block_list_file, false)) {
- erofs_err("failed to open %s", cfg.block_list_file);
- return 1;
+
+ if (cfg.block_list_file) {
+ cfg_fp = fopen(cfg.block_list_file, "w");
+ if (!cfg_fp || erofs_blocklist_open(cfg_fp, false)) {
+ erofs_err("failed to open %s", cfg.block_list_file);
+ return 1;
+ }
}
#endif
erofs_show_config();
@@ -1210,8 +1216,9 @@ int main(int argc, char **argv)
erofstar.dev = rebuild_src_count + 1;
if (erofstar.mapfile) {
- err = erofs_blocklist_open(erofstar.mapfile, true);
- if (err) {
+ mp_fp = fopen(erofstar.mapfile, "w");
+ if (!mp_fp || erofs_blocklist_open(mp_fp, true)) {
+ err = -errno;
erofs_err("failed to open %s", erofstar.mapfile);
goto exit;
}
--
2.39.3
More information about the Linux-erofs
mailing list