From: cristy Date: Sun, 29 Jul 2012 20:27:00 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~5229 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bc20d11de81e69109773d8854e1039e88c1d7edc;p=imagemagick --- diff --git a/MagickCore/blob-private.h b/MagickCore/blob-private.h index 2c14b22d9..78a78fce9 100644 --- a/MagickCore/blob-private.h +++ b/MagickCore/blob-private.h @@ -33,8 +33,8 @@ extern "C" { typedef enum { UndefinedStream, - FileStream, StandardStream, + FileStream, PipeStream, ZipStream, BZipStream, diff --git a/MagickCore/blob.c b/MagickCore/blob.c index 490b28716..0fe26d4d1 100644 --- a/MagickCore/blob.c +++ b/MagickCore/blob.c @@ -528,9 +528,9 @@ MagickExport MagickBooleanType CloseBlob(Image *image) switch (image->blob->type) { case UndefinedStream: + case StandardStream: break; case FileStream: - case StandardStream: case PipeStream: { status=ferror(image->blob->file_info.file); @@ -558,9 +558,9 @@ MagickExport MagickBooleanType CloseBlob(Image *image) switch (image->blob->type) { case UndefinedStream: + case StandardStream: break; case FileStream: - case StandardStream: { if (image->blob->synchronize != MagickFalse) { @@ -857,9 +857,9 @@ MagickExport int EOFBlob(const Image *image) switch (image->blob->type) { case UndefinedStream: + case StandardStream: break; case FileStream: - case StandardStream: case PipeStream: { image->blob->eof=feof(image->blob->file_info.file) != 0 ? MagickTrue : @@ -1355,13 +1355,17 @@ MagickExport MagickSizeType GetBlobSize(const Image *image) extent=image->blob->size; break; } + case StandardStream: + { + extent=image->blob->size; + break; + } case FileStream: { if (fstat(fileno(image->blob->file_info.file),&image->blob->properties) == 0) extent=(MagickSizeType) image->blob->properties.st_size; break; } - case StandardStream: case PipeStream: { extent=image->blob->size; @@ -2397,6 +2401,22 @@ MagickExport MagickBooleanType OpenBlob(const ImageInfo *image_info, #if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__OS2__) if (strchr(type,'b') != (char *) NULL) setmode(_fileno(image->blob->file_info.file),_O_BINARY); +#endif + image->blob->type=StandardStream; + image->blob->exempt=MagickTrue; + return(MagickTrue); + } + if (LocaleNCompare(filename,"fd:",3) == 0) + { + char + mode[MaxTextExtent]; + + *mode=(*type); + mode[1]='\0'; + image->blob->file_info.file=fdopen(StringToLong(filename+3),mode); +#if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__OS2__) + if (strchr(type,'b') != (char *) NULL) + setmode(_fileno(image->blob->file_info.file),_O_BINARY); #endif image->blob->type=StandardStream; image->blob->exempt=MagickTrue; @@ -2756,8 +2776,12 @@ MagickExport ssize_t ReadBlob(Image *image,const size_t length, { case UndefinedStream: break; - case FileStream: case StandardStream: + { + count=(ssize_t) read(fileno(image->blob->file_info.file),q,length); + break; + } + case FileStream: case PipeStream: { switch (length) @@ -3542,6 +3566,8 @@ MagickExport MagickOffsetType SeekBlob(Image *image, { case UndefinedStream: break; + case StandardStream: + return(-1); case FileStream: { if (fseek(image->blob->file_info.file,offset,whence) < 0) @@ -3549,7 +3575,6 @@ MagickExport MagickOffsetType SeekBlob(Image *image, image->blob->offset=TellBlob(image); break; } - case StandardStream: case PipeStream: case ZipStream: { @@ -3690,6 +3715,8 @@ MagickPrivate MagickBooleanType SetBlobExtent(Image *image, { case UndefinedStream: break; + case StandardStream: + return(MagickFalse); case FileStream: { if (extent != (MagickSizeType) ((off_t) extent)) @@ -3713,7 +3740,6 @@ MagickPrivate MagickBooleanType SetBlobExtent(Image *image, #endif break; } - case StandardStream: case PipeStream: case ZipStream: return(MagickFalse); @@ -3807,9 +3833,9 @@ static int SyncBlob(Image *image) switch (image->blob->type) { case UndefinedStream: + case StandardStream: break; case FileStream: - case StandardStream: case PipeStream: { status=fflush(image->blob->file_info.file); @@ -3880,13 +3906,13 @@ MagickExport MagickOffsetType TellBlob(const Image *image) switch (image->blob->type) { case UndefinedStream: + case StandardStream: break; case FileStream: { offset=ftell(image->blob->file_info.file); break; } - case StandardStream: case PipeStream: break; case ZipStream: @@ -4003,8 +4029,12 @@ MagickExport ssize_t WriteBlob(Image *image,const size_t length, { case UndefinedStream: break; - case FileStream: case StandardStream: + { + count=(ssize_t) write(fileno(image->blob->file_info.file),data,length); + break; + } + case FileStream: case PipeStream: { switch (length) diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c index 459709be5..b5d483e12 100644 --- a/MagickCore/constitute.c +++ b/MagickCore/constitute.c @@ -461,12 +461,6 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, "NotAuthorized","'%s'",read_info->filename); return((Image *) NULL); } - if ((LocaleNCompare(filename,"fd:",3) == 0) && - (image_info->file == (FILE *) NULL)) - { - read_info->file=fdopen(StringToLong(filename+3),"rb"); - SetImageInfoFile((ImageInfo *) image_info,read_info->file); - } /* Call appropriate image reader based on image type. */ @@ -1071,12 +1065,6 @@ MagickExport MagickBooleanType WriteImage(const ImageInfo *image_info, errno=EPERM; ThrowBinaryException(PolicyError,"NotAuthorized",filename); } - if ((LocaleNCompare(filename,"fd:",3) == 0) && - (image_info->file == (FILE *) NULL)) - { - write_info->file=fdopen(StringToLong(filename+3),"wb"); - SetImageInfoFile((ImageInfo *) image_info,write_info->file); - } /* Call appropriate image reader based on image type. */