From 1235929f178ac9b216e60ed711946dd28d895f24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kala=C5=A1=20=28Floxen=29?= Date: Mon, 13 Jul 2026 20:59:15 +0200 Subject: [PATCH] =?UTF-8?q?shell:=20spu=C5=A1t=C4=9Bn=C3=AD=20sysapps=20po?= =?UTF-8?q?dle=20n=C3=A1zvu=20p=C5=99=C3=ADkazu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upraveno: kernel/main.c - přidané napojení na runtime registr sysapps - přidaná funkce run_sysapp_by_name() - shell teď před chybou 'Neznamy prikaz' zkusí sysapp - doplněná help hláška o příkazech ze složky sysapps Přidáno/Odstraněno: nic mimo kernel/main.c --- kernel/main.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/kernel/main.c b/kernel/main.c index 3027e07..0ffbc4f 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -20,10 +20,12 @@ #include "scheduler.h" #include "storage.h" #include "string.h" +#include "sysapps_runtime.h" #include "syscall.h" #include "timer.h" void app_tetris_main(void); +extern const sysapp_entry_t g_sysapps[]; static char g_cwd[ASTERFS_NAME_LEN] = "/"; static unsigned long g_timer_hz = 100UL; @@ -63,6 +65,7 @@ static void auth_readline_plain(char *out, int max_len); static void auth_readline_secret(char *out, int max_len); static void auth_clear_users(void); static int auth_add_user(const char *name, const char *pass); +static int run_sysapp_by_name(const char *name); static char g_fm_names[FM_MAX_ENTRIES][ASTERFS_NAME_LEN]; static u8 g_fm_types[FM_MAX_ENTRIES]; static u16 g_fm_sizes[FM_MAX_ENTRIES]; @@ -614,6 +617,24 @@ static int system_is_installed(void) { return asterfs_get_type(INSTALL_FLAG_FILE) == 0; } +static int run_sysapp_by_name(const char *name) { + usize i; + + if (!name || name[0] == '\0') { + return -1; + } + + for (i = 0; g_sysapps[i].name; ++i) { + if (aster_strcmp(g_sysapps[i].name, name) == 0) { + g_sysapps[i].entry(); + render_shell_statusbar(); + return 0; + } + } + + return -1; +} + static void cmd_setup_install(void) { static const char readme[] = "AsterOS base install\n" @@ -804,6 +825,7 @@ static const char g_help_lines[][80] = { "edit filename - editor (Ctrl+S, ESC)", "calc A op B - vypocet (+ - * /)", "tetris - testovaci hra nad app API", + " - appka ze slozky sysapps", "echo text - vypis textu", "ticks - pocet tiknuti casovace", "alloc N - alokovat N bajtu", @@ -2864,6 +2886,8 @@ static void shell_loop(void) { cmd_reboot(); } else if (aster_strcmp(exec_cmd, "shutdown") == 0) { cmd_shutdown(); + } else if (run_sysapp_by_name(exec_cmd) == 0) { + continue; } else { print_error("Neznamy prikaz. Zadej help."); }