From 6ad544f3f3dde82e0faf1abacf50facc37086d88 Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 26 Sep 2018 14:04:38 +0200 Subject: If stats file doesn't exist lfs_emubd_create will fail. This will create default stats file if it doesn't exist. --- emubd/lfs_emubd.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'emubd') diff --git a/emubd/lfs_emubd.c b/emubd/lfs_emubd.c index 682ad92..e44602c 100644 --- a/emubd/lfs_emubd.c +++ b/emubd/lfs_emubd.c @@ -47,19 +47,24 @@ int lfs_emubd_create(const struct lfs_config *cfg, const char *path) { // Load stats to continue incrementing snprintf(emu->child, LFS_NAME_MAX, "stats"); + FILE *f = fopen(emu->path, "r"); - if (!f) { + if (!f && errno != ENOENT) { return -errno; } - size_t res = fread(&emu->stats, sizeof(emu->stats), 1, f); - if (res < 1) { - return -errno; - } + if (errno == ENOENT) { + memset(&emu->stats, 0x0, sizeof(emu->stats)); + } else { + size_t res = fread(&emu->stats, sizeof(emu->stats), 1, f); + if (res < 1) { + return -errno; + } - err = fclose(f); - if (err) { - return -errno; + err = fclose(f); + if (err) { + return -errno; + } } return 0; -- cgit v1.2.3