Force sync files written by minzip.
Some files appear to be missing their sync to disk. Bug: 18145574 Change-Id: Ic858624a4dd65bbfc54d30f3a13c607078270345
This commit is contained in:
10
minzip/Zip.c
10
minzip/Zip.c
@@ -1067,7 +1067,8 @@ bool mzExtractRecursive(const ZipArchive *pArchive,
|
||||
setfscreatecon(secontext);
|
||||
}
|
||||
|
||||
int fd = creat(targetFile, UNZIP_FILEMODE);
|
||||
int fd = open(targetFile, O_CREAT|O_WRONLY|O_TRUNC|O_SYNC
|
||||
, UNZIP_FILEMODE);
|
||||
|
||||
if (secontext) {
|
||||
freecon(secontext);
|
||||
@@ -1082,7 +1083,12 @@ bool mzExtractRecursive(const ZipArchive *pArchive,
|
||||
}
|
||||
|
||||
bool ok = mzExtractZipEntryToFile(pArchive, pEntry, fd);
|
||||
close(fd);
|
||||
if (ok) {
|
||||
ok = (fsync(fd) == 0);
|
||||
}
|
||||
if (close(fd) != 0) {
|
||||
ok = false;
|
||||
}
|
||||
if (!ok) {
|
||||
LOGE("Error extracting \"%s\"\n", targetFile);
|
||||
ok = false;
|
||||
|
||||
Reference in New Issue
Block a user