diff options
author | Justin Maggard <jmaggard@users.sourceforce.net> | 2011-11-19 12:26:10 +0400 |
---|---|---|
committer | Justin Maggard <jmaggard@users.sourceforce.net> | 2011-11-19 12:26:10 +0400 |
commit | 6c503a93792d259b97b583d502e8bd1fb6bec61b (patch) | |
tree | 9c1b10e0d04b8d006ac733a70504e9f3fd2b96be /image_utils.c | |
parent | 30df1eeeb7c12b8467e674e985b5cd7857c907e4 (diff) |
* Fix some unused result warnings.
* Handle folder art a little differently than file album art.
Diffstat (limited to 'image_utils.c')
-rw-r--r-- | image_utils.c | 54 |
1 files changed, 34 insertions, 20 deletions
diff --git a/image_utils.c b/image_utils.c index 2135e3d..f2cadd4 100644 --- a/image_utils.c +++ b/image_utils.c @@ -242,38 +242,41 @@ image_get_jpeg_resolution(const char * path, int * width, int * height) unsigned char buf[8]; u_int16_t offset, h, w; int ret = 1; + size_t nread; long size; img = fopen(path, "r"); if( !img ) - return(-1); + return -1; fseek(img, 0, SEEK_END); size = ftell(img); rewind(img); - fread(&buf, 2, 1, img); - if( (buf[0] != 0xFF) || (buf[1] != 0xD8) ) + nread = fread(&buf, 2, 1, img); + if( (nread < 1) || (buf[0] != 0xFF) || (buf[1] != 0xD8) ) { fclose(img); - return(-1); + return -1; } memset(&buf, 0, sizeof(buf)); while( ftell(img) < size ) { - while( buf[0] != 0xFF && !feof(img) ) - fread(&buf, 1, 1, img); + while( nread > 0 && buf[0] != 0xFF && !feof(img) ) + nread = fread(&buf, 1, 1, img); - while( buf[0] == 0xFF && !feof(img) ) - fread(&buf, 1, 1, img); + while( nread > 0 && buf[0] == 0xFF && !feof(img) ) + nread = fread(&buf, 1, 1, img); if( (buf[0] >= 0xc0) && (buf[0] <= 0xc3) ) { - fread(&buf, 7, 1, img); + nread = fread(&buf, 7, 1, img); *width = 0; *height = 0; + if( nread < 1 ) + break; memcpy(&h, buf+3, 2); *height = SWAP16(h); memcpy(&w, buf+5, 2); @@ -284,7 +287,9 @@ image_get_jpeg_resolution(const char * path, int * width, int * height) else { offset = 0; - fread(&buf, 2, 1, img); + nread = fread(&buf, 2, 1, img); + if( nread < 1 ) + break; memcpy(&offset, buf, 2); offset = SWAP16(offset) - 2; if( fseek(img, offset, SEEK_CUR) == -1 ) @@ -305,13 +310,14 @@ image_get_jpeg_date_xmp(const char * path, char ** date) struct NameValueParserData xml; char * exif; int ret = 1; + size_t nread; img = fopen(path, "r"); if( !img ) return(-1); - fread(&buf, 2, 1, img); - if( (buf[0] != 0xFF) || (buf[1] != 0xD8) ) + nread = fread(&buf, 2, 1, img); + if( (nread < 1) || (buf[0] != 0xFF) || (buf[1] != 0xD8) ) { fclose(img); return(-1); @@ -320,11 +326,11 @@ image_get_jpeg_date_xmp(const char * path, char ** date) while( !feof(img) ) { - while( buf[0] != 0xFF && !feof(img) ) - fread(&buf, 1, 1, img); + while( nread > 0 && buf[0] != 0xFF && !feof(img) ) + nread = fread(&buf, 1, 1, img); - while( buf[0] == 0xFF && !feof(img) ) - fread(&buf, 1, 1, img); + while( nread > 0 && buf[0] == 0xFF && !feof(img) ) + nread = fread(&buf, 1, 1, img); if( feof(img) ) break; @@ -332,7 +338,9 @@ image_get_jpeg_date_xmp(const char * path, char ** date) if( buf[0] == 0xE1 ) // APP1 marker { offset = 0; - fread(&buf, 2, 1, img); + nread = fread(&buf, 2, 1, img); + if( nread < 1 ) + break; memcpy(&offset, buf, 2); offset = SWAP16(offset) - 2; @@ -347,7 +355,9 @@ image_get_jpeg_date_xmp(const char * path, char ** date) break; data = newdata; - fread(data, 29, 1, img); + nread = fread(data, 29, 1, img); + if( nread < 1 ) + break; offset -= 29; if( strcmp(data, "http://ns.adobe.com/xap/1.0/") != 0 ) { @@ -359,7 +369,9 @@ image_get_jpeg_date_xmp(const char * path, char ** date) if( !newdata ) break; data = newdata; - fread(data, offset, 1, img); + nread = fread(data, offset, 1, img); + if( nread < 1 ) + break; ParseNameValue(data, offset, &xml); exif = GetValueFromNameValueList(&xml, "DateTimeOriginal"); @@ -378,7 +390,9 @@ image_get_jpeg_date_xmp(const char * path, char ** date) else { offset = 0; - fread(&buf, 2, 1, img); + nread = fread(&buf, 2, 1, img); + if( nread < 1 ) + break; memcpy(&offset, buf, 2); offset = SWAP16(offset) - 2; fseek(img, offset, SEEK_CUR); |