|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571 |
- /*
- Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
-
- See the accompanying file LICENSE, version 2009-Jan-02 or later
- (the contents of which are also included in unzip.h) for terms of use.
- If, for some reason, all these files are missing, the Info-ZIP license
- also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
- */
- /*---------------------------------------------------------------------------
- Win32 specific configuration section:
- ---------------------------------------------------------------------------*/
-
- #ifndef __w32cfg_h
- #define __w32cfg_h
-
- #ifdef __MINGW32__
- # define USE_STRM_INPUT
- #endif
-
- #ifdef __CYGWIN__
- /* We treat the file system underneath the Cygwin Unix emulator environment
- * as "native VFAT/NTFS" and use the WIN32 API for its special attributes...
- */
- # ifdef UNIX
- # undef UNIX
- # endif
- #endif
-
- #if (defined(_MSC_VER) && !defined(MSC))
- # define MSC
- #endif
-
- /* enable multibyte character set support by default */
- #if (!defined(_MBCS) && !defined(NO_MBCS))
- # define _MBCS
- #endif
- #if (defined(_MBCS) && defined(NO_MBCS))
- # undef _MBCS
- #endif
- #if (defined(__CYGWIN__) && defined(_MBCS))
- # undef _MBCS /* Cygwin RTL lacks support for __mb_cur_max */
- #endif
- #if (defined(__DJGPP__) && !defined(__EMX__) && defined(_MBCS))
- # undef _MBCS /* __mb_cur_max missing for RSXNTdj 1.6 beta */
- #endif
-
- #include <sys/types.h> /* off_t, time_t, dev_t, ... */
- #include <sys/stat.h>
- #include <io.h> /* read(), open(), etc. */
- #include <time.h>
- #if ((defined(__RSXNT__) || defined(__EMX__)) && !defined(tzset))
- # define tzset _tzset
- #endif
- #if (defined(__LCC__) && !defined(tzset))
- # define tzset _tzset
- #endif
- #ifdef W32_USE_IZ_TIMEZONE
- # ifdef __BORLANDC__
- # define tzname tzname
- # define IZTZ_DEFINESTDGLOBALS
- # endif
- # ifdef __WATCOMC__
- # define IZTZ_DEFINESTDGLOBALS
- # endif
- # ifndef tzset
- # define tzset _tzset
- # endif
- # ifndef timezone
- # define timezone _timezone
- # endif
- # ifndef daylight
- # define daylight _daylight
- # endif
- # ifndef tzname
- # define tzname _tzname
- # endif
- # if (!defined(NEED__ISINDST) && !defined(__BORLANDC__))
- # define NEED__ISINDST
- # endif
- # ifdef IZTZ_GETLOCALETZINFO
- # undef IZTZ_GETLOCALETZINFO
- # endif
- # define IZTZ_GETLOCALETZINFO GetPlatformLocalTimezone
- #endif /* W32_USE_IZ_TIMEZONE */
- #include <memory.h>
- #if (!defined(__RSXNT__) && !defined(__CYGWIN__))
- # include <direct.h> /* mkdir() */
- #endif
- #include <fcntl.h>
- #ifdef __CYGWIN__
- # include <unistd.h>
- extern int setmode(int, int); /* this is missing in <fcntl.h> */
- #endif
- #if (defined(MSC) || defined(__WATCOMC__) || defined(__MINGW32__))
- # include <sys/utime.h>
- #else
- # include <utime.h>
- #endif
- #define GOT_UTIMBUF
-
- #ifdef _MBCS
- # if (!defined(__EMX__) && !defined(__DJGPP__) && !defined(__CYGWIN__))
- # if (!defined(__MINGW32__) || defined(__MSVCRT__))
- # include <stdlib.h>
- # include <mbstring.h>
- /* for MSC (and compatible compilers), use routines supplied by RTL */
- # define CLEN(ptr) _mbclen((const uch *)(ptr))
- # define PREINCSTR(ptr) (ptr = (char *)_mbsinc((const uch *)(ptr)))
- # define MBSCHR(str, c) (char *)_mbschr((const uch *)(str), (c))
- # define MBSRCHR(str, c) (char *)_mbsrchr((const uch *)(str), (c))
- # endif
- # endif
- # if (defined(__MINGW32__) && !defined(MB_CUR_MAX))
- # ifdef __MSVCRT__
- extern int *__p___mb_cur_max(void);
- # define MB_CUR_MAX (*__p___mb_cur_max())
- # else
- extern int *_imp____mb_cur_max_dll;
- # define MB_CUR_MAX (*_imp____mb_cur_max_dll)
- # endif
- # endif
- # if (defined(__LCC__) && !defined(MB_CUR_MAX))
- extern int *_imp____mb_cur_max;
- # define MB_CUR_MAX (*_imp____mb_cur_max)
- # endif
- # if (defined(__DJGPP__) && !defined(__EMX__) && !defined(MB_CUR_MAX))
- extern int *_imp____mb_cur_max;
- # define MB_CUR_MAX (*_imp____mb_cur_max)
- # endif
- #endif
-
- /* for UnZip, the "basic" part of the win32 api is sufficient */
- #ifndef WIN32_LEAN_AND_MEAN
- # define WIN32_LEAN_AND_MEAN
- #endif
-
- #if defined(__FILEIO_C)
- # ifndef __CYGWIN__
- # include <conio.h>
- # endif
- # include <windows.h>
- # ifdef __RSXNT__
- # include "../win32/rsxntwin.h"
- # endif
- # ifndef TIME_ZONE_ID_INVALID
- # define TIME_ZONE_ID_INVALID (DWORD)0xFFFFFFFFL
- # endif
- #endif
- #if (defined(__ENVARGS_C) || defined(__EXTRACT_C) || defined(__UNZIP_C) || \
- defined(ZCRYPT_INTERNAL))
- # include <windows.h>
- # ifdef __RSXNT__
- # include "../win32/rsxntwin.h"
- # endif
- # ifndef TIME_ZONE_ID_INVALID
- # define TIME_ZONE_ID_INVALID (DWORD)0xFFFFFFFFL
- # endif
- #endif
-
- #ifndef Cdecl
- # define Cdecl __cdecl
- #endif
-
- /* the following definitions are considered as "obsolete" by Microsoft and
- * might be missing in some versions of <windows.h>
- */
- #ifndef AnsiToOem
- # define AnsiToOem CharToOemA
- #endif
- #ifndef OemToAnsi
- # define OemToAnsi OemToCharA
- #endif
-
- #define DIR_END '\\' /* OS uses '\\' as directory separator */
- #define DIR_END2 '/' /* also check for '/' (RTL may convert) */
- #ifdef DATE_FORMAT
- # undef DATE_FORMAT
- #endif
- #define DATE_FORMAT dateformat()
- #ifdef DATE_SEPCHAR
- # undef DATE_SEPCHAR
- #endif
- #define DATE_SEPCHAR dateseparator()
- #define lenEOL 2
- #define PutNativeEOL {*q++ = native(CR); *q++ = native(LF);}
-
- #if (defined(__RSXNT__) && !defined(HAVE_MKTIME))
- # define HAVE_MKTIME /* use mktime() in time conversion routines */
- #endif
- #if (defined(MSC) && !defined(HAVE_MKTIME))
- # define HAVE_MKTIME /* use mktime() in time conversion routines */
- #endif
- #if (defined(__CYGWIN__) && defined(HAVE_MKTIME))
- # undef HAVE_MKTIME /* Cygnus' mktime() implementation is buggy */
- #endif
- #if (defined(W32_USE_IZ_TIMEZONE) && !defined(HAVE_MKTIME))
- # define HAVE_MKTIME /* use mktime() in time conversion routines */
- #endif
- #if (!defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME))
- # define USE_EF_UT_TIME
- #endif
- #if (!defined(NO_DIR_ATTRIB) && !defined(SET_DIR_ATTRIB))
- # define SET_DIR_ATTRIB
- #endif
- #if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP))
- # define TIMESTAMP
- #endif
- #if (!defined(NO_NTSD_EAS) && !defined(NTSD_EAS))
- # define NTSD_EAS /* enable NTSD support unless explicitly suppressed */
- #endif
- #if (defined(NTSD_EAS) && !defined(RESTORE_ACL))
- # define RESTORE_ACL /* "restore ACLs" only needed when NTSD_EAS active */
- #endif
- #if (!defined(NO_UNICODE_SUPPORT) && !defined(UNICODE_SUPPORT))
- # define UNICODE_SUPPORT /* enable UTF-8 filename support by default */
- #endif
- #if (defined(UNICODE_SUPPORT) && !defined(UNICODE_WCHAR))
- # define UNICODE_WCHAR /* wchar_t is UTF-16 encoded on WIN32 */
- #endif
- #ifdef UTF8_MAYBE_NATIVE
- # undef UTF8_MAYBE_NATIVE /* UTF-8 cannot be system charset on WIN32 */
- #endif
-
- /* The following compiler systems provide or use a runtime library with a
- * locale-aware isprint() implementation. For these systems, the "enhanced"
- * unprintable charcode detection in fnfilter() gets enabled.
- */
- #if (!defined(HAVE_WORKING_ISPRINT) && !defined(NO_WORKING_ISPRINT))
- # if defined(MSC) || defined(__BORLANDC__)
- # define HAVE_WORKING_ISPRINT
- # endif
- # if defined(__MINGW32__) && defined(__MSVCRT__)
- # define HAVE_WORKING_ISPRINT
- # endif
- #endif
-
- /* WIN32 runs solely on little-endian processors; enable support
- * for the 32-bit optimized CRC-32 C code by default.
- */
- #ifdef IZ_CRC_BE_OPTIMIZ
- # undef IZ_CRC_BE_OPTIMIZ
- #endif
- #if !defined(IZ_CRC_LE_OPTIMIZ) && !defined(NO_CRC_OPTIMIZ)
- # define IZ_CRC_LE_OPTIMIZ
- #endif
-
- /* handlers for OEM <--> ANSI string conversions */
- #ifdef __RSXNT__
- /* RSXNT uses OEM coded strings in functions supplied by C RTL */
- # ifdef CRTL_CP_IS_ISO
- # undef CRTL_CP_IS_ISO
- # endif
- # ifndef CRTL_CP_IS_OEM
- # define CRTL_CP_IS_OEM
- # endif
- #else
- /* "real" native WIN32 compilers use ANSI coded strings in C RTL calls */
- # ifndef CRTL_CP_IS_ISO
- # define CRTL_CP_IS_ISO
- # endif
- # ifdef CRTL_CP_IS_OEM
- # undef CRTL_CP_IS_OEM
- # endif
- #endif
-
- #ifdef CRTL_CP_IS_ISO
- /* C RTL's file system support assumes ANSI coded strings */
- # define ISO_TO_INTERN(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
- # define OEM_TO_INTERN(src, dst) OemToAnsi(src, dst)
- # define INTERN_TO_ISO(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
- # define INTERN_TO_OEM(src, dst) AnsiToOem(src, dst)
- #endif /* CRTL_CP_IS_ISO */
- #ifdef CRTL_CP_IS_OEM
- /* C RTL's file system support assumes OEM coded strings */
- # define ISO_TO_INTERN(src, dst) AnsiToOem(src, dst)
- # define OEM_TO_INTERN(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
- # define INTERN_TO_ISO(src, dst) OemToAnsi(src, dst)
- # define INTERN_TO_OEM(src, dst) {if ((src) != (dst)) strcpy((dst), (src));}
- #endif /* CRTL_CP_IS_OEM */
- #define _OEM_INTERN(str1) OEM_TO_INTERN(str1, str1)
- #define _ISO_INTERN(str1) ISO_TO_INTERN(str1, str1)
- #ifndef WINDLL
- /* Despite best intentions, for the command-line version UzpPassword()
- * could return either character set, depending on whether running under
- * Win95 (DOS-session) or WinNT (native WinNT command interpreter)! */
- # define STR_TO_CP2(dst, src) (AnsiToOem(src, dst), dst)
- # define STR_TO_CP3(dst, src) (OemToAnsi(src, dst), dst)
- #else
- /* The WINDLL front end is known to supply ISO/ANSI-coded passwords! */
- # define STR_TO_CP2(dst, src) (AnsiToOem(src, dst), dst)
- #endif
- /* dummy defines to disable these functions, they are not needed */
- #define STR_TO_OEM
- #define STR_TO_ISO
-
- /* Static variables that we have to add to Uz_Globs: */
- #define SYSTEM_SPECIFIC_GLOBALS \
- int created_dir, renamed_fullpath, fnlen;\
- unsigned nLabelDrive;\
- char lastRootPath[4];\
- int lastVolOldFAT, lastVolLocTim;\
- char *rootpath, *buildpathHPFS, *buildpathFAT, *endHPFS, *endFAT;\
- ZCONST char *wildname;\
- char *dirname, matchname[FILNAMSIZ];\
- int rootlen, have_dirname, dirnamelen, notfirstcall;\
- zvoid *wild_dir;
-
- /* created_dir, renamed_fullpath, fnlen, and nLabelDrive are used by */
- /* both mapname() and checkdir(). */
- /* lastRootPath, lastVolOldFAT and lastVolLocTim are used by */
- /* IsVolumeOldFAT() and NTQueryVolInfo(). */
- /* rootlen, rootpath, buildpathHPFS, buildpathFAT, endHPFS, and endFAT */
- /* are used by checkdir(). */
- /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */
- /* and notfirstcall are used by do_wild(). */
-
- /* This replacement for C-RTL-supplied getch() (or similar) functionality
- * avoids leaving unabsorbed LFs in the keyboard buffer under Windows95,
- * and supports the <ALT>+[0]<digit><digit><digit> feature.
- */
- int getch_win32 OF((void));
-
- /* Up to now, all versions of Microsoft C runtime libraries lack the support
- * for customized (non-US) switching rules between daylight saving time and
- * standard time in the TZ environment variable string.
- * But non-US timezone rules are correctly supported when timezone information
- * is read from the OS system settings in the Win32 registry.
- * The following work-around deletes any TZ environment setting from
- * the process environment. This results in a fallback of the RTL time
- * handling code to the (correctly interpretable) OS system settings, read
- * from the registry.
- */
- #ifdef USE_EF_UT_TIME
- # if (defined(__WATCOMC__) || defined(__CYGWIN__) || \
- defined(W32_USE_IZ_TIMEZONE))
- # define iz_w32_prepareTZenv()
- # else
- # define iz_w32_prepareTZenv() putenv("TZ=")
- # endif
- #endif
-
- /* This patch of stat() is useful for at least two compilers. It is */
- /* difficult to take a stat() of a root directory under Windows95, so */
- /* zstat_win32() detects that case and fills in suitable values. */
- #ifndef __RSXNT__
- # ifndef W32_STATROOT_FIX
- # define W32_STATROOT_FIX
- # endif
- #endif /* !__RSXNT__ */
-
- #define W32_STAT_BANDAID
- #if defined(REENTRANT)
- # define __W32STAT_GLOBALS__ Uz_Globs *pG,
- # define __W32STAT_G__ pG,
- #else
- # define __W32STAT_GLOBALS__
- # define __W32STAT_G__
- #endif
- #ifdef SSTAT
- # undef SSTAT
- #endif
- #ifdef WILD_STAT_BUG
- # define SSTAT(path, pbuf) (iswild(path) || zstat_win32(__W32STAT_G__ path, pbuf))
- #else
- # define SSTAT(path, pbuf) zstat_win32(__W32STAT_G__ path, pbuf)
- #endif
-
- #ifdef __WATCOMC__
- # ifdef __386__
- # ifndef WATCOMC_386
- # define WATCOMC_386
- # endif
- # define __32BIT__
- # undef far
- # define far
- # undef near
- # define near
- # undef Cdecl
- # define Cdecl
-
- /* gaah -- Watcom's docs claim that _get_osfhandle exists, but it doesn't. */
- # define _get_osfhandle _os_handle
-
- /* Get asm routines to link properly without using "__cdecl": */
- # ifndef USE_ZLIB
- # pragma aux crc32 "_*" parm caller [] value [eax] modify [eax]
- # pragma aux get_crc_table "_*" parm caller [] value [eax] \
- modify [eax ecx edx]
- # endif /* !USE_ZLIB */
- # endif /* __386__ */
- #endif /* __WATCOMC__ */
-
- #define SCREENWIDTH 80
- #define SCREENSIZE(scrrows, scrcols) screensize(scrrows, scrcols)
- int screensize(int *tt_rows, int *tt_cols);
-
- /* on the DOS or NT console screen, line-wraps are always enabled */
- #define SCREENLWRAP 1
- #define TABSIZE 8
-
-
- /* 64-bit-Integers & Large File Support
- * (pasted here from Zip 3b, osdep.h - Myles Bennett 7-jun-2004)
- * (updated from Zip 3.0d - Ed Gordon 6-oct-2004)
- *
- * If this is set it is assumed that the port
- * supports 64-bit file calls. The types are
- * defined here. Any local implementations are
- * in w32i64.c and the prototypes for the calls are
- * in unzip.h. Note that a port must support
- * these calls fully or should not set
- * LARGE_FILE_SUPPORT.
- */
-
- /* Automatically set ZIP64_SUPPORT if supported */
-
- #ifndef NO_ZIP64_SUPPORT
- # ifndef ZIP64_SUPPORT
- # if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__)
- # define ZIP64_SUPPORT
- # elif defined(__LCC__)
- /* LCC links against crtdll.dll -> no support of 64-bit offsets :( */
- # elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100))
- # define ZIP64_SUPPORT
- # elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520))
- /* Borland C RTL lacks any support to get/set 64-bit file pointer :( */
- # endif
- # endif
- #endif
-
- #ifdef ZIP64_SUPPORT
- /* base type for file offsets and file sizes */
- # if (defined(__GNUC__) || defined(ULONG_LONG_MAX))
- typedef long long zoff_t;
- # else
- /* all other compilers use this as intrinsic 64-bit type */
- typedef __int64 zoff_t;
- # endif
- # define ZOFF_T_DEFINED
-
- /* user-defined types and format strings for 64-bit numbers and
- * file pointer functions (these depend on the rtl library and library
- * headers used; they are NOT compiler-specific)
- */
- # if defined(_MSC_VER) || defined(__MINGW32__) || defined(__LCC__)
- /* MS C and VC, MinGW32, lcc32 */
- /* these systems use the Microsoft C RTL */
-
- /* 64-bit stat struct */
- typedef struct _stati64 z_stat;
- # define Z_STAT_DEFINED
-
- # ifdef __LCC__
- /* The LCC headers lack these declarations of MSC rtl functions in
- sys/stat.h. */
- struct _stati64 {
- unsigned int st_dev;
- unsigned short st_ino;
- unsigned short st_mode;
- short st_nlink;
- short st_uid;
- short st_gid;
- unsigned int st_rdev;
- __int64 st_size;
- time_t st_atime;
- time_t st_mtime;
- time_t st_ctime;
- };
- int _stati64(const char *, struct _stati64 *);
- int _fstati64(int, struct _stati64 *);
- __int64 _lseeki64(int, __int64, int);
- # endif /* __LCC__ */
-
- /* printf format size prefix for zoff_t values */
- # define FZOFFT_FMT "I64"
- # define FZOFFT_HEX_WID_VALUE "16"
-
- # define SHORTHDRSTATS "%9I64u %02u%c%02u%c%02u %02u:%02u %c"
- # define SHORTFILETRAILER " -------- -------\n%9I64u %9lu file%s\n"
-
- # elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520))
- /* Borland C 5.2 or newer */
-
- /* 64-bit stat struct */
- typedef struct stati64 z_stat;
- # define Z_STAT_DEFINED
-
- /* Borland C does not provide a 64-bit-capable _lseeki64(), so we
- need to use the stdio.h stream functions instead. */
- # ifndef USE_STRM_INPUT
- # define USE_STRM_INPUT
- # endif
-
- /* printf format size prefix for zoff_t values */
- # define FZOFFT_FMT "L"
- # define FZOFFT_HEX_WID_VALUE "16"
-
- # define SHORTHDRSTATS "%9Lu %02u%c%02u%c%02u %02u:%02u %c"
- # define SHORTFILETRAILER " -------- -------\n%9Lu %9lu file%s\n"
-
- # elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100))
- /* WATCOM C */
-
- /* 64-bit stat struct */
- typedef struct _stati64 z_stat;
- # define Z_STAT_DEFINED
-
- /* printf format size prefix for zoff_t values */
- # define FZOFFT_FMT "ll"
- # define FZOFFT_HEX_WID_VALUE "16"
-
- # define SHORTHDRSTATS "%9llu %02u%c%02u%c%02u %02u:%02u %c"
- # define SHORTFILETRAILER " -------- -------\n%9llu %9lu file%s\n"
-
- # elif (defined(__IBMC__) && (__IBMC__ >= 350))
- /* IBM C */
-
- /* 64-bit stat struct */
-
- /* printf format size prefix for zoff_t values */
- # define FZOFFT_FMT "I64"
- # define FZOFFT_HEX_WID_VALUE "16"
-
- # define SHORTHDRSTATS "%9I64u %02u%c%02u%c%02u %02u:%02u %c"
- # define SHORTFILETRAILER " -------- -------\n%9I64u %9lu file%s\n"
-
- # endif
-
- #endif
-
- /* If port has LARGE_FILE_SUPPORT then define here
- to make automatic unless overridden */
-
- #ifndef LARGE_FILE_SUPPORT
- # ifndef NO_LARGE_FILE_SUPPORT
- # if defined(_MSC_VER) || defined(__MINGW32__)
- # define LARGE_FILE_SUPPORT
- # elif defined(__LCC__)
- /* LCC links against crtdll.dll -> no support of 64-bit offsets :( */
- # elif defined(__CYGWIN__)
- # define LARGE_FILE_SUPPORT
- # elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100))
- # define LARGE_FILE_SUPPORT
- # elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520))
- /* Borland C RTL lacks any support to get/set 64-bit file pointer :( */
- # endif
- # endif
- #endif
-
-
- #ifndef LARGE_FILE_SUPPORT
- /* No Large File Support */
-
- /* base type for file offsets and file sizes */
- typedef long zoff_t;
- # define ZOFF_T_DEFINED
-
- /* stat struct */
- typedef struct stat z_stat;
- # define Z_STAT_DEFINED
-
- # define FZOFFT_FMT "l"
- # define FZOFFT_HEX_WID_VALUE "8"
-
-
- # define SHORTHDRSTATS "%9lu %02u%c%02u%c%02u %02u:%02u %c"
- # define SHORTFILETRAILER " -------- -------\n%9lu %9lu file%s\n"
-
- #endif /* LARGE_FILE_SUPPORT */
-
- #endif /* !__w32cfg_h */
|