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

Commit 47e5a8d0 authored by Tao Bao's avatar Tao Bao
Browse files

applypatch: Remove the 'st' field from FileContents.

It used to keep track of the stat(2) info (e.g. st_mode/st_gid/st_uid)
while patching a file in file-based OTA.

Test: Build and use the new updater to apply an update on bullhead.
Change-Id: Ibf8f0f4b14298a9489bf24a2678bb279c5d9c8f3
parent ed369101
Loading
Loading
Loading
Loading
+3 −15
Original line number Diff line number Diff line
@@ -58,12 +58,13 @@ int LoadFileContents(const char* filename, FileContents* file) {
    return LoadPartitionContents(filename, file);
  }

  if (stat(filename, &file->st) == -1) {
  struct stat sb;
  if (stat(filename, &sb) == -1) {
    printf("failed to stat \"%s\": %s\n", filename, strerror(errno));
    return -1;
  }

  std::vector<unsigned char> data(file->st.st_size);
  std::vector<unsigned char> data(sb.st_size);
  unique_file f(ota_fopen(filename, "rb"));
  if (!f) {
    printf("failed to open \"%s\": %s\n", filename, strerror(errno));
@@ -180,10 +181,6 @@ static int LoadPartitionContents(const std::string& filename, FileContents* file

  buffer.resize(buffer_size);
  file->data = std::move(buffer);
  // Fake some stat() info.
  file->st.st_mode = 0644;
  file->st.st_uid = 0;
  file->st.st_gid = 0;

  return 0;
}
@@ -212,15 +209,6 @@ int SaveFileContents(const char* filename, const FileContents* file) {
    return -1;
  }

  if (chmod(filename, file->st.st_mode) != 0) {
    printf("chmod of \"%s\" failed: %s\n", filename, strerror(errno));
    return -1;
  }
  if (chown(filename, file->st.st_uid, file->st.st_gid) != 0) {
    printf("chown of \"%s\" failed: %s\n", filename, strerror(errno));
    return -1;
  }

  return 0;
}

+0 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@
#define _APPLYPATCH_H

#include <stdint.h>
#include <sys/stat.h>

#include <functional>
#include <memory>
@@ -33,7 +32,6 @@ struct Value;
struct FileContents {
  uint8_t sha1[SHA_DIGEST_LENGTH];
  std::vector<unsigned char> data;
  struct stat st;
};

// When there isn't enough room on the target filesystem to hold the patched version of the file,