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