From 24aa882bb8f0a8555253f77fc9ad8cb12fcb8c05 Mon Sep 17 00:00:00 2001 From: anthony Date: Sun, 11 Mar 2012 00:56:06 +0000 Subject: [PATCH] Fix for -verbose setting and other 'boolean' type settings --- MagickCore/option.c | 6 +- MagickWand/magick-cli.c | 82 +++++++++++++++----- MagickWand/operation.c | 161 ++++++++++++++++++++-------------------- 3 files changed, 147 insertions(+), 102 deletions(-) diff --git a/MagickCore/option.c b/MagickCore/option.c index 449818d58..884e45ac5 100644 --- a/MagickCore/option.c +++ b/MagickCore/option.c @@ -451,7 +451,7 @@ static const OptionInfo { "+liquid-rescale", 1L, DeprecateOptionFlag, MagickTrue }, { "-liquid-rescale", 1L, SimpleOperatorOptionFlag, MagickFalse }, { "+list", 0L, DeprecateOptionFlag, MagickTrue }, - { "-list", 1L, GlobalOptionFlag | ImageInfoOptionFlag, MagickFalse }, + { "-list", 1L, SpecialOptionFlag, MagickFalse }, { "+log", 0L, DeprecateOptionFlag, MagickFalse }, { "-log", 1L, GlobalOptionFlag, MagickFalse }, { "+loop", 0L, ImageInfoOptionFlag, MagickFalse }, @@ -2017,7 +2017,7 @@ MagickExport const OptionInfo *GetCommandOptionInfo(const char *value) static ssize_t table_size = 0; - register unsigned int + register int i,l,h; assert(value != (char *) NULL); @@ -2031,7 +2031,7 @@ MagickExport const OptionInfo *GetCommandOptionInfo(const char *value) if ( LocaleCompare(value,option_info[i].mnemonic) == 0 ) l=i; table_size = i; - return( &option_info[(l>=0?l:i)] ); + return( &option_info[(l>=0)?l:i] ); } /* faster binary search of command table, now that its length is known */ diff --git a/MagickWand/magick-cli.c b/MagickWand/magick-cli.c index cba72beea..37bb16f20 100644 --- a/MagickWand/magick-cli.c +++ b/MagickWand/magick-cli.c @@ -59,7 +59,9 @@ /* verbose debugging, 1 - option type 2 - source of option - 3 - mnemonic lookup */ + 3 - mnemonic lookup + 4 - output options/artifacts +*/ #define MagickCommandDebug 0 #define ThrowFileException(exception,severity,tag,context) \ @@ -72,6 +74,43 @@ tag == (const char *) NULL ? "unknown" : tag,"`%s': %s",context,message); \ message=DestroyString(message); \ } + +#if MagickCommandDebug >= 4 +static void OutputOptions(ImageInfo *image_info) +{ + const char + *option, + *value; + + (void) FormatLocaleFile(stdout," Image_Info Options:\n"); + ResetImageOptionIterator(image_info); + while ((option=GetNextImageOption(image_info)) != (const char *) NULL ) { + (void) FormatLocaleFile(stdout," %s: ",option); + value=GetImageOption(image_info,option); + if (value != (const char *) NULL) + (void) FormatLocaleFile(stdout,"%s\n",value); + } + ResetImageOptionIterator(image_info); +} + +static void OutputArtifacts(Image *image) +{ + const char + *artifact, + *value; + + (void) FormatLocaleFile(stdout," Image Artifacts:\n"); + ResetImageArtifactIterator(image); + while ((artifact=GetNextImageArtifact(image)) != (const char *) NULL ) { + (void) FormatLocaleFile(stdout," %s: ",artifact); + value=GetImageArtifact(image,artifact); + if (value != (const char *) NULL) + (void) FormatLocaleFile(stdout,"%s\n",value); + } + ResetImageArtifactIterator(image); +} +#endif + /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -197,22 +236,18 @@ WandExport void ProcessScriptOptions(MagickCLI *cli_wand,int argc,char **argv, #if MagickCommandDebug (void) FormatLocaleFile(stderr, "Script Non-Option: \"%s\"\n", option); #endif - if ( IsCommandOption(option) == MagickFalse) { + if ( IsCommandOption(option) == MagickFalse) /* non-option -- treat as a image read */ CLISpecialOperator(cli_wand,"-read",option); - count = 0; - } else CLIWandExceptionBreak(OptionFatalError,"UnrecognizedOption",option); - - if ( CLICatchException(cli_wand, MagickFalse) != MagickFalse ) - break; - continue; + count = 0; + goto next_token; } if ( count >= 1 ) { if( GetScriptToken(token_info) == MagickFalse ) - CLIWandExceptionBreak(OptionFatalError,"MissingArgument",option); + CLIWandException(OptionFatalError,"MissingArgument",option); CloneString(&arg1,token_info->token); } else @@ -247,7 +282,7 @@ WandExport void ProcessScriptOptions(MagickCLI *cli_wand,int argc,char **argv, if ( (option_type & SettingOptionFlags) != 0 ) { CLISettingOptionInfo(cli_wand, option, arg1); - // FUTURE: Sync Specific Settings into Images + // FUTURE: Sync Specific Settings into Image Properities (not global) } if ( (option_type & SimpleOperatorOptionFlag) != 0) @@ -256,6 +291,12 @@ WandExport void ProcessScriptOptions(MagickCLI *cli_wand,int argc,char **argv, if ( (option_type & ListOperatorOptionFlag) != 0 ) CLIListOperatorImages(cli_wand, option, arg1, arg2); +next_token: +#if MagickCommandDebug >= 4 + OutputOptions(cli_wand->wand.image_info); + if ( cli_wand->wand.images != (Image *)NULL ) + OutputArtifacts(cli_wand->wand.images); +#endif if ( CLICatchException(cli_wand, MagickFalse) != MagickFalse ) break; } @@ -396,18 +437,13 @@ WandExport int ProcessCommandOptions(MagickCLI *cli_wand, int argc, (void) FormatLocaleFile(stderr, "CLI Non-Option: \"%s\"\n", option); #endif if ( ( IsCommandOption(option) == MagickFalse ) && - ( (process_flags & ProcessNonOptionImageRead) != 0 ) ) { + ( (process_flags & ProcessNonOptionImageRead) != 0 ) ) /* non-option -- treat as a image read */ CLISpecialOperator(cli_wand,"-read",option); - count = 0; - } else if ( (process_flags & ProcessUnknownOptionError) != 0 ) CLIWandException(OptionFatalError,"UnrecognizedOption",option); - - if ( CLICatchException(cli_wand, MagickFalse) != MagickFalse ) - return(i+1); - - continue; + count = 0; + goto next_argument; } if ( (option_type & DeprecateOptionFlag) != 0 ) { @@ -419,7 +455,7 @@ WandExport int ProcessCommandOptions(MagickCLI *cli_wand, int argc, CLIWandException(OptionFatalError,"MissingArgument",option); if ( CLICatchException(cli_wand, MagickFalse) != MagickFalse ) return(end); - continue; /* no arguments unable to proceed */ + goto next_argument; /* no more arguments unable to proceed */ } arg1 = ( count >= 1 ) ? argv[i+1] : (char *)NULL; @@ -447,7 +483,7 @@ WandExport int ProcessCommandOptions(MagickCLI *cli_wand, int argc, if ( (option_type & SettingOptionFlags) != 0 ) { CLISettingOptionInfo(cli_wand, option, arg1); - // FUTURE: Sync Specific Settings into Images + // FUTURE: Sync Specific Settings into Image Properities (not global) } if ( (option_type & SimpleOperatorOptionFlag) != 0) @@ -456,6 +492,12 @@ WandExport int ProcessCommandOptions(MagickCLI *cli_wand, int argc, if ( (option_type & ListOperatorOptionFlag) != 0 ) CLIListOperatorImages(cli_wand, option, arg1, arg2); +next_argument: +#if MagickCommandDebug >= 4 + OutputOptions(cli_wand->wand.image_info); + if ( cli_wand->wand.images != (Image *)NULL ) + OutputArtifacts(cli_wand->wand.images); +#endif if ( CLICatchException(cli_wand, MagickFalse) != MagickFalse ) return(i+count); } diff --git a/MagickWand/operation.c b/MagickWand/operation.c index 4a30a5081..45f48696e 100644 --- a/MagickWand/operation.c +++ b/MagickWand/operation.c @@ -574,7 +574,7 @@ WandExport MagickBooleanType CLICatchException(MagickCLI *cli_wand, % The format of the CLISettingOptionInfo method is: % % void CLISettingOptionInfo(MagickCLI *cli_wand, -% const char *option, const char *arg) +% const char *option, const char *arg1) % % A description of each parameter follows: % @@ -582,7 +582,7 @@ WandExport MagickBooleanType CLICatchException(MagickCLI *cli_wand, % % o option: The option string to be set % -% o arg: The single argument used to set this option. +% o arg1: The single argument used to set this option. % % Example usage... % @@ -590,7 +590,7 @@ WandExport MagickBooleanType CLICatchException(MagickCLI *cli_wand, % CLISettingOptionInfo(cli_wand, "-adjoin", NULL); // set boolean % CLISettingOptionInfo(cli_wand, "+adjoin", NULL); // unset % -% Or for handling command line arguments EG: +/-option ["arg"] +% Or for handling command line arguments EG: +/-option ["arg1"] % % argc,argv % i=index in argv @@ -606,7 +606,7 @@ WandExport MagickBooleanType CLICatchException(MagickCLI *cli_wand, % */ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, - const char *option,const char *arg) + const char *option,const char *arg1) { assert(cli_wand != (MagickCLI *) NULL); assert(cli_wand->signature == WandSignature); @@ -614,14 +614,15 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, if (cli_wand->wand.debug != MagickFalse) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",cli_wand->wand.name); -#define image_info (cli_wand->wand.image_info) -#define exception (cli_wand->wand.exception) -#define draw_info (cli_wand->draw_info) -#define quantize_info (cli_wand->quantize_info) -#define IfSetOption (*option=='-') -#define ArgOption(def) (IfSetOption?arg:(const char *)(def)) -#define ArgBoolean (IfSetOption?MagickTrue:MagickFalse) -#define ArgBooleanNot (IfSetOption?MagickFalse:MagickTrue) +#define image_info (cli_wand->wand.image_info) +#define exception (cli_wand->wand.exception) +#define draw_info (cli_wand->draw_info) +#define quantize_info (cli_wand->quantize_info) +#define IfSetOption (*option=='-') +#define ArgBoolean (IfSetOption?MagickTrue:MagickFalse) +#define ArgBooleanNot (IfSetOption?MagickFalse:MagickTrue) +#define ArgBooleanString (IfSetOption?"true":"false") +#define ArgOption(def) (IfSetOption?arg1:(const char *)(def)) switch (*(option+1)) { @@ -636,7 +637,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, { /* DEPRECIATED: draw_info setting only: for -draw and -transform */ if (IfSetOption) - (void) ParseAffineGeometry(arg,&draw_info->affine,exception); + (void) ParseAffineGeometry(arg1,&draw_info->affine,exception); else GetAffineMatrix(&draw_info->affine); break; @@ -650,7 +651,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, } if (LocaleCompare("attenuate",option+1) == 0) { - (void) SetImageOption(image_info,option+1,ArgOption(NULL)); + (void) SetImageOption(image_info,option+1,ArgBooleanString); break; } if (LocaleCompare("authenticate",option+1) == 0) @@ -694,8 +695,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, /* Used as a image chromaticity setting SyncImageSettings() used to set per-image attribute. */ - (void) SetImageOption(image_info,option+1, - IfSetOption ? "true" : "false" ); + (void) SetImageOption(image_info,option+1,ArgBooleanString); break; } if (LocaleCompare("blue-primary",option+1) == 0) @@ -714,10 +714,10 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, */ if (IfSetOption) { - (void) SetImageOption(image_info,option+1,arg); - (void) QueryColorCompliance(arg,AllCompliance, + (void) SetImageOption(image_info,option+1,arg1); + (void) QueryColorCompliance(arg1,AllCompliance, &image_info->border_color,exception); - (void) QueryColorCompliance(arg,AllCompliance, + (void) QueryColorCompliance(arg1,AllCompliance, &draw_info->border_color,exception); break; } @@ -731,7 +731,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, if (LocaleCompare("box",option+1) == 0) { /* DEPRECIATED - now "undercolor" */ - CLISettingOptionInfo(cli_wand,"undercolor",arg); + CLISettingOptionInfo(cli_wand,"undercolor",arg1); break; } break; @@ -744,8 +744,8 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, limit; limit=MagickResourceInfinity; - if (LocaleCompare("unlimited",arg) != 0) - limit=(MagickSizeType) SiPrefixToDoubleInterval(arg,100.0); + if (LocaleCompare("unlimited",arg1) != 0) + limit=(MagickSizeType) SiPrefixToDoubleInterval(arg1,100.0); (void) SetMagickResourceLimit(MemoryResource,limit); (void) SetMagickResourceLimit(MapResource,2*limit); break; @@ -758,11 +758,11 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, if (LocaleCompare("channel",option+1) == 0) { /* FUTURE: -channel mask {vaules} - This is applied to images in SimpleImageOperator!!! + This is also applied to images in SimpleImageOperator!!! Move it to SyncImageSettings() - or alternative */ image_info->channel=(ChannelType) ( - IfSetOption ? ParseChannelOption(arg) : DefaultChannels ); + IfSetOption ? ParseChannelOption(arg1) : DefaultChannels ); break; } if (LocaleCompare("colorspace",option+1) == 0) @@ -825,22 +825,19 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, } if (LocaleCompare("define",option+1) == 0) { - /* DefineImageOption() equals SetImageOption() but with '=' - It does not however set individual image options. - "-set" will set individual image options as well! - */ - if (LocaleNCompare(arg,"registry:",9) == 0) + if (LocaleNCompare(arg1,"registry:",9) == 0) { if (IfSetOption) - (void) DefineImageRegistry(StringRegistryType,arg+9,exception); + (void) DefineImageRegistry(StringRegistryType,arg1+9,exception); else - (void) DeleteImageRegistry(arg+9); + (void) DeleteImageRegistry(arg1+9); break; } + /* DefineImageOption() equals SetImageOption() but with '=' */ if (IfSetOption) - (void) DefineImageOption(image_info,arg); + (void) DefineImageOption(image_info,arg1); else - (void) DeleteImageOption(image_info,arg); + (void) DeleteImageOption(image_info,arg1); break; } if (LocaleCompare("delay",option+1) == 0) @@ -868,7 +865,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, /* This is also a SimpleImageOperator! for 8->16 vaule trunc !!!! SyncImageSettings() used to set per-image attribute. */ - image_info->depth=IfSetOption?StringToUnsignedLong(arg) + image_info->depth=IfSetOption?StringToUnsignedLong(arg1) :MAGICKCORE_QUANTUM_DEPTH; break; } @@ -993,7 +990,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, register const char *q; - for (q=strchr(arg,'%'); q != (char *) NULL; q=strchr(q+1,'%')) + for (q=strchr(arg1,'%'); q != (char *) NULL; q=strchr(q+1,'%')) if (strchr("Agkrz@[#",*(q+1)) != (char *) NULL) image_info->ping=MagickFalse; */ @@ -1010,9 +1007,9 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, */ if (IfSetOption) { - image_info->fuzz=StringToDoubleInterval(arg,(double) + image_info->fuzz=StringToDoubleInterval(arg1,(double) QuantumRange+1.0); - (void) SetImageOption(image_info,option+1,arg); + (void) SetImageOption(image_info,option+1,arg1); break; } image_info->fuzz=0.0; @@ -1105,7 +1102,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, if (LocaleCompare("log",option+1) == 0) { if (IfSetOption) - (void) SetLogFormat(arg); + (void) SetLogFormat(arg1); break; } if (LocaleCompare("loop",option+1) == 0) @@ -1134,8 +1131,8 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, } if (LocaleCompare("monochrome",option+1) == 0) { - /* Setting (for some input coders) - But also a special 'type' operator + /* Setting (used by some input coders!) -- why? + Warning: This is also Special '-type' SimpleOperator */ image_info->monochrome= ArgBoolean; break; @@ -1188,7 +1185,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, image_option=GetImageOption(image_info,"page"); if (image_option != (const char *) NULL) flags=ParseAbsoluteGeometry(image_option,&geometry); - canonical_page=GetPageGeometry(arg); + canonical_page=GetPageGeometry(arg1); flags=ParseAbsoluteGeometry(canonical_page,&geometry); canonical_page=DestroyString(canonical_page); (void) FormatLocaleString(page,MaxTextExtent,"%lux%lu", @@ -1224,7 +1221,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, image_info->preview_type=UndefinedPreview; if (IfSetOption) image_info->preview_type=(PreviewType) ParseCommandOption( - MagickPreviewOptions,MagickFalse,arg); + MagickPreviewOptions,MagickFalse,arg1); break; } */ @@ -1237,7 +1234,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, (void) SetImageOption(image_info,option+1,ArgOption(NULL)); image_info->quality=UNDEFINED_COMPRESSION_QUALITY; if (IfSetOption) - image_info->quality=StringToUnsignedLong(arg); + image_info->quality=StringToUnsignedLong(arg1); break; } if (LocaleCompare("quantize",option+1) == 0) @@ -1246,7 +1243,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, quantize_info->colorspace=UndefinedColorspace; if (IfSetOption) quantize_info->colorspace=(ColorspaceType) ParseCommandOption( - MagickColorspaceOptions,MagickFalse,arg); + MagickColorspaceOptions,MagickFalse,arg1); break; } if (LocaleCompare("quiet",option+1) == 0) @@ -1310,7 +1307,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, if (LocaleCompare("seed",option+1) == 0) { SeedPseudoRandomGenerator( - IfSetOption ? (size_t) StringToUnsignedLong(arg) + IfSetOption ? (size_t) StringToUnsignedLong(arg1) : (size_t) time((time_t *) NULL) ); break; } @@ -1387,8 +1384,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, if (LocaleCompare("taint",option+1) == 0) { /* SyncImageSettings() used to set per-image attribute. */ - (void) SetImageOption(image_info,option+1, - IfSetOption ? "true" : "false"); + (void) SetImageOption(image_info,option+1,ArgBooleanString); break; } if (LocaleCompare("texture",option+1) == 0) @@ -1400,7 +1396,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, if (LocaleCompare("tile",option+1) == 0) { draw_info->fill_pattern=IfSetOption - ?GetImageCache(image_info,arg,exception) + ?GetImageCache(image_info,arg1,exception) :DestroyImage(draw_info->fill_pattern); break; } @@ -1466,10 +1462,10 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, { if (LocaleCompare("verbose",option+1) == 0) { - /* FUTURE: Also an image artifact, set in Simple Operators. - But artifact is only used in verbose output. + /* FUTURE: Remember all options become image artifacts + image_info->verbose is only used by coders. */ - (void) SetImageOption(image_info,option+1,ArgOption(NULL)); + (void) SetImageOption(image_info,option+1,ArgBooleanString); image_info->verbose= ArgBoolean; image_info->ping=MagickFalse; /* verbose can't be a ping */ break; @@ -1501,18 +1497,18 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, */ if (!IfSetOption) break; - draw_info->weight=StringToUnsignedLong(arg); - if (LocaleCompare(arg,"all") == 0) + draw_info->weight=StringToUnsignedLong(arg1); + if (LocaleCompare(arg1,"all") == 0) draw_info->weight=0; - if (LocaleCompare(arg,"bold") == 0) + if (LocaleCompare(arg1,"bold") == 0) draw_info->weight=700; - if (LocaleCompare(arg,"bolder") == 0) + if (LocaleCompare(arg1,"bolder") == 0) if (draw_info->weight <= 800) draw_info->weight+=100; - if (LocaleCompare(arg,"lighter") == 0) + if (LocaleCompare(arg1,"lighter") == 0) if (draw_info->weight >= 100) draw_info->weight-=100; - if (LocaleCompare(arg,"normal") == 0) + if (LocaleCompare(arg1,"normal") == 0) draw_info->weight=400; break; } @@ -1529,13 +1525,16 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, default: break; } + #undef image_info #undef exception #undef draw_info #undef quantize_info #undef IfSetOption -#undef ArgOption #undef ArgBoolean +#undef ArgBooleanNot +#undef ArgBooleanString +#undef ArgOption return; } @@ -1579,7 +1578,7 @@ WandExport void CLISettingOptionInfo(MagickCLI *cli_wand, % CLISimpleOperatorImages(cli_wand, "+repage",NULL,NULL); % CLISimpleOperatorImages(cli_wand, "+distort","SRT","45"); % -% Or for handling command line arguments EG: +/-option ["arg"] +% Or for handling command line arguments EG: +/-option ["arg1"] % % cli_wand % argc,argv @@ -1646,6 +1645,8 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, if (cli_wand->wand.debug != MagickFalse) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",cli_wand->wand.name); + (void) SyncImageSettings(image_info,image,exception); + SetGeometryInfo(&geometry_info); new_image = (Image *)NULL; /* the replacement image, if not null at end */ @@ -1653,8 +1654,6 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, /* FUTURE: We may need somthing a little more optimized than this! Perhaps, do the 'sync' if 'settings tainted' before next operator. */ - (void) SyncImageSettings(image_info,image,exception); - switch (*(option+1)) { case 'a': @@ -1879,8 +1878,7 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, if (LocaleCompare("channel",option+1) == 0) { /* The "channel" setting has already been set - FUTURE: This probably should be part of WandSettingOptionInfo() - or SyncImageSettings(). + FUTURE: This probably should be part of SyncImageSettings(). */ SetPixelChannelMapMask(image,image_info->channel); break; @@ -3304,6 +3302,7 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, if (LocaleCompare("unique",option+1) == 0) { /* FUTURE: move to SyncImageSettings() and AcqireImage()??? */ + /* FUTURE: This option is not documented!!!!! */ if (!normal_op) { (void) DeleteImageArtifact(image,"identify:unique-colors"); @@ -3473,7 +3472,7 @@ WandExport void CLISimpleOperatorImages(MagickCLI *cli_wand, % CLIListOperatorImages(cli_wand,MagickFalse,"-duplicate", "3", NULL); % CLIListOperatorImages(cli_wand,MagickTrue, "+append", NULL, NULL); % -% Or for handling command line arguments EG: +/-option ["arg"] +% Or for handling command line arguments EG: +/-option ["arg1"] % % cli_wand % argc,argv @@ -3982,12 +3981,12 @@ WandExport void CLIListOperatorImages(MagickCLI *cli_wand, char *string; - string=InterpretImageProperties(image_info,images,arg1, - exception); + string=InterpretImageProperties(image_info,images,arg1,exception); if (string == (char *) NULL) break; (void) FormatLocaleFile(stdout,"%s",string); string=DestroyString(string); + break; } if (LocaleCompare("process",option+1) == 0) { @@ -4022,7 +4021,7 @@ WandExport void CLIListOperatorImages(MagickCLI *cli_wand, *token_info; /* - Support old style syntax, filter="-option arg". + Support old style syntax, filter="-option arg1". */ length=strlen(arg1); token=(char *) NULL; @@ -4208,7 +4207,7 @@ WandExport void CLIListOperatorImages(MagickCLI *cli_wand, % The format of the CLISpecialOption method is: % % void CLISpecialOption(MagickCLI *cli_wand,const char *option, -% const char *arg) +% const char *arg1) % % A description of each parameter follows: % @@ -4216,13 +4215,13 @@ WandExport void CLIListOperatorImages(MagickCLI *cli_wand, % % o option: The special option (with any switch char) to process % -% o arg: Argument for option, if required +% o arg1: Argument for option, if required % % Example Usage... % % CLISpecialOperator(cli_wand,"-read", "rose:"); % -% Or for handling command line arguments EG: +/-option ["arg"] +% Or for handling command line arguments EG: +/-option ["arg1"] % % cli_wand % argc,argv @@ -4240,7 +4239,7 @@ WandExport void CLIListOperatorImages(MagickCLI *cli_wand, */ WandExport void CLISpecialOperator(MagickCLI *cli_wand, - const char *option, const char *arg) + const char *option, const char *arg1) { #define exception (cli_wand->wand.exception) @@ -4250,6 +4249,10 @@ WandExport void CLISpecialOperator(MagickCLI *cli_wand, if (cli_wand->wand.debug != MagickFalse) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",cli_wand->wand.name); + if(cli_wand->wand.images != (Image *)NULL) + (void) SyncImagesSettings(cli_wand->wand.image_info,cli_wand->wand.images, + exception); + if (LocaleCompare("(",option) == 0) { /* stack 'push' images */ @@ -4397,11 +4400,11 @@ WandExport void CLISpecialOperator(MagickCLI *cli_wand, *new_images; if (*option == '+') - arg="-1"; - if (IsSceneGeometry(arg,MagickFalse) == MagickFalse) + arg1="-1"; + if (IsSceneGeometry(arg1,MagickFalse) == MagickFalse) { ThrowMagickException(exception,GetMagickModule(), - OptionError,"InvalidArgument", "'%s': %s", option, arg); + OptionError,"InvalidArgument", "'%s': %s", option, arg1); return; } if ( cli_wand->image_list_stack == (Stack *)NULL) @@ -4417,7 +4420,7 @@ WandExport void CLISpecialOperator(MagickCLI *cli_wand, OptionError,"UnableToCloneImage", option); return; } - new_images=CloneImages(new_images,arg,exception); + new_images=CloneImages(new_images,arg1,exception); if (new_images == (Image *) NULL) { ThrowMagickException(exception,GetMagickModule(), @@ -4435,15 +4438,15 @@ WandExport void CLISpecialOperator(MagickCLI *cli_wand, new_images; if (cli_wand->wand.image_info->ping != MagickFalse) - new_images=PingImages(cli_wand->wand.image_info,arg,exception); + new_images=PingImages(cli_wand->wand.image_info,arg1,exception); else - new_images=ReadImages(cli_wand->wand.image_info,arg,exception); + new_images=ReadImages(cli_wand->wand.image_info,arg1,exception); AppendImageToList(&cli_wand->wand.images, new_images); #else /* read images using MagickWand method - no ping */ /* This is not working! - it locks up in a CPU loop! */ MagickSetLastIterator(&cli_wand->wand); - MagickReadImage(&cli_wand->wand,arg); + MagickReadImage(&cli_wand->wand,arg1); MagickSetFirstIterator(&cli_wand->wand); #endif return; @@ -4465,7 +4468,7 @@ WandExport void CLISpecialOperator(MagickCLI *cli_wand, ssize_t list; - list=ParseCommandOption(MagickListOptions,MagickFalse, arg); + list=ParseCommandOption(MagickListOptions,MagickFalse, arg1); switch (list) { case MagickCoderOptions: -- 2.50.1