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 #if !defined(chsize)
00060 # if defined(__BORLANDC__)
00061 # define chsize(file,length) chsize(file,length)
00062 # else
00063 # define chsize(file,length) _chsize(file,length)
00064 # endif
00065 #endif
00066
00067 #if !defined(access)
00068 # define access(path,mode) _access(path,mode)
00069 #endif
00070 #if !defined(chdir)
00071 # define chdir _chdir
00072 #endif
00073 #if !defined(close)
00074 # define close _close
00075 #endif
00076 #if !defined(closedir)
00077 # define closedir(directory) NTCloseDirectory(directory)
00078 #endif
00079 #if !defined(fdopen)
00080 # define fdopen _fdopen
00081 #endif
00082 #if !defined(fileno)
00083 # define fileno _fileno
00084 #endif
00085 #if !defined(fsync)
00086 # define fsync _commit
00087 #endif
00088 #if !defined(ftruncate)
00089 # define ftruncate(file,length) NTTruncateFile(file,length)
00090 #endif
00091 #if !defined(getcwd)
00092 # define getcwd _getcwd
00093 #endif
00094 #if !defined(getpid)
00095 # define getpid _getpid
00096 #endif
00097 #if !defined(hypot)
00098 # define hypot _hypot
00099 #endif
00100 #if !defined(inline)
00101 # define inline __inline
00102 #endif
00103 #if !defined(isatty)
00104 # define isatty _isatty
00105 #endif
00106 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00107 #if !defined(lt_dlclose)
00108 # define lt_dlclose(handle) NTCloseLibrary(handle)
00109 #endif
00110 #if !defined(lt_dlerror)
00111 # define lt_dlerror() NTGetLibraryError()
00112 #endif
00113 #if !defined(lt_dlexit)
00114 # define lt_dlexit() NTExitLibrary()
00115 #endif
00116 #if !defined(lt_dlinit)
00117 # define lt_dlinit() NTInitializeLibrary()
00118 #endif
00119 #if !defined(lt_dlopen)
00120 # define lt_dlopen(filename) NTOpenLibrary(filename)
00121 #endif
00122 #if !defined(lt_dlsetsearchpath)
00123 # define lt_dlsetsearchpath(path) NTSetSearchPath(path)
00124 #endif
00125 #if !defined(lt_dlsym)
00126 # define lt_dlsym(handle,name) NTGetLibrarySymbol(handle,name)
00127 #endif
00128 #endif
00129 #if !defined(mkdir)
00130 # define mkdir _mkdir
00131 #endif
00132 #if !defined(mmap)
00133 # define mmap(address,length,protection,access,file,offset) \
00134 NTMapMemory(address,length,protection,access,file,offset)
00135 #endif
00136 #if !defined(msync)
00137 # define msync(address,length,flags) NTSyncMemory(address,length,flags)
00138 #endif
00139 #if !defined(munmap)
00140 # define munmap(address,length) NTUnmapMemory(address,length)
00141 #endif
00142 #if !defined(opendir)
00143 # define opendir(directory) NTOpenDirectory(directory)
00144 #endif
00145 #if !defined(open)
00146 # define open _open
00147 #endif
00148 #if !defined(pclose)
00149 # define pclose _pclose
00150 #endif
00151 #if !defined(popen)
00152 # define popen _popen
00153 #endif
00154 #if !defined(read)
00155 # define read _read
00156 #endif
00157 #if !defined(readdir)
00158 # define readdir(directory) NTReadDirectory(directory)
00159 #endif
00160 #if !defined(seekdir)
00161 # define seekdir(directory,offset) NTSeekDirectory(directory,offset)
00162 #endif
00163 #if !defined(setmode)
00164 # define setmode _setmode
00165 #endif
00166 #if !defined(strcasecmp)
00167 # define strcasecmp _strcmpi
00168 #endif
00169 #if !defined(strncasecmp)
00170 # define strncasecmp _strnicmp
00171 #endif
00172 #if !defined(sysconf)
00173 # define sysconf(name) NTSystemConfiguration(name)
00174 #endif
00175 #if !defined(telldir)
00176 # define telldir(directory) NTTellDirectory(directory)
00177 #endif
00178 #if !defined(tempnam)
00179 # define tempnam _tempnam
00180 #endif
00181 #if !defined(vsnprintf)
00182 #if !defined(_MSC_VER) || (defined(_MSC_VER) && _MSC_VER < 1500)
00183 #define vsnprintf _vsnprintf
00184 #endif
00185 #endif
00186 #if !defined(write)
00187 # define write _write
00188 #endif
00189
00190 #if defined(_MT) && defined(__WINDOWS__)
00191 # define SAFE_GLOBAL __declspec(thread)
00192 #else
00193 # define SAFE_GLOBAL
00194 #endif
00195
00196 #if defined(__BORLANDC__)
00197 #undef _O_RANDOM
00198 #define _O_RANDOM 0
00199 #undef _O_SEQUENTIAL
00200 #define _O_SEQUENTIAL 0
00201 #undef _O_SHORT_LIVED
00202 #define _O_SHORT_LIVED 0
00203 #undef _O_TEMPORARY
00204 #define _O_TEMPORARY 0
00205 #endif
00206
00207 #if !defined(XS_VERSION)
00208 struct dirent
00209 {
00210 char
00211 d_name[2048];
00212
00213 int
00214 d_namlen;
00215 };
00216
00217 typedef struct _DIR
00218 {
00219 HANDLE
00220 hSearch;
00221
00222 WIN32_FIND_DATA
00223 Win32FindData;
00224
00225 BOOL
00226 firsttime;
00227
00228 struct dirent
00229 file_info;
00230 } DIR;
00231
00232 typedef struct _NTMEMORYSTATUSEX
00233 {
00234 DWORD
00235 dwLength,
00236 dwMemoryLoad;
00237
00238 DWORDLONG
00239 ullTotalPhys,
00240 ullAvailPhys,
00241 ullTotalPageFile,
00242 ullAvailPageFile,
00243 ullTotalVirtual,
00244 ullAvailVirtual,
00245 ullAvailExtendedVirtual;
00246 } NTMEMORYSTATUSEX;
00247
00248 typedef UINT
00249 (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
00250
00251 typedef UINT
00252 (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
00253
00254 #endif
00255
00256 #if !defined(ssize_t) && !defined(__MINGW32__)
00257 typedef long ssize_t;
00258 #endif
00259
00260 #if defined(MAGICKCORE_BZLIB_DELEGATE)
00261 # if defined(_WIN32)
00262 # define BZ_IMPORT 1
00263 # endif
00264 #endif
00265
00266 extern MagickExport char
00267 *NTGetLastError(void);
00268
00269 extern MagickExport const GhostscriptVectors
00270 *NTGhostscriptDLLVectors(void);
00271
00272 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00273 extern MagickExport const char
00274 *NTGetLibraryError(void);
00275 #endif
00276
00277 #if !defined(XS_VERSION)
00278 extern MagickExport const char
00279 *NTGetLibraryError(void);
00280
00281 extern MagickExport DIR
00282 *NTOpenDirectory(const char *);
00283
00284 extern MagickExport double
00285 NTElapsedTime(void),
00286 NTUserTime(void);
00287
00288 extern MagickExport int
00289 Exit(int),
00290 IsWindows95(),
00291 NTCloseDirectory(DIR *),
00292 NTCloseLibrary(void *),
00293 NTControlHandler(void),
00294 NTExitLibrary(void),
00295 NTTruncateFile(int,off_t),
00296 NTGhostscriptDLL(char *,int),
00297 NTGhostscriptEXE(char *,int),
00298 NTGhostscriptFonts(char *,int),
00299 NTGhostscriptLoadDLL(void),
00300 NTGhostscriptUnLoadDLL(void),
00301 NTInitializeLibrary(void),
00302 NTSetSearchPath(const char *),
00303 NTSyncMemory(void *,size_t,int),
00304 NTUnmapMemory(void *,size_t),
00305 NTSystemCommand(const char *);
00306
00307 extern MagickExport long
00308 NTSystemConfiguration(int),
00309 NTTellDirectory(DIR *);
00310
00311 extern MagickExport MagickBooleanType
00312 NTGatherRandomData(const size_t,unsigned char *),
00313 NTGetExecutionPath(char *,const size_t),
00314 NTGetModulePath(const char *,char *),
00315 NTReportEvent(const char *,const MagickBooleanType),
00316 NTReportException(const char *,const MagickBooleanType);
00317
00318 extern MagickExport struct dirent
00319 *NTReadDirectory(DIR *);
00320
00321 extern MagickExport unsigned char
00322 *NTRegistryKeyLookup(const char *),
00323 *NTResourceToBlob(const char *);
00324
00325 extern MagickExport void
00326 NTErrorHandler(const ExceptionType,const char *,const char *),
00327 *NTGetLibrarySymbol(void *,const char *),
00328 *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
00329 *NTOpenLibrary(const char *),
00330 NTSeekDirectory(DIR *,long),
00331 NTWarningHandler(const ExceptionType,const char *,const char *);
00332
00333 #endif
00334
00335 #if defined(__cplusplus) || defined(c_plusplus)
00336 }
00337 #endif
00338
00339 #endif