]> git.saurik.com Git - wxWidgets.git/blob - utils/Install/inczip/w32cfg.h
added container class source
[wxWidgets.git] / utils / Install / inczip / w32cfg.h
1 /*---------------------------------------------------------------------------
2 Win32 specific configuration section:
3 ---------------------------------------------------------------------------*/
4
5 #ifndef __w32cfg_h
6 #define __w32cfg_h
7
8 #if (defined(__CYGWIN__) && !defined(__CYGWIN32__))
9 # define __CYGWIN32__ /* new versions of CygWin may not define this */
10 #endif
11
12 #include <sys/types.h> /* off_t, time_t, dev_t, ... */
13 #include <sys/stat.h>
14 #include <io.h> /* read(), open(), etc. */
15 #include <time.h>
16 #if (defined(__RSXNT__) || defined(__EMX__)) && !defined(tzset)
17 # define tzset _tzset
18 #endif
19 #ifdef __MINGW32__
20 extern void _tzset(void); /* this is missing in <time.h> */
21 # ifndef tzset
22 # define tzset _tzset
23 # endif
24 #endif
25 #include <memory.h>
26 #if (!defined(__RSXNT__) && !defined(__CYGWIN32__))
27 # include <direct.h> /* mkdir() */
28 #endif
29 #include <fcntl.h>
30 #ifdef __CYGWIN32__
31 # include <unistd.h>
32 extern int setmode(int, int); /* this is missing in <fcntl.h> */
33 #endif
34 #if (defined(MSC) || defined(__WATCOMC__) || defined(__MINGW32__))
35 # include <sys/utime.h>
36 #else
37 # include <utime.h>
38 #endif
39
40 #if defined(FILEIO_C)
41 # ifndef __CYGWIN32__
42 # include <conio.h>
43 # endif
44 # include <windows.h>
45 # ifdef __RSXNT__
46 # include "win32/rsxntwin.h"
47 # endif
48 #endif
49 #if (defined(ENVARGS_C) || defined(EXTRACT_C) || defined(UNZIP_C) || \
50 defined(ZCRYPT_INTERNAL))
51 # include <windows.h>
52 # ifdef __RSXNT__
53 # include "win32/rsxntwin.h"
54 # endif
55 #endif
56 #if (defined(__CYGWIN32__) || defined(__MINGW32__))
57 /* the following definitions are missing in their <windows.h> */
58 # ifndef AnsiToOem
59 # define AnsiToOem CharToOemA
60 # endif
61 # ifndef OemToAnsi
62 # define OemToAnsi OemToCharA
63 # endif
64 #endif
65
66 #define DIR_END '\\' /* OS uses '\\' as directory separator */
67 #define DIR_END2 '/' /* also check for '/' (RTL may convert) */
68 #ifndef DATE_FORMAT
69 # define DATE_FORMAT DF_MDY
70 #endif
71 #define lenEOL 2
72 #define PutNativeEOL {*q++ = native(CR); *q++ = native(LF);}
73
74 #if (defined(__RSXNT__) && !defined(HAVE_MKTIME))
75 # define HAVE_MKTIME /* use mktime() in time conversion routines */
76 #endif
77 #if (defined(__CYGWIN32__) && defined(HAVE_MKTIME))
78 # undef HAVE_MKTIME /* Cygnus' mktime() implementation is buggy */
79 #endif
80 #if (!defined(NT_TZBUG_WORKAROUND) && !defined(NO_NT_TZBUG_WORKAROUND))
81 # define NT_TZBUG_WORKAROUND
82 #endif
83 #if (!defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME))
84 # define USE_EF_UT_TIME
85 #endif
86 #if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP))
87 # define TIMESTAMP
88 #endif
89 #if (!defined(NO_NTSD_EAS) && !defined(NTSD_EAS))
90 # define NTSD_EAS /* enable NTSD support unless explicitly suppressed */
91 #endif
92
93 /* handlers for OEM <--> ANSI string conversions */
94 #ifdef __RSXNT__
95 /* RSXNT uses OEM coded strings in functions supplied by C RTL */
96 # ifdef CRTL_CP_IS_ISO
97 # undef CRTL_CP_IS_ISO
98 # endif
99 # ifndef CRTL_CP_IS_OEM
100 # define CRTL_CP_IS_OEM
101 # endif
102 #else
103 /* "real" native WIN32 compilers use ANSI coded strings in C RTL calls */
104 # ifndef CRTL_CP_IS_ISO
105 # define CRTL_CP_IS_ISO
106 # endif
107 # ifdef CRTL_CP_IS_OEM
108 # undef CRTL_CP_IS_OEM
109 # endif
110 #endif
111
112 #ifdef CRTL_CP_IS_ISO
113 /* C RTL's file system support assumes ANSI coded strings */
114 # define ISO_TO_INTERN(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
115 # define OEM_TO_INTERN(src, dst) OemToAnsi(src, dst)
116 # define INTERN_TO_ISO(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
117 # define INTERN_TO_OEM(src, dst) AnsiToOem(src, dst)
118 #endif /* CRTL_CP_IS_ISO */
119 #ifdef CRTL_CP_IS_OEM
120 /* C RTL's file system support assumes OEM coded strings */
121 # define ISO_TO_INTERN(src, dst) AnsiToOem(src, dst)
122 # define OEM_TO_INTERN(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
123 # define INTERN_TO_ISO(src, dst) OemToAnsi(src, dst)
124 # define INTERN_TO_OEM(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
125 #endif /* CRTL_CP_IS_OEM */
126 #define _OEM_INTERN(str1) OEM_TO_INTERN(str1, str1)
127 #define _ISO_INTERN(str1) ISO_TO_INTERN(str1, str1)
128 #ifndef WINDLL
129 /* Despite best intentions, for the command-line version UzpPassword()
130 * could return either character set, depending on whether running under
131 * Win95 (DOS-session) or WinNT (native WinNT command interpreter)! */
132 # define STR_TO_CP2(dst, src) (AnsiToOem(src, dst), dst)
133 # define STR_TO_CP3(dst, src) (OemToAnsi(src, dst), dst)
134 #else
135 /* The WINDLL front end is known to supply ISO/ANSI-coded passwords! */
136 # define STR_TO_CP2(dst, src) (AnsiToOem(src, dst), dst)
137 #endif
138 /* dummy defines to disable these functions, they are not needed */
139 #define STR_TO_OEM
140 #define STR_TO_ISO
141
142 /* Static variables that we have to add to Uz_Globs: */
143 #define SYSTEM_SPECIFIC_GLOBALS \
144 int created_dir, renamed_fullpath, fnlen;\
145 unsigned nLabelDrive;\
146 char lastRootPath[4];\
147 int lastVolOldFAT, lastVolLocTim;\
148 char *rootpath, *buildpathHPFS, *buildpathFAT, *endHPFS, *endFAT;\
149 char *dirname, *wildname, matchname[FILNAMSIZ];\
150 int rootlen, have_dirname, dirnamelen, notfirstcall;\
151 zvoid *wild_dir;
152
153 /* created_dir, renamed_fullpath, fnlen, and nLabelDrive are used by */
154 /* both mapname() and checkdir(). */
155 /* lastRootPath and lastVolOldFAT are used by IsVolumeOldFAT(). */
156 /* rootlen, rootpath, buildpathHPFS, buildpathFAT, endHPFS, and endFAT */
157 /* are used by checkdir(). */
158 /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */
159 /* and notfirstcall are used by do_wild(). */
160
161 #if (defined(_MSC_VER) && !defined(MSC))
162 # define MSC
163 #endif
164
165 /* This replacement for C-RTL-supplied getch() (or similar) functionality
166 * avoids leaving unabsorbed LFs in the keyboard buffer under Windows95,
167 * and supports the <ALT>+[0]<digit><digit><digit> feature.
168 */
169 int getch_win32 OF((void));
170
171 /* This patch of stat() is useful for at least two compilers. It is */
172 /* difficult to take a stat() of a root directory under Windows95, so */
173 /* zstat_win32() detects that case and fills in suitable values. */
174 #ifndef __RSXNT__
175 # ifndef W32_STATROOT_FIX
176 # define W32_STATROOT_FIX
177 # endif
178 #endif /* !__RSXNT__ */
179
180 #if (defined(NT_TZBUG_WORKAROUND) || defined(W32_STATROOT_FIX))
181 # define W32_STAT_BANDAID
182 # if (defined(NT_TZBUG_WORKAROUND) && defined(REENTRANT))
183 # define __W32STAT_GLOBALS__ Uz_Globs *pG,
184 # define __W32STAT_G__ pG,
185 # else
186 # define __W32STAT_GLOBALS__
187 # define __W32STAT_G__
188 # endif
189 # undef SSTAT
190 # ifdef WILD_STAT_BUG
191 # define SSTAT(path, pbuf) (iswild(path) || zstat_win32(__W32STAT_G__ path, pbuf))
192 # else
193 # define SSTAT(path, pbuf) zstat_win32(__W32STAT_G__ path, pbuf)
194 # endif
195 #endif
196
197 #ifdef __WATCOMC__
198 # ifdef __386__
199 # ifndef WATCOMC_386
200 # define WATCOMC_386
201 # endif
202 # define __32BIT__
203 # undef far
204 # define far
205 # undef near
206 # define near
207
208 /* Get asm routines to link properly without using "__cdecl": */
209 # ifndef USE_ZLIB
210 # pragma aux crc32 "_*" parm caller [] value [eax] modify [eax]
211 # pragma aux get_crc_table "_*" parm caller [] value [eax] \
212 modify [eax ecx edx]
213 # endif /* !USE_ZLIB */
214 # endif /* __386__ */
215
216 # ifndef EPIPE
217 # define EPIPE -1
218 # endif
219 # define PIPE_ERROR (errno == EPIPE)
220 #endif /* __WATCOMC__ */
221
222 #endif /* !__w32cfg_h */