Merge "Report errno more often in fastboot." am: 8c5384e50b

am: 272b2694cd

* commit '272b2694cd3556120a3e39b88a0702103e2ed58a':
  Report errno more often in fastboot.

Change-Id: Ie26d2c70e65b70c08017f848f21fb91d6f20e3a4
This commit is contained in:
Elliott Hughes 2016-05-11 21:50:07 +00:00 committed by android-build-merger
commit 7f80f04a2c

View file

@ -777,10 +777,10 @@ static bool needs_erase(Transport* transport, const char* partition) {
return partition_type == "ext4"; return partition_type == "ext4";
} }
static int load_buf_fd(Transport* transport, int fd, struct fastboot_buffer* buf) { static bool load_buf_fd(Transport* transport, int fd, struct fastboot_buffer* buf) {
int64_t sz = get_file_size(fd); int64_t sz = get_file_size(fd);
if (sz == -1) { if (sz == -1) {
return -1; return false;
} }
lseek64(fd, 0, SEEK_SET); lseek64(fd, 0, SEEK_SET);
@ -788,7 +788,7 @@ static int load_buf_fd(Transport* transport, int fd, struct fastboot_buffer* buf
if (limit) { if (limit) {
sparse_file** s = load_sparse_files(fd, limit); sparse_file** s = load_sparse_files(fd, limit);
if (s == nullptr) { if (s == nullptr) {
return -1; return false;
} }
buf->type = FB_BUFFER_SPARSE; buf->type = FB_BUFFER_SPARSE;
buf->data = s; buf->data = s;
@ -800,18 +800,14 @@ static int load_buf_fd(Transport* transport, int fd, struct fastboot_buffer* buf
buf->sz = sz; buf->sz = sz;
} }
return 0; return true;
} }
static int load_buf(Transport* transport, const char *fname, struct fastboot_buffer *buf) static bool load_buf(Transport* transport, const char* fname, struct fastboot_buffer* buf) {
{ int fd = open(fname, O_RDONLY | O_BINARY);
int fd; if (fd == -1) {
return false;
fd = open(fname, O_RDONLY | O_BINARY);
if (fd < 0) {
return -1;
} }
return load_buf_fd(transport, fd, buf); return load_buf_fd(transport, fd, buf);
} }
@ -955,8 +951,8 @@ static void do_for_partitions(Transport* transport, const char *part, const char
static void do_flash(Transport* transport, const char* pname, const char* fname) { static void do_flash(Transport* transport, const char* pname, const char* fname) {
struct fastboot_buffer buf; struct fastboot_buffer buf;
if (load_buf(transport, fname, &buf)) { if (!load_buf(transport, fname, &buf)) {
die("cannot load '%s'", fname); die("cannot load '%s': %s", fname, strerror(errno));
} }
flash_buf(pname, &buf); flash_buf(pname, &buf);
} }
@ -1000,8 +996,9 @@ static void do_update(Transport* transport, const char* filename, const char* sl
exit(1); // unzip_to_file already explained why. exit(1); // unzip_to_file already explained why.
} }
fastboot_buffer buf; fastboot_buffer buf;
int rc = load_buf_fd(transport, fd, &buf); if (!load_buf_fd(transport, fd, &buf)) {
if (rc) die("cannot load %s from flash", images[i].img_name); die("cannot load %s from flash: %s", images[i].img_name, strerror(errno));
}
auto update = [&](const std::string &partition) { auto update = [&](const std::string &partition) {
do_update_signature(zip, images[i].sig_name); do_update_signature(zip, images[i].sig_name);
@ -1054,10 +1051,9 @@ static void do_flashall(Transport* transport, const char* slot_override, int era
for (size_t i = 0; i < ARRAY_SIZE(images); i++) { for (size_t i = 0; i < ARRAY_SIZE(images); i++) {
fname = find_item(images[i].part_name, product); fname = find_item(images[i].part_name, product);
fastboot_buffer buf; fastboot_buffer buf;
if (load_buf(transport, fname.c_str(), &buf)) { if (!load_buf(transport, fname.c_str(), &buf)) {
if (images[i].is_optional) if (images[i].is_optional) continue;
continue; die("could not load '%s': %s", images[i].img_name, strerror(errno));
die("could not load %s\n", images[i].img_name);
} }
auto flashall = [&](const std::string &partition) { auto flashall = [&](const std::string &partition) {
@ -1225,7 +1221,7 @@ static void fb_perform_format(Transport* transport,
return; return;
} }
if (load_buf_fd(transport, fd, &buf)) { if (!load_buf_fd(transport, fd, &buf)) {
fprintf(stderr, "Cannot read image: %s\n", strerror(errno)); fprintf(stderr, "Cannot read image: %s\n", strerror(errno));
close(fd); close(fd);
return; return;