Viewing file: platform.h (14.87 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef __TIDY_PLATFORM_H__ #define __TIDY_PLATFORM_H__
/* platform.h -- Platform specifics
(c) 1998-2008 (W3C) MIT, ERCIM, Keio University See tidyp.h for the copyright notice.
CVS Info :
$Author: arnaud02 $ $Date: 2008/03/17 12:57:01 $ $Revision: 1.66 $
*/
#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
/* 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 #ifndef DFLT_REPL_CHARENC #define DFLT_REPL_CHARENC MACROMAN #endif #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 <ctype.h> #include <stdio.h> #include <setjmp.h> /* for longjmp on error exit */ #include <stdlib.h> #include <stdarg.h> /* may need <varargs.h> for Unix V */ #include <string.h> #include <assert.h>
#ifdef NEEDS_MALLOC_H #include <malloc.h> #endif
#ifdef SUPPORT_GETPWNAM #include <pwd.h> #endif
#ifdef NEEDS_UNISTD_H #include <unistd.h> /* needed for unlink on some Unix systems */ #endif
/* This can be set at compile time. Usually Windows, ** except for Macintosh builds. */ #ifndef DFLT_REPL_CHARENC #define DFLT_REPL_CHARENC WIN1252 #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 <utime.h> and the utime() function, or <sys/futime> and the futime() function then set PRESERVE_FILE_TIMES to 0.
If your platform doesn't support <sys/utime.h> and the futime() function, then set HAS_FUTIME to 0.
If your platform supports <utime.h> 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__) #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 <sys/types.h> #include <sys/stat.h> #else #include <stat.h> #endif
#if HAS_FUTIME #include <sys/utime.h> #else #include <utime.h> #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__) && !defined(__GNUC__)
#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__) && !defined(__GNUC__)
#ifndef __WATCOMC__ #define fileno _fileno #define setmode _setmode #endif
#define access _access #define strcasecmp _stricmp
#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(TIDY_EXPORT) #define TIDY_EXPORT __declspec( dllexport ) #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 <sys/types.h> #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
#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
#define NOTNULL(x) /*@notnull@*/ x /* The pointer passed may not be NULL */
#define NULLOK(x) /*@null@*/ x /* The pointer passed may be NULL */
#define ARGIN(x) /*@in@*/ /*@notnull@*/ x #define ARGIN_NULLOK(x) /*@in@*/ /*@null@*/ x /* The pointer target must be completely defined before being passed */ /* to the function. */
#define ARGOUT(x) /*@out@*/ /*@notnull@*/ x #define ARGOUT_NULLOK(x) /*@out@*/ /*@null@*/ x /* The pointer target will be defined by the function */
#define ARGMOD(x) /*@in@*/ /*@notnull@*/ x #define ARGMOD_NULLOK(x) /*@in@*/ /*@null@*/ x /* The pointer target must be completely defined before being passed, */ /* and MAY be modified by the function. */
#define FUNC_MODIFIES(x) /*@modifies x@*/ /* Never applied by a human, only by the headerizer. */
#define ARGFREE(x) /*@only@*/ /*@out@*/ /*@null@*/ x /* From the Splint manual: The parameter to free() must reference */ /* an unshared object. Since the parameter is declared using "only", */ /* the caller may not use the referenced object after the call, and */ /* may not pass in a reference to a shared object. There is nothing */ /* special about malloc and free -- their behavior can be described */ /* entirely in terms of the provided annotations. */
#define __attribute__warn_unused_result__ __attribute__((__warn_unused_result__)) #define TIDY_IGNORABLE_RESULT #define TIDY_WARN_UNUSED_RESULT __attribute__warn_unused_result__
/* 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 */ typedef enum { no, yes } Bool;
#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: */
|