]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[script] Add PlymouthGetMode to get boot/shutdown mode
authorCharlie Brej <cbrej@cs.man.ac.uk>
Thu, 3 Sep 2009 15:25:01 +0000 (16:25 +0100)
committerCharlie Brej <cbrej@cs.man.ac.uk>
Thu, 3 Sep 2009 15:25:01 +0000 (16:25 +0100)
PlymouthGetMode replies the mode as a string of "boot" or "shutdown".

src/plugins/splash/script/plugin.c
src/plugins/splash/script/script-lib-plymouth.c
src/plugins/splash/script/script-lib-plymouth.h

index 345045713e1827c3d078c1f48dc63854ab9e028e..1a34efabe7c461c8fc50c45a376c8d0894324844 100644 (file)
@@ -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");
index 5e17143ccdb698963c73456fae646a4c5b409f22..f2ebb952e1290d5dc69d6620e0c62cfec84557a5 100644 (file)
@@ -20,6 +20,7 @@
  * Written by: Charlie Brej <cbrej@cs.man.ac.uk>
  */
 #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 */
index 649f5ea1735ec27e5f6083ba04c7b68f5e943126..c5f0b7fe7665ec5d97ee3606c63e8b4e9f622759 100644 (file)
 #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,