home *** CD-ROM | disk | FTP | other *** search
- #ifndef __PLATFORM_H__
- #define __PLATFORM_H__
-
- /* platform.h -- Platform specifics
-
- (c) 1998-2004 (W3C) MIT, ERCIM, Keio University
- See tidy.h for the copyright notice.
-
- CVS Info :
-
- $Author: terry_teague $
- $Date: 2004/03/19 03:10:19 $
- $Revision: 1.49 $
-
- Extended for AmigaOS by E.Schwan 29.07.2004
-
- */
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /*
- Uncomment and edit one of the following #defines if you
- want to specify the config file at compile-time.
- */
-
- #if defined(__amigaos__) /*AmigaOS only */
- #define CONFIG_FILE "PROGDIR:tidy_config.txt"
- #else
- #define CONFIG_FILE "/etc/tidy_config.txt" /* original */
- /* #define CONFIG_FILE "/etc/tidyrc" */
- /* #define CONFIG_FILE "/etc/tidy.conf" */
- #endif
-
- /*
- 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 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(__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
-
- #elif defined(__amigaos__)
- #define BSD_BASED_OS
- #ifndef PLATFORM_NAME
- #ifdef __amigaos4__
- #define PLATFORM_NAME "AmigaOS 4"
- typedef unsigned int uint;
- #define HAS_FUTIME 0
- #else // __amigaos4__
- #define PLATFORM_NAME "AmigaOS"
- #endif // __amigaos4__
- #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
-
- #define FILENAMES_CASE_SENSITIVE 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__)
-
- #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__)
-
- #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 */
- #pragma warning( disable : 4068 ) /* unknown #pragma unused(...) */
- #endif
-
- #endif /* _WIN32 */
-
- #if defined(_WIN32)
-
- #if (defined(_USRDLL) || defined(_WINDLL)) && !defined(TIDY_EXPORT)
- #define TIDY_EXPORT __declspec( dllexport )
- #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)
- typedef unsigned int uint;
- #endif
- #if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || defined(BSD_BASED_OS) || defined(_WIN32)
- 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
-
-
- /*
- 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;
-
- /* for NULL pointers
- #define null ((const void*)0)
- extern void* null;
- */
-
- #if defined(DMALLOC)
- #include "dmalloc.h"
- #endif
-
- void *MemAlloc(size_t size);
- void *MemRealloc(void *mem, size_t newsize);
- void MemFree(void *mem);
- void ClearMemory(void *, size_t size);
- void FatalError( ctmbstr msg );
-
- /* Opaque data structure.
- * Cast to implementation type struct within lib.
- * This will reduce inter-dependencies/conflicts w/ application code.
- */
- #if 1
- /*
- * Please note - this definition assumes your compiler uses 'int' for enums.
- */
- #define opaque_type( typenam )\
- struct _##typenam { int _opaque; };\
- typedef struct _##typenam* typenam
- #else
- #define opaque_type(typenam) typedef 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 /* __PLATFORM_H__ */
-