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 private application programming interface declarations. 17 */ 18 #ifndef MAGICKCORE_STUDIO_H 19 #define MAGICKCORE_STUDIO_H 20 21 #if defined(__cplusplus) || defined(c_plusplus) 22 extern "C" { 23 #endif 24 25 #if defined(WIN32) || defined(WIN64) 26 # define MAGICKCORE_WINDOWS_SUPPORT 27 #else 28 # define MAGICKCORE_POSIX_SUPPORT 29 #endif 30 31 #define MAGICKCORE_IMPLEMENTATION 1 32 33 #if !defined(MAGICKCORE_CONFIG_H) 34 # define MAGICKCORE_CONFIG_H 35 #include "MagickCore/magick-config.h" 36 # if defined(MAGICKCORE__FILE_OFFSET_BITS) && !defined(_FILE_OFFSET_BITS) 37 # define _FILE_OFFSET_BITS MAGICKCORE__FILE_OFFSET_BITS 38 #endif 39 #if defined(_magickcore_const) && !defined(const) 40 # define const _magickcore_const 41 #endif 42 #if defined(_magickcore_inline) && !defined(inline) 43 # define inline _magickcore_inline 44 #endif 45 # if defined(__cplusplus) || defined(c_plusplus) 46 # undef inline 47 # endif 48 #endif 49 50 #if defined(MAGICKCORE_NAMESPACE_PREFIX) 51 # include "MagickCore/methods.h" 52 #endif 53 54 #if !defined(const) 55 # define STDC 56 #endif 57 58 #include <stdarg.h> 59 #include <stdio.h> 60 #if defined(MAGICKCORE_HAVE_SYS_STAT_H) 61 # include <sys/stat.h> 62 #endif 63 #if defined(MAGICKCORE_STDC_HEADERS) 64 # include <stdlib.h> 65 # include <stddef.h> 66 #else 67 # if defined(MAGICKCORE_HAVE_STDLIB_H) 68 # include <stdlib.h> 69 # endif 70 #endif 71 #if !defined(magick_restrict) 72 # if !defined(_magickcore_restrict) 73 # define magick_restrict restrict 74 # else 75 # define magick_restrict _magickcore_restrict 76 # endif 77 #endif 78 #if defined(MAGICKCORE_HAVE_STRING_H) 79 # if !defined(STDC_HEADERS) && defined(MAGICKCORE_HAVE_MEMORY_H) 80 # include <memory.h> 81 # endif 82 # include <string.h> 83 #endif 84 #if defined(MAGICKCORE_HAVE_STRINGS_H) 85 # include <strings.h> 86 #endif 87 #if defined(MAGICKCORE_HAVE_INTTYPES_H) 88 # include <inttypes.h> 89 #endif 90 #if defined(MAGICKCORE_HAVE_STDINT_H) 91 # include <stdint.h> 92 #endif 93 #if defined(MAGICKCORE_HAVE_UNISTD_H) 94 # include <unistd.h> 95 #endif 96 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG) 97 #define _CRTDBG_MAP_ALLOC 98 #endif 99 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 100 # include <io.h> 101 #if !defined(__CYGWIN__) 102 # include <direct.h> 103 #endif 104 # if !defined(MAGICKCORE_HAVE_STRERROR) 105 # define HAVE_STRERROR 106 # endif 107 #endif 108 109 #include <ctype.h> 110 #include <locale.h> 111 #include <errno.h> 112 #include <fcntl.h> 113 #include <math.h> 114 #include <time.h> 115 #include <limits.h> 116 #include <signal.h> 117 #include <assert.h> 118 119 #if defined(MAGICKCORE_HAVE_XLOCALE_H) 120 # include <xlocale.h> 121 #endif 122 #if defined(MAGICKCORE_THREAD_SUPPORT) 123 # include <pthread.h> 124 #endif 125 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 126 #if !defined(__CYGWIN__) 127 #include <winsock2.h> 128 #include <ws2tcpip.h> 129 #endif 130 #include <windows.h> 131 #ifdef _MSC_VER 132 #pragma comment (lib, "ws2_32.lib") 133 #endif 134 #endif 135 #if defined(MAGICKCORE_HAVE_SYS_SYSLIMITS_H) 136 # include <sys/syslimits.h> 137 #endif 138 #if defined(MAGICKCORE_HAVE_ARM_LIMITS_H) 139 # include <arm/limits.h> 140 #endif 141 142 #if defined(MAGICKCORE__OPENCL) 143 #if defined(MAGICKCORE_HAVE_CL_CL_H) 144 # include <CL/cl.h> 145 #endif 146 #if defined(MAGICKCORE_HAVE_OPENCL_CL_H) 147 # include <OpenCL/cl.h> 148 #endif 149 # define MAGICKCORE_OPENCL_SUPPORT 1 150 #endif 151 152 #if defined(_OPENMP) && ((_OPENMP >= 200203) || defined(__OPENCC__)) 153 # include <omp.h> 154 # define MAGICKCORE_OPENMP_SUPPORT 1 155 #endif 156 157 #if defined(MAGICKCORE_HAVE_PREAD) && defined(MAGICKCORE_HAVE_DECL_PREAD) && !MAGICKCORE_HAVE_DECL_PREAD 158 ssize_t pread(int,void *,size_t,off_t); 159 #endif 160 161 #if defined(MAGICKCORE_HAVE_PWRITE) && defined(MAGICKCORE_HAVE_DECL_PWRITE) && !MAGICKCORE_HAVE_DECL_PWRITE 162 ssize_t pwrite(int,const void *,size_t,off_t); 163 #endif 164 165 #if defined(MAGICKCORE_HAVE_STRLCPY) && defined(MAGICKCORE_HAVE_DECL_STRLCPY) && !MAGICKCORE_HAVE_DECL_STRLCPY 166 extern size_t strlcpy(char *,const char *,size_t); 167 #endif 168 169 #if defined(MAGICKCORE_HAVE_VSNPRINTF) && defined(MAGICKCORE_HAVE_DECL_VSNPRINTF) && !MAGICKCORE_HAVE_DECL_VSNPRINTF 170 extern int vsnprintf(char *,size_t,const char *,va_list); 171 #endif 172 173 #include "MagickCore/method-attribute.h" 174 175 #if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(MAGICKCORE_POSIX_SUPPORT) 176 # include <sys/types.h> 177 # include <sys/stat.h> 178 # if defined(MAGICKCORE_HAVE_SYS_TIMEB_H) 179 # include <sys/timeb.h> 180 # endif 181 # if defined(MAGICKCORE_POSIX_SUPPORT) 182 # if defined(MAGICKCORE_HAVE_SYS_NDIR_H) || defined(MAGICKCORE_HAVE_SYS_DIR_H) || defined(MAGICKCORE_HAVE_NDIR_H) 183 # define dirent direct 184 # define NAMLEN(dirent) (dirent)->d_namlen 185 # if defined(MAGICKCORE_HAVE_SYS_NDIR_H) 186 # include <sys/ndir.h> 187 # endif 188 # if defined(MAGICKCORE_HAVE_SYS_DIR_H) 189 # include <sys/dir.h> 190 # endif 191 # if defined(MAGICKCORE_HAVE_NDIR_H) 192 # include <ndir.h> 193 # endif 194 # else 195 # include <dirent.h> 196 # define NAMLEN(dirent) strlen((dirent)->d_name) 197 # endif 198 # include <sys/wait.h> 199 # include <pwd.h> 200 # endif 201 # if !defined(S_ISDIR) 202 # define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) 203 # endif 204 # if !defined(S_ISREG) 205 # define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) 206 # endif 207 # include "MagickCore/magick-type.h" 208 # if !defined(MAGICKCORE_WINDOWS_SUPPORT) 209 # include <sys/time.h> 210 # if defined(MAGICKCORE_HAVE_SYS_TIMES_H) 211 # include <sys/times.h> 212 # endif 213 # if defined(MAGICKCORE_HAVE_SYS_RESOURCE_H) 214 # include <sys/resource.h> 215 # endif 216 # if defined(MAGICKCORE_HAVE_SYS_MMAN_H) 217 # include <sys/mman.h> 218 # endif 219 # if defined(MAGICKCORE_HAVE_SYS_SENDFILE_H) 220 # include <sys/sendfile.h> 221 # endif 222 # if defined(MAGICKCORE_HAVE_SYS_SOCKET_H) 223 # include <sys/socket.h> 224 # endif 225 # if defined(MAGICKCORE_HAVE_SYS_UIO_H) 226 # include <sys/uio.h> 227 # endif 228 #endif 229 #else 230 # include <types.h> 231 # include <stat.h> 232 # if defined(macintosh) 233 # if !defined(DISABLE_SIOUX) 234 # include <SIOUX.h> 235 # include <console.h> 236 # endif 237 # include <unix.h> 238 # endif 239 # include "MagickCore/magick-type.h" 240 #endif 241 242 #if defined(S_IRUSR) && defined(S_IWUSR) 243 # define S_MODE (S_IRUSR | S_IWUSR) 244 #elif defined (MAGICKCORE_WINDOWS_SUPPORT) 245 # define S_MODE (_S_IREAD | _S_IWRITE) 246 #else 247 # define S_MODE 0600 248 #endif 249 250 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 251 # include "MagickCore/nt-base.h" 252 #endif 253 #ifdef __VMS 254 # include "MagickCore/vms.h" 255 #endif 256 257 #undef HAVE_CONFIG_H 258 #undef gamma 259 #undef index 260 #undef pipe 261 #undef y1 262 263 /* 264 Review these platform specific definitions. 265 */ 266 #if defined(MAGICKCORE_POSIX_SUPPORT) && !( defined(__OS2__) || defined( vms ) ) 267 # define DirectorySeparator "/" 268 # define DirectoryListSeparator ':' 269 # define EditorOptions " -title \"Edit Image Comment\" -e vi" 270 # define Exit exit 271 # define IsBasenameSeparator(c) ((c) == '/' ? MagickTrue : MagickFalse) 272 # define X11_PREFERENCES_PATH "~/." 273 # define ProcessPendingEvents(text) 274 # define ReadCommandlLine(argc,argv) 275 # define SetNotifyHandlers 276 #else 277 # ifdef __VMS 278 # define X11_APPLICATION_PATH "decw$system_defaults:" 279 # define DirectorySeparator "" 280 # define DirectoryListSeparator ';' 281 # define EditorOptions "" 282 # define Exit exit 283 # define IsBasenameSeparator(c) \ 284 (((c) == ']') || ((c) == ':') || ((c) == '/') ? MagickTrue : MagickFalse) 285 # define MAGICKCORE_LIBRARY_PATH "sys$login:" 286 # define MAGICKCORE_SHARE_PATH "sys$login:" 287 # define X11_PREFERENCES_PATH "decw$user_defaults:" 288 # define ProcessPendingEvents(text) 289 # define ReadCommandlLine(argc,argv) 290 # define SetNotifyHandlers 291 # endif 292 # if defined(__OS2__) 293 # define DirectorySeparator "\\" 294 # define DirectoryListSeparator ';' 295 # define EditorOptions " -title \"Edit Image Comment\" -e vi" 296 # define Exit exit 297 # define IsBasenameSeparator(c) \ 298 (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse) 299 # define PreferencesDefaults "~\." 300 # define ProcessPendingEvents(text) 301 # define ReadCommandlLine(argc,argv) 302 # define SetNotifyHandlers 303 #endif 304 # if defined(MAGICKCORE_WINDOWS_SUPPORT) 305 # define DirectorySeparator "\\" 306 # define DirectoryListSeparator ';' 307 # define EditorOptions "" 308 # define IsBasenameSeparator(c) \ 309 (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse) 310 # define ProcessPendingEvents(text) 311 # if !defined(X11_PREFERENCES_PATH) 312 # define X11_PREFERENCES_PATH "~\\." 313 # endif 314 # define ReadCommandlLine(argc,argv) 315 # define SetNotifyHandlers \ 316 SetErrorHandler(NTErrorHandler); \ 317 SetWarningHandler(NTWarningHandler) 318 # if !defined(MAGICKCORE_HAVE_TIFFCONF_H) 319 # define HAVE_TIFFCONF_H 320 # endif 321 # endif 322 323 #endif 324 325 /* 326 Define system symbols if not already defined. 327 */ 328 #if !defined(STDIN_FILENO) 329 #define STDIN_FILENO 0x00 330 #endif 331 332 #if !defined(O_BINARY) 333 #define O_BINARY 0x00 334 #endif 335 336 #if !defined(PATH_MAX) 337 #define PATH_MAX 4096 338 #endif 339 340 #if defined(MAGICKCORE_LTDL_DELEGATE) || (defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DLL) && !defined(_LIB)) 341 # define MAGICKCORE_MODULES_SUPPORT 342 #endif 343 344 #if defined(_MAGICKMOD_) 345 # undef MAGICKCORE_BUILD_MODULES 346 # define MAGICKCORE_BUILD_MODULES 347 #endif 348 349 /* 350 Magick defines. 351 */ 352 #define MagickMaxRecursionDepth 600 353 #define MAGICK_SSIZE_MAX (SSIZE_MAX) 354 #define MAGICK_SSIZE_MIN (-(SSIZE_MAX)-1) 355 #define Swap(x,y) ((x)^=(y), (y)^=(x), (x)^=(y)) 356 #if defined(_MSC_VER) 357 # define DisableMSCWarning(nr) __pragma(warning(push)) \ 358 __pragma(warning(disable:nr)) 359 # define RestoreMSCWarning __pragma(warning(pop)) 360 #else 361 # define DisableMSCWarning(nr) 362 # define RestoreMSCWarning 363 #endif 364 365 #if defined(__cplusplus) || defined(c_plusplus) 366 } 367 #endif 368 369 #endif 370