From: Charlie Brej Date: Thu, 3 Sep 2009 15:25:01 +0000 (+0100) Subject: [script] Add PlymouthGetMode to get boot/shutdown mode X-Git-Tag: 0.7.2~21^2^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74f4711e77e4c54dc52c730b32c7ead7a5bc342a;p=thirdparty%2Fplymouth.git [script] Add PlymouthGetMode to get boot/shutdown mode PlymouthGetMode replies the mode as a string of "boot" or "shutdown". --- diff --git a/src/plugins/splash/script/plugin.c b/src/plugins/splash/script/plugin.c index 34504571..1a34efab 100644 --- a/src/plugins/splash/script/plugin.c +++ b/src/plugins/splash/script/plugin.c @@ -177,7 +177,8 @@ start_animation (ply_boot_splash_plugin_t *plugin) plugin->image_dir); plugin->script_sprite_lib = script_lib_sprite_setup (plugin->script_state, plugin->window); - plugin->script_plymouth_lib = script_lib_plymouth_setup (plugin->script_state); + plugin->script_plymouth_lib = script_lib_plymouth_setup (plugin->script_state, + plugin->mode); plugin->script_math_lib = script_lib_math_setup (plugin->script_state); ply_trace ("executing script file"); diff --git a/src/plugins/splash/script/script-lib-plymouth.c b/src/plugins/splash/script/script-lib-plymouth.c index 5e17143c..f2ebb952 100644 --- a/src/plugins/splash/script/script-lib-plymouth.c +++ b/src/plugins/splash/script/script-lib-plymouth.c @@ -20,6 +20,7 @@ * Written by: Charlie Brej */ #define _GNU_SOURCE +#include "ply-boot-splash-plugin.h" #include "ply-utils.h" #include "script.h" #include "script-parse.h" @@ -54,7 +55,28 @@ static script_return_t plymouth_set_function (script_state_t *state, return script_return_obj_null (); } -script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state) +static script_return_t plymouth_get_mode (script_state_t *state, + void *user_data) +{ + script_lib_plymouth_data_t *data = user_data; + script_obj_t *obj; + switch (data->mode) + { + case PLY_BOOT_SPLASH_MODE_BOOT_UP: + obj = script_obj_new_string ("boot"); + break; + case PLY_BOOT_SPLASH_MODE_SHUTDOWN: + obj = script_obj_new_string ("shutdown"); + break; + default: + obj = script_obj_new_string ("unknown"); + break; + } + return script_return_obj (obj); +} + +script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state, + ply_boot_splash_mode_t mode) { script_lib_plymouth_data_t *data = malloc (sizeof (script_lib_plymouth_data_t)); @@ -67,7 +89,8 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state) 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 (); - + data->mode = mode; + script_add_native_function (state->global, "PlymouthSetRefreshFunction", plymouth_set_function, @@ -122,6 +145,11 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state) &data->script_message_func, "function", NULL); + script_add_native_function (state->global, + "PlymouthGetMode", + plymouth_get_mode, + data, + NULL); data->script_main_op = script_parse_string (script_lib_plymouth_string, "script-lib-plymouth.script"); script_return_t ret = script_execute (state, data->script_main_op); script_obj_unref (ret.object); /* Throw anything sent back away */ diff --git a/src/plugins/splash/script/script-lib-plymouth.h b/src/plugins/splash/script/script-lib-plymouth.h index 649f5ea1..c5f0b7fe 100644 --- a/src/plugins/splash/script/script-lib-plymouth.h +++ b/src/plugins/splash/script/script-lib-plymouth.h @@ -22,23 +22,26 @@ #ifndef SCRIPT_LIB_PLYMOUTH #define SCRIPT_LIB_PLYMOUTH +#include "ply-boot-splash-plugin.h" #include "script.h" typedef struct { - script_op_t *script_main_op; - script_obj_t *script_refresh_func; - script_obj_t *script_boot_progress_func; - script_obj_t *script_root_mounted_func; - script_obj_t *script_keyboard_input_func; - script_obj_t *script_update_status_func; - 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_op_t *script_main_op; + script_obj_t *script_refresh_func; + script_obj_t *script_boot_progress_func; + script_obj_t *script_root_mounted_func; + script_obj_t *script_keyboard_input_func; + script_obj_t *script_update_status_func; + 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; + ply_boot_splash_mode_t mode; } script_lib_plymouth_data_t; -script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state); +script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state, + ply_boot_splash_mode_t mode); void script_lib_plymouth_destroy (script_lib_plymouth_data_t *data); void script_lib_plymouth_on_refresh (script_state_t *state,