]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[script] add support for message in script
authorFrederic Crozat <fcrozat@mandriva.com>
Wed, 19 Aug 2009 13:21:24 +0000 (15:21 +0200)
committerFrederic Crozat <fcrozat@mandriva.com>
Wed, 19 Aug 2009 13:56:15 +0000 (15:56 +0200)
src/plugins/splash/script/plugin.c
src/plugins/splash/script/script-lib-plymouth.c
src/plugins/splash/script/script-lib-plymouth.h

index 56cf5e5028f53b4db44e14fe7d13c07c6df874e6..594708328493bf76048c94bc5382d595cc646381 100644 (file)
@@ -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;
index d552af83f3d37867023f9294bbdc3baaf4f18329..be8275abc1c4b5110d3029d6b6f0865288d1702d 100644 (file)
@@ -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);
+    }
+}
index 9a75a9a7b208f659fd89bf2416e8ccb2b72adf03..062a3482113b5f6acfda068050163f9c2ec31ee3 100644 (file)
@@ -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 */