~ubuntu-branches/ubuntu/precise/tidy/precise-updates

« back to all changes in this revision

Viewing changes to include/platform.h

  • Committer: Bazaar Package Importer
  • Author(s): Jason Thomas
  • Date: 2005-04-20 11:22:49 UTC
  • mto: (3.1.1 lenny)
  • mto: This revision was merged to the branch mainline in revision 2.
  • Revision ID: james.westby@ubuntu.com-20050420112249-epdnkgi03ubep83z
Tags: upstream-20050415
ImportĀ upstreamĀ versionĀ 20050415

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __PLATFORM_H__
 
2
#define __PLATFORM_H__
 
3
 
 
4
/* platform.h -- Platform specifics
 
5
 
 
6
  (c) 1998-2005 (W3C) MIT, ERCIM, Keio University
 
7
  See tidy.h for the copyright notice.
 
8
 
 
9
  CVS Info :
 
10
 
 
11
    $Author: arnaud02 $ 
 
12
    $Date: 2005/04/08 10:33:27 $ 
 
13
    $Revision: 1.53 $ 
 
14
 
 
15
*/
 
16
 
 
17
#ifdef __cplusplus
 
18
extern "C" {
 
19
#endif
 
20
 
 
21
/*
 
22
  Uncomment and edit one of the following #defines if you
 
23
  want to specify the config file at compile-time.
 
24
*/
 
25
 
 
26
/* #define CONFIG_FILE "/etc/tidy_config.txt" */ /* original */
 
27
/* #define CONFIG_FILE "/etc/tidyrc" */
 
28
/* #define CONFIG_FILE "/etc/tidy.conf" */
 
29
 
 
30
/*
 
31
  Uncomment the following #define if you are on a system
 
32
  supporting the HOME environment variable.
 
33
  It enables tidy to find config files named ~/.tidyrc if 
 
34
  the HTML_TIDY environment variable is not set.
 
35
*/
 
36
/* #define USER_CONFIG_FILE "~/.tidyrc" */
 
37
 
 
38
/*
 
39
  Uncomment the following #define if your
 
40
  system supports the call getpwnam(). 
 
41
  E.g. Unix and Linux.
 
42
 
 
43
  It enables tidy to find files named 
 
44
  ~your/foo for use in the HTML_TIDY environment
 
45
  variable or CONFIG_FILE or USER_CONFIGFILE or
 
46
  on the command line: -config ~joebob/tidy.cfg
 
47
 
 
48
  Contributed by Todd Lewis.
 
49
*/
 
50
 
 
51
/* #define SUPPORT_GETPWNAM */
 
52
 
 
53
 
 
54
/* Enable/disable support for Big5 and Shift_JIS character encodings */
 
55
#ifndef SUPPORT_ASIAN_ENCODINGS
 
56
#define SUPPORT_ASIAN_ENCODINGS 1
 
57
#endif
 
58
 
 
59
/* Enable/disable support for UTF-16 character encodings */
 
60
#ifndef SUPPORT_UTF16_ENCODINGS
 
61
#define SUPPORT_UTF16_ENCODINGS 1
 
62
#endif
 
63
 
 
64
/* Enable/disable support for additional accessibility checks */
 
65
#ifndef SUPPORT_ACCESSIBILITY_CHECKS
 
66
#define SUPPORT_ACCESSIBILITY_CHECKS 1
 
67
#endif
 
68
 
 
69
 
 
70
/* Convenience defines for Mac platforms */
 
71
 
 
72
#if defined(macintosh)
 
73
/* Mac OS 6.x/7.x/8.x/9.x, with or without CarbonLib - MPW or Metrowerks 68K/PPC compilers */
 
74
#define MAC_OS_CLASSIC
 
75
#ifndef PLATFORM_NAME
 
76
#define PLATFORM_NAME "Mac OS"
 
77
#endif
 
78
 
 
79
/* needed for access() */
 
80
#if !defined(_POSIX) && !defined(NO_ACCESS_SUPPORT)
 
81
#define NO_ACCESS_SUPPORT
 
82
#endif
 
83
 
 
84
#ifdef SUPPORT_GETPWNAM
 
85
#undef SUPPORT_GETPWNAM
 
86
#endif
 
87
 
 
88
#elif defined(__APPLE__) && defined(__MACH__)
 
89
/* Mac OS X (client) 10.x (or server 1.x/10.x) - gcc or Metrowerks MachO compilers */
 
90
#define MAC_OS_X
 
91
#ifndef PLATFORM_NAME
 
92
#define PLATFORM_NAME "Mac OS X"
 
93
#endif
 
94
#endif
 
95
 
 
96
#if defined(MAC_OS_CLASSIC) || defined(MAC_OS_X)
 
97
/* Any OS on Mac platform */
 
98
#define MAC_OS
 
99
#define FILENAMES_CASE_SENSITIVE 0
 
100
#define strcasecmp strcmp
 
101
#ifndef DFLT_REPL_CHARENC
 
102
#define DFLT_REPL_CHARENC MACROMAN
 
103
#endif
 
104
#endif
 
105
 
 
106
/* Convenience defines for BSD like platforms */
 
107
 
 
108
#if defined(__FreeBSD__)
 
109
#define BSD_BASED_OS
 
110
#ifndef PLATFORM_NAME
 
111
#define PLATFORM_NAME "FreeBSD"
 
112
#endif
 
113
 
 
114
#elif defined(__NetBSD__)
 
115
#define BSD_BASED_OS
 
116
#ifndef PLATFORM_NAME
 
117
#define PLATFORM_NAME "NetBSD"
 
118
#endif
 
119
 
 
120
#elif defined(__OpenBSD__)
 
121
#define BSD_BASED_OS
 
122
#ifndef PLATFORM_NAME
 
123
#define PLATFORM_NAME "OpenBSD"
 
124
#endif
 
125
 
 
126
#elif defined(__MINT__)
 
127
#define BSD_BASED_OS
 
128
#ifndef PLATFORM_NAME
 
129
#define PLATFORM_NAME "FreeMiNT"
 
130
#endif
 
131
 
 
132
#elif defined(__bsdi__)
 
133
#define BSD_BASED_OS
 
134
#ifndef PLATFORM_NAME
 
135
#define PLATFORM_NAME "BSD/OS"
 
136
#endif
 
137
 
 
138
#endif
 
139
 
 
140
/* Convenience defines for Windows platforms */
 
141
 
 
142
#if defined(WINDOWS) || defined(_WIN32)
 
143
 
 
144
#define WINDOWS_OS
 
145
#ifndef PLATFORM_NAME
 
146
#define PLATFORM_NAME "Windows"
 
147
#endif
 
148
 
 
149
#if defined(__MWERKS__) || defined(__MSL__)
 
150
/* not available with Metrowerks Standard Library */
 
151
 
 
152
#ifdef SUPPORT_GETPWNAM
 
153
#undef SUPPORT_GETPWNAM
 
154
#endif
 
155
 
 
156
/* needed for setmode() */
 
157
#if !defined(NO_SETMODE_SUPPORT)
 
158
#define NO_SETMODE_SUPPORT
 
159
#endif
 
160
 
 
161
#define strcasecmp _stricmp
 
162
 
 
163
#endif
 
164
 
 
165
#if defined(__BORLANDC__)
 
166
#define strcasecmp stricmp
 
167
#endif
 
168
 
 
169
#define FILENAMES_CASE_SENSITIVE 0
 
170
 
 
171
#endif
 
172
 
 
173
/* Convenience defines for Linux platforms */
 
174
 
 
175
#if defined(linux) && defined(__alpha__)
 
176
/* Linux on Alpha - gcc compiler */
 
177
#define LINUX_OS
 
178
#ifndef PLATFORM_NAME
 
179
#define PLATFORM_NAME "Linux/Alpha"
 
180
#endif
 
181
 
 
182
#elif defined(linux) && defined(__sparc__)
 
183
/* Linux on Sparc - gcc compiler */
 
184
#define LINUX_OS
 
185
#ifndef PLATFORM_NAME
 
186
#define PLATFORM_NAME "Linux/Sparc"
 
187
#endif
 
188
 
 
189
#elif defined(linux) && (defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__))
 
190
/* Linux on x86 - gcc compiler */
 
191
#define LINUX_OS
 
192
#ifndef PLATFORM_NAME
 
193
#define PLATFORM_NAME "Linux/x86"
 
194
#endif
 
195
 
 
196
#elif defined(linux) && defined(__powerpc__)
 
197
/* Linux on PPC - gcc compiler */
 
198
#define LINUX_OS
 
199
 
 
200
#if defined(__linux__) && defined(__powerpc__)
 
201
 
 
202
/* #if #system(linux) */
 
203
/* MkLinux on PPC  - gcc (egcs) compiler */
 
204
/* #define MAC_OS_MKLINUX */
 
205
#ifndef PLATFORM_NAME
 
206
#define PLATFORM_NAME "MkLinux"
 
207
#endif
 
208
 
 
209
#else
 
210
 
 
211
#ifndef PLATFORM_NAME
 
212
#define PLATFORM_NAME "Linux/PPC"
 
213
#endif
 
214
 
 
215
#endif
 
216
 
 
217
#elif defined(linux) || defined(__linux__)
 
218
/* generic Linux */
 
219
#define LINUX_OS
 
220
#ifndef PLATFORM_NAME
 
221
#define PLATFORM_NAME "Linux"
 
222
#endif
 
223
 
 
224
#endif
 
225
 
 
226
/* Convenience defines for Solaris platforms */
 
227
 
 
228
#if defined(sun)
 
229
#define SOLARIS_OS
 
230
#ifndef PLATFORM_NAME
 
231
#define PLATFORM_NAME "Solaris"
 
232
#endif
 
233
#endif
 
234
 
 
235
/* Convenience defines for HPUX + gcc platforms */
 
236
 
 
237
#if defined(__hpux)
 
238
#define HPUX_OS
 
239
#ifndef PLATFORM_NAME
 
240
#define PLATFORM_NAME "HPUX"
 
241
#endif
 
242
#endif
 
243
 
 
244
/* Convenience defines for RISCOS + gcc platforms */
 
245
 
 
246
#if defined(__riscos__)
 
247
#define RISC_OS
 
248
#ifndef PLATFORM_NAME
 
249
#define PLATFORM_NAME "RISC OS"
 
250
#endif
 
251
#endif
 
252
 
 
253
/* Convenience defines for OS/2 + icc/gcc platforms */
 
254
 
 
255
#if defined(__OS2__) || defined(__EMX__)
 
256
#define OS2_OS
 
257
#ifndef PLATFORM_NAME
 
258
#define PLATFORM_NAME "OS/2"
 
259
#endif
 
260
#define FILENAMES_CASE_SENSITIVE 0
 
261
#define strcasecmp stricmp
 
262
#endif
 
263
 
 
264
/* Convenience defines for IRIX */
 
265
 
 
266
#if defined(__sgi)
 
267
#define IRIX_OS
 
268
#ifndef PLATFORM_NAME
 
269
#define PLATFORM_NAME "SGI IRIX"
 
270
#endif
 
271
#endif
 
272
 
 
273
/* Convenience defines for AIX */
 
274
 
 
275
#if defined(_AIX)
 
276
#define AIX_OS
 
277
#ifndef PLATFORM_NAME
 
278
#define PLATFORM_NAME "IBM AIX"
 
279
#endif
 
280
#endif
 
281
 
 
282
 
 
283
/* Convenience defines for BeOS platforms */
 
284
 
 
285
#if defined(__BEOS__)
 
286
#define BE_OS
 
287
#ifndef PLATFORM_NAME
 
288
#define PLATFORM_NAME "BeOS"
 
289
#endif
 
290
#endif
 
291
 
 
292
/* Convenience defines for Cygwin platforms */
 
293
 
 
294
#if defined(__CYGWIN__)
 
295
#define CYGWIN_OS
 
296
#ifndef PLATFORM_NAME
 
297
#define PLATFORM_NAME "Cygwin"
 
298
#endif
 
299
#define FILENAMES_CASE_SENSITIVE 0
 
300
#endif
 
301
 
 
302
/* Convenience defines for OpenVMS */
 
303
 
 
304
#if defined(__VMS)
 
305
#define OPENVMS_OS
 
306
#ifndef PLATFORM_NAME
 
307
#define PLATFORM_NAME "OpenVMS"
 
308
#endif
 
309
#define FILENAMES_CASE_SENSITIVE 0
 
310
#endif
 
311
 
 
312
/* Convenience defines for DEC Alpha OSF + gcc platforms */
 
313
 
 
314
#if defined(__osf__)
 
315
#define OSF_OS
 
316
#ifndef PLATFORM_NAME
 
317
#define PLATFORM_NAME "DEC Alpha OSF"
 
318
#endif
 
319
#endif
 
320
 
 
321
/* Convenience defines for ARM platforms */
 
322
 
 
323
#if defined(__arm)
 
324
#define ARM_OS
 
325
 
 
326
#if defined(forARM) && defined(__NEWTON_H)
 
327
 
 
328
/* Using Newton C++ Tools ARMCpp compiler */
 
329
#define NEWTON_OS
 
330
#ifndef PLATFORM_NAME
 
331
#define PLATFORM_NAME "Newton"
 
332
#endif
 
333
 
 
334
#else
 
335
 
 
336
#ifndef PLATFORM_NAME
 
337
#define PLATFORM_NAME "ARM"
 
338
#endif
 
339
 
 
340
#endif
 
341
 
 
342
#endif
 
343
 
 
344
#include <ctype.h>
 
345
#include <stdio.h>
 
346
#include <setjmp.h>  /* for longjmp on error exit */
 
347
#include <stdlib.h>
 
348
#include <stdarg.h>  /* may need <varargs.h> for Unix V */
 
349
#include <string.h>
 
350
#include <assert.h>
 
351
 
 
352
#ifdef NEEDS_MALLOC_H
 
353
#include <malloc.h>
 
354
#endif
 
355
 
 
356
#ifdef SUPPORT_GETPWNAM
 
357
#include <pwd.h>
 
358
#endif
 
359
 
 
360
#ifdef NEEDS_UNISTD_H
 
361
#include <unistd.h>  /* needed for unlink on some Unix systems */
 
362
#endif
 
363
 
 
364
/* This can be set at compile time.  Usually Windows,
 
365
** except for Macintosh builds.
 
366
*/
 
367
#ifndef DFLT_REPL_CHARENC
 
368
#define DFLT_REPL_CHARENC WIN1252
 
369
#endif
 
370
 
 
371
/* By default, use case-sensitive filename comparison.
 
372
*/
 
373
#ifndef FILENAMES_CASE_SENSITIVE
 
374
#define FILENAMES_CASE_SENSITIVE 1
 
375
#endif
 
376
 
 
377
 
 
378
/*
 
379
  Tidy preserves the last modified time for the files it
 
380
  cleans up.
 
381
*/
 
382
 
 
383
/*
 
384
  If your platform doesn't support <utime.h> and the
 
385
  utime() function, or <sys/futime> and the futime()
 
386
  function then set PRESERVE_FILE_TIMES to 0.
 
387
  
 
388
  If your platform doesn't support <sys/utime.h> and the
 
389
  futime() function, then set HAS_FUTIME to 0.
 
390
  
 
391
  If your platform supports <utime.h> and the
 
392
  utime() function requires the file to be
 
393
  closed first, then set UTIME_NEEDS_CLOSED_FILE to 1.
 
394
*/
 
395
 
 
396
/* Keep old PRESERVEFILETIMES define for compatibility */
 
397
#ifdef PRESERVEFILETIMES
 
398
#undef PRESERVE_FILE_TIMES
 
399
#define PRESERVE_FILE_TIMES PRESERVEFILETIMES
 
400
#endif
 
401
 
 
402
#ifndef PRESERVE_FILE_TIMES
 
403
#if defined(RISC_OS) || defined(OPENVMS_OS) || defined(OSF_OS)
 
404
#define PRESERVE_FILE_TIMES 0
 
405
#else
 
406
#define PRESERVE_FILE_TIMES 1
 
407
#endif
 
408
#endif
 
409
 
 
410
#if PRESERVE_FILE_TIMES
 
411
 
 
412
#ifndef HAS_FUTIME
 
413
#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__)
 
414
#define HAS_FUTIME 0
 
415
#else
 
416
#define HAS_FUTIME 1
 
417
#endif
 
418
#endif
 
419
 
 
420
#ifndef UTIME_NEEDS_CLOSED_FILE
 
421
#if defined(SOLARIS_OS) || defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || defined(LINUX_OS)
 
422
#define UTIME_NEEDS_CLOSED_FILE 1
 
423
#else
 
424
#define UTIME_NEEDS_CLOSED_FILE 0
 
425
#endif
 
426
#endif
 
427
 
 
428
#if defined(MAC_OS_X) || (!defined(MAC_OS_CLASSIC) && !defined(__MSL__))
 
429
#include <sys/types.h> 
 
430
#include <sys/stat.h>
 
431
#else
 
432
#include <stat.h>
 
433
#endif
 
434
 
 
435
#if HAS_FUTIME
 
436
#include <sys/utime.h>
 
437
#else
 
438
#include <utime.h>
 
439
#endif /* HASFUTIME */
 
440
 
 
441
/*
 
442
  MS Windows needs _ prefix for Unix file functions.
 
443
  Not required by Metrowerks Standard Library (MSL).
 
444
  
 
445
  Tidy uses following for preserving the last modified time.
 
446
 
 
447
  WINDOWS automatically set by Win16 compilers.
 
448
  _WIN32 automatically set by Win32 compilers.
 
449
*/
 
450
#if defined(_WIN32) && !defined(__MSL__) && !defined(__BORLANDC__)
 
451
 
 
452
#define futime _futime
 
453
#define fstat _fstat
 
454
#define utimbuf _utimbuf /* Windows seems to want utimbuf */
 
455
#define stat _stat
 
456
#define utime _utime
 
457
#define vsnprintf _vsnprintf
 
458
#endif /* _WIN32 */
 
459
 
 
460
#endif /* PRESERVE_FILE_TIMES */
 
461
 
 
462
/*
 
463
  MS Windows needs _ prefix for Unix file functions.
 
464
  Not required by Metrowerks Standard Library (MSL).
 
465
  
 
466
  WINDOWS automatically set by Win16 compilers.
 
467
  _WIN32 automatically set by Win32 compilers.
 
468
*/
 
469
#if defined(_WIN32) && !defined(__MSL__) && !defined(__BORLANDC__)
 
470
 
 
471
#ifndef __WATCOMC__
 
472
#define fileno _fileno
 
473
#define setmode _setmode
 
474
#endif
 
475
 
 
476
#define access _access
 
477
#define strcasecmp _stricmp
 
478
 
 
479
#if _MSC_VER > 1000
 
480
#pragma warning( disable : 4189 ) /* local variable is initialized but not referenced */
 
481
#pragma warning( disable : 4100 ) /* unreferenced formal parameter */
 
482
#pragma warning( disable : 4706 ) /* assignment within conditional expression */
 
483
#endif
 
484
 
 
485
#endif /* _WIN32 */
 
486
 
 
487
#if defined(_WIN32)
 
488
 
 
489
#if (defined(_USRDLL) || defined(_WINDLL)) && !defined(TIDY_EXPORT)
 
490
#define TIDY_EXPORT __declspec( dllexport ) 
 
491
#endif
 
492
 
 
493
#ifndef TIDY_CALL
 
494
#define TIDY_CALL __stdcall
 
495
#endif
 
496
 
 
497
#endif /* _WIN32 */
 
498
 
 
499
/* hack for gnu sys/types.h file which defines uint and ulong */
 
500
 
 
501
#if defined(BE_OS) || defined(SOLARIS_OS) || defined(BSD_BASED_OS) || defined(OSF_OS) || defined(IRIX_OS) || defined(AIX_OS)
 
502
#include <sys/types.h>
 
503
#endif
 
504
#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)
 
505
typedef unsigned int uint;
 
506
#endif
 
507
#if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || defined(BSD_BASED_OS) || defined(_WIN32)
 
508
typedef unsigned long ulong;
 
509
#endif
 
510
 
 
511
#ifndef TIDY_EXPORT /* Define it away for most builds */
 
512
#define TIDY_EXPORT
 
513
#endif
 
514
 
 
515
#ifndef TIDY_STRUCT
 
516
#define TIDY_STRUCT
 
517
#endif
 
518
 
 
519
typedef unsigned char byte;
 
520
 
 
521
typedef uint tchar;         /* single, full character */
 
522
typedef char tmbchar;       /* single, possibly partial character */
 
523
#ifndef TMBSTR_DEFINED
 
524
typedef tmbchar* tmbstr;    /* pointer to buffer of possibly partial chars */
 
525
typedef const tmbchar* ctmbstr; /* Ditto, but const */
 
526
#define NULLSTR (tmbstr)""
 
527
#define TMBSTR_DEFINED
 
528
#endif
 
529
 
 
530
#ifndef TIDY_CALL
 
531
#define TIDY_CALL
 
532
#endif
 
533
 
 
534
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
 
535
# define ARG_UNUSED(x) x __attribute__((unused))
 
536
#else
 
537
# define ARG_UNUSED(x) x
 
538
#endif
 
539
 
 
540
/* HAS_VSNPRINTF triggers the use of "vsnprintf", which is safe related to
 
541
   buffer overflow. Therefore, we make it the default unless HAS_VSNPRINTF
 
542
   has been defined. */
 
543
#ifndef HAS_VSNPRINTF
 
544
# define HAS_VSNPRINTF 1
 
545
#endif
 
546
 
 
547
/*
 
548
  bool is a reserved word in some but
 
549
  not all C++ compilers depending on age
 
550
  work around is to avoid bool altogether
 
551
  by introducing a new enum called Bool
 
552
*/
 
553
typedef enum
 
554
{
 
555
   no,
 
556
   yes
 
557
} Bool;
 
558
 
 
559
/* for NULL pointers 
 
560
#define null ((const void*)0)
 
561
extern void* null;
 
562
*/
 
563
 
 
564
#if defined(DMALLOC)
 
565
#include "dmalloc.h"
 
566
#endif
 
567
 
 
568
void *MemAlloc(size_t size);
 
569
void *MemRealloc(void *mem, size_t newsize);
 
570
void MemFree(void *mem);
 
571
void ClearMemory(void *, size_t size);
 
572
void FatalError( ctmbstr msg );
 
573
 
 
574
/* Opaque data structure.
 
575
*  Cast to implementation type struct within lib.
 
576
*  This will reduce inter-dependencies/conflicts w/ application code.
 
577
*/
 
578
#if 1
 
579
/*
 
580
*  Please note - this definition assumes your compiler uses 'int' for enums.
 
581
*/
 
582
#define opaque_type( typenam )\
 
583
struct _##typenam { int _opaque; };\
 
584
typedef struct _##typenam* typenam
 
585
#else
 
586
#define opaque_type(typenam) typedef void* typenam
 
587
#endif
 
588
 
 
589
/* Opaque data structure used to pass back
 
590
** and forth to keep current position in a
 
591
** list or other collection.
 
592
*/
 
593
opaque_type( TidyIterator );
 
594
 
 
595
#ifdef __cplusplus
 
596
} /* extern "C" */
 
597
#endif
 
598
 
 
599
#endif /* __PLATFORM_H__ */