2 Copyright 1999-2017 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 https://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 WIN32_LEAN_AND_MEAN
32 #define _CRT_SECURE_NO_DEPRECATE 1
41 #include <sys/utime.h>
42 #if defined(_DEBUG) && !defined(__MINGW32__) && !defined(__MINGW64__)
46 #define PROT_READ 0x01
47 #define PROT_WRITE 0x02
48 #define MAP_SHARED 0x01
49 #define MAP_PRIVATE 0x02
50 #define MAP_ANONYMOUS 0x20
55 #define _SC_PAGESIZE 1
56 #define _SC_PHYS_PAGES 2
57 #define _SC_OPEN_MAX 3
58 #if !defined(SSIZE_MAX)
59 #define SSIZE_MAX 0x7fffffffL
66 1300 MSVC 7.0 Visual C++ .NET 2002
67 1310 Visual c++ .NET 2003
77 # if defined(__BORLANDC__)
78 # define chsize(file,length) chsize(file,length)
80 # define chsize(file,length) _chsize(file,length)
85 #if defined(_VISUALC_) && (_MSC_VER >= 1400)
86 # define access(path,mode) _access_s(path,mode)
95 #if !defined(closedir)
96 # define closedir(directory) NTCloseDirectory(directory)
98 #define MAGICKCORE_HAVE_ERF
99 #if defined(_VISUALC_) && (_MSC_VER < 1700)
100 # define erf(x) NTErf(x)
103 # define fdopen _fdopen
106 # define fileno _fileno
108 #if !defined(fseek) && !defined(__MINGW32__) && !defined(__MINGW64__)
109 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
110 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
111 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
112 # define fseek _fseeki64
115 #if !defined(fstat) && !defined(__BORLANDC__)
116 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
117 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
118 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
119 # define fstat _fstati64
121 # define fstat _fstat
125 # define fsync _commit
127 #if !defined(ftell) && !defined(__MINGW32__) && !defined(__MINGW64__)
128 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
129 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
130 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
131 # define ftell _ftelli64
134 #if !defined(ftruncate)
135 # define ftruncate(file,length) NTTruncateFile(file,length)
138 # define getcwd _getcwd
141 # define getpid _getpid
144 # define hypot _hypot
147 # define isatty _isatty
149 #if !defined(locale_t)
150 #define locale_t _locale_t
152 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
153 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
154 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
156 # define lseek _lseeki64
160 # define lseek _lseek
163 #if !defined(MAGICKCORE_LTDL_DELEGATE)
164 #if !defined(lt_dlclose)
165 # define lt_dlclose(handle) NTCloseLibrary(handle)
167 #if !defined(lt_dlerror)
168 # define lt_dlerror() NTGetLibraryError()
170 #if !defined(lt_dlexit)
171 # define lt_dlexit() NTExitLibrary()
173 #if !defined(lt_dlinit)
174 # define lt_dlinit() NTInitializeLibrary()
176 #if !defined(lt_dlopen)
177 # define lt_dlopen(filename) NTOpenLibrary(filename)
179 #if !defined(lt_dlsetsearchpath)
180 # define lt_dlsetsearchpath(path) NTSetSearchPath(path)
182 #if !defined(lt_dlsym)
183 # define lt_dlsym(handle,name) NTGetLibrarySymbol(handle,name)
187 # define mkdir _mkdir
190 # define mmap(address,length,protection,access,file,offset) \
191 NTMapMemory(address,length,protection,access,file,offset)
194 # define msync(address,length,flags) NTSyncMemory(address,length,flags)
197 # define munmap(address,length) NTUnmapMemory(address,length)
199 #if !defined(opendir)
200 # define opendir(directory) NTOpenDirectory(directory)
206 # define pclose _pclose
209 # define popen _popen
211 #if !defined(fprintf_l)
212 #define fprintf_l _fprintf_s_l
215 # define read(fd,buffer,count) _read(fd,buffer,(unsigned int) count)
217 #if !defined(readdir)
218 # define readdir(directory) NTReadDirectory(directory)
220 #if !defined(seekdir)
221 # define seekdir(directory,offset) NTSeekDirectory(directory,offset)
223 #if !defined(setmode)
224 # define setmode _setmode
226 #if !defined(spawnvp)
227 # define spawnvp _spawnvp
229 #if !defined(strtod_l)
230 #define strtod_l _strtod_l
232 #if !defined(stat) && !defined(__BORLANDC__)
233 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
234 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
235 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
236 # define stat _stati64
241 #if !defined(strcasecmp)
242 # define strcasecmp _stricmp
244 #if !defined(strncasecmp)
245 # define strncasecmp _strnicmp
247 #if !defined(sysconf)
248 # define sysconf(name) NTSystemConfiguration(name)
250 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
251 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
252 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
253 # define tell _telli64
257 #if !defined(telldir)
258 # define telldir(directory) NTTellDirectory(directory)
260 #if !defined(tempnam)
261 # define tempnam _tempnam_s
264 # define umask _umask
267 # define unlink _unlink
270 # define utime(filename,time) _utime(filename,(struct _utimbuf*) time)
272 #if !defined(vfprintf_l)
273 #define vfprintf_l _vfprintf_l
275 #if !defined(vsnprintf)
276 #if !defined(_MSC_VER) || (defined(_MSC_VER) && _MSC_VER < 1500)
277 #define vsnprintf _vsnprintf
280 #if !defined(vsnprintf_l)
281 #define vsnprintf_l _vsnprintf_l
284 # define write(fd,buffer,count) _write(fd,buffer,(unsigned int) count)
286 #if !defined(wstat) && !defined(__BORLANDC__)
287 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
288 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
289 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
290 # define wstat _wstati64
292 # define wstat _wstat
296 #if defined(__BORLANDC__)
300 #define _O_SEQUENTIAL 0
301 #undef _O_SHORT_LIVED
302 #define _O_SHORT_LIVED 0
304 #define _O_TEMPORARY 0
309 typedef struct _GhostInfo
312 extern MagickExport char
313 **NTArgvToUTF8(const int argc,wchar_t **);
315 extern MagickExport const GhostInfo_
316 *NTGhostscriptDLLVectors(void);
318 extern MagickExport void
319 NTErrorHandler(const ExceptionType,const char *,const char *),
320 NTGhostscriptUnLoadDLL(void),
321 NTWarningHandler(const ExceptionType,const char *,const char *);
324 #if defined(__cplusplus) || defined(c_plusplus)