recovery-utils: reset URI for local SWU update packages

Internal recovery-utils.git SHA1: e30c2a3c9729

https://jira.digi.com/browse/DEL-3466

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2017-01-20 17:34:41 +01:00
parent b2abb5bc80
commit 0cd1c803ce
1 changed files with 16 additions and 2 deletions

View File

@ -17,6 +17,8 @@
*
*/
#define _GNU_SOURCE /* For GNU version of basename */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -25,6 +27,8 @@
#include <libubootenv/ubootenv.h>
#define FILE_PREFIX "file://"
/*
* Function: append_recovery_command
* Description: append configuration to the 'recovery_command' variable
@ -78,6 +82,7 @@ err:
int update_firmware(const char *swu_path)
{
char *fwupdate_cmd;
int file_prefix_len = 0;
int ret = -1;
/* Verify input parameter */
@ -86,14 +91,23 @@ int update_firmware(const char *swu_path)
goto err;
}
/* If file is local reset the path */
if (!access(swu_path, F_OK)) {
file_prefix_len = strlen(FILE_PREFIX);
swu_path = basename(swu_path);
}
fwupdate_cmd =
calloc(1, strlen("update_package=") + strlen(swu_path) + 1);
calloc(1,
strlen("update_package=") + file_prefix_len +
strlen(swu_path) + 1);
if (!fwupdate_cmd) {
fprintf(stderr, "Error: calloc 'fwupdate_cmd'\n");
goto err;
}
sprintf(fwupdate_cmd, "update_package=%s", swu_path);
sprintf(fwupdate_cmd, "update_package=%s%s",
file_prefix_len ? FILE_PREFIX : "", swu_path);
ret = append_recovery_command(fwupdate_cmd);