summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2012-09-12 15:42:47 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-09-12 17:23:34 +0200
commit50239e0195c6c8af99b3fa80bde084e30a33a7cd (patch)
tree908b5f1bf0f75bbc69cac680d1e03f4ca2db261f
parent2beb82f88a9b3a2f2fee8fdb8818a38240009137 (diff)
downloadbarebox-50239e0195c6c8af99b3fa80bde084e30a33a7cd.tar.gz
filetype: add PNG support
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--common/filetype.c4
-rw-r--r--include/filetype.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/common/filetype.c b/common/filetype.c
index 61fca5a..d06eec0 100644
--- a/common/filetype.c
+++ b/common/filetype.c
@@ -43,6 +43,7 @@ static const char *filetype_str[] = {
[filetype_mips_barebox] = "MIPS barebox image",
[filetype_fat] = "FAT filesytem",
[filetype_bmp] = "BMP image",
+ [filetype_png] = "PNG image",
};
const char *file_type_to_string(enum filetype f)
@@ -72,6 +73,7 @@ static int is_fat(u8 *buf)
enum filetype file_detect_type(void *_buf)
{
u32 *buf = _buf;
+ u64 *buf64 = _buf;
u8 *buf8 = _buf;
if (strncmp(buf8, "#!/bin/sh", 9) == 0)
@@ -104,6 +106,8 @@ enum filetype file_detect_type(void *_buf)
return filetype_fat;
if (strncmp(buf8, "BM", 2) == 0)
return filetype_bmp;
+ if (buf64[0] == le64_to_cpu(0x0a1a0a0d474e5089ull))
+ return filetype_png;
return filetype_unknown;
}
diff --git a/include/filetype.h b/include/filetype.h
index 6c97159..2924032 100644
--- a/include/filetype.h
+++ b/include/filetype.h
@@ -20,6 +20,7 @@ enum filetype {
filetype_mips_barebox,
filetype_fat,
filetype_bmp,
+ filetype_png,
};
const char *file_type_to_string(enum filetype f);