2022-08-04 15:38:06 +02:00
|
|
|
diff -Nura plymouth-0.9.5~git20220801.eb1b893/src/libply/ply-buffer.c plymouth-0.9.5~git20220801.eb1b893_new/src/libply/ply-buffer.c
|
|
|
|
--- plymouth-0.9.5~git20220801.eb1b893/src/libply/ply-buffer.c 2022-04-15 16:39:24.000000000 +0800
|
|
|
|
+++ plymouth-0.9.5~git20220801.eb1b893_new/src/libply/ply-buffer.c 2022-08-04 16:27:35.810694440 +0800
|
2022-05-07 08:16:07 +02:00
|
|
|
@@ -46,6 +46,10 @@
|
|
|
|
#define PLY_BUFFER_MAX_BUFFER_CAPACITY (255 * 4096)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#ifndef PLY_BUFFER_MAX_LOG_BUFFER_CAPACITY
|
|
|
|
+#define PLY_BUFFER_MAX_LOG_BUFFER_CAPACITY (1024 * 4096)
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
struct _ply_buffer
|
|
|
|
{
|
|
|
|
char *data;
|
|
|
|
@@ -67,6 +71,20 @@
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
+static bool
|
|
|
|
+ply_buffer_increase_log_capacity (ply_buffer_t *buffer)
|
|
|
|
+{
|
|
|
|
+ assert (buffer != NULL);
|
|
|
|
+
|
|
|
|
+ if ((buffer->capacity * 2) > PLY_BUFFER_MAX_LOG_BUFFER_CAPACITY)
|
|
|
|
+ return false;
|
|
|
|
+
|
|
|
|
+ buffer->capacity *= 2;
|
|
|
|
+
|
|
|
|
+ buffer->data = realloc (buffer->data, buffer->capacity);
|
|
|
|
+ return true;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
void
|
|
|
|
ply_buffer_remove_bytes (ply_buffer_t *buffer,
|
|
|
|
size_t bytes_to_remove)
|
2022-08-04 15:38:06 +02:00
|
|
|
@@ -205,6 +223,38 @@
|
|
|
|
}
|
2022-05-07 08:16:07 +02:00
|
|
|
|
2022-08-04 15:38:06 +02:00
|
|
|
void
|
2022-05-07 08:16:07 +02:00
|
|
|
+ply_buffer_append_log_bytes (ply_buffer_t *buffer,
|
|
|
|
+ const void *bytes_in,
|
|
|
|
+ size_t length)
|
|
|
|
+{
|
2022-08-04 15:38:06 +02:00
|
|
|
+ assert (buffer != NULL);
|
|
|
|
+ assert (bytes_in != NULL);
|
|
|
|
+ assert (length != 0);
|
2022-05-07 08:16:07 +02:00
|
|
|
+
|
2022-08-04 15:38:06 +02:00
|
|
|
+ const uint8_t *bytes = bytes_in;
|
2022-05-07 08:16:07 +02:00
|
|
|
+
|
2022-08-04 15:38:06 +02:00
|
|
|
+ if (length > PLY_BUFFER_MAX_BUFFER_CAPACITY)
|
|
|
|
+ {
|
|
|
|
+ bytes += length - (PLY_BUFFER_MAX_BUFFER_CAPACITY - 1);
|
|
|
|
+ length = (PLY_BUFFER_MAX_BUFFER_CAPACITY - 1);
|
|
|
|
+ }
|
2022-05-07 08:16:07 +02:00
|
|
|
+
|
2022-08-04 15:38:06 +02:00
|
|
|
+ while ((buffer->size + length) >= buffer->capacity)
|
|
|
|
+ {
|
|
|
|
+ if (!ply_buffer_increase_log_capacity (buffer))
|
|
|
|
+ ply_buffer_remove_bytes (buffer, length);
|
|
|
|
+ }
|
2022-05-07 08:16:07 +02:00
|
|
|
+
|
2022-08-04 15:38:06 +02:00
|
|
|
+ assert (buffer->size + length < buffer->capacity);
|
|
|
|
+
|
|
|
|
+ memcpy (buffer->data + buffer->size,
|
|
|
|
+ bytes, length);
|
|
|
|
+
|
|
|
|
+ buffer->size += length;
|
|
|
|
+ buffer->data[buffer->size] = '\0';
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
ply_buffer_append_from_fd (ply_buffer_t *buffer,
|
|
|
|
int fd)
|
|
|
|
{
|
|
|
|
diff -Nura plymouth-0.9.5~git20220801.eb1b893/src/libply/ply-buffer.h plymouth-0.9.5~git20220801.eb1b893_new/src/libply/ply-buffer.h
|
|
|
|
--- plymouth-0.9.5~git20220801.eb1b893/src/libply/ply-buffer.h 2022-04-15 16:39:24.000000000 +0800
|
|
|
|
+++ plymouth-0.9.5~git20220801.eb1b893_new/src/libply/ply-buffer.h 2022-08-04 16:27:35.810694440 +0800
|
|
|
|
@@ -35,6 +35,10 @@
|
2022-05-07 08:16:07 +02:00
|
|
|
const void *bytes,
|
|
|
|
size_t number_of_bytes);
|
2022-08-04 15:38:06 +02:00
|
|
|
|
2022-05-07 08:16:07 +02:00
|
|
|
+void ply_buffer_append_log_bytes (ply_buffer_t *buffer,
|
|
|
|
+ const void *bytes,
|
|
|
|
+ size_t length);
|
2022-08-04 15:38:06 +02:00
|
|
|
+
|
2022-05-07 08:16:07 +02:00
|
|
|
void ply_buffer_append_from_fd (ply_buffer_t *buffer,
|
|
|
|
int fd);
|
|
|
|
#define ply_buffer_append(buffer, format, args ...) \
|
2022-08-04 15:38:06 +02:00
|
|
|
diff -Nura plymouth-0.9.5~git20220801.eb1b893/src/main.c plymouth-0.9.5~git20220801.eb1b893_new/src/main.c
|
|
|
|
--- plymouth-0.9.5~git20220801.eb1b893/src/main.c 2022-08-02 21:28:28.000000000 +0800
|
|
|
|
+++ plymouth-0.9.5~git20220801.eb1b893_new/src/main.c 2022-08-04 17:37:22.768631505 +0800
|
2022-05-07 08:16:07 +02:00
|
|
|
@@ -1225,8 +1225,7 @@
|
|
|
|
}
|
|
|
|
|
|
|
|
/* do not let any tty opened where we could write after deactivate */
|
|
|
|
- if (ply_kernel_command_line_has_argument ("plymouth.debug"))
|
|
|
|
- ply_logger_close_file (ply_logger_get_error_default ());
|
|
|
|
+ ply_logger_close_file (ply_logger_get_error_default ());
|
|
|
|
}
|
|
|
|
|
2022-08-04 15:38:06 +02:00
|
|
|
static void
|
|
|
|
@@ -1853,77 +1852,42 @@
|
|
|
|
state->is_attached = false;
|
2022-05-07 08:16:07 +02:00
|
|
|
}
|
|
|
|
|
2022-08-04 15:38:06 +02:00
|
|
|
-static void
|
2022-05-07 08:16:07 +02:00
|
|
|
-check_verbosity (state_t *state)
|
2022-08-04 15:38:06 +02:00
|
|
|
+static void initialize_debug (state_t *state)
|
2022-05-07 08:16:07 +02:00
|
|
|
{
|
|
|
|
- char *stream;
|
2022-08-04 15:38:06 +02:00
|
|
|
-
|
2022-05-07 08:16:07 +02:00
|
|
|
- ply_trace ("checking if tracing should be enabled");
|
2022-08-04 15:38:06 +02:00
|
|
|
-
|
2022-05-07 08:16:07 +02:00
|
|
|
- if (!debug_buffer_path)
|
|
|
|
- debug_buffer_path = ply_kernel_command_line_get_key_value ("plymouth.debug=file:");
|
|
|
|
-
|
|
|
|
- stream = ply_kernel_command_line_get_key_value ("plymouth.debug=stream:");
|
|
|
|
- if (stream != NULL || debug_buffer_path != NULL ||
|
|
|
|
- ply_kernel_command_line_has_argument ("plymouth.debug")) {
|
|
|
|
- int fd;
|
|
|
|
-
|
|
|
|
- ply_trace ("tracing should be enabled!");
|
|
|
|
- if (!ply_is_tracing ())
|
|
|
|
- ply_toggle_tracing ();
|
|
|
|
-
|
|
|
|
- if (debug_buffer == NULL)
|
|
|
|
- debug_buffer = ply_buffer_new ();
|
|
|
|
-
|
|
|
|
- if (stream != NULL) {
|
|
|
|
- ply_trace ("streaming debug output to %s instead of screen", stream);
|
|
|
|
- fd = open (stream, O_RDWR | O_NOCTTY | O_CREAT, 0600);
|
|
|
|
-
|
|
|
|
- if (fd < 0)
|
|
|
|
- ply_trace ("could not stream output to %s: %m", stream);
|
|
|
|
- else
|
|
|
|
- ply_logger_set_output_fd (ply_logger_get_error_default (), fd);
|
|
|
|
- free (stream);
|
|
|
|
- } else {
|
|
|
|
- const char *device;
|
|
|
|
- char *file;
|
|
|
|
-
|
|
|
|
- device = state->default_tty;
|
2022-08-04 15:38:06 +02:00
|
|
|
-
|
2022-05-07 08:16:07 +02:00
|
|
|
- ply_trace ("redirecting debug output to %s", device);
|
|
|
|
-
|
|
|
|
- if (strncmp (device, "/dev/", strlen ("/dev/")) == 0)
|
|
|
|
- file = strdup (device);
|
|
|
|
- else
|
|
|
|
- asprintf (&file, "/dev/%s", device);
|
2022-08-04 15:38:06 +02:00
|
|
|
+ if (!ply_is_tracing ())
|
|
|
|
+ ply_toggle_tracing ();
|
|
|
|
|
2022-05-07 08:16:07 +02:00
|
|
|
- fd = open (file, O_RDWR | O_APPEND);
|
2022-08-04 15:38:06 +02:00
|
|
|
+ if (debug_buffer == NULL)
|
|
|
|
+ debug_buffer = ply_buffer_new ();
|
2022-05-07 08:16:07 +02:00
|
|
|
|
|
|
|
- if (fd < 0)
|
|
|
|
- ply_trace ("could not redirected debug output to %s: %m", device);
|
|
|
|
- else
|
|
|
|
- ply_logger_set_output_fd (ply_logger_get_error_default (), fd);
|
2022-08-04 15:38:06 +02:00
|
|
|
-
|
2022-05-07 08:16:07 +02:00
|
|
|
- free (file);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- ply_trace ("tracing shouldn't be enabled!");
|
2022-08-04 15:38:06 +02:00
|
|
|
- }
|
|
|
|
-
|
2022-05-07 08:16:07 +02:00
|
|
|
- if (debug_buffer != NULL) {
|
|
|
|
- if (debug_buffer_path == NULL) {
|
|
|
|
- if (state->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN ||
|
|
|
|
- state->mode == PLY_BOOT_SPLASH_MODE_REBOOT)
|
|
|
|
- debug_buffer_path = strdup (PLYMOUTH_LOG_DIRECTORY "/plymouth-shutdown-debug.log");
|
|
|
|
- else
|
|
|
|
- debug_buffer_path = strdup (PLYMOUTH_LOG_DIRECTORY "/plymouth-debug.log");
|
|
|
|
- }
|
2022-08-04 15:38:06 +02:00
|
|
|
+ char *stream = ply_kernel_command_line_get_key_value ("plymouth.debug=stream:");
|
|
|
|
+ if (stream != NULL)
|
|
|
|
+ {
|
|
|
|
+ int fd = open (stream, O_RDWR | O_NOCTTY | O_CREAT, 0600);
|
|
|
|
+ if (fd < 0)
|
|
|
|
+ ply_trace ("could not stream output to %s: %m", stream);
|
|
|
|
+ else
|
|
|
|
+ ply_logger_set_output_fd (ply_logger_get_error_default (), fd);
|
|
|
|
+ free (stream);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!debug_buffer_path)
|
|
|
|
+ debug_buffer_path = ply_kernel_command_line_get_key_value ("plymouth.debug=file:");
|
|
|
|
+
|
|
|
|
+ if (debug_buffer_path == NULL)
|
|
|
|
+ {
|
|
|
|
+ if (state->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN || state->mode == PLY_BOOT_SPLASH_MODE_REBOOT)
|
|
|
|
+ debug_buffer_path = strdup (PLYMOUTH_LOG_DIRECTORY "/plymouth-shutdown-debug.log");
|
|
|
|
+ else
|
|
|
|
+ debug_buffer_path = strdup (PLYMOUTH_LOG_DIRECTORY "/plymouth-debug.log");
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- ply_logger_add_filter (ply_logger_get_error_default (),
|
|
|
|
- (ply_logger_filter_handler_t)
|
|
|
|
- on_error_message,
|
|
|
|
- debug_buffer);
|
|
|
|
- }
|
|
|
|
+ if (debug_buffer != NULL)
|
|
|
|
+ {
|
|
|
|
+ ply_logger_add_filter (ply_logger_get_error_default (),
|
|
|
|
+ (ply_logger_filter_handler_t) on_error_message,
|
|
|
|
+ debug_buffer);
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
@@ -2007,7 +1971,7 @@
|
2022-05-07 08:16:07 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
- check_verbosity (state);
|
|
|
|
+ initialize_debug (state);
|
|
|
|
check_logging (state);
|
|
|
|
|
|
|
|
ply_trace ("source built on %s", __DATE__);
|
2022-08-04 15:38:06 +02:00
|
|
|
@@ -2033,7 +1997,7 @@
|
2022-05-07 08:16:07 +02:00
|
|
|
const void *bytes,
|
|
|
|
size_t number_of_bytes)
|
|
|
|
{
|
|
|
|
- ply_buffer_append_bytes (debug_buffer, bytes, number_of_bytes);
|
|
|
|
+ ply_buffer_append_log_bytes (debug_buffer, bytes, number_of_bytes);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2022-08-04 15:38:06 +02:00
|
|
|
@@ -2156,7 +2120,7 @@
|
2022-05-07 08:16:07 +02:00
|
|
|
bool should_help = false;
|
|
|
|
bool no_boot_log = false;
|
|
|
|
bool no_daemon = false;
|
|
|
|
- bool debug = false;
|
|
|
|
+ bool debug = true;
|
|
|
|
bool ignore_serial_consoles = false;
|
|
|
|
bool attach_to_session;
|
|
|
|
ply_daemon_handle_t *daemon_handle = NULL;
|