OSDN Git Service

* refine file structure.
[nkf/nkf.git] / nkf.h
1 /*\r
2  * \r
3  * nkf.h - Header file for nkf\r
4  * \r
5  * $Id: nkf.h,v 1.2 2008/01/23 09:10:25 naruse Exp $\r
6  */\r
7 \r
8 \r
9 #ifndef NKF_H\r
10 \r
11 /* Wrapper of configurations */\r
12 \r
13 #ifndef MIME_DECODE_DEFAULT\r
14 #define MIME_DECODE_DEFAULT STRICT_MIME\r
15 #endif\r
16 #ifndef X0201_DEFAULT\r
17 #define X0201_DEFAULT TRUE\r
18 #endif\r
19 \r
20 #if DEFAULT_NEWLINE == 0x0D0A\r
21 #define PUT_NEWLINE(func) do {\\r
22     func(0x0D);\\r
23     func(0x0A);\\r
24 } while (0)\r
25 #define OCONV_NEWLINE(func) do {\\r
26     func(0, 0x0D);\\r
27     func(0, 0x0A);\\r
28 } while (0)\r
29 #elif DEFAULT_NEWLINE == 0x0D\r
30 #define PUT_NEWLINE(func) func(0x0D)\r
31 #define OCONV_NEWLINE(func) func(0, 0x0D)\r
32 #else\r
33 #define DEFAULT_NEWLINE 0x0A\r
34 #define PUT_NEWLINE(func) func(0x0A)\r
35 #define OCONV_NEWLINE(func) func(0, 0x0A)\r
36 #endif\r
37 #ifdef HELP_OUTPUT_STDERR\r
38 #define HELP_OUTPUT stderr\r
39 #else\r
40 #define HELP_OUTPUT stdout\r
41 #endif\r
42 \r
43 \r
44 /* Compatibility definitions */\r
45 \r
46 #ifdef nkf_char\r
47 #elif defined(INT_IS_SHORT)\r
48 typedef long nkf_char;\r
49 #define NKF_INT32_C(n)   (n##L)\r
50 #else\r
51 typedef int nkf_char;\r
52 #define NKF_INT32_C(n)   (n)\r
53 #endif\r
54 \r
55 #if (defined(__TURBOC__) || defined(_MSC_VER) || defined(LSI_C) || defined(__MINGW32__) || defined(__EMX__) || defined(__MSDOS__) || defined(__WINDOWS__) || defined(__DOS__) || defined(__OS2__)) && !defined(MSDOS)\r
56 #define MSDOS\r
57 #if (defined(__Win32__) || defined(_WIN32)) && !defined(__WIN32__)\r
58 #define __WIN32__\r
59 #endif\r
60 #endif\r
61 \r
62 #ifdef PERL_XS\r
63 #undef OVERWRITE\r
64 #endif\r
65 \r
66 #ifndef PERL_XS\r
67 #include <stdio.h>\r
68 #endif\r
69 \r
70 #include <stdlib.h>\r
71 #include <string.h>\r
72 \r
73 #if defined(MSDOS) || defined(__OS2__)\r
74 #include <fcntl.h>\r
75 #include <io.h>\r
76 #if defined(_MSC_VER) || defined(__WATCOMC__)\r
77 #define mktemp _mktemp\r
78 #endif\r
79 #endif\r
80 \r
81 #ifdef MSDOS\r
82 #ifdef LSI_C\r
83 #define setbinmode(fp) fsetbin(fp)\r
84 #elif defined(__DJGPP__)\r
85 #include <libc/dosio.h>\r
86 void  setbinmode(FILE *fp)\r
87 {\r
88     /* we do not use libc's setmode(), which changes COOKED/RAW mode in device. */\r
89     int fd, m;\r
90     fd = fileno(fp);\r
91     m = (__file_handle_modes[fd] & (~O_TEXT)) | O_BINARY;\r
92     __file_handle_set(fd, m);\r
93 }\r
94 #else /* Microsoft C, Turbo C */\r
95 #define setbinmode(fp) setmode(fileno(fp), O_BINARY)\r
96 #endif\r
97 #else /* UNIX */\r
98 #define setbinmode(fp)\r
99 #endif\r
100 \r
101 #ifdef _IOFBF /* SysV and MSDOS, Windows */\r
102 #define       setvbuffer(fp, buf, size)       setvbuf(fp, buf, _IOFBF, size)\r
103 #else /* BSD */\r
104 #define       setvbuffer(fp, buf, size)       setbuffer(fp, buf, size)\r
105 #endif\r
106 \r
107 /*Borland C++ 4.5 EasyWin*/\r
108 #if defined(__TURBOC__) && defined(_Windows) && !defined(__WIN32__) /*Easy Win */\r
109 #define         EASYWIN\r
110 #ifndef __WIN16__\r
111 #define __WIN16__\r
112 #endif\r
113 #include <windows.h>\r
114 #endif\r
115 \r
116 #ifdef OVERWRITE\r
117 /* added by satoru@isoternet.org */\r
118 #if defined(__EMX__)\r
119 #include <sys/types.h>\r
120 #endif\r
121 #include <sys/stat.h>\r
122 #if !defined(MSDOS) || defined(__DJGPP__) /* UNIX, djgpp */\r
123 #include <unistd.h>\r
124 #if defined(__WATCOMC__)\r
125 #include <sys/utime.h>\r
126 #else\r
127 #include <utime.h>\r
128 #endif\r
129 #else /* defined(MSDOS) */\r
130 #ifdef __WIN32__\r
131 #ifdef __BORLANDC__ /* BCC32 */\r
132 #include <utime.h>\r
133 #else /* !defined(__BORLANDC__) */\r
134 #include <sys/utime.h>\r
135 #endif /* (__BORLANDC__) */\r
136 #else /* !defined(__WIN32__) */\r
137 #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__WATCOMC__) || defined(__OS2__) || defined(__EMX__) || defined(__IBMC__) || defined(__IBMCPP__)  /* VC++, MinGW, Watcom, emx+gcc, IBM VAC++ */\r
138 #include <sys/utime.h>\r
139 #elif defined(__TURBOC__) /* BCC */\r
140 #include <utime.h>\r
141 #elif defined(LSI_C) /* LSI C */\r
142 #endif /* (__WIN32__) */\r
143 #endif\r
144 #endif\r
145 #endif\r
146 \r
147 #ifndef __WIN32__ /* not win32 is posix */\r
148 #define HAVE_LANGINFO_H\r
149 #define HAVE_LOCALE_H\r
150 #endif\r
151 \r
152 #ifdef HAVE_LANGINFO_H\r
153 #include <langinfo.h>\r
154 #endif\r
155 #ifdef HAVE_LOCALE_H\r
156 #include <locale.h>\r
157 #endif\r
158 \r
159 #define         FALSE   0\r
160 #define         TRUE    1\r
161 \r
162 #ifdef WIN32DLL\r
163 #include "nkf32.h"\r
164 #endif\r
165 \r
166 #endif\r