%
% o options: one or more options separated by commas.
%
-%
*/
MagickPrivate MagickBooleanType IsOptionMember(const char *option,
const char *options)
int
number_options;
+ MagickBooleanType
+ member;
+
register ssize_t
i;
/*
Is option a member of the options list?
*/
+ if (options == (const char *) NULL)
+ return(MagickFalse);
string=ConstantString(options);
(void) SubstituteString(&string,","," ");
option_list=StringToArgv(string,&number_options);
string=DestroyString(string);
if (option_list == (char **) NULL)
return(MagickFalse);
+ member=MagickFalse;
for (i=1; i < (ssize_t) number_options; i++)
{
if ((*option_list[i] == '!') &&
(LocaleCompare(option,option_list[i]+1) == 0))
- return(MagickFalse);
+ break;
if (GlobExpression(option,option_list[i],MagickTrue) != MagickFalse)
- return(MagickTrue);
+ {
+ member=MagickTrue;
+ break;
+ }
+ option_list[i]=DestroyString(option_list[i]);
}
- return(MagickFalse);
+ for ( ; i < (ssize_t) number_options; i++)
+ option_list[i]=DestroyString(option_list[i]);
+ option_list=(char **) RelinquishMagickMemory(option_list);
+ return(member);
}
\f
/*
#include "MagickCore/monitor.h"
#include "MagickCore/monitor-private.h"
#include "MagickCore/option.h"
+#include "MagickCore/optioni-private.h"
#include "MagickCore/pixel-accessor.h"
#include "MagickCore/profile.h"
#include "MagickCore/profile-private.h"
if ((datum == (const void *) NULL) || (length == 0))
{
char
- **arguments,
- *names;
-
- int
- number_arguments;
-
- register ssize_t
- i;
+ *next;
/*
Delete image profile(s).
*/
- names=ConstantString(name);
- (void) SubstituteString(&names,","," ");
- arguments=StringToArgv(names,&number_arguments);
- names=DestroyString(names);
- if (arguments == (char **) NULL)
- return(MagickTrue);
ResetImageProfileIterator(image);
- for (name=GetNextImageProfile(image); name != (const char *) NULL; )
+ for (next=GetNextImageProfile(image); next != (const char *) NULL; )
{
- for (i=1; i < (ssize_t) number_arguments; i++)
- {
- if ((*arguments[i] == '!') &&
- (LocaleCompare(name,arguments[i]+1) == 0))
- break;
- if (GlobExpression(name,arguments[i],MagickTrue) != MagickFalse)
- {
- (void) DeleteImageProfile(image,name);
- break;
- }
- }
- name=GetNextImageProfile(image);
+ if (IsOptionMember(next,name) != MagickFalse)
+ {
+ (void) DeleteImageProfile(image,name);
+ ResetImageProfileIterator(image);
+ }
+ name=GetNextImageProfile(image);
}
- for (i=0; i < (ssize_t) number_arguments; i++)
- arguments[i]=DestroyString(arguments[i]);
- arguments=(char **) RelinquishMagickMemory(arguments);
return(MagickTrue);
}
/*
#include "MagickCore/monitor.h"
#include "MagickCore/monitor-private.h"
#include "MagickCore/option.h"
+#include "MagickCore/option-private.h"
#include "MagickCore/pixel-accessor.h"
#include "MagickCore/profile.h"
#include "MagickCore/property.h"
JPEGSourceManager(&jpeg_info,image);
jpeg_set_marker_processor(&jpeg_info,JPEG_COM,ReadComment);
option=GetImageOption(image_info,"jpeg:skip-profile");
- if ((option == (const char *) NULL) ||
- (GlobExpression("ICC",option,MagickTrue) == MagickFalse))
+ if (IsOptionMember("ICC",option) == MagickFalse)
jpeg_set_marker_processor(&jpeg_info,ICC_MARKER,ReadICCProfile);
- if ((option == (const char *) NULL) ||
- (GlobExpression("IPTC",option,MagickTrue) == MagickFalse))
+ if (IsOptionMember("IPTC",option) == MagickFalse)
jpeg_set_marker_processor(&jpeg_info,IPTC_MARKER,ReadIPTCProfile);
for (i=1; i < 16; i++)
if ((i != 2) && (i != 13) && (i != 14))
- if ((option == (const char *) NULL) ||
- (GlobExpression("APP",option,MagickTrue) == MagickFalse))
+ if (IsOptionMember("APP",option) == MagickFalse)
jpeg_set_marker_processor(&jpeg_info,(int) (JPEG_APP0+i),ReadProfile);
i=(ssize_t) jpeg_read_header(&jpeg_info,TRUE);
if ((image_info->colorspace == YCbCrColorspace) ||