2 Copyright 1999-2014 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 #include "MagickCore/exception.h"
22 #include "MagickCore/geometry.h"
24 #if defined(__cplusplus) || defined(c_plusplus)
28 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
30 #define PROT_READ 0x01
31 #define PROT_WRITE 0x02
32 #define MAP_SHARED 0x01
33 #define MAP_PRIVATE 0x02
34 #define MAP_ANONYMOUS 0x20
39 #define _SC_PAGESIZE 1
40 #define _SC_PHYS_PAGES 2
41 #define _SC_OPEN_MAX 3
42 #if !defined(SSIZE_MAX)
43 #define SSIZE_MAX 0x7fffffffL
50 1300 MSVC 7.0 Visual C++ .NET 2002
51 1310 Visual c++ .NET 2003
57 # if defined(__BORLANDC__)
58 # define chsize(file,length) chsize(file,length)
60 # define chsize(file,length) _chsize(file,length)
65 #if defined(_VISUALC_) && (_MSC_VER >= 1400)
66 # define access(path,mode) _access_s(path,mode)
75 #if !defined(closedir)
76 # define closedir(directory) NTCloseDirectory(directory)
79 # define fdopen _fdopen
82 # define fileno _fileno
84 #if !defined(fseek) && !defined(__MINGW32__) && !defined(__MINGW64__)
85 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
86 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
87 # define fseek _fseeki64
90 #if !defined(fstat) && !defined(__BORLANDC__)
91 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
92 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
93 # define fstat _fstati64
99 # define fsync _commit
101 #if !defined(ftell) && !defined(__MINGW32__) && !defined(__MINGW64__)
102 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
103 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
104 # define ftell _ftelli64
107 #if !defined(ftruncate)
108 # define ftruncate(file,length) NTTruncateFile(file,length)
111 # define getcwd _getcwd
114 # define getpid _getpid
117 # define hypot _hypot
120 # define inline __inline
123 # define isatty _isatty
125 #if !defined(locale_t)
126 #define locale_t _locale_t
128 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
129 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
130 # define lseek _lseeki64
132 # define lseek _lseek
134 #if !defined(MAGICKCORE_LTDL_DELEGATE)
135 #if !defined(lt_dlclose)
136 # define lt_dlclose(handle) NTCloseLibrary(handle)
138 #if !defined(lt_dlerror)
139 # define lt_dlerror() NTGetLibraryError()
141 #if !defined(lt_dlexit)
142 # define lt_dlexit() NTExitLibrary()
144 #if !defined(lt_dlinit)
145 # define lt_dlinit() NTInitializeLibrary()
147 #if !defined(lt_dlopen)
148 # define lt_dlopen(filename) NTOpenLibrary(filename)
150 #if !defined(lt_dlsetsearchpath)
151 # define lt_dlsetsearchpath(path) NTSetSearchPath(path)
153 #if !defined(lt_dlsym)
154 # define lt_dlsym(handle,name) NTGetLibrarySymbol(handle,name)
158 # define mkdir _mkdir
161 # define mmap(address,length,protection,access,file,offset) \
162 NTMapMemory(address,length,protection,access,file,offset)
165 # define msync(address,length,flags) NTSyncMemory(address,length,flags)
168 # define munmap(address,length) NTUnmapMemory(address,length)
170 #if !defined(opendir)
171 # define opendir(directory) NTOpenDirectory(directory)
177 # define pclose _pclose
180 # define popen _popen
182 #if !defined(fprintf_l)
183 #define fprintf_l _fprintf_s_l
188 #if !defined(readdir)
189 # define readdir(directory) NTReadDirectory(directory)
191 #if !defined(seekdir)
192 # define seekdir(directory,offset) NTSeekDirectory(directory,offset)
194 #if !defined(setmode)
195 # define setmode _setmode
197 #if !defined(spawnvp)
198 # define spawnvp _spawnvp
200 #if !defined(strtod_l)
201 #define strtod_l _strtod_l
203 #if !defined(stat) && !defined(__BORLANDC__)
204 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
205 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
206 # define stat _stati64
211 #if !defined(strcasecmp)
212 # define strcasecmp _stricmp
214 #if !defined(strncasecmp)
215 # define strncasecmp _strnicmp
217 #if !defined(sysconf)
218 # define sysconf(name) NTSystemConfiguration(name)
220 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
221 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
222 # define tell _telli64
226 #if !defined(telldir)
227 # define telldir(directory) NTTellDirectory(directory)
229 #if !defined(tempnam)
230 # define tempnam _tempnam_s
232 #if !defined(vfprintf_l)
233 #define vfprintf_l _vfprintf_l
235 #if !defined(vsnprintf)
236 #if !defined(_MSC_VER) || (defined(_MSC_VER) && _MSC_VER < 1500)
237 #define vsnprintf _vsnprintf
240 #if !defined(vsnprintf_l)
241 #define vsnprintf_l _vsnprintf_l
244 # define write _write
246 #if !defined(wstat) && !defined(__BORLANDC__)
247 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
248 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && (__MSVCRT_VERSION__ < 0x800)
249 # define wstat _wstati64
251 # define wstat _wstat
255 #if defined(_MT) && defined(MAGICKCORE_WINDOWS_SUPPORT)
256 # define SAFE_GLOBAL __declspec(thread)
261 #if defined(__BORLANDC__)
265 #define _O_SEQUENTIAL 0
266 #undef _O_SHORT_LIVED
267 #define _O_SHORT_LIVED 0
269 #define _O_TEMPORARY 0
274 typedef struct _GhostInfo
277 extern MagickExport char
278 **NTArgvToUTF8(const int argc,wchar_t **);
280 extern MagickExport const GhostInfo_
281 *NTGhostscriptDLLVectors(void);
283 extern MagickExport int
284 NTGhostscriptUnLoadDLL(void);
286 extern MagickExport void
287 NTErrorHandler(const ExceptionType,const char *,const char *),
288 NTWarningHandler(const ExceptionType,const char *,const char *);
291 #if defined(__cplusplus) || defined(c_plusplus)