firmware-utils: mkfwimage: provide human readable error

While looking at the ath25 build breakage of 19.07 images today I've
encountered following error:

 mkfwimage -B XS5 -v [...] ath25-ubnt5-squashfs-sysupgrade.bin.new
 ERROR: Failed creating firmware layout description - error code: -2

Which is barely human readable and needs poking into the source code, so
this patch makes the error more verbose and usable by mere mortals.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
master
Petr Štetiar 2019-07-19 15:52:46 +02:00
parent 83e60f0df6
commit 9401780c2c
1 changed files with 7 additions and 1 deletions

View File

@ -297,6 +297,7 @@ static u_int32_t filelength(const char* file)
static int create_image_layout(const char* kernelfile, const char* rootfsfile, char* board_name, image_info_t* im) static int create_image_layout(const char* kernelfile, const char* rootfsfile, char* board_name, image_info_t* im)
{ {
uint32_t rootfs_len = 0;
part_data_t* kernel = &im->parts[0]; part_data_t* kernel = &im->parts[0];
part_data_t* rootfs = &im->parts[1]; part_data_t* rootfs = &im->parts[1];
@ -311,8 +312,13 @@ static int create_image_layout(const char* kernelfile, const char* rootfsfile, c
kernel->partition_entryaddr = p->kern_entry; kernel->partition_entryaddr = p->kern_entry;
strncpy(kernel->filename, kernelfile, sizeof(kernel->filename)); strncpy(kernel->filename, kernelfile, sizeof(kernel->filename));
if (filelength(rootfsfile) + kernel->partition_length > p->firmware_max_length) rootfs_len = filelength(rootfsfile);
if (rootfs_len + kernel->partition_length > p->firmware_max_length) {
ERROR("File '%s' too big (0x%08X) - max size: 0x%08X (exceeds %u bytes)\n",
rootfsfile, rootfs_len, p->firmware_max_length,
(rootfs_len + kernel->partition_length) - p->firmware_max_length);
return (-2); return (-2);
}
strcpy(rootfs->partition_name, "rootfs"); strcpy(rootfs->partition_name, "rootfs");
rootfs->partition_index = 2; rootfs->partition_index = 2;