From fd0f3fb9011bea6918b564ecc7c13c771db78a1b Mon Sep 17 00:00:00 2001 From: Pedro Portela Date: Wed, 4 Jun 2025 23:54:47 +0200 Subject: [PATCH] Read PNG Magic --- img_png.c | 23 +++++++++++++++++++++++ img_png.h | 9 ++++++++- main.c | 12 ++++++++++-- 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 img_png.c diff --git a/img_png.c b/img_png.c new file mode 100644 index 0000000..a0ee188 --- /dev/null +++ b/img_png.c @@ -0,0 +1,23 @@ +#include +#include +#include +#include "img_png.h" + +uint8_t* img_png_decode(FILE *fp) { + unsigned char buffer[8]; + size_t bufsize = sizeof(buffer) / sizeof((buffer)[0]); + + size_t ret = fread(buffer, sizeof(*buffer), bufsize, fp); + + if(ret != bufsize) { + fprintf(stderr, "fread() failed. Expected %zu bytes, got %zu\n", bufsize, ret); + return NULL; + } + + printf("PNG Magic: %#04x%02x%02x%02x%02x%02x%02x%02x\n", buffer[0], buffer[1], buffer[2], + buffer[3], buffer[4], buffer[5], buffer[6], buffer[7]); + + return NULL; +} + + diff --git a/img_png.h b/img_png.h index cb20236..506ea91 100644 --- a/img_png.h +++ b/img_png.h @@ -1,6 +1,13 @@ #include #include -const char img_png_signature[] = {0x89, }; +//const unsigned char img_png_signature[] = {0x89, 'P', 'N', 'G', '\r', '\n', 0x1a, '\n'}; + +struct img_png_chunk { + int length; + int chunk_type; + char* chunk_data; + int crc; +}; uint8_t* img_png_decode (FILE* fp); diff --git a/main.c b/main.c index 7600b13..1ee8965 100644 --- a/main.c +++ b/main.c @@ -1,9 +1,10 @@ #include #include +#include "img_png.h" int main(int argc, char** argv) { if(argc != 2) { - fprintf(stderr, "Usage: ./imgvwr FILE"); + fprintf(stderr, "Usage: ./imgvwr FILE\n"); exit(EXIT_FAILURE); } @@ -13,5 +14,12 @@ int main(int argc, char** argv) { exit(EXIT_FAILURE); } - + /*if(!img_png_decode(fp_image)) { + fprintf(stderr, "Could not parse PNG file!\n"); + exit(EXIT_FAILURE); + }*/ + + img_png_decode(fp_image); + + return 0; }