%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ReadBlob() reads data from the blob or image file and returns it. It
-% returns the number of bytes read.
+% returns the number of bytes read. If length is zero, ReadBlob() returns
+% zero and has no other results. If length is greater than SSIZE_MAX, the
+% result is unspecified.
%
% The format of the ReadBlob method is:
%
break;
case StandardStream:
{
- register ssize_t
- i;
-
- count=0;
- for (i=0; i < (ssize_t) length; i+=count)
- {
- count=read(fileno(image->blob->file_info.file),q+i,(size_t) MagickMin(
- length-i,SSIZE_MAX));
- if (count <= 0)
- {
- count=0;
- if (errno != EINTR)
- break;
- }
- }
- count=i;
+ count=read(fileno(image->blob->file_info.file),q,length);
break;
}
case FileStream:
case BZipStream:
{
#if defined(MAGICKCORE_BZLIB_DELEGATE)
- count=(ssize_t) BZ2_bzread(image->blob->file_info.bzfile,q,
- (int) length);
+ count=(ssize_t) BZ2_bzread(image->blob->file_info.bzfile,q,(int) length);
#endif
break;
}
break;
case StandardStream:
{
- count=write(fileno(image->blob->file_info.file),data,(size_t)
- MagickMin(length,(MagickSizeType) SSIZE_MAX));
+ count=write(fileno(image->blob->file_info.file),data,length);
break;
}
case FileStream: