diff --git a/.cvsignore b/.cvsignore index 164458f..67fd3e1 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -plymouth-0.5.0.tar.bz2 +plymouth-0.6.0.tar.bz2 diff --git a/plymouth.spec b/plymouth.spec index b84f1e6..f050e14 100644 --- a/plymouth.spec +++ b/plymouth.spec @@ -1,7 +1,7 @@ Summary: Plymouth Graphical Boot Animation and Logger Name: plymouth -Version: 0.5.0 -Release: 20.2008.08.13%{?dist} +Version: 0.6.0 +Release: 0.2008.08.22%{?dist} License: GPLv2+ Group: System Environment/Base Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.bz2 @@ -9,7 +9,6 @@ URL: http://freedesktop.org/software/plymouth/releases BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Patch0: plymouth-0.5.0-textbar-hotness.patch -Patch1: serial-console.patch Obsoletes: rhgb < 1:10.0.0 Provides: rhgb = 1:10.0.0 @@ -93,7 +92,6 @@ spins in the shape of an infinity sign. %prep %setup -q %patch0 -p1 -b .textbar -%patch1 -p1 -b .serial-console %build %configure --enable-tracing --disable-tests --without-boot-entry \ @@ -208,6 +206,9 @@ fi %{_libdir}/plymouth/spinfinity.so %changelog +* Fri Aug 23 2008 Ray Strode 0.5.0-0.2008.08.22 +- Update to latest snapshot + * Wed Aug 13 2008 Ray Strode 0.5.0-20.2008.08.13 - Update previous patch to remove some assertions diff --git a/serial-console.patch b/serial-console.patch deleted file mode 100644 index e1fbaa7..0000000 --- a/serial-console.patch +++ /dev/null @@ -1,343 +0,0 @@ -diff --git a/src/client/ply-boot-client.c b/src/client/ply-boot-client.c -index 2b1d075..c6b3075 100644 ---- a/src/client/ply-boot-client.c -+++ b/src/client/ply-boot-client.c -@@ -282,6 +282,10 @@ ply_boot_client_process_incoming_replies (ply_boot_client_t *client) - - ((ply_boot_client_answer_handler_t) request->handler) (request->user_data, answer, client); - } -+ else if (memcmp (byte, PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NO_ANSWER, sizeof (uint8_t)) == 0) -+ { -+ ((ply_boot_client_answer_handler_t) request->handler) (request->user_data, NULL, client); -+ } - else - goto out; - -diff --git a/src/client/plymouth.c b/src/client/plymouth.c -index c343378..33deb24 100644 ---- a/src/client/plymouth.c -+++ b/src/client/plymouth.c -@@ -102,9 +102,16 @@ answer_via_command (answer_state_t *answer_state, - pid_t pid; - int command_input_sender_fd, command_input_receiver_fd; - -+ /* answer may be NULL which means, -+ * "The daemon can't ask the user questions, -+ * do all the prompting from the client" -+ */ -+ - gave_answer = false; -- if (!ply_open_unidirectional_pipe (&command_input_sender_fd, -- &command_input_receiver_fd)) return false; -+ if (answer != NULL && -+ !ply_open_unidirectional_pipe (&command_input_sender_fd, -+ &command_input_receiver_fd)) -+ return false; - - pid = fork (); - -@@ -114,21 +121,29 @@ answer_via_command (answer_state_t *answer_state, - if (pid == 0) - { - char **args; -- close (command_input_sender_fd); - args = split_string (answer_state->command, ' '); -- dup2 (command_input_receiver_fd, STDIN_FILENO); -+ if (answer != NULL) -+ { -+ close (command_input_sender_fd); -+ dup2 (command_input_receiver_fd, STDIN_FILENO); -+ } - execvp (args[0], args); - ply_trace ("could not run command: %m"); - _exit (127); - } -- close (command_input_receiver_fd); - -- if (write (command_input_sender_fd, answer, strlen (answer)) < 0) -- goto out; -+ if (answer != NULL) -+ { -+ close (command_input_receiver_fd); -+ -+ if (write (command_input_sender_fd, answer, strlen (answer)) < 0) -+ goto out; -+ } - - gave_answer = true; - out: -- close (command_input_sender_fd); -+ if (answer != NULL) -+ close (command_input_sender_fd); - waitpid (pid, exit_status, 0); - - return gave_answer; -diff --git a/src/libplybootsplash/ply-answer.c b/src/libplybootsplash/ply-answer.c -index 9213875..24a56f6 100644 ---- a/src/libplybootsplash/ply-answer.c -+++ b/src/libplybootsplash/ply-answer.c -@@ -69,6 +69,15 @@ ply_answer_with_string (ply_answer_t *answer, - - } - -+void -+ply_answer_unknown (ply_answer_t *answer) -+{ -+ assert (answer != NULL); -+ -+ if (answer->handler != NULL) -+ answer->handler (answer->user_data, NULL, answer); -+} -+ - #ifdef PLY_ANSWER_ENABLE_TEST - - #include -diff --git a/src/libplybootsplash/ply-answer.h b/src/libplybootsplash/ply-answer.h -index 4e04a75..3da41f3 100644 ---- a/src/libplybootsplash/ply-answer.h -+++ b/src/libplybootsplash/ply-answer.h -@@ -44,6 +44,8 @@ void ply_answer_free (ply_answer_t *answer); - - void ply_answer_with_string (ply_answer_t *answer, - const char *string); -+ -+void ply_answer_unknown (ply_answer_t *answer); - #endif - - #endif /* PLY_ANSWER_H */ -diff --git a/src/main.c b/src/main.c -index fffa0c4..e11f964 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -59,6 +59,7 @@ typedef struct - char kernel_command_line[PLY_MAX_COMMAND_LINE_SIZE]; - uint32_t showing_details : 1; - uint32_t system_initialized : 1; -+ uint32_t using_serial_console : 1; - - int number_of_errors; - } state_t; -@@ -205,6 +206,12 @@ plymouth_should_show_default_splash (state_t *state) - }; - int i; - -+ if (state->using_serial_console) -+ return false; -+ -+ if (state->window == NULL) -+ return false; -+ - for (i = 0; strings[i] != NULL; i++) - { - int cmp; -@@ -228,10 +235,11 @@ static void - on_show_splash (state_t *state) - { - -- if (state->window == NULL) -+ if (state->window == NULL && !state->using_serial_console) - { - state->window = create_window (state, 1); -- ply_window_take_console (state->window); -+ if (state->window != NULL) -+ ply_window_take_console (state->window); - } - - if (plymouth_should_show_default_splash (state)) -@@ -353,10 +361,8 @@ create_window (state_t *state, - ply_trace ("opening window"); - if (!ply_window_open (window)) - { -- ply_save_errno (); - ply_trace ("could not open window: %m"); - ply_window_free (window); -- ply_restore_errno (); - return NULL; - } - -@@ -467,6 +473,23 @@ check_verbosity (state_t *state) - ply_trace ("tracing shouldn't be enabled!"); - } - -+static void -+check_for_serial_console (state_t *state) -+{ -+ ply_trace ("checking if splash screen should be disabled"); -+ -+ if (strstr (state->kernel_command_line, " console=") != NULL) -+ { -+ ply_trace ("serial console found!"); -+ state->using_serial_console = true; -+ } -+ else -+ { -+ ply_trace ("serial console not found!"); -+ state->using_serial_console = false; -+ } -+} -+ - static bool - set_console_io_to_vt1 (state_t *state) - { -@@ -493,9 +516,13 @@ initialize_environment (state_t *state) - return false; - - check_verbosity (state); -+ check_for_serial_console (state); - -- if (!set_console_io_to_vt1 (state)) -- return false; -+ if (!state->using_serial_console) -+ { -+ if (!set_console_io_to_vt1 (state)) -+ return false; -+ } - - ply_trace ("initialized minimal work environment"); - return true; -diff --git a/src/ply-boot-protocol.h b/src/ply-boot-protocol.h -index 594064a..852b9d9 100644 ---- a/src/ply-boot-protocol.h -+++ b/src/ply-boot-protocol.h -@@ -35,6 +35,7 @@ - #define PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK "\x6" - #define PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NAK "\x15" - #define PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER "\x2" -+#define PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NO_ANSWER "\x5" - - #endif /* PLY_BOOT_PROTOCOL_H */ - /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ -diff --git a/src/ply-boot-server.c b/src/ply-boot-server.c -index 29f402e..6e39f86 100644 ---- a/src/ply-boot-server.c -+++ b/src/ply-boot-server.c -@@ -197,21 +197,34 @@ ply_boot_connection_on_password_answer (ply_boot_connection_t *connection, - - size_t size; - -- /* FIXME: support up to 4 billion -+ /* splash plugin isn't able to ask for password, -+ * punt to client - */ -- if (strlen (password) > 255) -- ply_error ("password to long to fit in buffer"); -- -- size = (uint8_t) strlen (password); -- -- if (!ply_write (connection->fd, -- PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER, -- strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER)) || -- !ply_write (connection->fd, -- &size, sizeof (uint8_t)) || -- !ply_write (connection->fd, -- password, size)) -- ply_error ("could not write bytes: %m"); -+ if (password == NULL) -+ { -+ if (!ply_write (connection->fd, -+ PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NO_ANSWER, -+ strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NO_ANSWER))) -+ ply_error ("could not write bytes: %m"); -+ } -+ else -+ { -+ /* FIXME: support up to 4 billion -+ */ -+ if (strlen (password) > 255) -+ ply_error ("password to long to fit in buffer"); -+ -+ size = (uint8_t) strlen (password); -+ -+ if (!ply_write (connection->fd, -+ PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER, -+ strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER)) || -+ !ply_write (connection->fd, -+ &size, sizeof (uint8_t)) || -+ !ply_write (connection->fd, -+ password, size)) -+ ply_error ("could not write bytes: %m"); -+ } - - ply_answer_free (answer); - } -diff --git a/src/ply-boot-splash.c b/src/ply-boot-splash.c -index 8ccaf6c..9aae09c 100644 ---- a/src/ply-boot-splash.c -+++ b/src/ply-boot-splash.c -@@ -169,7 +169,6 @@ ply_boot_splash_show (ply_boot_splash_t *splash) - assert (splash->plugin_interface != NULL); - assert (splash->plugin != NULL); - assert (splash->plugin_interface->show_splash_screen != NULL); -- assert (splash->window != NULL); - - ply_trace ("showing splash screen\n"); - if (!splash->plugin_interface->show_splash_screen (splash->plugin, -@@ -226,7 +225,7 @@ ply_boot_splash_ask_for_password (ply_boot_splash_t *splash, - - if (splash->plugin_interface->ask_for_password == NULL) - { -- ply_answer_with_string (answer, ""); -+ ply_answer_unknown (answer); - return; - } - -diff --git a/src/splash-plugins/details/plugin.c b/src/splash-plugins/details/plugin.c -index 3bfb14d..ae52b15 100644 ---- a/src/splash-plugins/details/plugin.c -+++ b/src/splash-plugins/details/plugin.c -@@ -56,6 +56,10 @@ - #define CLEAR_LINE_SEQUENCE "\033[2K\r\n" - #define BACKSPACE "\b\033[0K" - -+void ask_for_password (ply_boot_splash_plugin_t *plugin, -+ ply_answer_t *answer); -+ -+ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); - struct _ply_boot_splash_plugin - { - ply_event_loop_t *loop; -@@ -136,17 +140,26 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, - - assert (plugin != NULL); - -- ply_window_set_mode (window, PLY_WINDOW_MODE_TEXT); -+ if (window != NULL) -+ { -+ ply_boot_splash_plugin_interface_t *interface; -+ -+ ply_window_set_mode (window, PLY_WINDOW_MODE_TEXT); - -- ply_window_set_keyboard_input_handler (window, -- (ply_window_keyboard_input_handler_t) -- on_keyboard_input, plugin); -- ply_window_set_backspace_handler (window, -- (ply_window_backspace_handler_t) -- on_backspace, plugin); -- ply_window_set_enter_handler (window, -- (ply_window_enter_handler_t) -- on_enter, plugin); -+ ply_window_set_keyboard_input_handler (window, -+ (ply_window_keyboard_input_handler_t) -+ on_keyboard_input, plugin); -+ ply_window_set_backspace_handler (window, -+ (ply_window_backspace_handler_t) -+ on_backspace, plugin); -+ ply_window_set_enter_handler (window, -+ (ply_window_enter_handler_t) -+ on_enter, plugin); -+ -+ interface = ply_boot_splash_plugin_get_interface (); -+ -+ interface->ask_for_password = ask_for_password; -+ } - - plugin->loop = loop; - -@@ -223,7 +236,6 @@ ply_boot_splash_plugin_get_interface (void) - .update_status = update_status, - .on_boot_output = on_boot_output, - .hide_splash_screen = hide_splash_screen, -- .ask_for_password = ask_for_password, - }; - - return &plugin_interface; diff --git a/sources b/sources index a4d0803..250822f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -fcca1072d1f47c916966a005d7bc7e39 plymouth-0.5.0.tar.bz2 +fed64d7a9a81c2d1cf01f2e84eafa464 plymouth-0.6.0.tar.bz2