| #ifndef _RAR_OS_ |
| #define _RAR_OS_ |
| |
| #define FALSE 0 |
| #define TRUE 1 |
| |
| #ifdef __EMX__ |
| #define INCL_BASE |
| #endif |
| |
| #if defined(RARDLL) && !defined(SILENT) |
| #define SILENT |
| #endif |
| |
| #include <new> |
| |
| |
| #if defined(_WIN_ALL) || defined(_EMX) |
| |
| #define LITTLE_ENDIAN |
| #define NM 2048 |
| |
| #ifdef _WIN_ALL |
| |
| |
| // We got a report that just "#define STRICT" is incompatible with |
| // "#define STRICT 1" in Windows 10 SDK minwindef.h and depending on the order |
| // in which these statements are reached this may cause a compiler warning |
| // and build break for other projects incorporating this source. |
| // So we changed it to "#define STRICT 1". |
| #ifndef STRICT |
| #define STRICT 1 |
| #endif |
| |
| #if !defined(CHROMIUM_UNRAR) |
| #define UNICODE |
| #undef WINVER |
| #undef _WIN32_WINNT |
| #define WINVER 0x0501 |
| #define _WIN32_WINNT 0x0501 |
| #endif // CHROMIUM_UNRAR |
| |
| #if !defined(ZIPSFX) && !defined(CHROMIUM_UNRAR) |
| #define RAR_SMP |
| #endif |
| |
| #if !defined(CHROMIUM_UNRAR) |
| #define WIN32_LEAN_AND_MEAN |
| #endif // CHROMIUM_UNRAR |
| |
| #include <windows.h> |
| #include <prsht.h> |
| #include <shlwapi.h> |
| #pragma comment(lib, "Shlwapi.lib") |
| #include <PowrProf.h> |
| #pragma comment(lib, "PowrProf.lib") |
| #include <shellapi.h> |
| #include <shlobj.h> |
| #include <winioctl.h> |
| #include <wincrypt.h> |
| #include <wchar.h> |
| #include <wctype.h> |
| |
| |
| #endif // _WIN_ALL |
| |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <dos.h> |
| |
| #if !defined(_EMX) && !defined(_MSC_VER) |
| #include <dir.h> |
| #endif |
| #ifdef _MSC_VER |
| #if _MSC_VER<1500 |
| #define for if (0) ; else for |
| #endif |
| #include <direct.h> |
| #include <intrin.h> |
| |
| #if !defined(CHROMIUM_UNRAR) |
| #define USE_SSE |
| #define SSE_ALIGNMENT 16 |
| #endif // CHROMIUM_UNRAR |
| |
| #else |
| #include <dirent.h> |
| #endif // _MSC_VER |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <stdarg.h> |
| #include <string.h> |
| #include <ctype.h> |
| #include <fcntl.h> |
| #include <dos.h> |
| #include <io.h> |
| #include <time.h> |
| #include <signal.h> |
| |
| |
| #define SAVE_LINKS |
| |
| #define ENABLE_ACCESS |
| |
| #define DefConfigName L"rar.ini" |
| #define DefLogName L"rar.log" |
| |
| |
| #define SPATHDIVIDER L"\\" |
| #define CPATHDIVIDER '\\' |
| #define MASKALL L"*" |
| |
| #define READBINARY "rb" |
| #define READTEXT "rt" |
| #define UPDATEBINARY "r+b" |
| #define CREATEBINARY "w+b" |
| #define WRITEBINARY "wb" |
| #define APPENDTEXT "at" |
| |
| #if defined(_WIN_ALL) |
| #ifdef _MSC_VER |
| #define _stdfunction __cdecl |
| #define _forceinline __forceinline |
| #else |
| #define _stdfunction _USERENTRY |
| #define _forceinline inline |
| #endif |
| #else |
| #define _stdfunction |
| #define _forceinline inline |
| #endif |
| |
| #endif // defined(_WIN_ALL) || defined(_EMX) |
| |
| #ifdef _UNIX |
| |
| #define NM 2048 |
| |
| #include <unistd.h> |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <sys/file.h> |
| #if defined(__QNXNTO__) |
| #include <sys/param.h> |
| #endif |
| #if defined(RAR_SMP) && defined(__APPLE__) |
| #include <sys/sysctl.h> |
| #endif |
| #ifndef SFX_MODULE |
| #include <sys/statvfs.h> |
| #endif |
| #include <pwd.h> |
| #include <grp.h> |
| #include <wchar.h> |
| #include <wctype.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <stdarg.h> |
| #include <string.h> |
| #include <ctype.h> |
| #include <fcntl.h> |
| #include <errno.h> |
| #include <dirent.h> |
| #include <time.h> |
| #include <signal.h> |
| #include <utime.h> |
| #include <locale.h> |
| |
| |
| #ifdef S_IFLNK |
| #define SAVE_LINKS |
| #endif |
| |
| #if defined(__linux) || defined(__FreeBSD__) |
| #include <sys/time.h> |
| #define USE_LUTIMES |
| #endif |
| |
| #define ENABLE_ACCESS |
| |
| #define DefConfigName L".rarrc" |
| #define DefLogName L".rarlog" |
| |
| |
| #define SPATHDIVIDER L"/" |
| #define CPATHDIVIDER '/' |
| #define MASKALL L"*" |
| |
| #define READBINARY "r" |
| #define READTEXT "r" |
| #define UPDATEBINARY "r+" |
| #define CREATEBINARY "w+" |
| #define WRITEBINARY "w" |
| #define APPENDTEXT "a" |
| |
| #define _stdfunction |
| #define _forceinline inline |
| |
| #ifdef _APPLE |
| #if defined(__BIG_ENDIAN__) && !defined(BIG_ENDIAN) |
| #define BIG_ENDIAN |
| #undef LITTLE_ENDIAN |
| #endif |
| #if defined(__i386__) && !defined(LITTLE_ENDIAN) |
| #define LITTLE_ENDIAN |
| #undef BIG_ENDIAN |
| #endif |
| #endif |
| |
| #if defined(__sparc) || defined(sparc) || defined(__hpux) |
| #ifndef BIG_ENDIAN |
| #define BIG_ENDIAN |
| #endif |
| #endif |
| |
| #if _POSIX_C_SOURCE >= 200809L |
| #define UNIX_TIME_NS // Nanosecond time precision in Unix. |
| #endif |
| |
| #endif // _UNIX |
| |
| #if 0 |
| #define MSGID_INT |
| typedef int MSGID; |
| #else |
| typedef const wchar* MSGID; |
| #endif |
| |
| #ifndef SSE_ALIGNMENT // No SSE use and no special data alignment is required. |
| #define SSE_ALIGNMENT 1 |
| #endif |
| |
| #define safebuf static |
| |
| // Solaris defines _LITTLE_ENDIAN or _BIG_ENDIAN. |
| #if defined(_LITTLE_ENDIAN) && !defined(LITTLE_ENDIAN) |
| #define LITTLE_ENDIAN |
| #endif |
| #if defined(_BIG_ENDIAN) && !defined(BIG_ENDIAN) |
| #define BIG_ENDIAN |
| #endif |
| |
| #if !defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN) |
| #if defined(__i386) || defined(i386) || defined(__i386__) || defined(__x86_64) |
| #define LITTLE_ENDIAN |
| #elif defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN || defined(__LITTLE_ENDIAN__) |
| #define LITTLE_ENDIAN |
| #elif defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN || defined(__BIG_ENDIAN__) |
| #define BIG_ENDIAN |
| #else |
| #error "Neither LITTLE_ENDIAN nor BIG_ENDIAN are defined. Define one of them." |
| #endif |
| #endif |
| |
| #if defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN) |
| #if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN |
| #undef LITTLE_ENDIAN |
| #elif defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN |
| #undef BIG_ENDIAN |
| #else |
| #error "Both LITTLE_ENDIAN and BIG_ENDIAN are defined. Undef one of them." |
| #endif |
| #endif |
| |
| #if !defined(BIG_ENDIAN) && defined(_WIN_ALL) || defined(__i386__) || defined(__x86_64__) |
| // Allow not aligned integer access, increases speed in some operations. |
| #define ALLOW_MISALIGNED |
| #endif |
| |
| #endif // _RAR_OS_ |