From: David Maciejak <david.macie...@gmail.com>

load.c is used to identify the file format, I rebased some checks on
what is defined in the spec of the format.
---
 wrlib/load.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/wrlib/load.c b/wrlib/load.c
index 8c76373..fe5cc1e 100644
--- a/wrlib/load.c
+++ b/wrlib/load.c
@@ -281,7 +281,7 @@ char *RGetImageFileFormat(const char *file)
 static WRImgFormat identFile(const char *path)
 {
        FILE *file;
-       unsigned char buffer[32];
+       unsigned char buffer[7];
        size_t nread;
 
        assert(path != NULL);
@@ -301,7 +301,7 @@ static WRImgFormat identFile(const char *path)
        RETRY( fclose(file) )
 
        /* check for XPM */
-       if (strncmp((char *)buffer, "/* XPM */", 9) == 0)
+       if (strncmp((char *)buffer, "/* XPM", 6) == 0)
                return IM_XPM;
 
        /* check for TIFF */
@@ -309,14 +309,12 @@ static WRImgFormat identFile(const char *path)
            || (buffer[0] == 'M' && buffer[1] == 'M' && buffer[2] == 0 && 
buffer[3] == '*'))
                return IM_TIFF;
 
-#ifdef USE_PNG
        /* check for PNG */
-       if (!png_sig_cmp(buffer, 0, 8))
+       if (buffer[0] == 0x89 && buffer[1] == 'P' && buffer[2] == 'N' && 
buffer[3] == 'G')
                return IM_PNG;
-#endif
 
-       /* check for raw PPM or PGM */
-       if (buffer[0] == 'P' && (buffer[1] == '5' || buffer[1] == '6'))
+       /* check for PBM or PGM or PPM */
+       if (buffer[0] == 'P' && (buffer[1] > '0' && buffer[1] < '7') && 
(buffer[2] == 0x0a || buffer[2] == 0x20 || buffer[2] == 0x09 || buffer[2] == 
0x0d))
                return IM_PPM;
 
        /* check for JPEG */
@@ -324,7 +322,7 @@ static WRImgFormat identFile(const char *path)
                return IM_JPEG;
 
        /* check for GIF */
-       if (buffer[0] == 'G' && buffer[1] == 'I' && buffer[2] == 'F')
+       if (buffer[0] == 'G' && buffer[1] == 'I' && buffer[2] == 'F' && 
buffer[3] == '8')
                return IM_GIF;
 
        return IM_UNKNOWN;
-- 
1.9.1


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to