Re-syncronization of versions to make compilable

diff --git a/wand/mogrify.c b/wand/mogrify.c
index ae6f6ae..32593ef 100644
--- a/wand/mogrify.c
+++ b/wand/mogrify.c
@@ -1197,9 +1197,6 @@
               black_point,
               white_point;
 
-            GeometryInfo
-              geometry_info;
-
             MagickStatusType
               flags;
 
@@ -1953,9 +1950,6 @@
           }
         if (LocaleCompare("level",option+1) == 0)
           {
-            GeometryInfo
-              geometry_info;
-
             MagickRealType
               black_point,
               gamma,
@@ -2036,9 +2030,6 @@
               black_point,
               white_point;
 
-            GeometryInfo
-              geometry_info;
-
             MagickStatusType
               flags;
 
@@ -2185,6 +2176,52 @@
             InheritException(exception,&(*image)->exception);
             break;
           }
+        if (LocaleCompare("morphology",option+1) == 0)
+          {
+            MorphologyMethod
+              method;
+
+            KernelInfo
+              *kernel;
+
+            char
+              token[MaxTextExtent];
+
+            const char
+              *p;
+
+            unsigned long
+              iterations;
+
+            Image
+              *morphology_image;
+            /*
+              Morphological Image Operation
+            */
+            (void) SyncImageSettings(image_info,*image);
+            p=argv[i+1];
+            GetMagickToken(p,&p,token);
+            method=(MorphologyMethod) ParseMagickOption(MagickMorphologyOptions,
+                      MagickFalse,token);
+            iterations = 1UL;
+            GetMagickToken(p,&p,token);
+            if ( (*p == ':') || (*p == ','))
+              GetMagickToken(p,&p,token);
+            if ( (*p != '\0') )
+              iterations = StringToLong(p);
+            kernel=AcquireKernelInfo(argv[i+2]);
+            if (kernel == (KernelInfo *) NULL)
+              ThrowWandFatalException(ResourceLimitFatalError,
+                "MemoryAllocationFailed",(*image)->filename);
+            morphology_image=MorphologyImageChannel(*image,channel,method,
+                 iterations,kernel,exception);
+            kernel=DestroyKernel(kernel);
+            if (morphology_image == (Image *) NULL)
+              break;
+            *image=DestroyImage(*image);
+            *image=morphology_image;
+            break;
+          }
         if (LocaleCompare("motion-blur",option+1) == 0)
           {
             Image
@@ -3653,6 +3690,8 @@
       "-median radius       apply a median filter to the image",
       "-modulate value      vary the brightness, saturation, and hue",
       "-monochrome          transform image to black and white",
+      "-morphology method[:interation] kernel_specification",
+      "                     apply a morphology method to the image",
       "-motion-blur geometry",
       "                     simulate motion blur",
       "-negate              replace every pixel with its complementary color ",
@@ -4452,13 +4491,36 @@
           }
         if (LocaleCompare("convolve",option+1) == 0)
           {
+            char
+              token[MaxTextExtent];
+
             if (*option == '+')
               break;
             i++;
             if (i == (long) argc)
               ThrowMogrifyException(OptionError,"MissingArgument",option);
+#if 1
             if (IsGeometry(argv[i]) == MagickFalse)
               ThrowMogrifyInvalidArgumentException(option,argv[i]);
+#else
+            /* Allow the use of built-in kernels like 'gaussian'
+             * These may not work for kernels with 'nan' values, like 'diamond'
+             */
+            GetMagickToken(argv[i],NULL,token);
+            if ( isalpha((int)token[0]) )
+              {
+                long
+                op;
+
+                op=ParseMagickOption(MagickKernelOptions,MagickFalse,token);
+                if (op < 0)
+                  ThrowMogrifyException(OptionError,"UnrecognizedKernelType",
+                       token);
+              }
+            /* geometry current returns invalid if 'nan' values are used */
+            else if (IsGeometry(argv[i]) == MagickFalse)
+              ThrowMogrifyInvalidArgumentException(option,argv[i]);
+#endif
             break;
           }
         if (LocaleCompare("crop",option+1) == 0)
@@ -5289,6 +5351,42 @@
               ThrowMogrifyInvalidArgumentException(option,argv[i]);
             break;
           }
+        if (LocaleCompare("morphology",option+1) == 0)
+          {
+            long
+              op;
+
+            char
+              token[MaxTextExtent];
+
+            i++;
+            if (i == (long) argc)
+              ThrowMogrifyException(OptionError,"MissingArgument",option);
+            GetMagickToken(argv[i],NULL,token);
+            op=ParseMagickOption(MagickMorphologyOptions,MagickFalse,token);
+            if (op < 0)
+              ThrowMogrifyException(OptionError,"UnrecognizedMorphologyMethod",
+                   token);
+            i++;
+            if (i == (long) (argc-1))
+              ThrowMogrifyException(OptionError,"MissingArgument",option);
+            GetMagickToken(argv[i],NULL,token);
+            if ( isalpha((int)token[0]) )
+              {
+                op=ParseMagickOption(MagickKernelOptions,MagickFalse,token);
+                if (op < 0)
+                  ThrowMogrifyException(OptionError,"UnrecognizedKernelType",
+                       token);
+              }
+#if 0
+  /* DO NOT ENABLE, geometry can not handle user defined kernels
+   * which include 'nan' values, though '-' are acceptable.
+   */
+            else if (IsGeometry(argv[i]) == MagickFalse)
+              ThrowMogrifyInvalidArgumentException(option,argv[i]);
+#endif
+            break;
+          }
         if (LocaleCompare("mosaic",option+1) == 0)
           break;
         if (LocaleCompare("motion-blur",option+1) == 0)