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

Commit f7d1a079 authored by Haoran.Wang's avatar Haoran.Wang
Browse files

fix some liblp file access for win32



The file accessing API in liblp don't work on win32. Add the O_BINARY
to correct the file stream access.
This patch follow the AOSP change 829979.

Change-Id: I97180e2f07cacf109a86593b6a12975597552053
Signed-off-by: default avatarHaoran.Wang <elven.wang@nxp.com>
parent e5e921b2
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@ bool WriteToImageFile(borrowed_fd fd, const LpMetadata& input) {
}

bool WriteToImageFile(const std::string& file, const LpMetadata& input) {
    unique_fd fd(open(file.c_str(), O_CREAT | O_RDWR | O_TRUNC | O_CLOEXEC, 0644));
    unique_fd fd(open(file.c_str(), O_CREAT | O_RDWR | O_TRUNC | O_CLOEXEC | O_BINARY, 0644));
    if (fd < 0) {
        PERROR << __PRETTY_FUNCTION__ << " open failed: " << file;
        return false;
@@ -184,7 +184,7 @@ bool ImageBuilder::IsValid() const {
}

bool ImageBuilder::Export(const std::string& file) {
    unique_fd fd(open(file.c_str(), O_CREAT | O_RDWR | O_TRUNC | O_CLOEXEC, 0644));
    unique_fd fd(open(file.c_str(), O_CREAT | O_RDWR | O_TRUNC | O_CLOEXEC | O_BINARY, 0644));
    if (fd < 0) {
        PERROR << "open failed: " << file;
        return false;
@@ -208,7 +208,7 @@ bool ImageBuilder::ExportFiles(const std::string& output_dir) {
        std::string file_name = "super_" + name + ".img";
        std::string file_path = output_dir + "/" + file_name;

        static const int kOpenFlags = O_CREAT | O_RDWR | O_TRUNC | O_CLOEXEC | O_NOFOLLOW;
        static const int kOpenFlags = O_CREAT | O_RDWR | O_TRUNC | O_CLOEXEC | O_NOFOLLOW | O_BINARY;
        unique_fd fd(open(file_path.c_str(), kOpenFlags, 0644));
        if (fd < 0) {
            PERROR << "open failed: " << file_path;
@@ -443,7 +443,7 @@ bool ImageBuilder::CheckExtentOrdering() {
}

int ImageBuilder::OpenImageFile(const std::string& file) {
    android::base::unique_fd source_fd = GetControlFileOrOpen(file.c_str(), O_RDONLY | O_CLOEXEC);
    unique_fd source_fd = GetControlFileOrOpen(file.c_str(), O_RDONLY | O_CLOEXEC | O_BINARY);
    if (source_fd < 0) {
        PERROR << "open image file failed: " << file;
        return -1;