diff options
9 files changed, 90 insertions, 57 deletions
diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index e92163b..6c2f524 100644 --- a/Utilities/cmlibarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/CMakeLists.txt @@ -477,9 +477,9 @@ CHECK_TYPE_SIZE("unsigned long long int" UNSIGNED_LONG_LONG_INT) # CHECK_TYPE_SIZE(dev_t DEV_T) IF(NOT HAVE_DEV_T) - IF(MSVC) + IF(MSVC OR BORLAND) SET(dev_t "unsigned int") - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_DEV_T) # CHECK_TYPE_SIZE(gid_t GID_T) @@ -502,30 +502,30 @@ ENDIF(NOT HAVE_ID_T) # CHECK_TYPE_SIZE(int64_t INT64_T) IF(NOT HAVE_INT64_T) - IF(MSVC) + IF(MSVC OR BORLAND) SET(int64_t __int64) - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_INT64_T) # CHECK_TYPE_SIZE(intmax_t INTMAX_T) IF(NOT HAVE_INTMAX_T) - IF(MSVC) - SET(intmax_t "long long") - ENDIF(MSVC) + IF(MSVC OR BORLAND) + SET(intmax_t "__int64") + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_INTMAX_T) # CHECK_TYPE_SIZE(mode_t MODE_T) IF(NOT HAVE_MODE_T) - IF(MSVC) + IF(MSVC OR BORLAND) SET(mode_t "unsigned short") - ELSE(MSVC) + ELSE(MSVC OR BORLAND) SET(mode_t "int") - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_MODE_T) # CHECK_TYPE_SIZE(off_t OFF_T) IF(NOT HAVE_OFF_T) - SET(off_t "long long") + SET(off_t "__int64") ENDIF(NOT HAVE_OFF_T) # CHECK_TYPE_SIZE(size_t SIZE_T) @@ -535,15 +535,15 @@ ENDIF(NOT HAVE_SIZE_T) # CHECK_TYPE_SIZE(ssize_t SSIZE_T) IF(NOT HAVE_SSIZE_T) - IF(MSVC) + IF(MSVC OR BORLAND) IF(CMAKE_CL_64) SET(ssize_t "__int64") ELSE(CMAKE_CL_64) SET(ssize_t "signed long") ENDIF(CMAKE_CL_64) - ELSE(MSVC) + ELSE(MSVC OR BORLAND) SET(ssize_t "int") - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_SSIZE_T) # CHECK_TYPE_SIZE(uid_t UID_T) @@ -557,36 +557,36 @@ ENDIF(NOT HAVE_UID_T) # CHECK_TYPE_SIZE(uint16_t UINT16_T) IF(NOT HAVE_UINT16_T) - IF(MSVC) + IF(MSVC OR BORLAND) SET(uint16_t "unsigned short") - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_UINT16_T) # CHECK_TYPE_SIZE(uint32_t UINT32_T) IF(NOT HAVE_UINT32_T) - IF(MSVC) + IF(MSVC OR BORLAND) SET(uint32_t "unsigned int") - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_UINT32_T) CHECK_TYPE_SIZE(int32_t INT32_T) IF(NOT HAVE_INT32_T) - IF(MSVC) + IF(MSVC OR BORLAND) SET(int32_t "int") - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_INT32_T) # CHECK_TYPE_SIZE(uint64_t UINT64_T) IF(NOT HAVE_UINT64_T) - IF(MSVC) + IF(MSVC OR BORLAND) SET(uint64_t "unsigned __int64") - ENDIF(MSVC) + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_UINT64_T) # CHECK_TYPE_SIZE(uintmax_t UINTMAX_T) IF(NOT HAVE_UINTMAX_T) - IF(MSVC) - SET(uintmax_t "unsigned long long") - ENDIF(MSVC) + IF(MSVC OR BORLAND) + SET(uintmax_t "unsigned __int64") + ENDIF(MSVC OR BORLAND) ENDIF(NOT HAVE_UINTMAX_T) # CHECK_TYPE_SIZE(wchar_t SIZEOF_WCHAR_T) diff --git a/Utilities/cmlibarchive/build/cmake/config.h.in b/Utilities/cmlibarchive/build/cmake/config.h.in index 8bb2d9c..e5f7e59 100644 --- a/Utilities/cmlibarchive/build/cmake/config.h.in +++ b/Utilities/cmlibarchive/build/cmake/config.h.in @@ -698,3 +698,7 @@ /* Define to `unsigned int' if <sys/types.h> does not define. */ #cmakedefine uintptr_t ${uintptr_t } +#ifdef __BORLANDC__ +#define uintptr_t unsigned int +#define intptr_t int +#endif diff --git a/Utilities/cmlibarchive/libarchive/archive.h b/Utilities/cmlibarchive/libarchive/archive.h index c577db2..ca150f5 100644 --- a/Utilities/cmlibarchive/libarchive/archive.h +++ b/Utilities/cmlibarchive/libarchive/archive.h @@ -46,7 +46,7 @@ /* Get appropriate definitions of standard POSIX-style types. */ /* These should match the types used in 'struct stat' */ -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__BORLANDC__) #define __LA_INT64_T __int64 # if defined(_WIN64) # define __LA_SSIZE_T __int64 @@ -56,7 +56,11 @@ #define __LA_UID_T short #define __LA_GID_T short #else +#if defined(__BORLANDC__) +#include <sys/types.h> +#else #include <unistd.h> /* ssize_t, uid_t, and gid_t */ +#endif #define __LA_INT64_T int64_t #define __LA_SSIZE_T ssize_t #define __LA_UID_T uid_t diff --git a/Utilities/cmlibarchive/libarchive/archive_endian.h b/Utilities/cmlibarchive/libarchive/archive_endian.h index 24d133f..e374546 100644 --- a/Utilities/cmlibarchive/libarchive/archive_endian.h +++ b/Utilities/cmlibarchive/libarchive/archive_endian.h @@ -45,7 +45,7 @@ * - SGI MIPSpro * - Microsoft Visual C++ 6.0 (supposedly newer versions too) */ -#if defined(__WATCOMC__) || defined(__sgi) || defined(__hpux) +#if defined(__WATCOMC__) || defined(__sgi) || defined(__hpux) || defined(__BORLANDC__) #define inline #elif defined(_MSC_VER) #define inline __inline diff --git a/Utilities/cmlibarchive/libarchive/archive_entry.h b/Utilities/cmlibarchive/libarchive/archive_entry.h index 9fddd81..c0b398c 100644 --- a/Utilities/cmlibarchive/libarchive/archive_entry.h +++ b/Utilities/cmlibarchive/libarchive/archive_entry.h @@ -46,14 +46,18 @@ /* Get appropriate definitions of standard POSIX-style types. */ /* These should match the types used in 'struct stat' */ -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__BORLANDC__) #define __LA_INT64_T __int64 #define __LA_UID_T short #define __LA_GID_T short #define __LA_DEV_T unsigned int #define __LA_MODE_T unsigned short #else -#include <unistd.h> +#ifdef __BORLANDC__ +# include <sys/types.h> +#else +# include <unistd.h> +#endif #define __LA_INT64_T int64_t #define __LA_UID_T uid_t #define __LA_GID_T gid_t diff --git a/Utilities/cmlibarchive/libarchive/archive_entry_copy_bhfi.c b/Utilities/cmlibarchive/libarchive/archive_entry_copy_bhfi.c index 50c0817..9a64880 100644 --- a/Utilities/cmlibarchive/libarchive/archive_entry_copy_bhfi.c +++ b/Utilities/cmlibarchive/libarchive/archive_entry_copy_bhfi.c @@ -28,9 +28,13 @@ __FBSDID("$FreeBSD$"); #include "archive_entry.h" -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(__BORLANDC__) || (defined(_MSC_VER) && _MSC_VER <= 1300) +# define EPOC_TIME (116444736000000000) +#else +# define EPOC_TIME (116444736000000000ULL) +#endif -#define EPOC_TIME (116444736000000000ULL) __inline static void fileTimeToUtc(const FILETIME *filetime, time_t *time, long *ns) diff --git a/Utilities/cmlibarchive/libarchive/archive_windows.c b/Utilities/cmlibarchive/libarchive/archive_windows.c index ec97d11..a573ac6 100644 --- a/Utilities/cmlibarchive/libarchive/archive_windows.c +++ b/Utilities/cmlibarchive/libarchive/archive_windows.c @@ -50,13 +50,15 @@ #include <ctype.h> #include <errno.h> #include <stddef.h> +#ifndef __BORLANDC__ #include <sys/utime.h> +#endif #include <sys/stat.h> #include <process.h> #include <stdlib.h> #include <wchar.h> #include <windows.h> -#if defined(_MSC_VER) && _MSC_VER <= 1300 +#if defined(__BORLANDC__) || (defined(_MSC_VER) && _MSC_VER <= 1300) # define EPOC_TIME (116444736000000000) #else # define EPOC_TIME (116444736000000000ULL) @@ -376,7 +378,6 @@ __la_ftruncate(int fd, off_t length) } return (0); } - #define WINTIME(sec, usec) ((Int32x32To64(sec, 10000000) + EPOC_TIME) + (usec * 10)) static int __hutimes(HANDLE handle, const struct __timeval *times) @@ -623,7 +624,11 @@ __la_open(const char *path, int flags, ...) } } if (ws == NULL) { +#ifdef __BORLANDC__ + r = _open(path, flags); +#else r = _open(path, flags, pmode); +#endif if (r < 0 && errno == EACCES && (flags & O_CREAT) != 0) { /* simular other POSIX system action to pass a test */ attr = GetFileAttributesA(path); diff --git a/Utilities/cmlibarchive/libarchive/archive_windows.h b/Utilities/cmlibarchive/libarchive/archive_windows.h index 70cad09..2af421a 100644 --- a/Utilities/cmlibarchive/libarchive/archive_windows.h +++ b/Utilities/cmlibarchive/libarchive/archive_windows.h @@ -125,11 +125,13 @@ #define waitpid __la_waitpid #define write __la_write -#define O_RDONLY _O_RDONLY -#define O_WRONLY _O_WRONLY -#define O_TRUNC _O_TRUNC -#define O_CREAT _O_CREAT -#define O_EXCL _O_EXCL +#ifndef O_RDONLY + #define O_RDONLY _O_RDONLY + #define O_WRONLY _O_WRONLY + #define O_TRUNC _O_TRUNC + #define O_CREAT _O_CREAT + #define O_EXCL _O_EXCL +#endif #ifndef _S_IFIFO #define _S_IFIFO 0010000 /* pipe */ @@ -155,21 +157,29 @@ #ifndef _S_IFMT #define _S_IFMT 0170000 /* file type mask */ #endif - -#define S_IFIFO _S_IFIFO +#ifndef S_IFIFO + #define S_IFIFO _S_IFIFO +#endif //#define S_IFCHR _S_IFCHR //#define S_IFDIR _S_IFDIR -#define S_IFBLK _S_IFBLK -#define S_IFLNK _S_IFLNK -#define S_IFSOCK _S_IFSOCK +#ifndef S_IFBLK + #define S_IFBLK _S_IFBLK +#endif +#ifndef S_IFLNK + #define S_IFLNK _S_IFLNK +#endif +#ifndef S_IFSOCK + #define S_IFSOCK _S_IFSOCK +#endif //#define S_IFREG _S_IFREG //#define S_IFMT _S_IFMT - -#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) /* block special */ -#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo or socket */ -#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */ -#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */ -#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */ +#ifndef S_ISBLK + #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) /* block special */ + #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo or socket */ + #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */ + #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */ + #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */ +#endif #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* Symbolic link */ #define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) /* Socket */ @@ -194,10 +204,12 @@ #define _S_IWOTH (_S_IWGRP >> 3) /* write permission, other */ #define _S_IROTH (_S_IRGRP >> 3) /* execute/search permission, other */ -#define S_IRWXU _S_IRWXU -#define S_IXUSR _S_IXUSR -#define S_IWUSR _S_IWUSR -#define S_IRUSR _S_IRUSR +#ifndef S_IRWXU + #define S_IRWXU _S_IRWXU + #define S_IXUSR _S_IXUSR + #define S_IWUSR _S_IWUSR + #define S_IRUSR _S_IRUSR +#endif #define S_IRWXG _S_IRWXG #define S_IXGRP _S_IXGRP #define S_IWGRP _S_IWGRP diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c b/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c index 7dee2c9..c097108 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c @@ -479,7 +479,7 @@ archive_write_pax_header(struct archive_write *a, path = archive_entry_pathname(entry_main); path_w = archive_entry_pathname_w(entry_main); if (path != NULL && path_w == NULL) { - archive_set_error(&a->archive, EILSEQ, + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "Can't translate pathname '%s' to UTF-8", path); ret = ARCHIVE_WARN; hdrcharset = "BINARY"; @@ -487,7 +487,7 @@ archive_write_pax_header(struct archive_write *a, uname = archive_entry_uname(entry_main); uname_w = archive_entry_uname_w(entry_main); if (uname != NULL && uname_w == NULL) { - archive_set_error(&a->archive, EILSEQ, + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "Can't translate uname '%s' to UTF-8", uname); ret = ARCHIVE_WARN; hdrcharset = "BINARY"; @@ -495,7 +495,7 @@ archive_write_pax_header(struct archive_write *a, gname = archive_entry_gname(entry_main); gname_w = archive_entry_gname_w(entry_main); if (gname != NULL && gname_w == NULL) { - archive_set_error(&a->archive, EILSEQ, + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "Can't translate gname '%s' to UTF-8", gname); ret = ARCHIVE_WARN; hdrcharset = "BINARY"; @@ -509,7 +509,7 @@ archive_write_pax_header(struct archive_write *a, linkpath_w = archive_entry_symlink_w(entry_main); } if (linkpath != NULL && linkpath_w == NULL) { - archive_set_error(&a->archive, EILSEQ, + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "Can't translate linkpath '%s' to UTF-8", linkpath); ret = ARCHIVE_WARN; hdrcharset = "BINARY"; |