13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/* 23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 43ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% IIIII DDDD EEEEE N N TTTTT IIIII FFFFF Y Y % 73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% I D D E NN N T I F Y Y % 83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% I D D EEE N N N T I FFF Y % 93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% I D D E N NN T I F Y % 103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% IIIII DDDD EEEEE N N T IIIII F Y % 113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% Identify an Image Format and Characteristics. % 143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% Software Design % 16de984cdc3631106b1cbbb8d3972b76a0fc27e8e8cristy% Cristy % 173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% September 1994 % 183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 207ce65e7125a4e1df1a274ce373c537a9df9c16cdCristy% Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization % 213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% dedicated to making software imaging solutions freely available. % 223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% You may not use this file except in compliance with the License. You may % 243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% obtain a copy of the License at % 253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% http://www.imagemagick.org/script/license.php % 273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% Unless required by applicable law or agreed to in writing, software % 293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% distributed under the License is distributed on an "AS IS" BASIS, % 303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % 313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% See the License for the specific language governing permissions and % 323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% limitations under the License. % 333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% The identify program describes the format and characteristics of one or more 373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% image files. It also reports if an image is incomplete or corrupt. The 383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% information returned includes the image number, the file name, the width and 393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% height of the image, whether the image is colormapped or not, the number of 403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% colors in the image, the number of bytes in the image, the format of the 413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% image (JPEG, PNM, etc.), and finally the number of seconds it took to read 423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% and process the image. Many more attributes are available with the verbose 433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% option. 443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/ 463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/* 483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Include declarations. 493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/ 504c08aed51c5899665ade97263692328eea4af106cristy#include "MagickWand/studio.h" 514c08aed51c5899665ade97263692328eea4af106cristy#include "MagickWand/MagickWand.h" 524c08aed51c5899665ade97263692328eea4af106cristy#include "MagickWand/mogrify-private.h" 53196372de602f3999bb9059f9f3c5756d3d8654c0cristy#include "MagickCore/string-private.h" 543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/* 563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy+ I d e n t i f y I m a g e C o m m a n d % 613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% IdentifyImageCommand() describes the format and characteristics of one or 673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% more image files. It will also report if an image is incomplete or corrupt. 683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% The information displayed includes the scene number, the file name, the 693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% width and height of the image, whether the image is colormapped or not, 703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% the number of colors in the image, the number of bytes in the image, the 713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% format of the image (JPEG, PNM, etc.), and finally the number of seconds 723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% it took to read and process the image. 733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% The format of the IdentifyImageCommand method is: 753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% MagickBooleanType IdentifyImageCommand(ImageInfo *image_info,int argc, 773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% char **argv,char **metadata,ExceptionInfo *exception) 783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% A description of each parameter follows: 803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% o image_info: the image info. 823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% o argc: the number of elements in the argument vector. 843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% o argv: A text array containing the command line arguments. 863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% o metadata: any metadata is returned here. 883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% o exception: return any errors or warnings in this structure. 903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/ 923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 933ed852eea50f9d4cd633efb8c2b054b8e33c253cristystatic MagickBooleanType IdentifyUsage(void) 943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ 953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy const char 963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy **p; 973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy static const char 993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *miscellaneous[]= 1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-debug events display copious debugging information", 1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-help print program options", 1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-list type print a list of supported option arguments", 1043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-log format format of debugging information", 1053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-version print version information", 1063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (char *) NULL 1073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy }, 108e48c6a917e8d2f5a1af59492e771f760c04a7824cristy *operators[]= 109e48c6a917e8d2f5a1af59492e771f760c04a7824cristy { 11017ada024a8d39285affcac96ff344f3142c41aadcristy "-channel mask set the image channel mask", 1110a09e9d7c5020869e171099665da2f2077cbaae8cristy "-grayscale method convert image to grayscale", 112e48c6a917e8d2f5a1af59492e771f760c04a7824cristy "-negate replace every pixel with its complementary color ", 113e48c6a917e8d2f5a1af59492e771f760c04a7824cristy (char *) NULL 114e48c6a917e8d2f5a1af59492e771f760c04a7824cristy }, 1153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *settings[]= 1163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 1173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-alpha option on, activate, off, deactivate, set, opaque, copy", 1183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy " transparent, extract, background, or shape", 1193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-antialias remove pixel-aliasing", 1203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-authenticate password", 1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy " decipher image with this password", 1221e61810417db04c4c5ea5975f6b85bf063da645fcristy "-clip clip along the first path from the 8BIM profile", 1231e61810417db04c4c5ea5975f6b85bf063da645fcristy "-clip-mask filename associate a clip mask with the image", 1241e61810417db04c4c5ea5975f6b85bf063da645fcristy "-clip-path id clip along a named path from the 8BIM profile", 1253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-colorspace type alternate image colorspace", 1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-crop geometry cut out a rectangular region of the image", 1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-define format:option", 1283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy " define one or more image format options", 1293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-density geometry horizontal and vertical density of the image", 1303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-depth value image depth", 131605e80d8c89290e0b3119577f7c1cc115ba530d3cristy "-endian type endianness (MSB or LSB) of the image", 1323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-extract geometry extract area from image", 13314154224e937198c540f38d146528c0cdc45d24dcristy "-features distance analyze image features (e.g. contrast, correlation)", 1343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-format \"string\" output formatted image characteristics", 1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-fuzz distance colors within this distance are considered equal", 136cd483f1d951479be76dd654c398b11c17de2e17ecristy "-gamma value of gamma correction", 1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-interlace type type of image interlacing scheme", 1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-interpolate method pixel color interpolation method", 1393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-limit type value pixel cache resource limit", 140e9252c26b8f1dcf9d41023fb5918c2ce5e1f01c0cristy "-matte store matte channel if the image has one", 141bd4a3c228c0e785517b8ab630b2cc6095373f710cristy "-moments report image moments", 1423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-monitor monitor progress", 1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-ping efficiently determine image attributes", 144a1b1486951e2507b7c645831dbcc8f10428d8917cristy "-precision value maximum number of significant digits to print", 1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-quiet suppress all warning messages", 146327030cbe756eb9aa6c63d0bdebfc7cf3b5f06a7cristy "-read-mask filename associate a read mask with the image", 1473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-regard-warnings pay attention to warning messages", 1483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-respect-parentheses settings remain in effect until parenthesis boundary", 1493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-sampling-factor geometry", 1503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy " horizontal and vertical sampling factor", 1513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-seed value seed a new sequence of pseudo-random numbers", 1523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-set attribute value set an image attribute", 1533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-size geometry width and height of image", 1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-strip strip image of all profiles and comments", 155045bd909148720f6ee8bc910eab96fa057b54a5fcristy "-unique display the number of unique colors in the image", 1563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-units type the units of image resolution", 1573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-verbose print detailed information about the image", 1583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "-virtual-pixel method", 1593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy " virtual pixel access method", 1603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (char *) NULL 1613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy }; 1623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1634f7a61361f38ef4d3eaae0c74b9964a57aee813acristy ListMagickVersion(stdout); 1643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf("Usage: %s [options ...] file [ [options ...] " 1653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "file ... ]\n",GetClientName()); 1663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf("\nImage Settings:\n"); 1673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy for (p=settings; *p != (char *) NULL; p++) 1683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf(" %s\n",*p); 169e48c6a917e8d2f5a1af59492e771f760c04a7824cristy (void) printf("\nImage Operators:\n"); 170e48c6a917e8d2f5a1af59492e771f760c04a7824cristy for (p=operators; *p != (char *) NULL; p++) 171e48c6a917e8d2f5a1af59492e771f760c04a7824cristy (void) printf(" %s\n",*p); 1723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf("\nMiscellaneous Options:\n"); 1733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy for (p=miscellaneous; *p != (char *) NULL; p++) 1743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf(" %s\n",*p); 1753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf( 176e5b39652d8d21bc3940d83b8d6088d4070a8a34aanthony "\nBy default, the image format of 'file' is determined by its magic\n"); 1773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf( 1783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "number. To specify a particular image format, precede the filename\n"); 1793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf( 1803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "with an image format name and a colon (i.e. ps:image) or specify the\n"); 1813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf( 1823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "image type as the filename suffix (i.e. image.ps). Specify 'file' as\n"); 1833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) printf("'-' for standard input or output.\n"); 1843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return(MagickFalse); 1853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 1863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1873ed852eea50f9d4cd633efb8c2b054b8e33c253cristyWandExport MagickBooleanType IdentifyImageCommand(ImageInfo *image_info, 1883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy int argc,char **argv,char **metadata,ExceptionInfo *exception) 1893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ 1903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define DestroyIdentify() \ 1913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ \ 1923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy DestroyImageStack(); \ 193bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy for (i=0; i < (ssize_t) argc; i++) \ 1943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]=DestroyString(argv[i]); \ 1953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv=(char **) RelinquishMagickMemory(argv); \ 1963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 1973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define ThrowIdentifyException(asperity,tag,option) \ 1983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ \ 199efe601ce9ea5ad34ad0e8ad6e61d9be9b148b2a3cristy (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \ 2003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy option); \ 2013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy DestroyIdentify(); \ 2023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return(MagickFalse); \ 2033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 2043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define ThrowIdentifyInvalidArgumentException(option,argument) \ 2053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ \ 2063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \ 207e5b39652d8d21bc3940d83b8d6088d4070a8a34aanthony "InvalidArgument","'%s': %s",option,argument); \ 2083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy DestroyIdentify(); \ 2093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return(MagickFalse); \ 2103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 2113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 2123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy const char 2133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *format, 2143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *option; 2153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 2163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Image 2173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *image; 2183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 2193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ImageStack 2203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image_stack[MaxImageStackDepth+1]; 2213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 2223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy MagickBooleanType 2233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy fire, 224ebbcfea9ab0a5066ff5f0b5257c9598ca77579d3cristy pend, 225ebbcfea9ab0a5066ff5f0b5257c9598ca77579d3cristy respect_parenthesis; 2263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 2273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy MagickStatusType 2283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy status; 2293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 230bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy register ssize_t 2313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i; 2323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 233bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy size_t 2343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy count; 2353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 2369d314ff2c17a77996c05413c2013880387e50f0ecristy ssize_t 2379d314ff2c17a77996c05413c2013880387e50f0ecristy j, 2389d314ff2c17a77996c05413c2013880387e50f0ecristy k; 2399d314ff2c17a77996c05413c2013880387e50f0ecristy 2403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy /* 2413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Set defaults. 2423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy */ 2433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy assert(image_info != (ImageInfo *) NULL); 244e1c94d9d25db6b0dd7a5028ffee31d1057855d73cristy assert(image_info->signature == MagickCoreSignature); 2453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (image_info->debug != MagickFalse) 2463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) LogMagickEvent(TraceEvent,GetMagickModule(),"..."); 2473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy assert(exception != (ExceptionInfo *) NULL); 2483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (argc == 2) 2493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy option=argv[1]; 2513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if ((LocaleCompare("version",option+1) == 0) || 2523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (LocaleCompare("-version",option+1) == 0)) 2533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 2544f7a61361f38ef4d3eaae0c74b9964a57aee813acristy ListMagickVersion(stdout); 255668f87ddf220ca4af92506cca2698f86695dfa51dirk return(MagickTrue); 2563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 2573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 2583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (argc < 2) 25913e61a1ac6772c75eac4825ebca144e22f636b6bcristy return(IdentifyUsage()); 2603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy count=0; 2613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy format=NULL; 2623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy j=1; 2633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy k=0; 2643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy NewImageStack(); 2653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy option=(char *) NULL; 2663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy pend=MagickFalse; 267ebbcfea9ab0a5066ff5f0b5257c9598ca77579d3cristy respect_parenthesis=MagickFalse; 2683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy status=MagickTrue; 2693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy /* 2703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Identify an image. 2713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy */ 2723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ReadCommandlLine(argc,&argv); 2733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy status=ExpandFilenames(&argc,&argv); 2743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (status == MagickFalse) 2753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(ResourceLimitError,"MemoryAllocationFailed", 2763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy GetExceptionMessage(errno)); 2773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image_info->ping=MagickTrue; 278bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy for (i=1; i < (ssize_t) argc; i++) 2793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 2803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy option=argv[i]; 2813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare(option,"(") == 0) 2823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 2833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy FireImageStack(MagickFalse,MagickTrue,pend); 2843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (k == MaxImageStackDepth) 2853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"ParenthesisNestedTooDeeply", 2863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy option); 2873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy PushImageStack(); 2883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy continue; 2893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 2903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare(option,")") == 0) 2913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 2923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy FireImageStack(MagickFalse,MagickTrue,MagickTrue); 2933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (k == 0) 2943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnableToParseExpression",option); 2953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy PopImageStack(); 2963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy continue; 2973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 298042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy if (IsCommandOption(option) == MagickFalse) 2993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy char 3013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *filename; 3023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 3033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Image 3043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *images; 3053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 3063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ImageInfo 3073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *identify_info; 3083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 3093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy /* 3103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Read input image. 3113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy */ 3123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy FireImageStack(MagickFalse,MagickFalse,pend); 3133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy identify_info=CloneImageInfo(image_info); 3143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy identify_info->verbose=MagickFalse; 3153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy filename=argv[i]; 316cee9711bbc334b5677d5ec4ea1cc70340d35ee35cristy if ((LocaleCompare(filename,"--") == 0) && (i < (ssize_t) (argc-1))) 3173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy filename=argv[++i]; 3183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (identify_info->ping != MagickFalse) 3191b58f25a8c2616ecdf2898ab358e1ee63d1b522ecristy images=PingImages(identify_info,filename,exception); 3203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy else 3211b58f25a8c2616ecdf2898ab358e1ee63d1b522ecristy images=ReadImages(identify_info,filename,exception); 3223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy identify_info=DestroyImageInfo(identify_info); 3233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy status&=(images != (Image *) NULL) && 3243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (exception->severity < ErrorException); 3253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (images == (Image *) NULL) 3263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy continue; 3273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy AppendImageStack(images); 3283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy FinalizeImageSettings(image_info,image,MagickFalse); 3290ccbde849cd582307bf57ffb41169dd8d9d44fe7dirk count=0; 3303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy for ( ; image != (Image *) NULL; image=GetNextImageInList(image)) 3313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (image->scene == 0) 3333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image->scene=count++; 3343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (format == (char *) NULL) 3353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 336a403727ea73ef5840a476a3c4614445807f42827cristy (void) IdentifyImage(image,stdout,image_info->verbose,exception); 3373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy continue; 3383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 3393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (metadata != (char **) NULL) 3403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy char 3423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *text; 3433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 344018f07f7333b25743d0afff892450cebdb905c1acristy text=InterpretImageProperties(image_info,image,format,exception); 3453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (text == (char *) NULL) 3463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(ResourceLimitError, 3473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "MemoryAllocationFailed",GetExceptionMessage(errno)); 3483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) ConcatenateString(&(*metadata),text); 3493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy text=DestroyString(text); 3503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 3513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 3523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy RemoveAllImageStack(); 3533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy continue; 3543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 3553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy pend=image != (Image *) NULL ? MagickTrue : MagickFalse; 3563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy switch (*(option+1)) 3573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'a': 3593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("alpha",option+1) == 0) 3613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 362bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 3633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy type; 3643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 3653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 3663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 3673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 368bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 3693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 37077ffd93537728a06355eac7fcc2cc39326e162a7cristy type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse, 37177ffd93537728a06355eac7fcc2cc39326e162a7cristy argv[i]); 3723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (type < 0) 37377ffd93537728a06355eac7fcc2cc39326e162a7cristy ThrowIdentifyException(OptionError, 37477ffd93537728a06355eac7fcc2cc39326e162a7cristy "UnrecognizedAlphaChannelOption",argv[i]); 3753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 3763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 3773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("antialias",option+1) == 0) 3783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 3793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("authenticate",option+1) == 0) 3803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 3823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 3833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 384e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 3853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 3863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 3873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 3883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 3893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 3903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'c': 3913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("cache",option+1) == 0) 3933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 3943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 3953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 3963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 397bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 3983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 3993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 4003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 4013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 4033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("channel",option+1) == 0) 4043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 405bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 4063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy channel; 4073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 4083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 4093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 411e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 4123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 4133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy channel=ParseChannelOption(argv[i]); 4143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (channel < 0) 4153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedChannelType", 4163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 4173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 4191e61810417db04c4c5ea5975f6b85bf063da645fcristy if (LocaleCompare("clip",option+1) == 0) 4201e61810417db04c4c5ea5975f6b85bf063da645fcristy break; 4211e61810417db04c4c5ea5975f6b85bf063da645fcristy if (LocaleCompare("clip-mask",option+1) == 0) 4221e61810417db04c4c5ea5975f6b85bf063da645fcristy { 4231e61810417db04c4c5ea5975f6b85bf063da645fcristy if (*option == '+') 4241e61810417db04c4c5ea5975f6b85bf063da645fcristy break; 4251e61810417db04c4c5ea5975f6b85bf063da645fcristy i++; 426e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 4271e61810417db04c4c5ea5975f6b85bf063da645fcristy ThrowIdentifyException(OptionError,"MissingArgument",option); 4281e61810417db04c4c5ea5975f6b85bf063da645fcristy break; 4291e61810417db04c4c5ea5975f6b85bf063da645fcristy } 4301e61810417db04c4c5ea5975f6b85bf063da645fcristy if (LocaleCompare("clip-path",option+1) == 0) 4311e61810417db04c4c5ea5975f6b85bf063da645fcristy { 4321e61810417db04c4c5ea5975f6b85bf063da645fcristy i++; 433e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 4341e61810417db04c4c5ea5975f6b85bf063da645fcristy ThrowIdentifyException(OptionError,"MissingArgument",option); 4351e61810417db04c4c5ea5975f6b85bf063da645fcristy break; 4361e61810417db04c4c5ea5975f6b85bf063da645fcristy } 4373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("colorspace",option+1) == 0) 4383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 439bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 4403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy colorspace; 4413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 4423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 4433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 445e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 4463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 447042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy colorspace=ParseCommandOption(MagickColorspaceOptions, 4483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy MagickFalse,argv[i]); 4493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (colorspace < 0) 4503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedColorspace", 4513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 4523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 4543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("crop",option+1) == 0) 4553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 4563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 4573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 459e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 4603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 4613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 4623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 4633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image_info->ping=MagickFalse; 4643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 4662287975e02162155f1500d91ccce6e0fde5de7c8cristy if (LocaleCompare("concurrent",option+1) == 0) 4672287975e02162155f1500d91ccce6e0fde5de7c8cristy break; 4683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 4693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 4703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'd': 4713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 4723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("debug",option+1) == 0) 4733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 474bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 4753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy event; 4763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 4773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 4783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 480bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 4813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 482042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy event=ParseCommandOption(MagickLogEventOptions,MagickFalse,argv[i]); 4833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (event < 0) 4843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedEventType", 4853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 4863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) SetLogEventMask(argv[i]); 4873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 4883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 4893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("define",option+1) == 0) 4903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 4913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 492bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 4933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 4943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 4953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 4963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy const char 4973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *define; 4983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 4993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy define=GetImageOption(image_info,argv[i]); 5003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (define == (const char *) NULL) 5013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"NoSuchOption",argv[i]); 5023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 504fc0f4c58bda6cf6dcc930ac6f59470d45572d981cristy if (LocaleNCompare("identify:locate",argv[i],15) == 0) 5057d8529e089faadb7c096e4514a222623d84eb093cristy image_info->ping=MagickFalse; 5063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 5083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("density",option+1) == 0) 5093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 5103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 5113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 513bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 5143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 5153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 5163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 5173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 5193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("depth",option+1) == 0) 5203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 5213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 5223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 524bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 5253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 5263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 5273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 5283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 5302287975e02162155f1500d91ccce6e0fde5de7c8cristy if (LocaleCompare("duration",option+1) == 0) 5312287975e02162155f1500d91ccce6e0fde5de7c8cristy { 5322287975e02162155f1500d91ccce6e0fde5de7c8cristy if (*option == '+') 5332287975e02162155f1500d91ccce6e0fde5de7c8cristy break; 5342287975e02162155f1500d91ccce6e0fde5de7c8cristy i++; 535e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 5362287975e02162155f1500d91ccce6e0fde5de7c8cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 5372287975e02162155f1500d91ccce6e0fde5de7c8cristy if (IsGeometry(argv[i]) == MagickFalse) 5382287975e02162155f1500d91ccce6e0fde5de7c8cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 5392287975e02162155f1500d91ccce6e0fde5de7c8cristy break; 5402287975e02162155f1500d91ccce6e0fde5de7c8cristy } 5413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 5423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 5431e61810417db04c4c5ea5975f6b85bf063da645fcristy case 'e': 544605e80d8c89290e0b3119577f7c1cc115ba530d3cristy { 545605e80d8c89290e0b3119577f7c1cc115ba530d3cristy if (LocaleCompare("endian",option+1) == 0) 546605e80d8c89290e0b3119577f7c1cc115ba530d3cristy { 547605e80d8c89290e0b3119577f7c1cc115ba530d3cristy ssize_t 548605e80d8c89290e0b3119577f7c1cc115ba530d3cristy endian; 549605e80d8c89290e0b3119577f7c1cc115ba530d3cristy 550605e80d8c89290e0b3119577f7c1cc115ba530d3cristy if (*option == '+') 551605e80d8c89290e0b3119577f7c1cc115ba530d3cristy break; 552605e80d8c89290e0b3119577f7c1cc115ba530d3cristy i++; 553e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 554605e80d8c89290e0b3119577f7c1cc115ba530d3cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 555605e80d8c89290e0b3119577f7c1cc115ba530d3cristy endian=ParseCommandOption(MagickEndianOptions,MagickFalse, 556605e80d8c89290e0b3119577f7c1cc115ba530d3cristy argv[i]); 557605e80d8c89290e0b3119577f7c1cc115ba530d3cristy if (endian < 0) 558605e80d8c89290e0b3119577f7c1cc115ba530d3cristy ThrowIdentifyException(OptionError,"UnrecognizedEndianType", 559605e80d8c89290e0b3119577f7c1cc115ba530d3cristy argv[i]); 560605e80d8c89290e0b3119577f7c1cc115ba530d3cristy break; 561605e80d8c89290e0b3119577f7c1cc115ba530d3cristy } 562605e80d8c89290e0b3119577f7c1cc115ba530d3cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 563605e80d8c89290e0b3119577f7c1cc115ba530d3cristy } 5643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'f': 5653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 566549a37e6cd4593dcb997230cd3584c5afead5552cristy if (LocaleCompare("features",option+1) == 0) 567cd483f1d951479be76dd654c398b11c17de2e17ecristy { 568cd483f1d951479be76dd654c398b11c17de2e17ecristy if (*option == '+') 569cd483f1d951479be76dd654c398b11c17de2e17ecristy break; 570cd483f1d951479be76dd654c398b11c17de2e17ecristy i++; 571e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 572cd483f1d951479be76dd654c398b11c17de2e17ecristy ThrowIdentifyException(OptionError,"MissingArgument",option); 573cd483f1d951479be76dd654c398b11c17de2e17ecristy if (IsGeometry(argv[i]) == MagickFalse) 574cd483f1d951479be76dd654c398b11c17de2e17ecristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 575cd483f1d951479be76dd654c398b11c17de2e17ecristy break; 576cd483f1d951479be76dd654c398b11c17de2e17ecristy } 5773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("format",option+1) == 0) 5783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 5793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy format=(char *) NULL; 5803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 5813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 583bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 5843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 5853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy format=argv[i]; 5863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 5883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("fuzz",option+1) == 0) 5893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 5903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 5913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 593e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 5943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 5953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 5963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 5973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 5983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 5993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 6003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 6013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'g': 6023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 6033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("gamma",option+1) == 0) 6043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 6053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 606e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 6073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 6083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 6093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 6103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 6113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 6120a09e9d7c5020869e171099665da2f2077cbaae8cristy if (LocaleCompare("grayscale",option+1) == 0) 6130a09e9d7c5020869e171099665da2f2077cbaae8cristy { 6140a09e9d7c5020869e171099665da2f2077cbaae8cristy ssize_t 6150a09e9d7c5020869e171099665da2f2077cbaae8cristy method; 6160a09e9d7c5020869e171099665da2f2077cbaae8cristy 6170a09e9d7c5020869e171099665da2f2077cbaae8cristy if (*option == '+') 6180a09e9d7c5020869e171099665da2f2077cbaae8cristy break; 6190a09e9d7c5020869e171099665da2f2077cbaae8cristy i++; 620e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 6210a09e9d7c5020869e171099665da2f2077cbaae8cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 6220a09e9d7c5020869e171099665da2f2077cbaae8cristy method=ParseCommandOption(MagickPixelIntensityOptions,MagickFalse, 6230a09e9d7c5020869e171099665da2f2077cbaae8cristy argv[i]); 6240a09e9d7c5020869e171099665da2f2077cbaae8cristy if (method < 0) 6250a09e9d7c5020869e171099665da2f2077cbaae8cristy ThrowIdentifyException(OptionError,"UnrecognizedIntensityMethod", 6260a09e9d7c5020869e171099665da2f2077cbaae8cristy argv[i]); 6270a09e9d7c5020869e171099665da2f2077cbaae8cristy break; 6280a09e9d7c5020869e171099665da2f2077cbaae8cristy } 6290a09e9d7c5020869e171099665da2f2077cbaae8cristy if (LocaleCompare("green-primary",option+1) == 0) 6300a09e9d7c5020869e171099665da2f2077cbaae8cristy { 6310a09e9d7c5020869e171099665da2f2077cbaae8cristy if (*option == '+') 6320a09e9d7c5020869e171099665da2f2077cbaae8cristy break; 6330a09e9d7c5020869e171099665da2f2077cbaae8cristy i++; 634e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 6350a09e9d7c5020869e171099665da2f2077cbaae8cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 6360a09e9d7c5020869e171099665da2f2077cbaae8cristy if (IsGeometry(argv[i]) == MagickFalse) 6370a09e9d7c5020869e171099665da2f2077cbaae8cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 6380a09e9d7c5020869e171099665da2f2077cbaae8cristy break; 6390a09e9d7c5020869e171099665da2f2077cbaae8cristy } 6403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 6413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 6423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'h': 6433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 6443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if ((LocaleCompare("help",option+1) == 0) || 6453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (LocaleCompare("-help",option+1) == 0)) 6463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return(IdentifyUsage()); 6473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 6483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 6493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'i': 6503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 6513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("interlace",option+1) == 0) 6523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 653bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 6543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy interlace; 6553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 6563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 6573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 6583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 659bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 6603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 661042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy interlace=ParseCommandOption(MagickInterlaceOptions,MagickFalse, 6623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 6633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (interlace < 0) 6643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError, 6653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "UnrecognizedInterlaceType",argv[i]); 6663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 6673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 6683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("interpolate",option+1) == 0) 6693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 670bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 6713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy interpolate; 6723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 6733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 6743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 6753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 676bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 6773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 678042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy interpolate=ParseCommandOption(MagickInterpolateOptions,MagickFalse, 6793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 6803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (interpolate < 0) 6813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError, 6823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "UnrecognizedInterpolateMethod",argv[i]); 6833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 6843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 6853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 6863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 6873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'l': 6883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 6893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("limit",option+1) == 0) 6903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 6913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy char 6923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *p; 6933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 6943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy double 6953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy value; 6963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 697bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 6983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy resource; 6993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 7003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 7013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 7023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 703bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 7043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 705042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy resource=ParseCommandOption(MagickResourceOptions,MagickFalse, 7063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 7073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (resource < 0) 7083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedResourceType", 7093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 7103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 711bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 7123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 713dbdd0e35efc03c9bccda644f5407db38b7c17eeccristy value=StringToDouble(argv[i],&p); 714da16f16767eb31921af855f17bda465fffc4e000cristy (void) value; 7153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if ((p == argv[i]) && (LocaleCompare("unlimited",argv[i]) != 0)) 7163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 7173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 7183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 7193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("list",option+1) == 0) 7203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 721bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 7223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy list; 7233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 7243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 7253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 7263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 727bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 7283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 729042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy list=ParseCommandOption(MagickListOptions,MagickFalse,argv[i]); 7303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (list < 0) 7313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedListType", 7323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 733aeb2cbc4eb61cc6a04744db1dc52f5319c466e29cristy status=MogrifyImageInfo(image_info,(int) (i-j+1),(const char **) 7343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv+j,exception); 7353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy DestroyIdentify(); 73632ce2391bb7051ac53c7c3c25d3ad8f41836824dcristy return(status == 0 ? MagickTrue : MagickFalse); 7373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 7383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("log",option+1) == 0) 7393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 7403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 7413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 7423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 743bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if ((i == (ssize_t) argc) || 7443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (strchr(argv[i],'%') == (char *) NULL)) 7453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 7463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 7473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 7483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 7493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 7503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'm': 7513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 7525048d30ffd6670a4b4c9986bbcb46b228afdd884cristy if (LocaleCompare("mask",option+1) == 0) 7535048d30ffd6670a4b4c9986bbcb46b228afdd884cristy { 7545048d30ffd6670a4b4c9986bbcb46b228afdd884cristy if (*option == '+') 7555048d30ffd6670a4b4c9986bbcb46b228afdd884cristy break; 7565048d30ffd6670a4b4c9986bbcb46b228afdd884cristy i++; 757e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 7585048d30ffd6670a4b4c9986bbcb46b228afdd884cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 7595048d30ffd6670a4b4c9986bbcb46b228afdd884cristy break; 7605048d30ffd6670a4b4c9986bbcb46b228afdd884cristy } 7613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("matte",option+1) == 0) 7623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 763e444b04b07c0777f3059c1cd0a897ba90bbb0d45cristy if (LocaleCompare("moments",option+1) == 0) 764d12341f93d69d6eaea921232a7662755226ee453cristy break; 7653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("monitor",option+1) == 0) 7663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 7673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 7683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 769e48c6a917e8d2f5a1af59492e771f760c04a7824cristy case 'n': 770e48c6a917e8d2f5a1af59492e771f760c04a7824cristy { 771e48c6a917e8d2f5a1af59492e771f760c04a7824cristy if (LocaleCompare("negate",option+1) == 0) 772e48c6a917e8d2f5a1af59492e771f760c04a7824cristy break; 773e48c6a917e8d2f5a1af59492e771f760c04a7824cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 774e48c6a917e8d2f5a1af59492e771f760c04a7824cristy } 7753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'p': 7763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 7773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("ping",option+1) == 0) 7783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 779a1b1486951e2507b7c645831dbcc8f10428d8917cristy if (LocaleCompare("precision",option+1) == 0) 780a1b1486951e2507b7c645831dbcc8f10428d8917cristy { 781a1b1486951e2507b7c645831dbcc8f10428d8917cristy if (*option == '+') 782a1b1486951e2507b7c645831dbcc8f10428d8917cristy break; 783a1b1486951e2507b7c645831dbcc8f10428d8917cristy i++; 784e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 785a1b1486951e2507b7c645831dbcc8f10428d8917cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 786a1b1486951e2507b7c645831dbcc8f10428d8917cristy if (IsGeometry(argv[i]) == MagickFalse) 787a1b1486951e2507b7c645831dbcc8f10428d8917cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 788a1b1486951e2507b7c645831dbcc8f10428d8917cristy break; 789a1b1486951e2507b7c645831dbcc8f10428d8917cristy } 7903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 7913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 7923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'q': 7933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 7943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("quiet",option+1) == 0) 7953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 7963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 7973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 7983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'r': 7993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("regard-warnings",option+1) == 0) 8013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleNCompare("respect-parentheses",option+1,17) == 0) 8033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy respect_parenthesis=(*option == '-') ? MagickTrue : MagickFalse; 8053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 8083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 's': 8103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("sampling-factor",option+1) == 0) 8123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 8143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 816bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 8173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 8183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 8193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 8203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("seed",option+1) == 0) 8233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 8253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 827e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 8283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 8293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 8303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 8313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("set",option+1) == 0) 8343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 836bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 8373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 8383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 8393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 841bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 8423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 8433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("size",option+1) == 0) 8463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 8483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 850bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 8513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 8523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 8533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 8543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("strip",option+1) == 0) 8573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("support",option+1) == 0) 8593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 8613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 863bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy if (i == (ssize_t) argc) 8643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 8653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (IsGeometry(argv[i]) == MagickFalse) 8663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyInvalidArgumentException(option,argv[i]); 8673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 8703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'u': 8723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 873045bd909148720f6ee8bc910eab96fa057b54a5fcristy if (LocaleCompare("unique",option+1) == 0) 874045bd909148720f6ee8bc910eab96fa057b54a5fcristy break; 8753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("units",option+1) == 0) 8763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 877bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 8783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy units; 8793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 8803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 8813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 883e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 8843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 885042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy units=ParseCommandOption(MagickResolutionOptions,MagickFalse, 8863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 8873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (units < 0) 8883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedUnitsType", 8893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 8903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 8933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 8943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case 'v': 8953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 8963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("verbose",option+1) == 0) 8973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 8983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (LocaleCompare("virtual-pixel",option+1) == 0) 8993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 900bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy ssize_t 9013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy method; 9023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 9033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (*option == '+') 9043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 9053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy i++; 906e81f552f8ca2fc16632bd9830db3f93af07d514ccristy if (i == (ssize_t) argc) 9073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingArgument",option); 908042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy method=ParseCommandOption(MagickVirtualPixelOptions,MagickFalse, 9093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy argv[i]); 9103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (method < 0) 9113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError, 9123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy "UnrecognizedVirtualPixelMethod",argv[i]); 9133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 9143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 9153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 9163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 9173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy case '?': 9183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy break; 9193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy default: 9203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnrecognizedOption",option) 9213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 922042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy fire=(GetCommandOptionFlags(MagickCommandOptions,MagickFalse,option) & 923042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy FireOptionFlag) == 0 ? MagickFalse : MagickTrue; 9243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (fire != MagickFalse) 9253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy FireImageStack(MagickFalse,MagickTrue,MagickTrue); 9263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 9273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (k != 0) 9283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"UnbalancedParenthesis",argv[i]); 929cee9711bbc334b5677d5ec4ea1cc70340d35ee35cristy if (i != (ssize_t) argc) 9303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ThrowIdentifyException(OptionError,"MissingAnImageFilename",argv[i]); 9313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy DestroyIdentify(); 9323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return(status != 0 ? MagickTrue : MagickFalse); 9333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 934