]> granicus.if.org Git - imagemagick/blobdiff - magick/nt-base.c
(no commit message)
[imagemagick] / magick / nt-base.c
index a9bd66ad40d3c732c74e4e78778b32ab1a3b0b79..166fc6f04b94b1be35a3d641bd4ed3b12cab9eab 100644 (file)
@@ -17,7 +17,7 @@
 %                                December 1996                                %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
@@ -39,7 +39,7 @@
   Include declarations.
 */
 #include "magick/studio.h"
-#if defined(__WINDOWS__)
+#if defined(MAGICKCORE_WINDOWS_SUPPORT)
 #include "magick/client.h"
 #include "magick/log.h"
 #include "magick/magick.h"
@@ -82,7 +82,7 @@ static void
 /*
   External declarations.
 */
-#if !defined(__WINDOWS__)
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT)
 extern "C" BOOL WINAPI
   DllMain(HINSTANCE handle,DWORD reason,LPVOID lpvReserved);
 #endif
@@ -236,6 +236,73 @@ MagickExport int Exit(int status)
   return(0);
 }
 \f
+#if !defined(__MINGW32__)
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   g e t t i m e o f d a y                                                   %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  The gettimeofday() method get the time of day.
+%
+%  The format of the gettimeofday method is:
+%
+%      int gettimeofday(struct timeval *time_value,struct timezone *time_zone)
+%
+%  A description of each parameter follows:
+%
+%    o time_value: the time value.
+%
+%    o time_zone: the time zone.
+%
+*/
+MagickExport int gettimeofday (struct timeval *time_value,
+  struct timezone *time_zone)
+{
+#define EpochFiletime  MagickLLConstant(116444736000000000)
+
+  static int
+    is_tz_set;
+
+  if (time_value != (struct timeval *) NULL)
+    {
+      FILETIME
+        file_time;
+
+      __int64
+        time;
+
+      LARGE_INTEGER
+        date_time;
+
+      GetSystemTimeAsFileTime(&file_time);
+      date_time.LowPart=file_time.dwLowDateTime;
+      date_time.HighPart=file_time.dwHighDateTime;
+      time=date_time.QuadPart;
+      time-=EpochFiletime;
+      time/=10;
+      time_value->tv_sec=(ssize_t) (time / 1000000);
+      time_value->tv_usec=(ssize_t) (time % 1000000);
+    }
+  if (time_zone != (struct timezone *) NULL)
+    {
+      if (is_tz_set == 0)
+        {
+          _tzset();
+          is_tz_set++;
+        }
+      time_zone->tz_minuteswest=_timezone/60;
+      time_zone->tz_dsttime=_daylight;
+    }
+  return(0);
+}
+#endif
+\f
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                             %
@@ -350,7 +417,7 @@ MagickExport int NTCloseLibrary(void *handle)
 static BOOL ControlHandler(DWORD type)
 {
   (void) type;
-  AsynchronousDestroyMagickResources();
+  AsynchronousResourceComponentTerminus();
   return(FALSE);
 }
 
@@ -719,7 +786,7 @@ MagickExport MagickBooleanType NTGetModulePath(const char *module,char *path)
   HMODULE
     handle;
 
-  long
+  ssize_t
     length;
 
   *path='\0';
@@ -815,7 +882,7 @@ static int NTLocateGhostscript(const char **product_family,int *major_version,
       "GPL Ghostscript",
       "GNU Ghostscript",
       "AFPL Ghostscript",
-      "Aladdin Ghostscript" 
+      "Aladdin Ghostscript"
     };
 
   /*
@@ -825,7 +892,7 @@ static int NTLocateGhostscript(const char **product_family,int *major_version,
   *product_family=NULL;
   *major_version=5;
   *minor_version=49; /* min version of Ghostscript is 5.50 */
