From 53ec495b40ed9da6bdfa1d2a9e13c603e7634324 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Wed, 11 May 2016 12:39:27 -0700 Subject: [PATCH] Report errno more often in fastboot. Change-Id: I4b4b47c584a146b38876a379f26ceb20d071c643 --- fastboot/fastboot.cpp | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp index 94efcc35b..1839d2598 100644 --- a/fastboot/fastboot.cpp +++ b/fastboot/fastboot.cpp @@ -717,10 +717,10 @@ static bool needs_erase(Transport* transport, const char* partition) { 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); if (sz == -1) { - return -1; + return false; } lseek64(fd, 0, SEEK_SET); @@ -728,7 +728,7 @@ static int load_buf_fd(Transport* transport, int fd, struct fastboot_buffer* buf if (limit) { sparse_file** s = load_sparse_files(fd, limit); if (s == nullptr) { - return -1; + return false; } buf->type = FB_BUFFER_SPARSE; buf->data = s; @@ -740,18 +740,14 @@ static int load_buf_fd(Transport* transport, int fd, struct fastboot_buffer* buf buf->sz = sz; } - return 0; + return true; } -static int load_buf(Transport* transport, const char *fname, struct fastboot_buffer *buf) -{ - int fd; - - fd = open(fname, O_RDONLY | O_BINARY); - if (fd < 0) { - return -1; +static bool load_buf(Transport* transport, const char* fname, struct fastboot_buffer* buf) { + int fd = open(fname, O_RDONLY | O_BINARY); + if (fd == -1) { + return false; } - return load_buf_fd(transport, fd, buf); } @@ -895,8 +891,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) { struct fastboot_buffer buf; - if (load_buf(transport, fname, &buf)) { - die("cannot load '%s'", fname); + if (!load_buf(transport, fname, &buf)) { + die("cannot load '%s': %s", fname, strerror(errno)); } flash_buf(pname, &buf); } @@ -940,8 +936,9 @@ static void do_update(Transport* transport, const char* filename, const char* sl exit(1); // unzip_to_file already explained why. } fastboot_buffer buf; - int rc = load_buf_fd(transport, fd, &buf); - if (rc) die("cannot load %s from flash", images[i].img_name); + if (!load_buf_fd(transport, fd, &buf)) { + die("cannot load %s from flash: %s", images[i].img_name, strerror(errno)); + } auto update = [&](const std::string &partition) { do_update_signature(zip, images[i].sig_name); @@ -994,10 +991,9 @@ static void do_flashall(Transport* transport, const char* slot_override, int era for (size_t i = 0; i < ARRAY_SIZE(images); i++) { fname = find_item(images[i].part_name, product); fastboot_buffer buf; - if (load_buf(transport, fname.c_str(), &buf)) { - if (images[i].is_optional) - continue; - die("could not load %s\n", images[i].img_name); + if (!load_buf(transport, fname.c_str(), &buf)) { + if (images[i].is_optional) continue; + die("could not load '%s': %s", images[i].img_name, strerror(errno)); } auto flashall = [&](const std::string &partition) { @@ -1164,7 +1160,7 @@ static void fb_perform_format(Transport* transport, return; } - if (load_buf_fd(transport, fd, &buf)) { + if (!load_buf_fd(transport, fd, &buf)) { fprintf(stderr, "Cannot read image: %s\n", strerror(errno)); close(fd); return;