]> granicus.if.org Git - imagemagick/blob - magick/nt-base.h
(no commit message)
[imagemagick] / magick / nt-base.h
1 /*
2   Copyright 1999-2011 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 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24
25 #include "magick/delegate.h"
26 #include "magick/delegate-private.h"
27 #include "magick/exception.h"
28
29 #define WIN32_LEAN_AND_MEAN
30 #define VC_EXTRALEAN
31 #define _CRT_SECURE_NO_DEPRECATE  1
32 #include <windows.h>
33 #include <wchar.h>
34 #include <winuser.h>
35 #include <wingdi.h>
36 #include <io.h>
37 #include <process.h>
38 #include <errno.h>
39 #if defined(_DEBUG) && !defined(__MINGW32__)
40 #include <crtdbg.h>
41 #endif
42
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
48 #define F_OK 0
49 #define R_OK 4
50 #define W_OK 2
51 #define RW_OK 6
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
57 #endif
58
59 /*
60   _MSC_VER values:
61     1100 MSVC 5.0
62     1200 MSVC 6.0
63     1300 MSVC 7.0 Visual C++ .NET 2002
64     1310 Visual c++ .NET 2003
65     1400 Visual C++ 2005
66     1500 Visual C++ 2008
67 */
68
69 #if !defined(chsize)
70 # if defined(__BORLANDC__)
71 #   define chsize(file,length)  chsize(file,length)
72 # else
73 #   define chsize(file,length)  _chsize(file,length)
74 # endif
75 #endif
76
77 #if !defined(access)
78 #  define access(path,mode)  _access(path,mode)
79 #endif
80 #if !defined(chdir)
81 #  define chdir  _chdir
82 #endif
83 #if !defined(close)
84 #  define close  _close
85 #endif
86 #if !defined(closedir)
87 #  define closedir(directory)  NTCloseDirectory(directory)
88 #endif
89 #if !defined(fdopen)
90 #  define fdopen  _fdopen
91 #endif
92 #if !defined(fileno)
93 #  define fileno  _fileno
94 #endif
95 #if !defined(fseek)
96 #  define fseek  _fseeki64
97 #endif
98 #if !defined(fstat) && !defined(__BORLANDC__)
99 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
100   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
101 #  define fstat  _fstati64
102 #else
103 #  define fstat  _fstat
104 #endif
105 #endif
106 #if !defined(fsync)
107 #  define fsync  _commit
108 #endif
109 #if !defined(ftell)
110 #  define ftell  _ftelli64
111 #endif
112 #if !defined(ftruncate)
113 #  define ftruncate(file,length)  NTTruncateFile(file,length)
114 #endif
115 #if !defined(getcwd)
116 #  define getcwd  _getcwd
117 #endif
118 #if !defined(getpid)
119 #  define getpid  _getpid
120 #endif
121 #if !defined(hypot)
122 #  define hypot  _hypot
123 #endif
124 #if !defined(inline)
125 #  define inline __inline
126 #endif
127 #if !defined(isatty)
128 #  define isatty _isatty
129 #endif
130 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
131   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
132 #  define lseek  _lseeki64
133 #endif
134 #if !defined(MAGICKCORE_LTDL_DELEGATE)
135 #if !defined(lt_dlclose)
136 #  define lt_dlclose(handle)  NTCloseLibrary(handle)
137 #endif
138 #if !defined(lt_dlerror)
139 #  define lt_dlerror()  NTGetLibraryError()
140 #endif
141 #if !defined(lt_dlexit)
142 #  define lt_dlexit()  NTExitLibrary()
143 #endif
144 #if !defined(lt_dlinit)
145 #  define lt_dlinit()  NTInitializeLibrary()
146 #endif
147 #if !defined(lt_dlopen)
148 #  define lt_dlopen(filename)  NTOpenLibrary(filename)
149 #endif
150 #if !defined(lt_dlsetsearchpath)
151 #  define lt_dlsetsearchpath(path)  NTSetSearchPath(path)
152 #endif
153 #if !defined(lt_dlsym)
154 #  define lt_dlsym(handle,name)  NTGetLibrarySymbol(handle,name)
155 #endif
156 #endif
157 #if !defined(mkdir)
158 #  define mkdir  _mkdir
159 #endif
160 #if !defined(mmap)
161 #  define mmap(address,length,protection,access,file,offset) \
162   NTMapMemory(address,length,protection,access,file,offset)
163 #endif
164 #if !defined(msync)
165 #  define msync(address,length,flags)  NTSyncMemory(address,length,flags)
166 #endif
167 #if !defined(munmap)
168 #  define munmap(address,length)  NTUnmapMemory(address,length)
169 #endif
170 #if !defined(opendir)
171 #  define opendir(directory)  NTOpenDirectory(directory)
172 #endif
173 #if !defined(open)
174 #  define open  _open
175 #endif
176 #if !defined(pclose)
177 #  define pclose  _pclose
178 #endif
179 #if !defined(popen)
180 #  define popen  _popen
181 #endif
182 #if !defined(read)
183 #  define read  _read
184 #endif
185 #if !defined(readdir)
186 #  define readdir(directory)  NTReadDirectory(directory)
187 #endif
188 #if !defined(seekdir)
189 #  define seekdir(directory,offset)  NTSeekDirectory(directory,offset)
190 #endif
191 #if !defined(setmode)
192 #  define setmode  _setmode
193 #endif
194 #if !defined(spawnvp)
195 #  define spawnvp  _spawnvp
196 #endif
197 #if !defined(stat) && !defined(__BORLANDC__)
198 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
199   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
200 #  define stat  _stati64
201 #else
202 #  define stat  _stat
203 #endif
204 #endif
205 #if !defined(strcasecmp)
206 #  define strcasecmp  _strcmpi
207 #endif
208 #if !defined(strncasecmp)
209 #  define strncasecmp  _strnicmp
210 #endif
211 #if !defined(sysconf)
212 #  define sysconf(name)  NTSystemConfiguration(name)
213 #endif
214 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
215   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
216 #  define tell  _telli64
217 #endif
218 #if !defined(telldir)
219 #  define telldir(directory)  NTTellDirectory(directory)
220 #endif
221 #if !defined(tempnam)
222 #  define tempnam  _tempnam
223 #endif
224 #if !defined(vsnprintf)
225 #if !defined(_MSC_VER) || (defined(_MSC_VER) && (_MSC_VER < 1500))
226 #define vsnprintf _vsnprintf 
227 #endif
228 #endif
229 #if !defined(write)
230 #  define write  _write
231 #endif
232 #if !defined(wstat) && !defined(__BORLANDC__)
233 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
234   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
235 #  define wstat  _wstati64
236 #else
237 #  define wstat  _wstat
238 #endif
239 #endif
240
241 #if defined(_MT) && defined(MAGICKCORE_WINDOWS_SUPPORT)
242 #  define SAFE_GLOBAL  __declspec(thread)
243 #else
244 #  define SAFE_GLOBAL
245 #endif
246
247 #if defined(__BORLANDC__)
248 #undef _O_RANDOM
249 #define _O_RANDOM 0
250 #undef _O_SEQUENTIAL
251 #define _O_SEQUENTIAL 0
252 #undef _O_SHORT_LIVED
253 #define _O_SHORT_LIVED 0
254 #undef _O_TEMPORARY
255 #define _O_TEMPORARY 0
256 #endif
257
258 #if !defined(XS_VERSION)
259 struct dirent
260 {
261   char
262     d_name[2048];
263
264   int
265     d_namlen;
266 };
267
268 typedef struct _DIR
269 {
270   HANDLE
271     hSearch;
272
273   WIN32_FIND_DATA
274     Win32FindData;
275
276   BOOL
277     firsttime;
278
279   struct dirent
280     file_info;
281 } DIR;
282
283 typedef struct _NTMEMORYSTATUSEX
284 {
285   DWORD
286     dwLength,
287     dwMemoryLoad;
288
289   DWORDLONG
290     ullTotalPhys,
291     ullAvailPhys,
292     ullTotalPageFile,
293     ullAvailPageFile,
294     ullTotalVirtual,
295     ullAvailVirtual,
296     ullAvailExtendedVirtual;
297 } NTMEMORYSTATUSEX;
298
299 #if !defined(__MINGW32__)
300 struct timezone
301 {
302   int
303     tz_minuteswest,
304     tz_dsttime;
305 };
306 #endif
307
308 typedef UINT
309   (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
310
311 typedef UINT
312   (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
313
314 #endif
315
316 #if defined(MAGICKCORE_BZLIB_DELEGATE)
317 #  if defined(_WIN32)
318 #    define BZ_IMPORT 1
319 #  endif
320 #endif
321
322 extern MagickExport char
323   *NTGetLastError(void);
324
325 extern MagickExport const GhostInfo
326   *NTGhostscriptDLLVectors(void);
327
328 #if !defined(MAGICKCORE_LTDL_DELEGATE)
329 extern MagickExport const char
330   *NTGetLibraryError(void);
331 #endif
332
333 #if !defined(XS_VERSION)
334 extern MagickExport const char
335   *NTGetLibraryError(void);
336
337 extern MagickExport DIR
338   *NTOpenDirectory(const char *);
339
340 extern MagickExport double
341   NTElapsedTime(void),
342   NTUserTime(void);
343
344 extern MagickExport int
345   Exit(int),
346 #if !defined(__MINGW32__)
347   gettimeofday(struct timeval *,struct timezone *),
348 #endif
349   IsWindows95(),
350   NTCloseDirectory(DIR *),
351   NTCloseLibrary(void *),
352   NTControlHandler(void),
353   NTExitLibrary(void),
354   NTTruncateFile(int,off_t),
355   NTGhostscriptDLL(char *,int),
356   NTGhostscriptEXE(char *,int),
357   NTGhostscriptFonts(char *,int),
358   NTGhostscriptLoadDLL(void),
359   NTGhostscriptUnLoadDLL(void),
360   NTInitializeLibrary(void),
361   NTSetSearchPath(const char *),
362   NTSyncMemory(void *,size_t,int),
363   NTUnmapMemory(void *,size_t),
364   NTSystemCommand(const char *);
365
366 extern MagickExport ssize_t
367   NTSystemConfiguration(int),
368   NTTellDirectory(DIR *);
369
370 extern MagickExport MagickBooleanType
371   NTGatherRandomData(const size_t,unsigned char *),
372   NTGetExecutionPath(char *,const size_t),
373   NTGetModulePath(const char *,char *),
374   NTReportEvent(const char *,const MagickBooleanType),
375   NTReportException(const char *,const MagickBooleanType);
376
377 extern MagickExport struct dirent
378   *NTReadDirectory(DIR *);
379
380 extern MagickExport unsigned char
381   *NTRegistryKeyLookup(const char *),
382   *NTResourceToBlob(const char *);
383
384 extern MagickExport void
385   NTErrorHandler(const ExceptionType,const char *,const char *),
386   *NTGetLibrarySymbol(void *,const char *),
387   *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
388   *NTOpenLibrary(const char *),
389   NTSeekDirectory(DIR *,ssize_t),
390   NTWarningHandler(const ExceptionType,const char *,const char *);
391
392 #endif /* !XS_VERSION */
393
394 #if defined(__cplusplus) || defined(c_plusplus)
395 }
396 #endif /* !C++ */
397
398 #endif /* !_MAGICKCORE_NT_BASE_H */