-  for (i=0; i < (long) (sizeof(products)/sizeof(products[0])); i++)
+  for (i=0; i < (ssize_t) (sizeof(products)/sizeof(products[0])); i++)
   {
     char
       key[MaxTextExtent];
@@ -871,13 +938,13 @@ static int NTLocateGhostscript(const char **product_family,int *major_version,
               *product_family=products[i];
               *major_version=major;
               *minor_version=minor;
-              status=MagickTrue;
+              status=TRUE;
             }
        }
        (void) RegCloseKey(hkey);
      }
   }
-  if (status == MagickFalse)
+  if (status == FALSE)
     {
       *major_version=0;
       *minor_version=0;
@@ -896,7 +963,7 @@ static int NTGhostscriptGetString(const char *name,char *value,
   int
     i,
     extent;
-  
+
   static const char
     *product_family = (const char *) NULL;
 
@@ -928,7 +995,7 @@ static int NTGhostscriptGetString(const char *name,char *value,
     return(FALSE);
   (void) FormatMagickString(key,MaxTextExtent,"SOFTWARE\\%s\\%d.%02d",
     product_family,major_version,minor_version);
-  for (i=0; i < (long) (sizeof(hkeys)/sizeof(hkeys[0])); i++)
+  for (i=0; i < (ssize_t) (sizeof(hkeys)/sizeof(hkeys[0])); i++)
   {
     extent=(int) length;
     if (NTGetRegistryValue(hkeys[i].hkey,key,name,value,&extent) == 0)
@@ -1710,7 +1777,7 @@ MagickExport unsigned char *NTResourceToBlob(const char *id)
 %
 %  The format of the NTSeekDirectory method is:
 %
-%      void NTSeekDirectory(DIR *entry,long position)
+%      void NTSeekDirectory(DIR *entry,ssize_t position)
 %
 %  A description of each parameter follows:
 %
@@ -1720,7 +1787,7 @@ MagickExport unsigned char *NTResourceToBlob(const char *id)
 %      stream.
 %
 */
-MagickExport void NTSeekDirectory(DIR *entry,long position)
+MagickExport void NTSeekDirectory(DIR *entry,ssize_t position)
 {
   (void) position;
   (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
@@ -1814,7 +1881,7 @@ MagickExport int NTSyncMemory(void *address,size_t length,int flags)
 %
 %  The format of the NTSystemCommand method is:
 %
-%      int NTSystemCommand(const char *command)
+%      int NTSystemCommand(MagickFalse,const char *command)
 %
 %  A description of each parameter follows:
 %
@@ -1890,14 +1957,14 @@ MagickExport int NTSystemCommand(const char *command)
 %
 %  The format of the exit method is:
 %
-%      long NTSystemConfiguration(int name)
+%      ssize_t NTSystemConfiguration(int name)
 %
 %  A description of each parameter follows:
 %
 %    o name: _SC_PAGE_SIZE or _SC_PHYS_PAGES.
 %
 */
-MagickExport long NTSystemConfiguration(int name)
+MagickExport ssize_t NTSystemConfiguration(int name)
 {
   switch (name)
   {
@@ -1934,12 +2001,12 @@ MagickExport long NTSystemConfiguration(int name)
             status;
 
           GlobalMemoryStatus(&status);
-          return((long) status.dwTotalPhys/system_info.dwPageSize);
+          return((ssize_t) status.dwTotalPhys/system_info.dwPageSize);
         }
       status.dwLength=sizeof(status);
       if (module(&status) == 0)
         return(0L);
-      return((long) status.ullTotalPhys/system_info.dwPageSize);
+      return((ssize_t) status.ullTotalPhys/system_info.dwPageSize);
     }
     case _SC_OPEN_MAX:
       return(2048);
@@ -1965,14 +2032,14 @@ MagickExport long NTSystemConfiguration(int name)
 %
 %  The format of the NTTellDirectory method is:
 %
-%      long NTTellDirectory(DIR *entry)
+%      ssize_t NTTellDirectory(DIR *entry)
 %
 %  A description of each parameter follows:
 %
 %    o entry: Specifies a pointer to a DIR structure.
 %
 */
-MagickExport long NTTellDirectory(DIR *entry)
+MagickExport ssize_t NTTellDirectory(DIR *entry)
 {
   assert(entry != (DIR *) NULL);
   return(0);