00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_NT_BASE_H
00019 #define MAGICKCORE_NT_BASE_H
00020
00021 #include "MagickCore/exception.h"
00022 #include "MagickCore/geometry.h"
00023
00024 #if defined(__cplusplus) || defined(c_plusplus)
00025 extern "C" {
00026 #endif
00027
00028 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
00029
00030 #define WIN32_LEAN_AND_MEAN
00031 #define VC_EXTRALEAN
00032 #define _CRT_SECURE_NO_DEPRECATE 1
00033 #include <windows.h>
00034 #include <wchar.h>
00035 #include <winuser.h>
00036 #include <wingdi.h>
00037 #include <io.h>
00038 #include <process.h>
00039 #include <errno.h>
00040 #include <malloc.h>
00041 #include <sys/utime.h>
00042 #if defined(_DEBUG) && !defined(__MINGW32__)
00043 #include <crtdbg.h>
00044 #endif
00045
00046 #define PROT_READ 0x01
00047 #define PROT_WRITE 0x02
00048 #define MAP_SHARED 0x01
00049 #define MAP_PRIVATE 0x02
00050 #define MAP_ANONYMOUS 0x20
00051 #define F_OK 0
00052 #define R_OK 4
00053 #define W_OK 2
00054 #define RW_OK 6
00055 #define _SC_PAGESIZE 1
00056 #define _SC_PHYS_PAGES 2
00057 #define _SC_OPEN_MAX 3
00058 #if !defined(SSIZE_MAX)
00059 #define SSIZE_MAX 0x7fffffffL
00060 #endif
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076 #if !defined(chsize)
00077 # if defined(__BORLANDC__)
00078 # define chsize(file,length) chsize(file,length)
00079 # else
00080 # define chsize(file,length) _chsize(file,length)
00081 # endif
00082 #endif
00083
00084 #if !defined(access)
00085 #if defined(_VISUALC_) && (_MSC_VER >= 1400)
00086 # define access(path,mode) _access_s(path,mode)
00087 #endif
00088 #endif
00089 #if !defined(chdir)
00090 # define chdir _chdir
00091 #endif
00092 #if !defined(close)
00093 # define close _close
00094 #endif
00095 #if !defined(closedir)
00096 # define closedir(directory) NTCloseDirectory(directory)
00097 #endif
00098 #define MAGICKCORE_HAVE_ERF
00099 #if defined(_VISUALC_) && (_MSC_VER < 1700)
00100 # define erf(x) NTErf(x)
00101 #endif
00102 #if !defined(fdopen)
00103 # define fdopen _fdopen
00104 #endif
00105 #if !defined(fileno)
00106 # define fileno _fileno
00107 #endif
00108 #if !defined(freelocale)
00109 # define freelocale _free_locale
00110 #endif
00111 #if !defined(fseek) && !defined(__MINGW32__)
00112 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
00113 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
00114 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
00115 # define fseek _fseeki64
00116 #endif
00117 #endif
00118 #if !defined(fstat) && !defined(__BORLANDC__)
00119 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
00120 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
00121 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
00122 # define fstat _fstati64
00123 #else
00124 # define fstat _fstat
00125 #endif
00126 #endif
00127 #if !defined(fsync)
00128 # define fsync _commit
00129 #endif
00130 #if !defined(ftell) && !defined(__MINGW32__)
00131 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
00132 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
00133 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
00134 # define ftell _ftelli64
00135 #endif
00136 #endif
00137 #if !defined(ftruncate)
00138 # define ftruncate(file,length) NTTruncateFile(file,length)
00139 #endif
00140 #if !defined(getcwd)
00141 # define getcwd _getcwd
00142 #endif
00143 #if !defined(getpid)
00144 # define getpid _getpid
00145 #endif
00146 #if !defined(hypot)
00147 # define hypot _hypot
00148 #endif
00149 #if !defined(isatty)
00150 # define isatty _isatty
00151 #endif
00152 #if !defined(locale_t)
00153 #define locale_t _locale_t
00154 #endif
00155 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
00156 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
00157 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
00158 #if !defined(lseek)
00159 # define lseek _lseeki64
00160 #endif
00161 #else
00162 #if !defined(lseek)
00163 # define lseek _lseek
00164 #endif
00165 #endif
00166 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00167 #if !defined(lt_dlclose)
00168 # define lt_dlclose(handle) NTCloseLibrary(handle)
00169 #endif
00170 #if !defined(lt_dlerror)
00171 # define lt_dlerror() NTGetLibraryError()
00172 #endif
00173 #if !defined(lt_dlexit)
00174 # define lt_dlexit() NTExitLibrary()
00175 #endif
00176 #if !defined(lt_dlinit)
00177 # define lt_dlinit() NTInitializeLibrary()
00178 #endif
00179 #if !defined(lt_dlopen)
00180 # define lt_dlopen(filename) NTOpenLibrary(filename)
00181 #endif
00182 #if !defined(lt_dlsetsearchpath)
00183 # define lt_dlsetsearchpath(path) NTSetSearchPath(path)
00184 #endif
00185 #if !defined(lt_dlsym)
00186 # define lt_dlsym(handle,name) NTGetLibrarySymbol(handle,name)
00187 #endif
00188 #endif
00189 #if !defined(mkdir)
00190 # define mkdir _mkdir
00191 #endif
00192 #if !defined(mmap)
00193 # define mmap(address,length,protection,access,file,offset) \
00194 NTMapMemory(address,length,protection,access,file,offset)
00195 #endif
00196 #if !defined(msync)
00197 # define msync(address,length,flags) NTSyncMemory(address,length,flags)
00198 #endif
00199 #if !defined(munmap)
00200 # define munmap(address,length) NTUnmapMemory(address,length)
00201 #endif
00202 #if !defined(opendir)
00203 # define opendir(directory) NTOpenDirectory(directory)
00204 #endif
00205 #if !defined(open)
00206 # define open _open
00207 #endif
00208 #if !defined(pclose)
00209 # define pclose _pclose
00210 #endif
00211 #if !defined(popen)
00212 # define popen _popen
00213 #endif
00214 #if !defined(fprintf_l)
00215 #define fprintf_l _fprintf_s_l
00216 #endif
00217 #if !defined(read)
00218 # define read(fd,buffer,count) _read(fd,buffer,(unsigned int) count)
00219 #endif
00220 #if !defined(readdir)
00221 # define readdir(directory) NTReadDirectory(directory)
00222 #endif
00223 #if !defined(seekdir)
00224 # define seekdir(directory,offset) NTSeekDirectory(directory,offset)
00225 #endif
00226 #if !defined(setmode)
00227 # define setmode _setmode
00228 #endif
00229 #if !defined(spawnvp)
00230 # define spawnvp _spawnvp
00231 #endif
00232 #if !defined(strtod_l)
00233 #define strtod_l _strtod_l
00234 #endif
00235 #if !defined(stat) && !defined(__BORLANDC__)
00236 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
00237 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
00238 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
00239 # define stat _stati64
00240 #else
00241 # define stat _stat
00242 #endif
00243 #endif
00244 #if !defined(strcasecmp)
00245 # define strcasecmp _stricmp
00246 #endif
00247 #if !defined(strncasecmp)
00248 # define strncasecmp _strnicmp
00249 #endif
00250 #if !defined(sysconf)
00251 # define sysconf(name) NTSystemConfiguration(name)
00252 #endif
00253 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
00254 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
00255 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
00256 # define tell _telli64
00257 #else
00258 # define tell _tell
00259 #endif
00260 #if !defined(telldir)
00261 # define telldir(directory) NTTellDirectory(directory)
00262 #endif
00263 #if !defined(tempnam)
00264 # define tempnam _tempnam_s
00265 #endif
00266 #if !defined(tolower_l)
00267 #define tolower_l _tolower_l
00268 #endif
00269 #if !defined(toupper_l)
00270 #define toupper_l _toupper_l
00271 #endif
00272 #if !defined(umask)
00273 # define umask _umask
00274 #endif
00275 #if !defined(unlink)
00276 # define unlink _unlink
00277 #endif
00278 #if !defined(utime)
00279 # define utime(filename,time) _utime(filename,(struct _utimbuf*) time)
00280 #endif
00281 #if !defined(vfprintf_l)
00282 #define vfprintf_l _vfprintf_l
00283 #endif
00284 #if !defined(vsnprintf)
00285 #if !defined(_MSC_VER) || (defined(_MSC_VER) && _MSC_VER < 1500)
00286 #define vsnprintf _vsnprintf
00287 #endif
00288 #endif
00289 #if !defined(vsnprintf_l)
00290 #define vsnprintf_l _vsnprintf_l
00291 #endif
00292 #if !defined(write)
00293 # define write(fd,buffer,count) _write(fd,buffer,(unsigned int) count)
00294 #endif
00295 #if !defined(wstat) && !defined(__BORLANDC__)
00296 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(Windows95) && \
00297 !(defined(_MSC_VER) && (_MSC_VER < 1400)) && \
00298 !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ < 0x800))
00299 # define wstat _wstati64
00300 #else
00301 # define wstat _wstat
00302 #endif
00303 #endif
00304
00305 #if defined(__BORLANDC__)
00306 #undef _O_RANDOM
00307 #define _O_RANDOM 0
00308 #undef _O_SEQUENTIAL
00309 #define _O_SEQUENTIAL 0
00310 #undef _O_SHORT_LIVED
00311 #define _O_SHORT_LIVED 0
00312 #undef _O_TEMPORARY
00313 #define _O_TEMPORARY 0
00314 #endif
00315
00316 #undef gettimeofday
00317
00318 typedef struct _GhostInfo
00319 GhostInfo_;
00320
00321 extern MagickExport char
00322 **NTArgvToUTF8(const int argc,wchar_t **);
00323
00324 extern MagickExport const GhostInfo_
00325 *NTGhostscriptDLLVectors(void);
00326
00327 extern MagickExport void
00328 NTErrorHandler(const ExceptionType,const char *,const char *),
00329 NTGhostscriptUnLoadDLL(void),
00330 NTWarningHandler(const ExceptionType,const char *,const char *);
00331
00332 #endif
00333
00334 #if defined(__cplusplus) || defined(c_plusplus)
00335 }
00336 #endif
00337
00338 #endif