1 /*
2   Copyright 1999-2021 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 private methods.
17 */
18 #ifndef MAGICKCORE_NT_BASE_PRIVATE_H
19 #define MAGICKCORE_NT_BASE_PRIVATE_H
20 
21 #include "MagickCore/delegate.h"
22 #include "MagickCore/delegate-private.h"
23 #include "MagickCore/exception.h"
24 #include "MagickCore/splay-tree.h"
25 
26 #if defined(__cplusplus) || defined(c_plusplus)
27 extern "C" {
28 #endif
29 
30 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
31 
32 #if !defined(XS_VERSION)
33 struct dirent
34 {
35   char
36     d_name[2048];
37 
38   int
39     d_namlen;
40 };
41 
42 typedef struct _DIR
43 {
44   HANDLE
45     hSearch;
46 
47   WIN32_FIND_DATAW
48     Win32FindData;
49 
50   BOOL
51     firsttime;
52 
53   struct dirent
54     file_info;
55 } DIR;
56 
57 #if !defined(__MINGW32__)
58 struct timeval;
59 
60 struct timezone
61 {
62   int
63     tz_minuteswest,
64     tz_dsttime;
65 };
66 #endif
67 
68 #endif
69 
70 extern MagickPrivate char
71   *NTGetLastError(void);
72 
73 #if !defined(MAGICKCORE_LTDL_DELEGATE)
74 extern MagickPrivate const char
75   *NTGetLibraryError(void);
76 #endif
77 
78 #if !defined(XS_VERSION)
79 extern MagickPrivate const char
80   *NTGetLibraryError(void);
81 
82 extern MagickPrivate DIR
83   *NTOpenDirectory(const char *);
84 
85 extern MagickPrivate double
86   NTElapsedTime(void),
87   NTErf(double),
88   NTUserTime(void);
89 
90 extern MagickPrivate int
91 #if !defined(__MINGW32__)
92   gettimeofday(struct timeval *,struct timezone *),
93 #endif
94   NTCloseDirectory(DIR *),
95   NTCloseLibrary(void *),
96   NTControlHandler(void),
97   NTExitLibrary(void),
98   NTTruncateFile(int,off_t),
99   NTGhostscriptDLL(char *,int),
100   NTGhostscriptFonts(char *,int),
101   NTGhostscriptLoadDLL(void),
102   NTInitializeLibrary(void),
103   NTSetSearchPath(const char *),
104   NTUnmapMemory(void *,size_t),
105   NTSystemCommand(const char *,char *);
106 
107 extern MagickPrivate ssize_t
108   NTSystemConfiguration(int);
109 
110 extern MagickPrivate MagickBooleanType
111   NTGatherRandomData(const size_t,unsigned char *),
112   NTGetExecutionPath(char *,const size_t),
113   NTGetModulePath(const char *,char *),
114   NTReportEvent(const char *,const MagickBooleanType);
115 
116 extern MagickExport MagickBooleanType
117   NTLongPathsEnabled();
118 
119 extern MagickPrivate struct dirent
120   *NTReadDirectory(DIR *);
121 
122 extern MagickPrivate unsigned char
123   *NTRegistryKeyLookup(const char *),
124   *NTResourceToBlob(const char *);
125 
126 extern MagickPrivate void
127   *NTGetLibrarySymbol(void *,const char *),
128   NTGhostscriptEXE(char *,int),
129   NTInitializeWinsock(MagickBooleanType),
130   *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
131   *NTOpenLibrary(const char *),
132   NTWindowsGenesis(void),
133   NTWindowsTerminus(void);
134 
135 #endif /* !XS_VERSION */
136 
137 #endif /* MAGICKCORE_WINDOWS_SUPPORT */
138 
139 #if defined(__cplusplus) || defined(c_plusplus)
140 }
141 #endif /* !C++ */
142 
143 #endif /* !MAGICKCORE_NT_BASE_H */
144