xref: /plan9/sys/src/cmd/bzip2/lib/os.h (revision 59cc4ca53493a3c6d2349fe2b7f7c40f7dce7294)
1*59cc4ca5SDavid du Colombier /*
2*59cc4ca5SDavid du Colombier  * THIS FILE IS NOT IDENTICAL TO THE ORIGINAL
3*59cc4ca5SDavid du Colombier  * FROM THE BZIP2 DISTRIBUTION.
4*59cc4ca5SDavid du Colombier  *
5*59cc4ca5SDavid du Colombier  * It has been modified, mainly to break the library
6*59cc4ca5SDavid du Colombier  * into smaller pieces.
7*59cc4ca5SDavid du Colombier  *
8*59cc4ca5SDavid du Colombier  * Russ Cox
9*59cc4ca5SDavid du Colombier  * rsc@plan9.bell-labs.com
10*59cc4ca5SDavid du Colombier  * July 2000
11*59cc4ca5SDavid du Colombier  */
12*59cc4ca5SDavid du Colombier 
13*59cc4ca5SDavid du Colombier /*---------------------------------------------*/
14*59cc4ca5SDavid du Colombier /*--
15*59cc4ca5SDavid du Colombier   Place a 1 beside your platform, and 0 elsewhere.
16*59cc4ca5SDavid du Colombier   Attempts to autosniff this even if you don't.
17*59cc4ca5SDavid du Colombier --*/
18*59cc4ca5SDavid du Colombier 
19*59cc4ca5SDavid du Colombier 
20*59cc4ca5SDavid du Colombier /*--
21*59cc4ca5SDavid du Colombier   Generic 32-bit Unix.
22*59cc4ca5SDavid du Colombier   Also works on 64-bit Unix boxes.
23*59cc4ca5SDavid du Colombier --*/
24*59cc4ca5SDavid du Colombier #define BZ_UNIX      1
25*59cc4ca5SDavid du Colombier 
26*59cc4ca5SDavid du Colombier /*--
27*59cc4ca5SDavid du Colombier   Win32, as seen by Jacob Navia's excellent
28*59cc4ca5SDavid du Colombier   port of (Chris Fraser & David Hanson)'s excellent
29*59cc4ca5SDavid du Colombier   lcc compiler.
30*59cc4ca5SDavid du Colombier --*/
31*59cc4ca5SDavid du Colombier #define BZ_LCCWIN32  0
32*59cc4ca5SDavid du Colombier 
33*59cc4ca5SDavid du Colombier #if defined(_WIN32) && !defined(__CYGWIN__)
34*59cc4ca5SDavid du Colombier #undef  BZ_LCCWIN32
35*59cc4ca5SDavid du Colombier #define BZ_LCCWIN32 1
36*59cc4ca5SDavid du Colombier #undef  BZ_UNIX
37*59cc4ca5SDavid du Colombier #define BZ_UNIX 0
38*59cc4ca5SDavid du Colombier #endif
39*59cc4ca5SDavid du Colombier 
40*59cc4ca5SDavid du Colombier /*--
41*59cc4ca5SDavid du Colombier   Plan 9 from Bell Labs
42*59cc4ca5SDavid du Colombier --*/
43*59cc4ca5SDavid du Colombier #define BZ_PLAN9     0
44*59cc4ca5SDavid du Colombier 
45*59cc4ca5SDavid du Colombier #if defined(PLAN9)
46*59cc4ca5SDavid du Colombier #undef  BZ_UNIX
47*59cc4ca5SDavid du Colombier #define BZ_UNIX 0
48*59cc4ca5SDavid du Colombier #undef  BZ_PLAN9
49*59cc4ca5SDavid du Colombier #define BZ_PLAN9 1
50*59cc4ca5SDavid du Colombier #endif
51*59cc4ca5SDavid du Colombier 
52*59cc4ca5SDavid du Colombier #if BZ_UNIX
53*59cc4ca5SDavid du Colombier # include "unix.h"
54*59cc4ca5SDavid du Colombier #elif BZ_LCCWIN32
55*59cc4ca5SDavid du Colombier # include "lccwin32.h"
56*59cc4ca5SDavid du Colombier #elif BZ_PLAN9
57*59cc4ca5SDavid du Colombier # include "plan9.h"
58*59cc4ca5SDavid du Colombier #endif
59*59cc4ca5SDavid du Colombier 
60*59cc4ca5SDavid du Colombier #ifdef __GNUC__
61*59cc4ca5SDavid du Colombier #   define NORETURN __attribute__ ((noreturn))
62*59cc4ca5SDavid du Colombier #else
63*59cc4ca5SDavid du Colombier #   define NORETURN /**/
64*59cc4ca5SDavid du Colombier #endif
65*59cc4ca5SDavid du Colombier 
66*59cc4ca5SDavid du Colombier /*--
67*59cc4ca5SDavid du Colombier   Some more stuff for all platforms :-)
68*59cc4ca5SDavid du Colombier   This might have to get moved into the platform-specific
69*59cc4ca5SDavid du Colombier   header files if we encounter a machine with different sizes.
70*59cc4ca5SDavid du Colombier --*/
71*59cc4ca5SDavid du Colombier 
72*59cc4ca5SDavid du Colombier typedef char            Char;
73*59cc4ca5SDavid du Colombier typedef unsigned char   Bool;
74*59cc4ca5SDavid du Colombier typedef unsigned char   UChar;
75*59cc4ca5SDavid du Colombier typedef int             Int32;
76*59cc4ca5SDavid du Colombier typedef unsigned int    UInt32;
77*59cc4ca5SDavid du Colombier typedef short           Int16;
78*59cc4ca5SDavid du Colombier typedef unsigned short  UInt16;
79*59cc4ca5SDavid du Colombier 
80*59cc4ca5SDavid du Colombier #define True  ((Bool)1)
81*59cc4ca5SDavid du Colombier #define False ((Bool)0)
82*59cc4ca5SDavid du Colombier 
83*59cc4ca5SDavid du Colombier /*--
84*59cc4ca5SDavid du Colombier   IntNative is your platform's `native' int size.
85*59cc4ca5SDavid du Colombier   Only here to avoid probs with 64-bit platforms.
86*59cc4ca5SDavid du Colombier --*/
87*59cc4ca5SDavid du Colombier typedef int IntNative;
88*59cc4ca5SDavid du Colombier 
89