/* * metadata.c */ #include #include #include #include #include "string.h" #include "../floatimg.h" extern int verbosity; /* must be declared around main() */ /* ---------------------------------------------------------------- */ int fimg_show_metadata(FimgMetaData *pmd, char *title, int notused) { fprintf(stderr, ">>> %s ( %p '%s' 0x%08x )\n", __func__, pmd, title, notused); fprintf(stderr, "sizeof metadata = %ld\n", sizeof(FimgMetaData)); fprintf(stderr, "magic = '%8s'\n", pmd->magic); /* TIMESTAMP HERE */ fprintf(stderr, "counter = %d\n", pmd->count); fprintf(stderr, "float value = %.3f\n", pmd->fval); fprintf(stderr, "id camera = '%s'\n", pmd->idcam); fprintf(stderr, "origin = %d\n", pmd->origin); return -1; } /* ---------------------------------------------------------------- */ int fimg_default_metadata(FimgMetaData *pmd) { memcpy(pmd->magic, "metadata", 8); 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; } /* ---------------------------------------------------------------- */