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(spawnvp)
191 # define spawnvp _spawnvp
193 #if !defined(stat) && !defined(__BORLANDC__)
194 #if defined(__WINDOWS__) && !defined(Windows95) && \
195 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
196 # define stat _stati64
201 #if !defined(strcasecmp)
202 # define strcasecmp _strcmpi
204 #if !defined(strncasecmp)
205 # define strncasecmp _strnicmp
207 #if !defined(sysconf)
208 # define sysconf(name) NTSystemConfiguration(name)
210 #if !defined(telldir)
211 # define telldir(directory) NTTellDirectory(directory)
213 #if !defined(tempnam)
214 # define tempnam _tempnam
216 #if !defined(vsnprintf)
217 #if !defined(_MSC_VER) || (defined(_MSC_VER) && (_MSC_VER < 1500))
218 #define vsnprintf _vsnprintf
222 # define write _write
224 #if !defined(wstat) && !defined(__BORLANDC__)
225 #if defined(__WINDOWS__) && !defined(Windows95) && \
226 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
227 # define wstat _wstati64
229 # define wstat _wstat
233 #if defined(_MT) && defined(__WINDOWS__)
234 # define SAFE_GLOBAL __declspec(thread)
239 #if defined(__BORLANDC__)
243 #define _O_SEQUENTIAL 0
244 #undef _O_SHORT_LIVED
245 #define _O_SHORT_LIVED 0
247 #define _O_TEMPORARY 0
250 #if !defined(XS_VERSION)
275 typedef struct _NTMEMORYSTATUSEX
288 ullAvailExtendedVirtual;
292 (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
295 (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
299 #if !defined(ssize_t) && !defined(__MINGW32__)
300 typedef long ssize_t;
303 #if defined(MAGICKCORE_BZLIB_DELEGATE)
309 extern MagickExport char
310 *NTGetLastError(void);
312 extern MagickExport const GhostInfo
313 *NTGhostscriptDLLVectors(void);
315 #if !defined(MAGICKCORE_LTDL_DELEGATE)
316 extern MagickExport const char
317 *NTGetLibraryError(void);
320 #if !defined(XS_VERSION)
321 extern MagickExport const char
322 *NTGetLibraryError(void);
324 extern MagickExport DIR
325 *NTOpenDirectory(const char *);
327 extern MagickExport double
331 extern MagickExport int
334 NTCloseDirectory(DIR *),
335 NTCloseLibrary(void *),
336 NTControlHandler(void),
338 NTTruncateFile(int,off_t),
339 NTGhostscriptDLL(char *,int),
340 NTGhostscriptEXE(char *,int),
341 NTGhostscriptFonts(char *,int),
342 NTGhostscriptLoadDLL(void),
343 NTGhostscriptUnLoadDLL(void),
344 NTInitializeLibrary(void),
345 NTSetSearchPath(const char *),
346 NTSyncMemory(void *,size_t,int),
347 NTUnmapMemory(void *,size_t),
348 NTSystemCommand(const char *);
350 extern MagickExport long
351 NTSystemConfiguration(int),
352 NTTellDirectory(DIR *);
354 extern MagickExport MagickBooleanType
355 NTGatherRandomData(const size_t,unsigned char *),
356 NTGetExecutionPath(char *,const size_t),
357 NTGetModulePath(const char *,char *),
358 NTReportEvent(const char *,const MagickBooleanType),
359 NTReportException(const char *,const MagickBooleanType);
361 extern MagickExport struct dirent
362 *NTReadDirectory(DIR *);
364 extern MagickExport unsigned char
365 *NTRegistryKeyLookup(const char *),
366 *NTResourceToBlob(const char *);
368 extern MagickExport void
369 NTErrorHandler(const ExceptionType,const char *,const char *),
370 *NTGetLibrarySymbol(void *,const char *),
371 *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
372 *NTOpenLibrary(const char *),
373 NTSeekDirectory(DIR *,long),
374 NTWarningHandler(const ExceptionType,const char *,const char *);
376 #endif /* !XS_VERSION */
378 #if defined(__cplusplus) || defined(c_plusplus)
382 #endif /* !_MAGICKCORE_NT_BASE_H */