From: Michihiro NAKAJIMA Date: Sun, 25 Apr 2010 08:34:33 +0000 (-0400) Subject: Unbreak build on Visual Studio. X-Git-Tag: v3.0.0a~1091 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=28ad9e90a1fbcfe5cdf0cd5b3c09acc8bb6fd4a5;p=thirdparty%2Flibarchive.git Unbreak build on Visual Studio. SVN-Revision: 2272 --- diff --git a/libarchive/archive_read.c b/libarchive/archive_read.c index 8667dde01..39d977609 100644 --- a/libarchive/archive_read.c +++ b/libarchive/archive_read.c @@ -1268,7 +1268,8 @@ advance_file_pointer(struct archive_read_filter *filter, int64_t request) filter->position += bytes_read; if (bytes_read >= request) { - filter->client_next = filter->client_buff + request; + filter->client_next = + ((const char *)filter->client_buff) + request; filter->client_avail = bytes_read - request; filter->client_total = bytes_read; total_bytes_skipped += request; diff --git a/libarchive/archive_write_set_format_gnutar.c b/libarchive/archive_write_set_format_gnutar.c index ae15a4063..2fef54c0c 100644 --- a/libarchive/archive_write_set_format_gnutar.c +++ b/libarchive/archive_write_set_format_gnutar.c @@ -288,7 +288,7 @@ archive_write_gnutar_header(struct archive_write *a, struct archive_entry *entry ret = __archive_write_output(a, linkname, todo); if(ret < ARCHIVE_WARN) return (ret); - ret = __archive_write_nulls(a, 0x1ff & (-todo)); + ret = __archive_write_nulls(a, 0x1ff & (-(ssize_t)todo)); if (ret < ARCHIVE_WARN) return (ret); } @@ -317,7 +317,7 @@ archive_write_gnutar_header(struct archive_write *a, struct archive_entry *entry ret = __archive_write_output(a, pathname, todo); if(ret < ARCHIVE_WARN) return (ret); - ret = __archive_write_nulls(a, 0x1ff & (-todo)); + ret = __archive_write_nulls(a, 0x1ff & (-(ssize_t)todo)); if (ret < ARCHIVE_WARN) return (ret); } diff --git a/libarchive/archive_write_set_format_iso9660.c b/libarchive/archive_write_set_format_iso9660.c index c099d2a6b..d026d78d9 100644 --- a/libarchive/archive_write_set_format_iso9660.c +++ b/libarchive/archive_write_set_format_iso9660.c @@ -7329,7 +7329,7 @@ setup_boot_information(struct archive_write *a) #if defined(_WIN32) && !defined(__CYGWIN__) static size_t -mbstoutf16s(unsigned char *utf16, size_t utf16_size, +mbstobeutf16s(unsigned char *utf16, size_t utf16_size, const char *s, int len) { size_t count; @@ -7353,8 +7353,21 @@ mbstoutf16s(unsigned char *utf16, size_t utf16_size, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS, s, len, (LPWSTR)tp, (int)tl); if (count) { - memcpy(utf16, tp, utf16_size); + uint16_t val = 1; + count = utf16_size / 2; + if (archive_be16dec(&val) != 1) { + unsigned char *xp = tp; + while (utf16_size > 0) { + archive_be16enc( + utf16, + *(uint16_t *)xp); + utf16 += 2; + xp += 2; + utf16_size -= 2; + } + } else + memcpy(utf16, tp, utf16_size); } free(tp); } diff --git a/libarchive/test/test_write_format_gnutar.c b/libarchive/test/test_write_format_gnutar.c index c3e16086a..ecae367b8 100644 --- a/libarchive/test/test_write_format_gnutar.c +++ b/libarchive/test/test_write_format_gnutar.c @@ -155,7 +155,7 @@ DEFINE_TEST(test_write_format_gnutar) assert((ae = archive_entry_new()) != NULL); archive_entry_copy_pathname(ae, longlinkname); archive_entry_copy_symlink(ae, longfilename); - archive_entry_set_mode(ae, S_IFLNK | 0755); + archive_entry_set_mode(ae, AE_IFLNK | 0755); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); archive_entry_free(ae);