www.pudn.com > ilib > IFileType.c
/* * IFileType.c * * Image library * * Description: * Portable routines to manipulate raster images. * * History: * 01-Apr-00 Jim Winstead imw@trainedmonkey.com * Added BMP. * 19-Jul-99 Craig Knudsen cknudsen@radix.net * Added PNG. * 20-May-96 Craig Knudsen cknudsen@radix.net * Created * ****************************************************************************/ #include#include #include #include #include "Ilib.h" #include "IlibP.h" IError IFileType ( file, format_return ) char *file; IFileFormat *format_return; { char *tmp, *ptr; IError ret = INoError; *format_return = IFORMAT_PPM; /* default */ tmp = (char *) malloc ( strlen ( file ) + 1 ); strcpy ( tmp, file ); for ( ptr = tmp; *ptr != '\0'; ptr++ ) *ptr = tolower ( *ptr ); /* find the last '.' */ for ( ptr = tmp + strlen ( tmp ) - 1; ( ptr != tmp ) && ( *ptr != '.' ); ptr-- ) ; if ( *ptr == '.' ) { ptr++; if ( strcmp ( ptr, "gif" ) == 0 ) { *format_return = IFORMAT_GIF; #ifndef HAVE_GIFLIB ret = INoGIFSupport; #endif } else if ( strcmp ( ptr, "ppm" ) == 0 ) *format_return = IFORMAT_PPM; else if ( strcmp ( ptr, "pgm" ) == 0 ) *format_return = IFORMAT_PGM; else if ( strcmp ( ptr, "pbm" ) == 0 ) *format_return = IFORMAT_PBM; else if ( strcmp ( ptr, "xpm" ) == 0 ) *format_return = IFORMAT_XPM; else if ( strcmp ( ptr, "xbm" ) == 0 ) *format_return = IFORMAT_XBM; else if ( strcmp ( ptr, "png" ) == 0 ) *format_return = IFORMAT_PNG; else if ( strcmp ( ptr, "jpeg" ) == 0 ) *format_return = IFORMAT_JPEG; else if ( strcmp ( ptr, "jpg" ) == 0 ) *format_return = IFORMAT_JPEG; else if ( strcmp ( ptr, "bmp" ) == 0 ) *format_return = IFORMAT_BMP; else ret = IInvalidFormat; } else ret = IInvalidFormat; free ( tmp ); return ( ret ); }