]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 13 Aug 2011 17:12:28 +0000 (17:12 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 13 Aug 2011 17:12:28 +0000 (17:12 +0000)
13 files changed:
MagickCore/nt-base.c
MagickCore/nt-base.h
utilities/animate.c
utilities/compare.c
utilities/composite.c
utilities/conjure.c
utilities/convert.c
utilities/display.c
utilities/identify.c
utilities/import.c
utilities/mogrify.c
utilities/montage.c
utilities/stream.c

index 38a00aa4f2d6e30900fb928888aca3d45d798af5..594f4eb30cf42bb564e9388b741e47c359429023 100644 (file)
@@ -41,6 +41,7 @@
 #include "MagickCore/studio.h"
 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
 #include "MagickCore/client.h"
+#include "MagickCore/exception-private.h"
 #include "MagickCore/locale_.h"
 #include "MagickCore/log.h"
 #include "MagickCore/magick.h"
@@ -339,6 +340,65 @@ MagickExport int IsWindows95()
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   N T A r g v T o U T F 8                                                   %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  NTArgvToUTF8() converts the wide command line arguments to UTF-8 to ensure
+%  compatibility with Linux.
+%
+%  The format of the NTArgvToUTF8 method is:
+%
+%      char **NTArgvToUTF8(const int argc,wchar_t **argv)
+%
+%  A description of each parameter follows:
+%
+%    o argc: the number of command line arguments.
+%
+%    o argv:  the  wide-character command line arguments.
+%
+*/
+MagickExport char **NTArgvToUTF8(const int argc,wchar_t **argv)
+{
+  char
+    **utf8;
+
+  ssize_t
+    i;
+
+  utf8=(char **) AcquireQuantumMemory(argc,sizeof(*utf8));
+  if (utf8 == (char **) NULL)
+    ThrowFatalException(ResourceLimitFatalError,"UnableToConvertStringToARGV");
+  for (i=0; i < (ssize_t) argc; i++)
+  {
+    ssize_t
+      count;
+
+    count=WideCharToMultiByte(CP_UTF8,0,argv[i],-1,NULL,0,NULL,NULL);
+    if (count < 0)
+      count=0;
+    utf8[i]=(char *) AcquireQuantumMemory(count+1,sizeof(**utf8));
+    if (utf8[i] == (char *) NULL)
+      {
+        for (i--; i >= 0; i--)
+          utf8[i]=DestroyString(utf8[i]);
+        utf8=(char **) RelinquishMagickMemory(utf8);
+        ThrowFatalException(ResourceLimitFatalError,
+          "UnableToConvertStringToARGV");
+      }
+    count=WideCharToMultiByte(CP_UTF8,0,argv[i],-1,utf8[i],count,NULL,NULL);
+    utf8[i][count]=0;
+  }
+  return(utf8);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   N T C l o s e D i r e c t o r y                                           %
 %                                                                             %
 %                                                                             %
index b6778ac985117ddd39505fd7ee4b99a2e5f17fb1..39d980fc925ae6fe5a7706498a779d529fc7e449 100644 (file)
@@ -75,8 +75,10 @@ extern "C" {
 #endif
 
 #if !defined(access)
+#if defined(_VISUALC_) && (_MSC_VER >= 1400)
 #  define access(path,mode)  _access_s(path,mode)
 #endif
+#endif
 #if !defined(chdir)
 #  define chdir  _chdir
 #endif
@@ -96,8 +98,6 @@ extern "C" {
 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
   !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
 #  define fseek  _fseeki64
-#else
-#  define fseek  _fseek
 #endif
 #endif
 #if !defined(fstat) && !defined(__BORLANDC__)
@@ -115,8 +115,6 @@ extern "C" {
 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
   !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
 #  define ftell  _ftelli64
-#else
-#  define ftell  _ftell
 #endif
 #endif
 #if !defined(ftruncate)
@@ -349,7 +347,8 @@ typedef UINT
 #endif
 
 extern MagickExport char
-  *NTGetLastError(void);
+  *NTGetLastError(void),
+  **NTArgvToUTF8(const int argc,wchar_t **);
 
 extern MagickExport const GhostInfo
   *NTGhostscriptDLLVectors(void);
index 7ae3957f5059a43c33faaab37bfd49f9b2d7960c..7c47d9f10f397a146114853483ad33e22a43f123 100644 (file)
 %
 */
 
-#if defined(MAGICKCORE_WINDOWS_SUPPORT)
-int WINAPI WinMain(HINSTANCE instance,HINSTANCE last,LPSTR command,int state)
-{
-  char
-    **argv;
-
-  int
-    argc,
-    main(int,char **);
-
-  (void) instance;
-  (void) last;
-  (void) state;
-  argv=StringToArgv(command,&argc);
-  return(main(argc,argv));
-}
-#endif
-
-int main(int argc,char **argv)
+int AnimateMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -106,3 +88,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(AnimateMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=AnimateMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index 32af5da115569ac13a1a04cb8eddb0e120adb9b5..7878b994261aab014e100137a13e77de272553fb 100644 (file)
@@ -58,7 +58,7 @@
 %
 %
 */
-int main(int argc,char **argv)
+int CompareMain(int argc,char **argv)
 {
   char
     *metadata;
@@ -85,3 +85,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(CompareMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=CompareMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index 2c0b92e52ea08b9fcded487d2bd9039c2eefe292..e26760f5fa419d097c03d091b196d8609a1283cb 100644 (file)
@@ -57,7 +57,8 @@
 %
 %
 */
-int main(int argc,char **argv)
+
+int CompositeMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -78,3 +79,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(CompositeMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=CompositeMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index 7d39c699817740d1a74acccdea8f23eab8a5c67b..dc40746d201b259a66fd30ba771d1998390c1cae 100644 (file)
@@ -76,7 +76,8 @@
 %
 %
 */
-int main(int argc,char **argv)
+
+int ConjureMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -97,3 +98,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(ConjureMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=ConjureMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index f522a2635fc1ad950342a7d5597f3ad55600192f..c9170f9ac119bcfbf76531f687387e9579828f85 100644 (file)
@@ -63,7 +63,8 @@
 %
 %
 */
-int main(int argc,char **argv)
+
+int ConvertMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -84,3 +85,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(ConvertMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=ConvertMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index e1b4f98093ffecc42d41bc6d62f025625ecabd42..c98da60d6c50db8af0bf4aab8b54f54d5040b12d 100644 (file)
 %
 */
 
-#if defined(MAGICKCORE_WINDOWS_SUPPORT)
-int WINAPI WinMain(HINSTANCE instance,HINSTANCE last,LPSTR command,int state)
-{
-  char
-    **argv;
-
-  int
-    argc,
-    main(int,char **);
-
-  (void) instance;
-  (void) last;
-  (void) state;
-  argv=StringToArgv(command,&argc);
-  return(main(argc,argv));
-}
-#endif
-
-int main(int argc,char **argv)
+int DisplayMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -111,3 +93,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(DisplayMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=DisplayMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index 4de44e58ec20afdd179455596ce355be87530873..cca83909ba27b9133506d73af27d49171759fb5f 100644 (file)
@@ -58,7 +58,8 @@
 %
 %
 */
-int main(int argc,char **argv)
+
+int IdentifyMain(int argc,char **argv)
 {
   char
     *metadata;
@@ -85,3 +86,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(IdentifyMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=IdentifyMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index 502329143d017a3b2273fede2234a1c39e493c3f..f2faae3a5657b9c295ec37bf2a1522f7c1385909 100644 (file)
 %
 */
 
-#if defined(MAGICKCORE_WINDOWS_SUPPORT)
-int WINAPI WinMain(HINSTANCE instance,HINSTANCE last,LPSTR command,int state)
-{
-  char
-    **argv;
-
-  int
-    argc,
-    main(int,char **);
-
-  (void) instance;
-  (void) last;
-  (void) state;
-  argv=StringToArgv(command,&argc);
-  return(main(argc,argv));
-}
-#endif
-
-int main(int argc,char **argv)
+int ImportMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -103,3 +85,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(ImportMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=ImportMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index 484f25b7ed5e611e07172e7557b91c9abbadc834..9608afb93a77fe04d711a8aa877e973b5e477972 100644 (file)
@@ -59,7 +59,8 @@
 %
 %
 */
-int main(int argc,char **argv)
+
+int MogrifyMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -80,3 +81,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(MogrifyMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=MogrifyMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index c49d32958c808a820faa36cf868d9a449e33d07a..28386cb16ab2b04d11092c5f1fb4cb1c83da6bb0 100644 (file)
@@ -59,7 +59,8 @@
 %
 %
 */
-int main(int argc,char **argv)
+
+int MontageMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -80,3 +81,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(MontageMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=MontageMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif
index caaf2dc4cb8855a16f2a9f8e9338d30f5045b1f6..4384edca6c8e2a791677a863aa8de11c47e28ab2 100644 (file)
@@ -59,7 +59,8 @@
 %
 %
 */
-int main(int argc,char **argv)
+
+int StreamMain(int argc,char **argv)
 {
   ExceptionInfo
     *exception;
@@ -80,3 +81,29 @@ int main(int argc,char **argv)
   MagickCoreTerminus();
   return(status);
 }
+
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__)
+int main(int argc,char **argv)
+{
+  return(StreamMain(argc,argv));
+}
+#else
+int wmain(int argc,wchar_t *argv[])
+{
+  char
+    **utf8;
+
+  int
+    status;
+
+  register int
+    i;
+
+  utf8=NTArgvToUTF8(argc,argv);
+  status=StreamMain(argc,utf8);
+  for (i=0; i < argc; i++)
+    utf8[i]=DestroyString(utf8[i]);
+  utf8=(char **) RelinquishMagickMemory(utf8);
+  return(status);
+}
+#endif