#ifndef __TIDY_PLATFORM_H__ #define __TIDY_PLATFORM_H__ /* tidyplatform.h -- Platform specifics (c) 1998-2008 (W3C) MIT, ERCIM, Keio University See tidy.h for the copyright notice. */ #ifdef __cplusplus extern "C" { #endif /* Uncomment and edit one of the following #defines if you want to specify the config file at compile-time. */ /* #define TIDY_CONFIG_FILE "/etc/tidy_config.txt" */ /* original */ /* #define TIDY_CONFIG_FILE "/etc/tidyrc" */ /* #define TIDY_CONFIG_FILE "/etc/tidy.conf" */ /* Uncomment the following #define if you are on a system supporting the HOME environment variable. It enables tidy to find config files named ~/.tidyrc if the HTML_TIDY environment variable is not set. */ /* #define TIDY_USER_CONFIG_FILE "~/.tidyrc" */ /* Uncomment the following #define if your system supports the call getpwnam(). E.g. Unix and Linux. It enables tidy to find files named ~your/foo for use in the HTML_TIDY environment variable or CONFIG_FILE or USER_CONFIGFILE or on the command line: -config ~joebob/tidy.cfg Contributed by Todd Lewis. */ /* #define SUPPORT_GETPWNAM */ /* Enable/disable support for Big5 and Shift_JIS character encodings */ #ifndef SUPPORT_ASIAN_ENCODINGS #define SUPPORT_ASIAN_ENCODINGS 1 #endif /* Enable/disable support for UTF-16 character encodings */ #ifndef SUPPORT_UTF16_ENCODINGS #define SUPPORT_UTF16_ENCODINGS 1 #endif /* Enable/disable support for additional accessibility checks */ #ifndef SUPPORT_ACCESSIBILITY_CHECKS #define SUPPORT_ACCESSIBILITY_CHECKS 1 #endif /* Enable/disable support for additional languages */ // #ifndef SUPPORT_LOCALIZATIONS // #define SUPPORT_LOCALIZATIONS 1 // #endif /* Convenience defines for Mac platforms */ #if defined(macintosh) /* Mac OS 6.x/7.x/8.x/9.x, with or without CarbonLib - MPW or Metrowerks 68K/PPC compilers */ #define MAC_OS_CLASSIC #ifndef PLATFORM_NAME #define PLATFORM_NAME "Mac OS" #endif /* needed for access() */ #if !defined(_POSIX) && !defined(NO_ACCESS_SUPPORT) #define NO_ACCESS_SUPPORT #endif #ifdef SUPPORT_GETPWNAM #undef SUPPORT_GETPWNAM #endif #elif defined(__APPLE__) && defined(__MACH__) /* Mac OS X (client) 10.x (or server 1.x/10.x) - gcc or Metrowerks MachO compilers */ #define MAC_OS_X #ifndef PLATFORM_NAME #define PLATFORM_NAME "Mac OS X" #endif #endif #if defined(MAC_OS_CLASSIC) || defined(MAC_OS_X) /* Any OS on Mac platform */ #define MAC_OS #define FILENAMES_CASE_SENSITIVE 0 #define strcasecmp strcmp #endif /* Convenience defines for BSD like platforms */ #if defined(__FreeBSD__) #define BSD_BASED_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "FreeBSD" #endif #elif defined(__NetBSD__) #define BSD_BASED_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "NetBSD" #endif #elif defined(__OpenBSD__) #define BSD_BASED_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "OpenBSD" #endif #elif defined(__DragonFly__) #define BSD_BASED_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "DragonFly" #endif #elif defined(__MINT__) #define BSD_BASED_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "FreeMiNT" #endif #elif defined(__bsdi__) #define BSD_BASED_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "BSD/OS" #endif #endif /* Convenience defines for Windows platforms */ #if defined(WINDOWS) || defined(_WIN32) #define WINDOWS_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Windows" #endif #if defined(__MWERKS__) || defined(__MSL__) /* not available with Metrowerks Standard Library */ #ifdef SUPPORT_GETPWNAM #undef SUPPORT_GETPWNAM #endif /* needed for setmode() */ #if !defined(NO_SETMODE_SUPPORT) #define NO_SETMODE_SUPPORT #endif #define strcasecmp _stricmp #endif #if defined(__BORLANDC__) #define strcasecmp stricmp #endif #define FILENAMES_CASE_SENSITIVE 0 #define SUPPORT_POSIX_MAPPED_FILES 0 #endif /* Convenience defines for Linux platforms */ #if defined(linux) && defined(__alpha__) /* Linux on Alpha - gcc compiler */ #define LINUX_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Linux/Alpha" #endif #elif defined(linux) && defined(__sparc__) /* Linux on Sparc - gcc compiler */ #define LINUX_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Linux/Sparc" #endif #elif defined(linux) && (defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__)) /* Linux on x86 - gcc compiler */ #define LINUX_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Linux/x86" #endif #elif defined(linux) && defined(__powerpc__) /* Linux on PPC - gcc compiler */ #define LINUX_OS #if defined(__linux__) && defined(__powerpc__) /* #if #system(linux) */ /* MkLinux on PPC - gcc (egcs) compiler */ /* #define MAC_OS_MKLINUX */ #ifndef PLATFORM_NAME #define PLATFORM_NAME "MkLinux" #endif #else #ifndef PLATFORM_NAME #define PLATFORM_NAME "Linux/PPC" #endif #endif #elif defined(linux) || defined(__linux__) /* generic Linux */ #define LINUX_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Linux" #endif #endif /* Convenience defines for Solaris platforms */ #if defined(sun) #define SOLARIS_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Solaris" #endif #endif /* Convenience defines for HPUX + gcc platforms */ #if defined(__hpux) #define HPUX_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "HPUX" #endif #endif /* Convenience defines for RISCOS + gcc platforms */ #if defined(__riscos__) #define RISC_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "RISC OS" #endif #endif /* Convenience defines for OS/2 + icc/gcc platforms */ #if defined(__OS2__) || defined(__EMX__) #define OS2_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "OS/2" #endif #define FILENAMES_CASE_SENSITIVE 0 #define strcasecmp stricmp #endif /* Convenience defines for IRIX */ #if defined(__sgi) #define IRIX_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "SGI IRIX" #endif #endif /* Convenience defines for AIX */ #if defined(_AIX) #define AIX_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "IBM AIX" #endif #endif /* Convenience defines for BeOS platforms */ #if defined(__BEOS__) #define BE_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "BeOS" #endif #endif /* Convenience defines for Cygwin platforms */ #if defined(__CYGWIN__) #define CYGWIN_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Cygwin" #endif #define FILENAMES_CASE_SENSITIVE 0 #endif /* Convenience defines for OpenVMS */ #if defined(__VMS) #define OPENVMS_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "OpenVMS" #endif #define FILENAMES_CASE_SENSITIVE 0 #endif /* Convenience defines for DEC Alpha OSF + gcc platforms */ #if defined(__osf__) #define OSF_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "DEC Alpha OSF" #endif #endif /* Convenience defines for ARM platforms */ #if defined(__arm) #define ARM_OS #if defined(forARM) && defined(__NEWTON_H) /* Using Newton C++ Tools ARMCpp compiler */ #define NEWTON_OS #ifndef PLATFORM_NAME #define PLATFORM_NAME "Newton" #endif #else #ifndef PLATFORM_NAME #define PLATFORM_NAME "ARM" #endif #endif #endif #include #include #include /* for longjmp on error exit */ #include #include /* may need for Unix V */ #include #include #ifdef NEEDS_MALLOC_H #include #endif #ifdef SUPPORT_GETPWNAM #include #endif #ifdef NEEDS_UNISTD_H #include /* needed for unlink on some Unix systems */ #endif /* By default, use case-sensitive filename comparison. */ #ifndef FILENAMES_CASE_SENSITIVE #define FILENAMES_CASE_SENSITIVE 1 #endif /* Tidy preserves the last modified time for the files it cleans up. */ /* If your platform doesn't support and the utime() function, or and the futime() function then set PRESERVE_FILE_TIMES to 0. If your platform doesn't support and the futime() function, then set HAS_FUTIME to 0. If your platform supports and the utime() function requires the file to be closed first, then set UTIME_NEEDS_CLOSED_FILE to 1. */ /* Keep old PRESERVEFILETIMES define for compatibility */ #ifdef PRESERVEFILETIMES #undef PRESERVE_FILE_TIMES #define PRESERVE_FILE_TIMES PRESERVEFILETIMES #endif #ifndef PRESERVE_FILE_TIMES #if defined(RISC_OS) || defined(OPENVMS_OS) || defined(OSF_OS) #define PRESERVE_FILE_TIMES 0 #else #define PRESERVE_FILE_TIMES 1 #endif #endif #if PRESERVE_FILE_TIMES #ifndef HAS_FUTIME #if defined(CYGWIN_OS) || defined(BE_OS) || defined(OS2_OS) || defined(HPUX_OS) || defined(SOLARIS_OS) || defined(LINUX_OS) || defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || defined(IRIX_OS) || defined(AIX_OS) || defined(__BORLANDC__) || defined(__GLIBC__) #define HAS_FUTIME 0 #else #define HAS_FUTIME 1 #endif #endif #ifndef UTIME_NEEDS_CLOSED_FILE #if defined(SOLARIS_OS) || defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || defined(LINUX_OS) #define UTIME_NEEDS_CLOSED_FILE 1 #else #define UTIME_NEEDS_CLOSED_FILE 0 #endif #endif #if defined(MAC_OS_X) || (!defined(MAC_OS_CLASSIC) && !defined(__MSL__)) #include #include #else #include #endif #if HAS_FUTIME #include #else #include #endif /* HASFUTIME */ /* MS Windows needs _ prefix for Unix file functions. Not required by Metrowerks Standard Library (MSL). Tidy uses following for preserving the last modified time. WINDOWS automatically set by Win16 compilers. _WIN32 automatically set by Win32 compilers. */ #if defined(_WIN32) && !defined(__MSL__) && !defined(__BORLANDC__) #define futime _futime #define fstat _fstat #define utimbuf _utimbuf /* Windows seems to want utimbuf */ #define stat _stat #define utime _utime #define vsnprintf _vsnprintf #endif /* _WIN32 */ #endif /* PRESERVE_FILE_TIMES */ /* MS Windows needs _ prefix for Unix file functions. Not required by Metrowerks Standard Library (MSL). WINDOWS automatically set by Win16 compilers. _WIN32 automatically set by Win32 compilers. */ #if defined(_WIN32) && !defined(__MSL__) && !defined(__BORLANDC__) #if !(defined(__WATCOMC__) || defined(__MINGW32__)) #define fileno _fileno #define setmode _setmode #endif #define access _access #define strcasecmp _stricmp #ifndef va_copy #define va_copy(dest, src) (dest = src) #endif #if _MSC_VER > 1000 #pragma warning( disable : 4189 ) /* local variable is initialized but not referenced */ #pragma warning( disable : 4100 ) /* unreferenced formal parameter */ #pragma warning( disable : 4706 ) /* assignment within conditional expression */ #endif #if _MSC_VER > 1300 #pragma warning( disable : 4996 ) /* disable depreciation warning */ #endif #endif /* _WIN32 */ #if defined(_WIN32) #if (defined(_USRDLL) || defined(_WINDLL) || defined(BUILD_SHARED_LIB)) && !defined(TIDY_EXPORT) && !defined(TIDY_STATIC) #ifdef BUILDING_SHARED_LIB #define TIDY_EXPORT __declspec( dllexport ) #else #define TIDY_EXPORT __declspec( dllimport ) #endif #else #define TIDY_EXPORT extern #endif #ifndef TIDY_CALL #ifdef _WIN64 # define TIDY_CALL __fastcall #else # define TIDY_CALL __stdcall #endif #endif #endif /* _WIN32 */ /* hack for gnu sys/types.h file which defines uint and ulong */ #if defined(BE_OS) || defined(SOLARIS_OS) || defined(BSD_BASED_OS) || defined(OSF_OS) || defined(IRIX_OS) || defined(AIX_OS) #include #endif #if !defined(HPUX_OS) && !defined(CYGWIN_OS) && !defined(MAC_OS_X) && !defined(BE_OS) && !defined(SOLARIS_OS) && !defined(BSD_BASED_OS) && !defined(OSF_OS) && !defined(IRIX_OS) && !defined(AIX_OS) && !defined(LINUX_OS) # undef uint typedef unsigned int uint; #endif #if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || defined(BSD_BASED_OS) || defined(_WIN32) # undef ulong typedef unsigned long ulong; #endif /* With GCC 4, __attribute__ ((visibility("default"))) can be used along compiling with tidylib with "-fvisibility=hidden". See http://gcc.gnu.org/wiki/Visibility and build/gmake/Makefile. */ /* #if defined(__GNUC__) && __GNUC__ >= 4 #define TIDY_EXPORT __attribute__ ((visibility("default"))) #endif */ #ifndef TIDY_EXPORT /* Define it away for most builds */ #define TIDY_EXPORT #endif #ifndef TIDY_STRUCT #define TIDY_STRUCT #endif typedef unsigned char byte; typedef uint tchar; /* single, full character */ typedef char tmbchar; /* single, possibly partial character */ #ifndef TMBSTR_DEFINED typedef tmbchar* tmbstr; /* pointer to buffer of possibly partial chars */ typedef const tmbchar* ctmbstr; /* Ditto, but const */ #define NULLSTR (tmbstr)"" #define TMBSTR_DEFINED #endif #ifndef TIDY_CALL #define TIDY_CALL #endif #if defined(__GNUC__) || defined(__INTEL_COMPILER) # define ARG_UNUSED(x) x __attribute__((unused)) #else # define ARG_UNUSED(x) x #endif /* HAS_VSNPRINTF triggers the use of "vsnprintf", which is safe related to buffer overflow. Therefore, we make it the default unless HAS_VSNPRINTF has been defined. */ #ifndef HAS_VSNPRINTF # define HAS_VSNPRINTF 1 #endif #ifndef SUPPORT_POSIX_MAPPED_FILES # define SUPPORT_POSIX_MAPPED_FILES 1 #endif /* bool is a reserved word in some but not all C++ compilers depending on age work around is to avoid bool altogether by introducing a new enum called Bool */ /* We could use the C99 definition where supported typedef _Bool Bool; #define no (_Bool)0 #define yes (_Bool)1 */ typedef enum { no, aye } Bool; /* for NULL pointers #define null ((const void*)0) extern void* null; */ #if defined(DMALLOC) #include "dmalloc.h" #endif /* Opaque data structure. * Cast to implementation type struct within lib. * This will reduce inter-dependencies/conflicts w/ application code. */ #if 1 #define opaque_type( typenam )\ struct _##typenam { int _opaque; };\ typedef struct _##typenam const * typenam #else #define opaque_type(typenam) typedef const void* typenam #endif /* Opaque data structure used to pass back ** and forth to keep current position in a ** list or other collection. */ opaque_type( TidyIterator ); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* __TIDY_PLATFORM_H__ */ /* * local variables: * mode: c * indent-tabs-mode: nil * c-basic-offset: 4 * eval: (c-set-offset 'substatement-open 0) * end: */