]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 25 Jun 2014 13:13:33 +0000 (13:13 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 25 Jun 2014 13:13:33 +0000 (13:13 +0000)
MagickCore/option.c
MagickCore/profile.c
coders/jpeg.c

index 0bbf724c06b59c864ecc9e34ab2f554ac1a533a2..3e27295133910a56033df6d18b743e178099298e 100644 (file)
@@ -2390,7 +2390,6 @@ MagickExport const char *CommandOptionToMnemonic(const CommandOption option,
 %
 %    o options: one or more options separated by commas.
 %
-%
 */
 MagickPrivate MagickBooleanType IsOptionMember(const char *option,
   const char *options)
@@ -2402,27 +2401,40 @@ MagickPrivate MagickBooleanType IsOptionMember(const char *option,
   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
 /*
index 2a2d0c7bcab2aff3a2e77b206b60a3c9bccd076e..37b673fcb3e9e9fee14db764853ab78f10d4278e 100644 (file)
@@ -53,6 +53,7 @@
 #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"
@@ -518,43 +519,21 @@ MagickExport MagickBooleanType ProfileImage(Image *image,const char *name,
   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);
     }
   /*
index 1df97d4e4fd6807f8ba205507c7f0640314ba265..6505c5e41453d13cf45293d57d480630105a4406 100644 (file)
@@ -70,6 +70,7 @@
 #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"
@@ -1094,16 +1095,13 @@ static Image *ReadJPEGImage(const ImageInfo *image_info,
   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) ||