diff options
author | Solomon Peachy <pizza@shaftnet.org> | 2020-10-17 17:50:36 -0400 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2020-10-17 18:38:46 -0400 |
commit | 0a4a920029bfb8194c37870b7e6d8e60cd7c8ef9 (patch) | |
tree | fde794bf72260a2cd9b09dc8b557bf8920b1d5a2 /firmware | |
parent | 012908e0641f0581ee2d0515596db287ee5edf4c (diff) | |
download | rockbox-0a4a920029bfb8194c37870b7e6d8e60cd7c8ef9.tar.gz rockbox-0a4a920029bfb8194c37870b7e6d8e60cd7c8ef9.tar.bz2 rockbox-0a4a920029bfb8194c37870b7e6d8e60cd7c8ef9.zip |
hosted: ROLO: Fixes for PIVOT_ROOT targets
Change-Id: I4888bd5db6f8a419d312c6b017f676ba6c749d89
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/hosted/rolo.c | 23 |
1 files 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 <unistd.h> +#include <stdio.h> +#include <stdlib.h> + #include "config.h" #include "lcd.h" #ifdef HAVE_REMOTE_LCD @@ -30,8 +34,8 @@ #include "rolo.h" #include "rbpaths.h" -#include <unistd.h> -#include <stdio.h> +//#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)); |