From: Frederic Crozat Date: Wed, 19 Aug 2009 13:21:24 +0000 (+0200) Subject: [script] add support for message in script X-Git-Tag: 0.7.1~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff959dbd2f9020f46a9442748c14fbfb40e3cf50;p=thirdparty%2Fplymouth.git [script] add support for message in script --- diff --git a/src/plugins/splash/script/plugin.c b/src/plugins/splash/script/plugin.c index 56cf5e50..59470832 100644 --- a/src/plugins/splash/script/plugin.c +++ b/src/plugins/splash/script/plugin.c @@ -415,6 +415,15 @@ display_question (ply_boot_splash_plugin_t *plugin, entry_text); } +static void +display_message (ply_boot_splash_plugin_t *plugin, + const char *message) +{ + script_lib_plymouth_on_message (plugin->script_state, + plugin->script_plymouth_lib, + message); +} + ply_boot_splash_plugin_interface_t * ply_boot_splash_plugin_get_interface (void) { @@ -433,6 +442,7 @@ ply_boot_splash_plugin_get_interface (void) .display_normal = display_normal, .display_password = display_password, .display_question = display_question, + .display_message = display_message, }; return &plugin_interface; diff --git a/src/plugins/splash/script/script-lib-plymouth.c b/src/plugins/splash/script/script-lib-plymouth.c index d552af83..be8275ab 100644 --- a/src/plugins/splash/script/script-lib-plymouth.c +++ b/src/plugins/splash/script/script-lib-plymouth.c @@ -66,6 +66,7 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state) data->script_display_normal_func = script_obj_new_null (); data->script_display_password_func = script_obj_new_null (); data->script_display_question_func = script_obj_new_null (); + data->script_message_func = script_obj_new_null (); script_add_native_function (state->global, "PlymouthSetRefreshFunction", @@ -115,6 +116,12 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state) &data->script_display_question_func, "function", NULL); + script_add_native_function (state->global, + "PlymouthSetMessageFunction", + plymouth_set_function, + &data->script_message_func, + "function", + NULL); data->script_main_op = script_parse_string (script_lib_plymouth_string); script_return_t ret = script_execute (state, data->script_main_op); script_obj_unref (ret.object); /* Throw anything sent back away */ @@ -133,6 +140,7 @@ void script_lib_plymouth_destroy (script_lib_plymouth_data_t *data) script_obj_unref (data->script_display_normal_func); script_obj_unref (data->script_display_password_func); script_obj_unref (data->script_display_question_func); + script_obj_unref (data->script_message_func); free (data); } @@ -271,3 +279,20 @@ void script_lib_plymouth_on_display_question (script_state_t *state, script_obj_unref (ret.object); } } + +void script_lib_plymouth_on_message (script_state_t *state, + script_lib_plymouth_data_t *data, + const char *message) +{ + script_function_t *function = script_obj_as_function (data->script_message_func); + if (function) + { + script_obj_t *new_message_obj = script_obj_new_string (message); + script_return_t ret = script_execute_function (state, + function, + new_message_obj, + NULL); + script_obj_unref (new_message_obj); + script_obj_unref (ret.object); + } +} diff --git a/src/plugins/splash/script/script-lib-plymouth.h b/src/plugins/splash/script/script-lib-plymouth.h index 9a75a9a7..062a3482 100644 --- a/src/plugins/splash/script/script-lib-plymouth.h +++ b/src/plugins/splash/script/script-lib-plymouth.h @@ -35,6 +35,7 @@ typedef struct script_obj_t *script_display_normal_func; script_obj_t *script_display_password_func; script_obj_t *script_display_question_func; + script_obj_t *script_message_func; } script_lib_plymouth_data_t; script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state); @@ -64,5 +65,8 @@ void script_lib_plymouth_on_display_question (script_state_t *state, script_lib_plymouth_data_t *data, const char *prompt, const char *entry_text); +void script_lib_plymouth_on_message (script_state_t *state, + script_lib_plymouth_data_t *data, + const char *new_message); #endif /* SCRIPT_LIB_PLYMOUTH */