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