From 89a1d8a14a2c828de61ce93333731b21c58c3655 Mon Sep 17 00:00:00 2001 From: schneider <schneider@blinkenlichts.net> Date: Sat, 25 Dec 2021 18:16:06 +0100 Subject: [PATCH] epicardium: Delete obsolete app launchers They were created to support very early launcher scripts and are not needed anymore. This also makes some apps from the hatchery work, as they were not developed with app launchers in mind. --- epicardium/main.c | 2 ++ epicardium/os/config.c | 1 - epicardium/user_core/meson.build | 1 + epicardium/user_core/migration.c | 50 ++++++++++++++++++++++++++++++++ epicardium/user_core/user_core.h | 3 ++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 epicardium/user_core/migration.c diff --git a/epicardium/main.c b/epicardium/main.c index 6b6dd641..4fcc65b6 100644 --- a/epicardium/main.c +++ b/epicardium/main.c @@ -34,6 +34,8 @@ int main(void) load_config(); + migration_delete_app_launchers(); + //LED feedback in case of dead display epic_leds_set(11, 0, 0, 1); epic_leds_set(12, 0, 0, 1); diff --git a/epicardium/os/config.c b/epicardium/os/config.c index 65897cb5..605dc890 100644 --- a/epicardium/os/config.c +++ b/epicardium/os/config.c @@ -1,6 +1,5 @@ #include "os/core.h" #include "os/config.h" -#include "fs/filesystem.h" #include "epicardium.h" #include <assert.h> diff --git a/epicardium/user_core/meson.build b/epicardium/user_core/meson.build index daf7395f..96e6d4ed 100644 --- a/epicardium/user_core/meson.build +++ b/epicardium/user_core/meson.build @@ -2,4 +2,5 @@ user_core_sources = files( 'dispatcher.c', 'interrupts.c', 'lifecycle.c', + 'migration.c', ) diff --git a/epicardium/user_core/migration.c b/epicardium/user_core/migration.c new file mode 100644 index 00000000..1cd79803 --- /dev/null +++ b/epicardium/user_core/migration.c @@ -0,0 +1,50 @@ +#include "epicardium.h" +#include "os/core.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +void migration_delete_app_launchers(void) +{ + int fd = epic_file_opendir("/"); + + struct epic_stat entry; + for (;;) { + epic_file_readdir(fd, &entry); + + if (entry.type == EPICSTAT_NONE) { + // End + break; + } + + const char *dot = strrchr(entry.name, '.'); + if (dot && !strcmp(dot, ".py")) { + const char launcher[] = "# Launcher script for "; + char launcher_buf[strlen(launcher)]; + + int fd = epic_file_open(entry.name, "r"); + + if (fd >= 0) { + int n = epic_file_read( + fd, launcher_buf, sizeof(launcher_buf) + ); + epic_file_close(fd); + + if (n == (int)sizeof(launcher_buf) && + !memcmp(launcher, + launcher_buf, + sizeof(launcher_buf))) { + LOG_INFO( + "migration", + "Delete old launcher %s", + entry.name + ); + epic_file_unlink(entry.name); + } + } + } + } + + epic_file_close(fd); +} diff --git a/epicardium/user_core/user_core.h b/epicardium/user_core/user_core.h index 5b090e6f..64a2f1f1 100644 --- a/epicardium/user_core/user_core.h +++ b/epicardium/user_core/user_core.h @@ -12,3 +12,6 @@ extern TaskHandle_t dispatcher_task_id; /* ---------- Lifecycle ---------------------------------------------------- */ void vLifecycleTask(void *pvParameters); void return_to_menu(void); + +/* ---------- Migration ---------------------------------------------------- */ +void migration_delete_app_launchers(void); -- GitLab