From c68cbb1c267d71dea12c8be1b6a3d979012709cd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 26 Oct 2023 17:51:48 +0600 Subject: [PATCH] Log inspector fix --- source/ubl-settings-logging.c | 76 +++++++++++++++++++++-------------- source/ubl-settings-logging.h | 4 +- 2 files changed, 48 insertions(+), 32 deletions(-) diff --git a/source/ubl-settings-logging.c b/source/ubl-settings-logging.c index cd8a2c7..5b01d01 100644 --- a/source/ubl-settings-logging.c +++ b/source/ubl-settings-logging.c @@ -205,37 +205,48 @@ void on_inspector_update(GtkWidget *self, inspector_window *window){ gtk_text_buffer_get_bounds(window->textbuffer1,&titer,&titerend); gtk_text_buffer_delete(window->textbuffer1,&titer,&titerend); config_str output; - if (self==window->UpdateButton){ - switch(window->last_mode){ - case 0: output = yon_config_load(get_journal_output_command, &size); - break; - case 1: output = yon_config_load(get_journal_output_since_boot_command, &size); - break; - case 2: output = yon_config_load(get_journal_output_followed_command, &size); - break; - case 3: output = yon_config_load(get_journal_output_kernel_command, &size); - break; - case 4: output = yon_config_load(get_journal_output_prioritied_command, &size); - break; + if (!strcmp(window->journal_name,"journald")){ + if (self==window->UpdateButton){ + switch(window->last_mode){ + case 0: output = yon_config_load(get_journal_output_command, &size); + break; + case 1: output = yon_config_load(get_journal_output_since_boot_command, &size); + break; + case 2: output = yon_config_load(get_journal_output_followed_command, &size); + break; + case 3: output = yon_config_load(get_journal_output_kernel_command, &size); + break; + case 4: output = yon_config_load(get_journal_output_prioritied_command, &size); + break; + } } - } - if (self==window->ShowSinceBootButton){ - window->last_mode=1; - output = yon_config_load(get_journal_output_since_boot_command, &size); - } - if (self==window->NewMessagesButton){ - window->last_mode=2; - output = yon_config_load(get_journal_output_followed_command, &size); - } - if (self==window->ShowKernelButton){ - window->last_mode=3; - output = yon_config_load(get_journal_output_kernel_command, &size); - } - if (self==window->ShowPriorityButton){ - window->last_mode=4; - output = yon_config_load(get_journal_output_prioritied_command, &size); - } - if (output){ + if (self==window->ShowSinceBootButton){ + window->last_mode=1; + output = yon_config_load(get_journal_output_since_boot_command, &size); + } + if (self==window->NewMessagesButton){ + window->last_mode=2; + output = yon_config_load(get_journal_output_followed_command, &size); + } + if (self==window->ShowKernelButton){ + window->last_mode=3; + output = yon_config_load(get_journal_output_kernel_command, &size); + } + if (self==window->ShowPriorityButton){ + window->last_mode=4; + output = yon_config_load(get_journal_output_prioritied_command, &size); + } + if (output){ + for (int i=0;itextbuffer1,&titer); + gtk_text_buffer_insert(window->textbuffer1,&titer,output[i],-1); + } + gtk_text_buffer_get_end_iter(window->textbuffer1,&titer); + gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(window->LoggingTextView),&titer,0.25,0,1,0); + } + } else { + window->journal_paths = yon_char_replace(window->journal_paths,"\n"," "); + output = yon_config_load(yon_char_unite("cat ",window->journal_paths,NULL),&size); for (int i=0;itextbuffer1,&titer); gtk_text_buffer_insert(window->textbuffer1,&titer,output[i],-1); @@ -261,19 +272,22 @@ void on_inspector_open(GtkWidget *self, main_window *widgets){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->list); GtkTreeIter iter; char *name; + char *paths; g_signal_connect(G_OBJECT(window->UpdateButton),"clicked", G_CALLBACK(on_inspector_update),window); g_signal_connect(G_OBJECT(window->ShowKernelButton),"clicked", G_CALLBACK(on_inspector_update),window); g_signal_connect(G_OBJECT(window->NewMessagesButton),"clicked", G_CALLBACK(on_inspector_update),window); g_signal_connect(G_OBJECT(window->ShowPriorityButton),"clicked", G_CALLBACK(on_inspector_update),window); g_signal_connect(G_OBJECT(window->ShowSinceBootButton),"clicked", G_CALLBACK(on_inspector_update),window); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){ - gtk_tree_model_get(model,&iter,0,&name,-1); + gtk_tree_model_get(model,&iter,0,&name,1,&paths,-1); if (strcmp(name,"journald")){ window->last_mode=-1; gtk_widget_hide(window->JournalActionsBox); } else { window->last_mode=0; } + window->journal_name=name; + window->journal_paths=paths; on_inspector_update(window->UpdateButton,window); gtk_widget_show(window->MainWindow); } diff --git a/source/ubl-settings-logging.h b/source/ubl-settings-logging.h index 07d497e..b560b95 100644 --- a/source/ubl-settings-logging.h +++ b/source/ubl-settings-logging.h @@ -45,7 +45,7 @@ #define get_journal_output_kernel_command "journalctl --no-pager -k" #define get_journal_output_prioritied_command "journalctl --no-pager -p err..alert" -#define yon_add_space_if_exists(string) yon_char_is_empty(string) ? "" : yon_char_append(" ",string) +#define yon_add_space_if_exists(string) yon_char_is_empty(string) ? "" : yon_char_append(",",string) typedef char* string; string version_application; @@ -187,6 +187,8 @@ GtkWidget *UpdateButton; GtkWidget *LoggingTextView; GtkWidget *JournalActionsBox; int last_mode; +char *journal_name; +char *journal_paths; } inspector_window;