From 4b64330884633f581c01eea9014586f8f4249158 Mon Sep 17 00:00:00 2001 From: tth Date: Fri, 8 Apr 2022 03:10:43 +0200 Subject: [PATCH] try to get mdata from .fimg file --- floatimg.h | 2 +- lib/metadata.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/floatimg.h b/floatimg.h index 0977336..9967f1e 100644 --- a/floatimg.h +++ b/floatimg.h @@ -4,7 +4,7 @@ * http://la.buvette.org/photos/cumul */ -#define FIMG_VERSION 176 +#define FIMG_VERSION 177 /* * in memory descriptor diff --git a/lib/metadata.c b/lib/metadata.c index e261573..af0f876 100644 --- a/lib/metadata.c +++ b/lib/metadata.c @@ -38,6 +38,61 @@ pmd->count = 0; pmd->fval = 255.0; strcpy(pmd->idcam, ""); pmd->origin = 999; + return -1; } /* ---------------------------------------------------------------- */ +int fimg_get_metadata_from_file(char *fname, FimgMetaData *pmd) +{ +FILE *fp; +FimgFileHead filehead; +FimgMetaData metadata; +int foo; + +#if DEBUG_LEVEL +fprintf(stderr, ">>> %s ( %s %p )\n", __func__, fname, pmd); +#endif + +if (NULL==(fp=fopen(fname, "r"))) { + return -1; + } + +foo = fread(&filehead, sizeof(FimgFileHead), 1, fp); +if (sizeof(FimgFileHead) != foo) { + fprintf(stderr, "short read on %s (head)\n", fname); + fclose(fp); + return -2; + } + +if (memcmp(filehead.magic, "FIMG", 4)) { + fprintf(stderr, "'%s' is not a fimg file.\n", fname); + fclose(fp); + return -3; + } + +if ('a' != filehead.magic[4]) { + fprintf(stderr, "'%s' have no metadata.\n", fname); + fclose(fp); + return -4; + } + +foo = fread(&metadata, sizeof(FimgMetaData), 1, fp); +if (sizeof(FimgMetaData) != foo) { + fprintf(stderr, "short read on %s (metadata)\n", fname); + fclose(fp); + return -5; + } + +fclose(fp); /* got all needed datas */ + +if (memcmp(metadata.magic, "metadata", 8)) { + fprintf(stderr, "'%s' invalid metadata.\n", fname); + fclose(fp); + return -6; + } + +memcpy(pmd, &metadata, sizeof(FimgMetaData)); + +return 0; +} +/* ---------------------------------------------------------------- */