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