]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Unbreak build on Visual Studio.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 25 Apr 2010 08:34:33 +0000 (04:34 -0400)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 25 Apr 2010 08:34:33 +0000 (04:34 -0400)
SVN-Revision: 2272

libarchive/archive_read.c
libarchive/archive_write_set_format_gnutar.c
libarchive/archive_write_set_format_iso9660.c
libarchive/test/test_write_format_gnutar.c

index 8667dde011b67f9fc397b86abf6d9f7a289062a7..39d9776090cc46822a8d16380ea2b6ea3587989b 100644 (file)
@@ -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;
index ae15a406340c326e54e18fc7f91316ca7c130695..2fef54c0ca3728e988b3e1c87fc527982c2723a1 100644 (file)
@@ -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);
        }
index c099d2a6b660841b40edc17ffe998e5b32bf697c..d026d78d90bf7c6681f993d6db94706765d5c6fd 100644 (file)
@@ -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);
                                }
index c3e16086af4549a0b6a69155759fb4a38c2b7b00..ecae367b870bf07648c2db66c4d3274d914e45bd 100644 (file)
@@ -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);