00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _MAGICKCORE_NT_BASE_H
00019 #define _MAGICKCORE_NT_BASE_H
00020
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024
00025 #include "magick/delegate.h"
00026 #include "magick/exception.h"
00027
00028 #define WIN32_LEAN_AND_MEAN
00029 #define VC_EXTRALEAN
00030 #define _CRT_SECURE_NO_DEPRECATE 1
00031 #include <windows.h>
00032 #include <wchar.h>
00033 #include <winuser.h>
00034 #include <wingdi.h>
00035 #include <io.h>
00036 #include <process.h>
00037 #include <errno.h>
00038 #if defined(_DEBUG) && !defined(__MINGW32__)
00039 #include <crtdbg.h>
00040 #endif
00041
00042 #define PROT_READ 0x01
00043 #define PROT_WRITE 0x02
00044 #define MAP_SHARED 0x01
00045 #define MAP_PRIVATE 0x02
00046 #define MAP_ANONYMOUS 0x20
00047 #define F_OK 0
00048 #define R_OK 4
00049 #define W_OK 2
00050 #define RW_OK 6
00051 #define _SC_PAGESIZE 1
00052 #define _SC_PHYS_PAGES 2
00053 #define _SC_OPEN_MAX 3
00054 #if !defined(SSIZE_MAX)
00055 #define SSIZE_MAX 0x7fffffffL
00056 #endif
00057
00058 #if !defined(chsize)
00059 # if defined(__BORLANDC__)
00060 # define chsize(file,length) chsize(file,length)
00061 # else
00062 # define chsize(file,length) _chsize(file,length)
00063 # endif
00064 #endif
00065
00066 #if !defined(access)
00067 # define access(path,mode) _access(path,mode)
00068 #endif
00069 #if !defined(chdir)
00070 # define chdir _chdir
00071 #endif
00072 #if !defined(close)
00073 # define close _close
00074 #endif
00075 #if !defined(closedir)
00076 # define closedir(directory) NTCloseDirectory(directory)
00077 #endif
00078 #if !defined(fdopen)
00079 # define fdopen _fdopen
00080 #endif
00081 #if !defined(fileno)
00082 # define fileno _fileno
00083 #endif
00084 #if !defined(ftruncate)
00085 # define ftruncate(file,length) NTTruncateFile(file,length)
00086 #endif
00087 #if !defined(getcwd)
00088 # define getcwd _getcwd
00089 #endif
00090 #if !defined(getpid)
00091 # define getpid _getpid
00092 #endif
00093 #if !defined(hypot)
00094 # define hypot _hypot
00095 #endif
00096 #if !defined(isatty)
00097 # define isatty _isatty
00098 #endif
00099 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00100 #if !defined(lt_dlclose)
00101 # define lt_dlclose(handle) NTCloseLibrary(handle)
00102 #endif
00103 #if !defined(lt_dlerror)
00104 # define lt_dlerror() NTGetLibraryError()
00105 #endif
00106 #if !defined(lt_dlexit)
00107 # define lt_dlexit() NTExitLibrary()
00108 #endif
00109 #if !defined(lt_dlinit)
00110 # define lt_dlinit() NTInitializeLibrary()
00111 #endif
00112 #if !defined(lt_dlopen)
00113 # define lt_dlopen(filename) NTOpenLibrary(filename)
00114 #endif
00115 #if !defined(lt_dlsetsearchpath)
00116 # define lt_dlsetsearchpath(path) NTSetSearchPath(path)
00117 #endif
00118 #if !defined(lt_dlsym)
00119 # define lt_dlsym(handle,name) NTGetLibrarySymbol(handle,name)
00120 #endif
00121 #endif
00122 #if !defined(mmap)
00123 # define mmap(address,length,protection,access,file,offset) \
00124 NTMapMemory(address,length,protection,access,file,offset)
00125 #endif
00126 #if !defined(msync)
00127 # define msync(address,length,flags) NTSyncMemory(address,length,flags)
00128 #endif
00129 #if !defined(munmap)
00130 # define munmap(address,length) NTUnmapMemory(address,length)
00131 #endif
00132 #if !defined(opendir)
00133 # define opendir(directory) NTOpenDirectory(directory)
00134 #endif
00135 #if !defined(open)
00136 # define open _open
00137 #endif
00138 #if !defined(pclose)
00139 # define pclose _pclose
00140 #endif
00141 #if !defined(popen)
00142 # define popen _popen
00143 #endif
00144 #if !defined(read)
00145 # define read _read
00146 #endif
00147 #if !defined(readdir)
00148 # define readdir(directory) NTReadDirectory(directory)
00149 #endif
00150 #if !defined(seekdir)
00151 # define seekdir(directory,offset) NTSeekDirectory(directory,offset)
00152 #endif
00153 #if !defined(setmode)
00154 # define setmode _setmode
00155 #endif
00156 #if !defined(strcasecmp)
00157 # define strcasecmp _strcmpi
00158 #endif
00159 #if !defined(strncasecmp)
00160 # define strncasecmp _strnicmp
00161 #endif
00162 #if !defined(sysconf)
00163 # define sysconf(name) NTSystemConfiguration(name)
00164 #endif
00165 #if !defined(telldir)
00166 # define telldir(directory) NTTellDirectory(directory)
00167 #endif
00168 #if !defined(tempnam)
00169 # define tempnam _tempnam
00170 #endif
00171 #if !defined(vsnprintf)
00172 # define vsnprintf _vsnprintf
00173 #endif
00174 #if !defined(write)
00175 # define write _write
00176 #endif
00177
00178 #if defined(_MT) && defined(__WINDOWS__)
00179 # define SAFE_GLOBAL __declspec(thread)
00180 #else
00181 # define SAFE_GLOBAL
00182 #endif
00183
00184 #if defined(__BORLANDC__)
00185 #undef _O_RANDOM
00186 #define _O_RANDOM 0
00187 #undef _O_SEQUENTIAL
00188 #define _O_SEQUENTIAL 0
00189 #undef _O_SHORT_LIVED
00190 #define _O_SHORT_LIVED 0
00191 #undef _O_TEMPORARY
00192 #define _O_TEMPORARY 0
00193 #endif
00194
00195 #if !defined(XS_VERSION)
00196 struct dirent
00197 {
00198 char
00199 d_name[2048];
00200
00201 int
00202 d_namlen;
00203 };
00204
00205 typedef struct _DIR
00206 {
00207 HANDLE
00208 hSearch;
00209
00210 WIN32_FIND_DATA
00211 Win32FindData;
00212
00213 BOOL
00214 firsttime;
00215
00216 struct dirent
00217 file_info;
00218 } DIR;
00219
00220 typedef struct _NTMEMORYSTATUSEX
00221 {
00222 DWORD
00223 dwLength,
00224 dwMemoryLoad;
00225
00226 DWORDLONG
00227 ullTotalPhys,
00228 ullAvailPhys,
00229 ullTotalPageFile,
00230 ullAvailPageFile,
00231 ullTotalVirtual,
00232 ullAvailVirtual,
00233 ullAvailExtendedVirtual;
00234 } NTMEMORYSTATUSEX;
00235
00236 typedef UINT
00237 (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
00238
00239 typedef UINT
00240 (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
00241
00242 #endif
00243
00244 #if !defined(ssize_t) && !defined(__MINGW32__)
00245 typedef long ssize_t;
00246 #endif
00247
00248 extern MagickExport char
00249 *NTGetLastError(void);
00250
00251 extern MagickExport const GhostscriptVectors
00252 *NTGhostscriptDLLVectors(void);
00253
00254 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00255 extern MagickExport const char
00256 *NTGetLibraryError(void);
00257 #endif
00258
00259 #if !defined(XS_VERSION)
00260 extern MagickExport char
00261 *NTRegistryKeyLookup(const char *);
00262
00263 extern MagickExport const char
00264 *NTGetLibraryError(void);
00265
00266 extern MagickExport DIR
00267 *NTOpenDirectory(const char *);
00268
00269 extern MagickExport double
00270 NTElapsedTime(void),
00271 NTUserTime(void);
00272
00273 extern MagickExport int
00274 Exit(int),
00275 IsWindows95(),
00276 NTCloseDirectory(DIR *),
00277 NTCloseLibrary(void *),
00278 NTControlHandler(void),
00279 NTExitLibrary(void),
00280 NTTruncateFile(int,off_t),
00281 NTGhostscriptDLL(char *,int),
00282 NTGhostscriptEXE(char *,int),
00283 NTGhostscriptFonts(char *,int),
00284 NTGhostscriptLoadDLL(void),
00285 NTGhostscriptUnLoadDLL(void),
00286 NTInitializeLibrary(void),
00287 NTSetSearchPath(const char *),
00288 NTSyncMemory(void *,size_t,int),
00289 NTUnmapMemory(void *,size_t),
00290 NTSystemCommand(const char *);
00291
00292 extern MagickExport long
00293 NTSystemConfiguration(int),
00294 NTTellDirectory(DIR *);
00295
00296 extern MagickExport MagickBooleanType
00297 NTGetExecutionPath(char *,const size_t),
00298 NTGetModulePath(const char *,char *),
00299 NTReportEvent(const char *,const MagickBooleanType),
00300 NTReportException(const char *,const MagickBooleanType);
00301
00302 extern MagickExport struct dirent
00303 *NTReadDirectory(DIR *);
00304
00305 extern MagickExport unsigned char
00306 *NTResourceToBlob(const char *);
00307
00308 extern MagickExport void
00309 NTErrorHandler(const ExceptionType,const char *,const char *),
00310 *NTGetLibrarySymbol(void *,const char *),
00311 *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
00312 *NTOpenLibrary(const char *),
00313 NTSeekDirectory(DIR *,long),
00314 NTWarningHandler(const ExceptionType,const char *,const char *);
00315
00316 #endif
00317
00318 #if defined(__cplusplus) || defined(c_plusplus)
00319 }
00320 #endif
00321
00322 #endif