2 Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
5 You may not use this file except in compliance with the License.
6 obtain a copy of the License at
8 http://www.imagemagick.org/script/license.php
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
16 MagickCore Windows NT utility methods.
18 #ifndef _MAGICKCORE_NT_BASE_H
19 #define _MAGICKCORE_NT_BASE_H
21 #if defined(__cplusplus) || defined(c_plusplus)
25 #include "magick/delegate.h"
26 #include "magick/delegate-private.h"
27 #include "magick/exception.h"
29 #define WIN32_LEAN_AND_MEAN
31 #define _CRT_SECURE_NO_DEPRECATE 1
39 #if defined(_DEBUG) && !defined(__MINGW32__)
43 #define PROT_READ 0x01
44 #define PROT_WRITE 0x02
45 #define MAP_SHARED 0x01
46 #define MAP_PRIVATE 0x02
47 #define MAP_ANONYMOUS 0x20
52 #define _SC_PAGESIZE 1
53 #define _SC_PHYS_PAGES 2
54 #define _SC_OPEN_MAX 3
55 #if !defined(SSIZE_MAX)
56 #define SSIZE_MAX 0x7fffffffL
63 1300 MSVC 7.0 Visual C++ .NET 2002
64 1310 Visual c++ .NET 2003
70 # if defined(__BORLANDC__)
71 # define chsize(file,length) chsize(file,length)
73 # define chsize(file,length) _chsize(file,length)
78 # define access(path,mode) _access(path,mode)
86 #if !defined(closedir)
87 # define closedir(directory) NTCloseDirectory(directory)
90 # define fdopen _fdopen
93 # define fileno _fileno
96 # define fseeko _fseeki64
98 #if !defined(fstat) && !defined(__BORLANDC__)
99 #if defined(__WINDOWS__) && !defined(Windows95) && \
100 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
101 # define fstat _fstati64
103 # define fstat _fstat
107 # define fsync _commit
110 # define ftello _ftelli64
112 #if !defined(ftruncate)
113 # define ftruncate(file,length) NTTruncateFile(file,length)
116 # define getcwd _getcwd
119 # define getpid _getpid
122 # define hypot _hypot
125 # define inline __inline
128 # define isatty _isatty
130 #if !defined(MAGICKCORE_LTDL_DELEGATE)
131 #if !defined(lt_dlclose)
132 # define lt_dlclose(handle) NTCloseLibrary(handle)
134 #if !defined(lt_dlerror)
135 # define lt_dlerror() NTGetLibraryError()
137 #if !defined(lt_dlexit)
138 # define lt_dlexit() NTExitLibrary()
140 #if !defined(lt_dlinit)
141 # define lt_dlinit() NTInitializeLibrary()
143 #if !defined(lt_dlopen)
144 # define lt_dlopen(filename) NTOpenLibrary(filename)
146 #if !defined(lt_dlsetsearchpath)
147 # define lt_dlsetsearchpath(path) NTSetSearchPath(path)
149 #if !defined(lt_dlsym)
150 # define lt_dlsym(handle,name) NTGetLibrarySymbol(handle,name)
154 # define mkdir _mkdir
157 # define mmap(address,length,protection,access,file,offset) \
158 NTMapMemory(address,length,protection,access,file,offset)
161 # define msync(address,length,flags) NTSyncMemory(address,length,flags)
164 # define munmap(address,length) NTUnmapMemory(address,length)
166 #if !defined(opendir)
167 # define opendir(directory) NTOpenDirectory(directory)
173 # define pclose _pclose
176 # define popen _popen
181 #if !defined(readdir)
182 # define readdir(directory) NTReadDirectory(directory)
184 #if !defined(seekdir)
185 # define seekdir(directory,offset) NTSeekDirectory(directory,offset)
187 #if !defined(setmode)
188 # define setmode _setmode
190 #if !defined(stat) && !defined(__BORLANDC__)
191 #if defined(__WINDOWS__) && !defined(Windows95) && \
192 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
193 # define stat _stati64
198 #if !defined(strcasecmp)
199 # define strcasecmp _strcmpi
201 #if !defined(strncasecmp)
202 # define strncasecmp _strnicmp
204 #if !defined(sysconf)
205 # define sysconf(name) NTSystemConfiguration(name)
207 #if !defined(telldir)
208 # define telldir(directory) NTTellDirectory(directory)
210 #if !defined(tempnam)
211 # define tempnam _tempnam
213 #if !defined(vsnprintf)
214 #if !defined(_MSC_VER) || (defined(_MSC_VER) && (_MSC_VER < 1500))
215 #define vsnprintf _vsnprintf
219 # define write _write
221 #if !defined(wstat) && !defined(__BORLANDC__)
222 #if defined(__WINDOWS__) && !defined(Windows95) && \
223 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
224 # define wstat _wstati64
226 # define wstat _wstat
230 #if defined(_MT) && defined(__WINDOWS__)
231 # define SAFE_GLOBAL __declspec(thread)
236 #if defined(__BORLANDC__)
240 #define _O_SEQUENTIAL 0
241 #undef _O_SHORT_LIVED
242 #define _O_SHORT_LIVED 0
244 #define _O_TEMPORARY 0
247 #if !defined(XS_VERSION)
272 typedef struct _NTMEMORYSTATUSEX
285 ullAvailExtendedVirtual;
289 (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
292 (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
296 #if !defined(ssize_t) && !defined(__MINGW32__)
297 typedef long ssize_t;
300 #if defined(MAGICKCORE_BZLIB_DELEGATE)
306 extern MagickExport char
307 *NTGetLastError(void);
309 extern MagickExport const GhostInfo
310 *NTGhostscriptDLLVectors(void);
312 #if !defined(MAGICKCORE_LTDL_DELEGATE)
313 extern MagickExport const char
314 *NTGetLibraryError(void);
317 #if !defined(XS_VERSION)
318 extern MagickExport const char
319 *NTGetLibraryError(void);
321 extern MagickExport DIR
322 *NTOpenDirectory(const char *);
324 extern MagickExport double
328 extern MagickExport int
331 NTCloseDirectory(DIR *),
332 NTCloseLibrary(void *),
333 NTControlHandler(void),
335 NTTruncateFile(int,off_t),
336 NTGhostscriptDLL(char *,int),
337 NTGhostscriptEXE(char *,int),
338 NTGhostscriptFonts(char *,int),
339 NTGhostscriptLoadDLL(void),
340 NTGhostscriptUnLoadDLL(void),
341 NTInitializeLibrary(void),
342 NTSetSearchPath(const char *),
343 NTSyncMemory(void *,size_t,int),
344 NTUnmapMemory(void *,size_t),
345 NTSystemCommand(const char *);
347 extern MagickExport long
348 NTSystemConfiguration(int),
349 NTTellDirectory(DIR *);
351 extern MagickExport MagickBooleanType
352 NTGatherRandomData(const size_t,unsigned char *),
353 NTGetExecutionPath(char *,const size_t),
354 NTGetModulePath(const char *,char *),
355 NTReportEvent(const char *,const MagickBooleanType),
356 NTReportException(const char *,const MagickBooleanType);
358 extern MagickExport struct dirent
359 *NTReadDirectory(DIR *);
361 extern MagickExport unsigned char
362 *NTRegistryKeyLookup(const char *),
363 *NTResourceToBlob(const char *);
365 extern MagickExport void
366 NTErrorHandler(const ExceptionType,const char *,const char *),
367 *NTGetLibrarySymbol(void *,const char *),
368 *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
369 *NTOpenLibrary(const char *),
370 NTSeekDirectory(DIR *,long),
371 NTWarningHandler(const ExceptionType,const char *,const char *);
373 #endif /* !XS_VERSION */
375 #if defined(__cplusplus) || defined(c_plusplus)
379 #endif /* !_MAGICKCORE_NT_BASE_H */