% 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 %
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"
/*
External declarations.
*/
-#if !defined(__WINDOWS__)
+#if !defined(MAGICKCORE_WINDOWS_SUPPORT)
extern "C" BOOL WINAPI
DllMain(HINSTANCE handle,DWORD reason,LPVOID lpvReserved);
#endif
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
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
static BOOL ControlHandler(DWORD type)
{
- AsynchronousDestroyMagickResources();
+ (void) type;
+ AsynchronousResourceComponentTerminus();
return(FALSE);
}
%
% The format of the NTErrorHandler method is:
%
-% void NTErrorHandler(const ExceptionType error,const char *reason,
+% void NTErrorHandler(const ExceptionType severity,const char *reason,
% const char *description)
%
% A description of each parameter follows:
%
-% o error: Specifies the numeric error category.
+% o severity: Specifies the numeric error category.
%
% o reason: Specifies the reason to display before terminating the
% program.
% o description: Specifies any description to the reason.
%
*/
-MagickExport void NTErrorHandler(const ExceptionType error,const char *reason,
- const char *description)
+MagickExport void NTErrorHandler(const ExceptionType severity,
+ const char *reason,const char *description)
{
char
buffer[3*MaxTextExtent],
*message;
+ (void) severity;
if (reason == (char *) NULL)
{
MagickCoreTerminus();
status=CryptReleaseContext(handle,0);
if (status == 0)
return(MagickFalse);
+#else
+ (void) random;
+ (void) length;
#endif
return(MagickTrue);
}
HMODULE
handle;
- long
+ ssize_t
length;
*path='\0';
"GPL Ghostscript",
"GNU Ghostscript",
"AFPL Ghostscript",
- "Aladdin Ghostscript"
+ "Aladdin Ghostscript"
};
/*
*product_family=NULL;
*major_version=5;
*minor_version=49; /* min version of Ghostscript is 5.50 */
- for (i=0; i < (sizeof(products)/sizeof(products[0])); i++)
+ for (i=0; i < (ssize_t) (sizeof(products)/sizeof(products[0])); i++)
{
char
key[MaxTextExtent];
hkey,
root;
+ REGSAM
+ mode;
+
(void) FormatMagickString(key,MaxTextExtent,"SOFTWARE\\%s",products[i]);
root=HKEY_LOCAL_MACHINE;
- if (RegOpenKeyExA(root,key,0,KEY_READ,&hkey) == ERROR_SUCCESS)
+ mode=KEY_READ;
+#if defined(KEY_WOW64_32KEY)
+ mode|=KEY_WOW64_32KEY;
+#endif
+ if (RegOpenKeyExA(root,key,0,mode,&hkey) == ERROR_SUCCESS)
{
DWORD
extent;
*product_family=products[i];
*major_version=major;
*minor_version=minor;
- status=MagickTrue;
+ status=TRUE;
}
- }
}
- }
- if (status == MagickFalse)
+ (void) RegCloseKey(hkey);
+ }
+ }
+ if (status == FALSE)
{
*major_version=0;
*minor_version=0;
int
i,
extent;
-
+
static const char
*product_family = (const char *) NULL;
return(FALSE);
(void) FormatMagickString(key,MaxTextExtent,"SOFTWARE\\%s\\%d.%02d",
product_family,major_version,minor_version);
- for (i=0; i < sizeof(hkeys)/sizeof(hkeys[0]); i++)
+ for (i=0; i < (ssize_t) (sizeof(hkeys)/sizeof(hkeys[0])); i++)
{
- extent=length;
+ extent=(int) length;
if (NTGetRegistryValue(hkeys[i].hkey,key,name,value,&extent) == 0)
{
(void) LogMagickEvent(ConfigureEvent,GetMagickModule(),
MagickExport int NTGhostscriptDLL(char *path,int length)
{
- char
- dll_path[MaxTextExtent];
+ static char
+ dll[MaxTextExtent] = { "" };
*path='\0';
- if (NTGhostscriptGetString("GS_DLL",dll_path,sizeof(dll_path)) == 0)
+ if ((*dll == '\0') &&
+ (NTGhostscriptGetString("GS_DLL",dll,sizeof(dll)) == FALSE))
return(FALSE);
- (void) CopyMagickString(path,dll_path,length);
+ (void) CopyMagickString(path,dll,length);
return(TRUE);
}
\f
*/
MagickExport int NTGhostscriptEXE(char *path,int length)
{
- char
+ register char
*p;
static char
- executable[MaxTextExtent] = { "" };
+ program[MaxTextExtent] = { "" };
- if (*executable != '\0')
- {
- (void) CopyMagickString(path,executable,length);
- return(TRUE);
- }
(void) CopyMagickString(path,"gswin32c.exe",length);
- if (NTGhostscriptGetString("GS_DLL",executable,sizeof(executable)) == FALSE)
+ if ((*program == '\0') &&
+ (NTGhostscriptGetString("GS_DLL",program,sizeof(program)) == FALSE))
return(FALSE);
- p=strrchr(executable, '\\');
- if (p == (char *) NULL)
- return(FALSE);
- p++;
- *p='\0';
- (void) CopyMagickString(p,path,sizeof(executable)-strlen(executable));
- (void) CopyMagickString(path,executable,length);
+ p=strrchr(program,'\\');
+ if (p != (char *) NULL)
+ {
+ p++;
+ *p='\0';
+ (void) ConcatenateMagickString(program,"gswin32c.exe",sizeof(program));
+ }
+ (void) CopyMagickString(path,program,length);
return(TRUE);
}
\f
void
*map;
+ (void) address;
access_mode=0;
file_handle=INVALID_HANDLE_VALUE;
low_length=(DWORD) (length & 0xFFFFFFFFUL);
%
% 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:
%
% stream.
%
*/
-MagickExport void NTSeekDirectory(DIR *entry,long position)
+MagickExport void NTSeekDirectory(DIR *entry,ssize_t position)
{
+ (void) position;
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
assert(entry != (DIR *) NULL);
}
*/
MagickExport int NTSyncMemory(void *address,size_t length,int flags)
{
+ (void) flags;
if (FlushViewOfFile(address,length) == MagickFalse)
return(-1);
return(0);
%
% The format of the NTSystemCommand method is:
%
-% int NTSystemCommand(const char *command)
+% int NTSystemCommand(MagickFalse,const char *command)
%
% A description of each parameter follows:
%
%
% 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)
{
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);
%
% 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);
*/
MagickExport int NTUnmapMemory(void *map,size_t length)
{
+ (void) length;
if (UnmapViewOfFile(map) == 0)
return(-1);
return(0);
%
% The format of the NTWarningHandler method is:
%
-% void NTWarningHandler(const ExceptionType warning,const char *reason,
+% void NTWarningHandler(const ExceptionType severity,const char *reason,
% const char *description)
%
% A description of each parameter follows:
%
-% o warning: Specifies the numeric warning category.
+% o severity: Specifies the numeric warning category.
%
% o reason: Specifies the reason to display before terminating the
% program.
% o description: Specifies any description to the reason.
%
*/
-MagickExport void NTWarningHandler(const ExceptionType warning,
+MagickExport void NTWarningHandler(const ExceptionType severity,
const char *reason,const char *description)
{
char
buffer[2*MaxTextExtent];
+ (void) severity;
if (reason == (char *) NULL)
return;
if (description == (char *) NULL)