]> granicus.if.org Git - imagemagick/commitdiff
Added support for opening https files under windows.
authordirk <dirk@git.imagemagick.org>
Sat, 21 Sep 2013 19:04:42 +0000 (19:04 +0000)
committerdirk <dirk@git.imagemagick.org>
Sat, 21 Sep 2013 19:04:42 +0000 (19:04 +0000)
MagickCore/coder.c
coders/url.c

index f0d39a35b319794dd1b3582f504cfdfa8e0e8342..9076f0aa7f3a5b87ebeb19fbcf63754fcb05fbe4 100644 (file)
@@ -134,6 +134,7 @@ static const CoderMapInfo
     { "H", "MAGICK" },
     { "HTM", "HTML" },
     { "HTTP", "URL" },
+    { "HTTPS", "URL" },
     { "ICB", "TGA" },
     { "ICC", "META" },
     { "ICM", "META" },
index abab35165190850b841e9c390afa757698d9f4b4..8873b5cb5a1e881add4e445418197d92cf31b833 100644 (file)
 #  include <libxml/nanoftp.h>
 #  include <libxml/nanohttp.h>
 #endif
-\f
+#if defined(MAGICKCORE_WINDOWS_SUPPORT) && \\r
+    !(defined(__MINGW32__) || defined(__MINGW64__))\r
+#  include <urlmon.h>\r
+#endif
+
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                             %
@@ -169,6 +173,18 @@ static Image *ReadURLImage(const ImageInfo *image_info,ExceptionInfo *exception)
       (void) CopyMagickString(read_info->filename,image_info->filename+2,
         MaxTextExtent);
     }
+#if defined(MAGICKCORE_WINDOWS_SUPPORT) && \\r
+    !(defined(__MINGW32__) || defined(__MINGW64__))\r
+  (void) fclose(file);\r
+  if (URLDownloadToFile(NULL,filename,read_info->filename,NULL,NULL) != S_OK)\r
+    {\r
+      ThrowFileException(exception,FileOpenError,"UnableToOpenFile",\r
+        filename);\r
+      (void) RelinquishUniqueFileResource(read_info->filename);\r
+      read_info=DestroyImageInfo(read_info);\r
+      return((Image *) NULL);\r
+    }\r
+#else
 #if defined(MAGICKCORE_XML_DELEGATE) && defined(LIBXML_FTP_ENABLED)
   if (LocaleCompare(read_info->magick,"ftp") == 0)
     {
@@ -217,6 +233,7 @@ static Image *ReadURLImage(const ImageInfo *image_info,ExceptionInfo *exception)
     }
 #endif
   (void) fclose(file);
+#endif
   {
     ExceptionInfo
       *sans;
@@ -278,15 +295,28 @@ ModuleExport size_t RegisterURLImage(void)
     *entry;
 
   entry=SetMagickInfo("HTTP");
-#if defined(MAGICKCORE_XML_DELEGATE) && defined(LIBXML_HTTP_ENABLED)
+#if (defined(MAGICKCORE_WINDOWS_SUPPORT) && \\r
+    !(defined(__MINGW32__) || defined(__MINGW64__))) || \\r
+    (defined(MAGICKCORE_XML_DELEGATE) && defined(LIBXML_HTTP_ENABLED))
   entry->decoder=(DecodeImageHandler *) ReadURLImage;
 #endif
   entry->description=ConstantString("Uniform Resource Locator (http://)");
   entry->module=ConstantString("URL");
   entry->stealth=MagickTrue;
   (void) RegisterMagickInfo(entry);
+  entry=SetMagickInfo("HTTPS");\r
+#if defined(MAGICKCORE_WINDOWS_SUPPORT) && \\r
+    !(defined(__MINGW32__) || defined(__MINGW64__))\r
+  entry->decoder=(DecodeImageHandler *) ReadURLImage;\r
+#endif\r
+  entry->description=ConstantString("Uniform Resource Locator (https://)");\r
+  entry->module=ConstantString("URL");\r
+  entry->stealth=MagickTrue;\r
+  (void) RegisterMagickInfo(entry);
   entry=SetMagickInfo("FTP");
-#if defined(MAGICKCORE_XML_DELEGATE) && defined(LIBXML_FTP_ENABLED)
+#if (defined(MAGICKCORE_WINDOWS_SUPPORT) && \\r
+    !(defined(__MINGW32__) || defined(__MINGW64__))) || \\r
+    (defined(MAGICKCORE_XML_DELEGATE) && defined(LIBXML_FTP_ENABLED))
   entry->decoder=(DecodeImageHandler *) ReadURLImage;
 #endif
   entry->description=ConstantString("Uniform Resource Locator (ftp://)");