Always call SetMode in soong_zip

In addition to setting the mode, SetMode also marks the file
as created by Unix, which seems to cause Debian's unzip tool
to handle UTF-8 filenames correctly.

Fixes: 184575223
Test: TestZip
Change-Id: I0e839dc3d27aaa9abced0eb1d3c4c0f8eed3e3c4
This commit is contained in:
Colin Cross 2021-05-11 16:03:57 -07:00
parent 9f361c301d
commit e070c3a26b
2 changed files with 4 additions and 2 deletions

View File

@ -656,9 +656,11 @@ func (z *ZipWriter) addFile(dest, src string, method uint16, emulateJar, srcJar
UncompressedSize64: uint64(fileSize),
}
mode := os.FileMode(0600)
if executable {
header.SetMode(0700)
mode = 0700
}
header.SetMode(mode)
err = createParentDirs(dest, src)
if err != nil {

View File

@ -62,7 +62,7 @@ func fh(name string, contents []byte, method uint16) zip.FileHeader {
Method: method,
CRC32: crc32.ChecksumIEEE(contents),
UncompressedSize64: uint64(len(contents)),
ExternalAttrs: 0,
ExternalAttrs: (syscall.S_IFREG | 0600) << 16,
}
}