Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/azatoth/minidlna.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Maggard <jmaggard@users.sourceforce.net>2011-11-19 12:26:10 +0400
committerJustin Maggard <jmaggard@users.sourceforce.net>2011-11-19 12:26:10 +0400
commit6c503a93792d259b97b583d502e8bd1fb6bec61b (patch)
tree9c1b10e0d04b8d006ac733a70504e9f3fd2b96be /image_utils.c
parent30df1eeeb7c12b8467e674e985b5cd7857c907e4 (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.c54
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);