From 0a4a920029bfb8194c37870b7e6d8e60cd7c8ef9 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Sat, 17 Oct 2020 17:50:36 -0400 Subject: hosted: ROLO: Fixes for PIVOT_ROOT targets Change-Id: I4888bd5db6f8a419d312c6b017f676ba6c749d89 --- firmware/target/hosted/rolo.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/firmware/target/hosted/rolo.c b/firmware/target/hosted/rolo.c index 229a928c84..04b21d553e 100644 --- a/firmware/target/hosted/rolo.c +++ b/firmware/target/hosted/rolo.c @@ -18,6 +18,10 @@ * ****************************************************************************/ +#include +#include +#include + #include "config.h" #include "lcd.h" #ifdef HAVE_REMOTE_LCD @@ -30,8 +34,8 @@ #include "rolo.h" #include "rbpaths.h" -#include -#include +//#define LOGF_ENABLE +#include "logf.h" #if defined(HAVE_BOOTDATA) && !defined(SIMULATOR) #include "bootdata.h" @@ -92,13 +96,26 @@ int rolo_load(const char* filename) #endif #ifdef PIVOT_ROOT -#define EXECDIR PIVOT_ROOT +#define EXECDIR "/tmp" #else #define EXECDIR HOME_DIR #endif char buf[256]; +#ifdef PIVOT_ROOT + snprintf(buf, sizeof(buf), "/bin/cp " PIVOT_ROOT "/%s " EXECDIR "/" BOOTFILE, filename); + logf("system: %s", buf); + system(buf); + snprintf(buf, sizeof(buf), "/bin/chmod +x " EXECDIR "/" BOOTFILE); + logf("system: %s", buf); + system(buf); + + snprintf(buf, sizeof(buf), "%s/%s", EXECDIR, BOOTFILE); +#else snprintf(buf, sizeof(buf), "%s/%s", EXECDIR, filename); +#endif + + logf("execl: %s", buf); execl(buf, BOOTFILE, NULL); rolo_error("Failed to launch!", strerror(errno)); -- cgit v1.2.3