Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d189fa54 authored by Elliott Hughes's avatar Elliott Hughes
Browse files

FileSystemUtils: don't use bionic implementation details to align.

There are perfectly good clang builtins that we want to remove the bionic stuff in favor of.

Also, friends don't let friends print raw errno integers (which differ between architectures) when it's less code to print the actual error message.

Change-Id: I3e9664c60c06001e3185868b000c79a62effe991
parent d75d35b3
Loading
Loading
Loading
Loading
+7 −9
Original line number Original line Diff line number Diff line
@@ -21,8 +21,6 @@
#include <android-base/file.h>
#include <android-base/file.h>
#include <android-base/hex.h>
#include <android-base/hex.h>
#include <android-base/unique_fd.h>
#include <android-base/unique_fd.h>
#include <bionic/macros.h>
#include <errno.h>
#include <fcntl.h>
#include <fcntl.h>
#include <inttypes.h>
#include <inttypes.h>
#include <linux/fs.h>
#include <linux/fs.h>
@@ -48,8 +46,8 @@ bool punchWithBlockAlignment(borrowed_fd fd, uint64_t start, uint64_t length, ui
        return false;
        return false;
    }
    }


    start = align_up(start, blockSize);
    start = __builtin_align_up(start, blockSize);
    end = align_down(end, blockSize);
    end = __builtin_align_down(end, blockSize);


    uint64_t alignedLength;
    uint64_t alignedLength;
    if (__builtin_sub_overflow(end, start, &alignedLength)) {
    if (__builtin_sub_overflow(end, start, &alignedLength)) {
@@ -67,7 +65,7 @@ bool punchWithBlockAlignment(borrowed_fd fd, uint64_t start, uint64_t length, ui
    int result =
    int result =
            fallocate(fd.get(), FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, start, alignedLength);
            fallocate(fd.get(), FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, start, alignedLength);
    if (result < 0) {
    if (result < 0) {
        ALOGE("fallocate failed to punch hole, error:%d", errno);
        ALOGE("fallocate failed to punch hole: %m");
        return false;
        return false;
    }
    }


@@ -78,7 +76,7 @@ bool punchHoles(const char *filePath, const uint64_t offset,
                const std::vector<Elf64_Phdr> &programHeaders) {
                const std::vector<Elf64_Phdr> &programHeaders) {
    struct stat64 beforePunch;
    struct stat64 beforePunch;
    if (int result = lstat64(filePath, &beforePunch); result != 0) {
    if (int result = lstat64(filePath, &beforePunch); result != 0) {
        ALOGE("lstat64 failed for filePath %s, error:%d", filePath, errno);
        ALOGE("lstat64 failed for filePath %s: %m", filePath);
        return false;
        return false;
    }
    }


@@ -190,7 +188,7 @@ bool punchHoles(const char *filePath, const uint64_t offset,
    IF_ALOGD() {
    IF_ALOGD() {
        struct stat64 afterPunch;
        struct stat64 afterPunch;
        if (int result = lstat64(filePath, &afterPunch); result != 0) {
        if (int result = lstat64(filePath, &afterPunch); result != 0) {
            ALOGD("lstat64 failed for filePath %s, error:%d", filePath, errno);
            ALOGD("lstat64 failed for filePath %s: %m", filePath);
            return false;
            return false;
        }
        }
        ALOGD("Size after punching holes st_blocks: %" PRIu64 ", st_blksize: %" PRIu64
        ALOGD("Size after punching holes st_blocks: %" PRIu64 ", st_blksize: %" PRIu64
@@ -269,7 +267,7 @@ bool punchHolesInZip(const char *filePath, uint64_t offset, uint16_t extraFieldL


    struct stat64 beforePunch;
    struct stat64 beforePunch;
    if (int result = lstat64(filePath, &beforePunch); result != 0) {
    if (int result = lstat64(filePath, &beforePunch); result != 0) {
        ALOGE("lstat64 failed for filePath %s, error:%d", filePath, errno);
        ALOGE("lstat64 failed for filePath %s: %m", filePath);
        return false;
        return false;
    }
    }


@@ -348,7 +346,7 @@ bool punchHolesInZip(const char *filePath, uint64_t offset, uint16_t extraFieldL
    IF_ALOGD() {
    IF_ALOGD() {
        struct stat64 afterPunch;
        struct stat64 afterPunch;
        if (int result = lstat64(filePath, &afterPunch); result != 0) {
        if (int result = lstat64(filePath, &afterPunch); result != 0) {
            ALOGD("lstat64 failed for filePath %s, error:%d", filePath, errno);
            ALOGD("lstat64 failed for filePath %s: %m", filePath);
            return false;
            return false;
        }
        }
        ALOGD("punchHolesInApk:: Size after punching holes st_blocks: %" PRIu64
        ALOGD("punchHolesInApk:: Size after punching holes st_blocks: %" PRIu64