Rewrite that doesn't alloc any memory.

const char * typeImageFromFileName (char * filename)
{
     char header[64];
     FILE *fp = fopen (filename, "rb");

     if (fp){
         fread (header, sizeof(char), sizeof(header), fp);
         fclose (fp);

         if (memcmp(header, "GIF87a", 6) == 0 ||
                 memcmp(header, "GIF89a", 6) == 0)
         {
             return "GIF";
         }
         if (memcmp(header, "BM", 2) == 0)      // BMP file
         {
             return "BMP";
         }
         if (header[0] == 'P' && (header[1] == '3' || header[1] == '6'))
         {
             return "PPM";
         }
         if (header[0] == 'P' && (header[1] == '2' || header[1] == '5'))
         {
             return "PGM";
         }

         if (header[0] == 'P' && header[1] == '1' )
         {
             return "PBM";
         }

         if (memcmp(header, "\211PNG", 4) == 0)
         {
             return "PNG";
         }
         /*
          if (memcmp(header, "\377\330\377", 3) == 0 &&
              header[3] >= 0xc0 && header[3] <= 0xef)
              */
         if (memcmp(header, "\377\330\377", 3) == 0)
         {
             return "JPEG";
         }
         if (memcmp(header, "II*", 3) == 0||memcmp(header, "MM*", 3) == 0 )
         {
             return "TIFF";
         }
     }
     return "UNKNOWN";
}
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to