% October 1998 %
% %
% %
-% Copyright 1999-2015 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2017 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
% obtain a copy of the License at %
% %
-% http://www.imagemagick.org/script/license.php %
+% https://www.imagemagick.org/script/license.php %
% %
% Unless required by applicable law or agreed to in writing, software %
% distributed under the License is distributed on an "AS IS" BASIS, %
static size_t PingStream(const Image *magick_unused(image),
const void *magick_unused(pixels),const size_t columns)
{
+ magick_unreferenced(image);
+ magick_unreferenced(pixels);
return(columns);
}
read_info=DestroyImageInfo(read_info);
return(PingImage(image_info,exception));
}
- (void) CopyMagickString(ping_filename,read_info->filename,MagickPathExtent);
+ (void) CopyMagickString(ping_filename,read_info->filename,
+ MagickPathExtent);
images=NewImageList();
extent=(ssize_t) (read_info->scene+read_info->number_scenes);
for (scene=(ssize_t) read_info->scene; scene < (ssize_t) extent; scene++)
MagickStatusType
flags;
- PolicyDomain
- domain;
-
- PolicyRights
- rights;
-
/*
Determine image type from filename prefix or suffix (e.g. image.jpg).
*/
(void) SetImageInfo(read_info,0,exception);
(void) CopyMagickString(filename,read_info->filename,MagickPathExtent);
(void) CopyMagickString(magick,read_info->magick,MagickPathExtent);
- domain=CoderPolicyDomain;
- rights=ReadPolicyRights;
- if (IsRightsAuthorized(domain,rights,read_info->magick) == MagickFalse)
- {
- errno=EPERM;
- (void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
- "NotAuthorized","`%s'",read_info->filename);
- read_info=DestroyImageInfo(read_info);
- return((Image *) NULL);
- }
/*
Call appropriate image reader based on image type.
*/
sans_exception=DestroyExceptionInfo(sans_exception);
if (magick_info != (const MagickInfo *) NULL)
{
+ PolicyDomain
+ domain;
+
+ PolicyRights
+ rights;
+
+ domain=CoderPolicyDomain;
+ rights=ReadPolicyRights;
+ if (IsRightsAuthorized(domain,rights,magick_info->module) == MagickFalse)
+ {
+ errno=EPERM;
+ (void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
+ "NotAuthorized","`%s'",read_info->filename);
+ read_info=DestroyImageInfo(read_info);
+ return((Image *) NULL);
+ }
if (GetMagickEndianSupport(magick_info) == MagickFalse)
read_info->endian=UndefinedEndian;
else
}
}
if ((magick_info != (const MagickInfo *) NULL) &&
- (GetMagickSeekableStream(magick_info) != MagickFalse))
+ (GetMagickDecoderSeekableStream(magick_info) != MagickFalse))
{
MagickBooleanType
status;
}
else
{
+ MagickBooleanType
+ status;
+
delegate_info=GetDelegateInfo(read_info->magick,(char *) NULL,exception);
if (delegate_info == (const DelegateInfo *) NULL)
{
*read_info->filename='\0';
if (GetDelegateThreadSupport(delegate_info) == MagickFalse)
LockSemaphoreInfo(delegate_info->semaphore);
- (void) InvokeDelegate(read_info,image,read_info->magick,(char *) NULL,
+ status=InvokeDelegate(read_info,image,read_info->magick,(char *) NULL,
exception);
if (GetDelegateThreadSupport(delegate_info) == MagickFalse)
UnlockSemaphoreInfo(delegate_info->semaphore);
image=DestroyImageList(image);
read_info->temporary=MagickTrue;
- (void) SetImageInfo(read_info,0,exception);
+ if (status != MagickFalse)
+ (void) SetImageInfo(read_info,0,exception);
magick_info=GetMagickInfo(read_info->magick,exception);
if ((magick_info == (const MagickInfo *) NULL) ||
(GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL))
const StringInfo
*profile;
+ ssize_t
+ option_type;
+
next->taint=MagickFalse;
GetPathComponent(magick_filename,MagickPath,magick_path);
if (*magick_path == '\0' && *next->magick == '\0')
flags=ParseGeometry(value,&geometry_info);
if (geometry_info.sigma != 0)
next->resolution.x=geometry_info.rho/geometry_info.sigma;
+ if (strchr(value,',') != (char *) NULL)
+ next->resolution.x=geometry_info.rho+geometry_info.sigma/1000.0;
(void) DeleteImageProperty(next,"exif:XResolution");
}
value=GetImageProperty(next,"exif:YResolution",exception);
flags=ParseGeometry(value,&geometry_info);
if (geometry_info.sigma != 0)
next->resolution.y=geometry_info.rho/geometry_info.sigma;
+ if (strchr(value,',') != (char *) NULL)
+ next->resolution.y=geometry_info.rho+geometry_info.sigma/1000.0;
(void) DeleteImageProperty(next,"exif:YResolution");
}
value=GetImageProperty(next,"tiff:ResolutionUnit",exception);
value=GetImageProperty(next,"exif:ResolutionUnit",exception);
if (value != (char *) NULL)
{
- next->units=(ResolutionType) (StringToLong(value)-1);
+ option_type=ParseCommandOption(MagickResolutionOptions,MagickFalse,
+ value);
+ if (option_type >= 0)
+ next->units=(ResolutionType) option_type;
(void) DeleteImageProperty(next,"exif:ResolutionUnit");
(void) DeleteImageProperty(next,"tiff:ResolutionUnit");
}
}
option=GetImageOption(image_info,"dispose");
if (option != (const char *) NULL)
- next->dispose=(DisposeType) ParseCommandOption(MagickDisposeOptions,
- MagickFalse,option);
+ {
+ option_type=ParseCommandOption(MagickDisposeOptions,MagickFalse,
+ option);
+ if (option_type >= 0)
+ next->dispose=(DisposeType) option_type;
+ }
if (read_info->verbose != MagickFalse)
(void) IdentifyImage(next,stderr,MagickFalse,exception);
image=next;
sans=AcquireExceptionInfo();
(void) SetImageInfo(read_info,0,sans);
sans=DestroyExceptionInfo(sans);
- if (read_info->number_scenes == 0)
+ if (read_info->number_scenes != 0)
{
+ (void) CopyMagickString(read_filename,read_info->filename,
+ MagickPathExtent);
+ images=NewImageList();
+ extent=(ssize_t) (read_info->scene+read_info->number_scenes);
+ scene=(ssize_t) read_info->scene;
+ for ( ; scene < (ssize_t) extent; scene++)
+ {
+ (void) InterpretImageFilename(image_info,(Image *) NULL,
+ read_filename,(int) scene,read_info->filename,exception);
+ image=ReadImage(read_info,exception);
+ if (image == (Image *) NULL)
+ continue;
+ AppendImageToList(&images,image);
+ }
read_info=DestroyImageInfo(read_info);
- return(ReadImage(image_info,exception));
+ return(images);
}
- (void) CopyMagickString(read_filename,read_info->filename,MagickPathExtent);
- images=NewImageList();
- extent=(ssize_t) (read_info->scene+read_info->number_scenes);
- for (scene=(ssize_t) read_info->scene; scene < (ssize_t) extent; scene++)
- {
- (void) InterpretImageFilename(image_info,(Image *) NULL,read_filename,
- (int) scene,read_info->filename,exception);
- image=ReadImage(read_info,exception);
- if (image == (Image *) NULL)
- continue;
- AppendImageToList(&images,image);
- }
- read_info=DestroyImageInfo(read_info);
- return(images);
}
+ (void) CopyMagickString(read_info->filename,filename,MagickPathExtent);
image=ReadImage(read_info,exception);
read_info=DestroyImageInfo(read_info);
return(image);
status,
temporary;
- PolicyDomain
- domain;
-
- PolicyRights
- rights;
-
/*
Determine image type from filename prefix or suffix (e.g. image.jpg).
*/
assert(exception != (ExceptionInfo *) NULL);
sans_exception=AcquireExceptionInfo();
write_info=CloneImageInfo(image_info);
- (void) CopyMagickString(write_info->filename,image->filename,MagickPathExtent);
+ (void) CopyMagickString(write_info->filename,image->filename,
+ MagickPathExtent);
(void) SetImageInfo(write_info,1,sans_exception);
if (*write_info->magick == '\0')
(void) CopyMagickString(write_info->magick,image->magick,MagickPathExtent);
(void) CopyMagickString(filename,image->filename,MagickPathExtent);
- (void) CopyMagickString(image->filename,write_info->filename,MagickPathExtent);
- domain=CoderPolicyDomain;
- rights=WritePolicyRights;
- if (IsRightsAuthorized(domain,rights,write_info->magick) == MagickFalse)
- {
- sans_exception=DestroyExceptionInfo(sans_exception);
- write_info=DestroyImageInfo(write_info);
- errno=EPERM;
- ThrowBinaryException(PolicyError,"NotAuthorized",filename);
- }
+ (void) CopyMagickString(image->filename,write_info->filename,
+ MagickPathExtent);
/*
- Call appropriate image reader based on image type.
+ Call appropriate image writer based on image type.
*/
magick_info=GetMagickInfo(write_info->magick,sans_exception);
sans_exception=DestroyExceptionInfo(sans_exception);
if (magick_info != (const MagickInfo *) NULL)
{
+ PolicyDomain
+ domain;
+
+ PolicyRights
+ rights;
+
+ domain=CoderPolicyDomain;
+ rights=WritePolicyRights;
+ if (IsRightsAuthorized(domain,rights,magick_info->module) == MagickFalse)
+ {
+ write_info=DestroyImageInfo(write_info);
+ errno=EPERM;
+ ThrowBinaryException(PolicyError,"NotAuthorized",filename);
+ }
if (GetMagickEndianSupport(magick_info) == MagickFalse)
image->endian=UndefinedEndian;
else
(void) SyncImageProfiles(image);
DisassociateImageStream(image);
option=GetImageOption(image_info,"delegate:bimodal");
- if ((IfMagickTrue(IsStringTrue(option))) &&
+ if ((IsStringTrue(option) != MagickFalse) &&
(write_info->page == (char *) NULL) &&
(GetPreviousImageInList(image) == (Image *) NULL) &&
(GetNextImageInList(image) == (Image *) NULL) &&
- (IfMagickFalse(IsTaintImage(image))) )
+ (IsTaintImage(image) == MagickFalse) )
{
delegate_info=GetDelegateInfo(image->magick,write_info->magick,exception);
if ((delegate_info != (const DelegateInfo *) NULL) &&
status=MagickFalse;
temporary=MagickFalse;
if ((magick_info != (const MagickInfo *) NULL) &&
- (GetMagickSeekableStream(magick_info) != MagickFalse))
+ (GetMagickEncoderSeekableStream(magick_info) != MagickFalse))
{
char
image_filename[MagickPathExtent];
magick_info=GetMagickInfo(extension,exception);
else
magick_info=GetMagickInfo(image->magick,exception);
- (void) CopyMagickString(image->filename,filename,MagickPathExtent);
+ (void) CopyMagickString(image->filename,filename,
+ MagickPathExtent);
}
if ((magick_info == (const MagickInfo *) NULL) ||
(GetImageEncoder(magick_info) == (EncodeImageHandler *) NULL))
{
register Image
*next;
-
+
next=GetNextImageInList(p);
if (next == (Image *) NULL)
break;