nt-base.h revision 4bb3ba9fd39af54bcb6f08b3e5a170eccdfb6fa9
1/*
2  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization
3  dedicated to making software imaging solutions freely available.
4
5  You may not use this file except in compliance with the License.
6  obtain a copy of the License at
7
8    http://www.imagemagick.org/script/license.php
9
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.
15
16  MagickCore Windows NT utility methods.
17*/
18#ifndef _MAGICKCORE_NT_BASE_H
19#define _MAGICKCORE_NT_BASE_H
20
21#include "MagickCore/exception.h"
22#include "MagickCore/geometry.h"
23
24#if defined(__cplusplus) || defined(c_plusplus)
25extern "C" {
26#endif
27
28#if defined(MAGICKCORE_WINDOWS_SUPPORT)
29
30#define WIN32_LEAN_AND_MEAN
31#define VC_EXTRALEAN
32#define _CRT_SECURE_NO_DEPRECATE  1
33#include <windows.h>
34#include <wchar.h>
35#include <winuser.h>
36#include <wingdi.h>
37#include <io.h>
38#include <process.h>
39#include <errno.h>
40#include <malloc.h>
41#if defined(_DEBUG) && !defined(__MINGW32__) && !defined(__MINGW64__)
42#include <crtdbg.h>
43#endif
44
45#define PROT_READ  0x01
46#define PROT_WRITE  0x02
47#define MAP_SHARED  0x01
48#define MAP_PRIVATE  0x02
49#define MAP_ANONYMOUS  0x20
50#define F_OK 0
51#define R_OK 4
52#define W_OK 2
53#define RW_OK 6
54#define _SC_PAGESIZE 1
55#define _SC_PHYS_PAGES 2
56#define _SC_OPEN_MAX 3
57#if !defined(SSIZE_MAX)
58#define SSIZE_MAX  0x7fffffffL
59#endif
60
61/*
62  _MSC_VER values:
63    1100 MSVC 5.0
64    1200 MSVC 6.0
65    1300 MSVC 7.0 Visual C++ .NET 2002
66    1310 Visual c++ .NET 2003
67    1400 Visual C++ 2005
68    1500 Visual C++ 2008
69    1600 Visual C++ 2010
70    1700 Visual C++ 2012
71    1800 Visual C++ 2013
72    1900 Visual C++ 2015
73*/
74
75#if !defined(chsize)
76# if defined(__BORLANDC__)
77#   define chsize(file,length)  chsize(file,length)
78# else
79#   define chsize(file,length)  _chsize(file,length)
80# endif
81#endif
82
83#if !defined(access)
84#if defined(_VISUALC_) && (_MSC_VER >= 1400)
85#  define access(path,mode)  _access_s(path,mode)
86#endif
87#endif
88#if !defined(chdir)
89#  define chdir  _chdir
90#endif
91#if !defined(close)
92#  define close  _close
93#endif
94#if !defined(closedir)
95#  define closedir(directory)  NTCloseDirectory(directory)
96#endif
97#if !defined(fdopen)
98#  define fdopen  _fdopen
99#endif
100#if !defined(fileno)
101#  define fileno  _fileno
102#endif
103#if !defined(fseek) && !defined(__MINGW32__) && !defined(__MINGW64__)
104#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
105  !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
106  !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
107#  define fseek  _fseeki64
108#endif
109#endif
110#if !defined(fstat) && !defined(__BORLANDC__)
111#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
112  !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
113  !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
114#  define fstat  _fstati64
115#else
116#  define fstat  _fstat
117#endif
118#endif
119#if !defined(fsync)
120#  define fsync  _commit
121#endif
122#if !defined(ftell) && !defined(__MINGW32__) && !defined(__MINGW64__)
123#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
124  !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
125  !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
126#  define ftell  _ftelli64
127#endif
128#endif
129#if !defined(ftruncate)
130#  define ftruncate(file,length)  NTTruncateFile(file,length)
131#endif
132#if !defined(getcwd)
133#  define getcwd  _getcwd
134#endif
135#if !defined(getpid)
136#  define getpid  _getpid
137#endif
138#if !defined(hypot)
139#  define hypot  _hypot
140#endif
141#if !defined(inline)
142#  define inline __inline
143#endif
144#if !defined(isatty)
145#  define isatty  _isatty
146#endif
147#if !defined(locale_t)
148#define locale_t _locale_t
149#endif
150#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
151  !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
152  !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
153#if !defined(lseek)
154#  define lseek  _lseeki64
155#endif
156#else
157#if !defined(lseek)
158#  define lseek  _lseek
159#endif
160#endif
161#if !defined(MAGICKCORE_LTDL_DELEGATE)
162#if !defined(lt_dlclose)
163#  define lt_dlclose(handle)  NTCloseLibrary(handle)
164#endif
165#if !defined(lt_dlerror)
166#  define lt_dlerror()  NTGetLibraryError()
167#endif
168#if !defined(lt_dlexit)
169#  define lt_dlexit()  NTExitLibrary()
170#endif
171#if !defined(lt_dlinit)
172#  define lt_dlinit()  NTInitializeLibrary()
173#endif
174#if !defined(lt_dlopen)
175#  define lt_dlopen(filename)  NTOpenLibrary(filename)
176#endif
177#if !defined(lt_dlsetsearchpath)
178#  define lt_dlsetsearchpath(path)  NTSetSearchPath(path)
179#endif
180#if !defined(lt_dlsym)
181#  define lt_dlsym(handle,name)  NTGetLibrarySymbol(handle,name)
182#endif
183#endif
184#if !defined(mkdir)
185#  define mkdir  _mkdir
186#endif
187#if !defined(mmap)
188#  define mmap(address,length,protection,access,file,offset) \
189  NTMapMemory(address,length,protection,access,file,offset)
190#endif
191#if !defined(msync)
192#  define msync(address,length,flags)  NTSyncMemory(address,length,flags)
193#endif
194#if !defined(munmap)
195#  define munmap(address,length)  NTUnmapMemory(address,length)
196#endif
197#if !defined(opendir)
198#  define opendir(directory)  NTOpenDirectory(directory)
199#endif
200#if !defined(open)
201#  define open  _open
202#endif
203#if !defined(pclose)
204#  define pclose  _pclose
205#endif
206#if !defined(popen)
207#  define popen  _popen
208#endif
209#if !defined(fprintf_l)
210#define fprintf_l  _fprintf_s_l
211#endif
212#if !defined(read)
213#  define read(fd,buffer,count)  _read(fd,buffer,(unsigned int) count)
214#endif
215#if !defined(readdir)
216#  define readdir(directory)  NTReadDirectory(directory)
217#endif
218#if !defined(seekdir)
219#  define seekdir(directory,offset)  NTSeekDirectory(directory,offset)
220#endif
221#if !defined(setmode)
222#  define setmode  _setmode
223#endif
224#if !defined(spawnvp)
225#  define spawnvp  _spawnvp
226#endif
227#if !defined(strtod_l)
228#define strtod_l  _strtod_l
229#endif
230#if !defined(stat) && !defined(__BORLANDC__)
231#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
232  !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
233  !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
234#  define stat  _stati64
235#else
236#  define stat  _stat
237#endif
238#endif
239#if !defined(strcasecmp)
240#  define strcasecmp  _stricmp
241#endif
242#if !defined(strncasecmp)
243#  define strncasecmp  _strnicmp
244#endif
245#if !defined(sysconf)
246#  define sysconf(name)  NTSystemConfiguration(name)
247#endif
248#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
249  !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
250  !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
251#  define tell  _telli64
252#else
253#  define tell  _tell
254#endif
255#if !defined(telldir)
256#  define telldir(directory)  NTTellDirectory(directory)
257#endif
258#if !defined(tempnam)
259#  define tempnam  _tempnam_s
260#endif
261#if !defined(umask)
262#  define umask  _umask
263#endif
264#if !defined(unlink)
265#  define unlink  _unlink
266#endif
267#if !defined(utime)
268#  define utime  _utime
269#endif
270#if !defined(vfprintf_l)
271#define vfprintf_l  _vfprintf_l
272#endif
273#if !defined(vsnprintf)
274#if !defined(_MSC_VER) || (defined(_MSC_VER) && _MSC_VER < 1500)
275#define vsnprintf _vsnprintf
276#endif
277#endif
278#if !defined(vsnprintf_l)
279#define vsnprintf_l  _vsnprintf_l
280#endif
281#if !defined(write)
282#  define write(fd,buffer,count)  _write(fd,buffer,(unsigned int) count)
283#endif
284#if !defined(wstat) && !defined(__BORLANDC__)
285#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
286  !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
287  !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
288#  define wstat  _wstati64
289#else
290#  define wstat  _wstat
291#endif
292#endif
293
294#if defined(__BORLANDC__)
295#undef _O_RANDOM
296#define _O_RANDOM 0
297#undef _O_SEQUENTIAL
298#define _O_SEQUENTIAL 0
299#undef _O_SHORT_LIVED
300#define _O_SHORT_LIVED 0
301#undef _O_TEMPORARY
302#define _O_TEMPORARY 0
303#endif
304
305#undef gettimeofday
306
307typedef struct _GhostInfo
308  GhostInfo_;
309
310extern MagickExport char
311  **NTArgvToUTF8(const int argc,wchar_t **);
312
313extern MagickExport const GhostInfo_
314  *NTGhostscriptDLLVectors(void);
315
316extern MagickExport void
317  NTErrorHandler(const ExceptionType,const char *,const char *),
318  NTGhostscriptUnLoadDLL(void),
319  NTWarningHandler(const ExceptionType,const char *,const char *);
320#endif
321
322#if defined(__cplusplus) || defined(c_plusplus)
323}
324#endif
325
326#endif
327