/**************************************************************************** * * File: util.c * * Utility functions for the gphoto2 camlibs/canon driver. * ****************************************************************************/ /**************************************************************************** * * include files * ****************************************************************************/ #include "config.h" #include #include #include #include #include #include #include "canon.h" #include "util.h" #include "library.h" /** * is_thumbnail: * @name: name of file to examine * * Test whether the given @name corresponds to a thumbnail (.THM). * * Returns: * 1 if filename is the name of a thumbnail (i.e. ends with ".THM" ) * 0 if not * */ int is_thumbnail (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".THM")); GP_DEBUG ("is_thumbnail(%s) == %i", name, res); return (res); } /** * is_audio: * @name: name of file to examine * * Test whether the given @name corresponds to an audio file (.WAV). * * Returns: * 1 if filename is the name of an audio file (i.e. ends with ".WAV" ) * 0 if not * */ int is_audio (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".WAV")); GP_DEBUG ("is_audio(%s) == %i", name, res); return (res); } /** * is_image: * @name: name of file to examine * * Tests whether the given @name corresponds to an image (.JPG, .CR2, or .CRW). * * Returns: * 1 if filename is the name of an image * 0 if not * */ int is_image (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) { res |= !strcmp (pos, ".JPG"); res |= !strcmp (pos, ".CRW"); res |= !strcmp (pos, ".CR2"); } GP_DEBUG ("is_image(%s) == %i", name, res); return (res); } /** * is_jpeg: * @name: name of file to examine * * Test whether the given @name corresponds to a JPEG image (.JPG). * Returns: * 1 if filename is the name of a JPEG image (i.e. ends with ".JPG" ) * 0 if not * */ int is_jpeg (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".JPG")); GP_DEBUG ("is_jpeg(%s) == %i", name, res); return (res); } /** * is_crw: * @name: name of file to examine * * Tests whether the name given corresponds to a raw CRW image (.CRW). * * Returns: * 1 if filename is the name of a traditional Canon raw image (i.e. ends with .CRW) * 0 if not * */ int is_crw (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = !strcmp (pos, ".CRW"); GP_DEBUG ("is_crw(%s) == %i", name, res); return (res); } /** * is_cr2: * @name: name of file to examine * * Tests whether the name given corresponds to a raw CR2 image (.CR2). * * Returns: * 1 if filename is the name of a CR2 raw image (i.e. ends with .CR2) * 0 if not * */ int is_cr2 (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = !strcmp (pos, ".CR2"); GP_DEBUG ("is_cr2(%s) == %i", name, res); return (res); } /** * is_movie: * @name: name of file to examine * * Test whether the name given corresponds * to a movie (.AVI) * * Returns: * 1 if filename is the name of a movie (i.e. ends with ".AVI" ) * 0 if not * */ int is_movie (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".AVI")); GP_DEBUG ("is_movie(%s) == %i", name, res); return (res); } /** * filename2mimetype: * @filename: name of file to examine * * Deduces MIME type of file by considering the file name ending. * * Returns: pointer to immutable string with the MIME type */ const char * filename2mimetype (const char *filename) { const char *pos = strchr (filename, '.'); if (pos) { if (!strcmp (pos, ".AVI")) return GP_MIME_AVI; else if (!strcmp (pos, ".JPG")) return GP_MIME_JPEG; else if (!strcmp (pos, ".WAV")) return GP_MIME_WAV; else if (!strcmp (pos, ".THM")) return GP_MIME_JPEG; else if (!strcmp (pos, ".CRW")) return GP_MIME_CRW; else if (!strcmp (pos, ".CR2")) return GP_MIME_CRW; } return GP_MIME_UNKNOWN; } void dump_hex ( FILE *fp, void *buffer, int length ) { unsigned char *data = (unsigned char *)buffer; int i, j, full_lines, remainder; char output_line[17]; /* Dump a buffer in hexadecimal */ full_lines = length / 16; remainder = length % 16; output_line[16] = 0; for ( i=0; i= 32 && data[i+j] < 127 ) output_line[j] = data[i+j]; else output_line[j] = '.'; } fprintf ( fp, " %s\n", output_line ); } if ( remainder > 0 ) { fprintf ( fp, "%04x: ", i ); for ( j=0; j= 32 && data[i+j] < 127 ) output_line[j] = data[i+j]; else output_line[j] = '.'; } output_line[j] = 0; for (; j<16; j++ ) fprintf ( fp, " " ); /* Pad line to same length */ fprintf ( fp, " %s\n", output_line ); } fprintf ( fp, "\n" ); } /**************************************************************************** * * End of file: util.c * ****************************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */