|
|
@ -267,13 +267,34 @@ void on_inspector_jornald_read_async(inspector_window *window){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
char output[4092];
|
|
|
|
char output[4092];
|
|
|
|
GtkTreeIter iter;
|
|
|
|
GtkTreeIter iter;
|
|
|
|
// while (1){
|
|
|
|
main_config.remove_thread=0;
|
|
|
|
// if(fgets(output,4092,fl)){
|
|
|
|
while (main_config.remove_thread==0){
|
|
|
|
// gtk_list_store_append(window->list, &iter);
|
|
|
|
if(fgets(output,4092,fl)){
|
|
|
|
|
|
|
|
if(strcmp(output,"")){
|
|
|
|
|
|
|
|
gtk_list_store_append(window->list, &iter);
|
|
|
|
|
|
|
|
|
|
|
|
// gtk_list_store_set(window->list,&iter,0,&);
|
|
|
|
char *identifier="";
|
|
|
|
// }
|
|
|
|
char *temp = yon_char_new(output);
|
|
|
|
// }
|
|
|
|
char *log=temp;
|
|
|
|
|
|
|
|
if (strstr(log,"\033[H\033[2J\033[3"))
|
|
|
|
|
|
|
|
yon_char_divide(log,strlen("\033[H\033[2J\033[3"));
|
|
|
|
|
|
|
|
log = yon_char_divide_search(log,"\n",-1);
|
|
|
|
|
|
|
|
if (window->last_mode<5){
|
|
|
|
|
|
|
|
identifier = log;
|
|
|
|
|
|
|
|
log=strstr(log,":")+1;
|
|
|
|
|
|
|
|
log=strstr(log,":")+1;
|
|
|
|
|
|
|
|
log=strstr(log,":")+1;
|
|
|
|
|
|
|
|
char *iden = yon_char_new(identifier);
|
|
|
|
|
|
|
|
identifier=yon_char_divide(iden,strlen(identifier)-strlen(log)-1);
|
|
|
|
|
|
|
|
free(iden);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_list_store_set(window->list,&iter,0,identifier,1,log,-1);
|
|
|
|
|
|
|
|
free(temp);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// g_usleep(100);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_inspector_update(GtkWidget *self, inspector_window *window){
|
|
|
|
void on_inspector_update(GtkWidget *self, inspector_window *window){
|
|
|
@ -282,64 +303,42 @@ void on_inspector_update(GtkWidget *self, inspector_window *window){
|
|
|
|
config_str output;
|
|
|
|
config_str output;
|
|
|
|
if (!strcmp(window->journal_name,"journald")){
|
|
|
|
if (!strcmp(window->journal_name,"journald")){
|
|
|
|
GtkWidget *terminal = (GtkWidget*)window->terminals->first->data;
|
|
|
|
GtkWidget *terminal = (GtkWidget*)window->terminals->first->data;
|
|
|
|
if (self==window->UpdateButton){
|
|
|
|
gtk_widget_hide(window->LoggingNotebook);
|
|
|
|
switch(window->last_mode){
|
|
|
|
gtk_widget_show(gtk_widget_get_parent(window->JournaldTree));
|
|
|
|
case 0:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_since_boot_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_followed_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_kernel_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_prioritied_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_all_boots_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_all_units_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 7:
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_init_tree_command,NULL,NULL);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (self==window->ShowSinceBootButton){
|
|
|
|
if (self==window->ShowSinceBootButton){
|
|
|
|
window->last_mode=1;
|
|
|
|
window->last_mode=1;
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_since_boot_command,NULL,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (self==window->NewMessagesButton){
|
|
|
|
if (self==window->NewMessagesButton){
|
|
|
|
window->last_mode=2;
|
|
|
|
window->last_mode=2;
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_followed_command,NULL,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (self==window->ShowKernelButton){
|
|
|
|
if (self==window->ShowKernelButton){
|
|
|
|
window->last_mode=3;
|
|
|
|
window->last_mode=3;
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_kernel_command,NULL,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (self==window->ShowPriorityButton){
|
|
|
|
if (self==window->ShowPriorityButton){
|
|
|
|
window->last_mode=4;
|
|
|
|
window->last_mode=4;
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_output_prioritied_command,NULL,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (self==window->ShowAllBootsButton){
|
|
|
|
if (self==window->ShowAllBootsButton){
|
|
|
|
window->last_mode=5;
|
|
|
|
window->last_mode=5;
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_all_boots_command,NULL,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (self==window->ShowAllUnitsButton){
|
|
|
|
if (self==window->ShowAllUnitsButton){
|
|
|
|
window->last_mode=6;
|
|
|
|
window->last_mode=6;
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_all_units_command,NULL,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (self==window->ShowInitTreeButton){
|
|
|
|
if (self==window->ShowInitTreeButton){
|
|
|
|
window->last_mode=7;
|
|
|
|
window->last_mode=7;
|
|
|
|
yon_terminal_integrated_start(terminal, get_journal_init_tree_command,NULL,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
main_config.remove_thread++;
|
|
|
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(window->JournaldTree),GTK_TREE_MODEL(window->list));
|
|
|
|
|
|
|
|
gtk_list_store_clear(window->list);
|
|
|
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(window->JournaldTree),GTK_TREE_MODEL(window->list));
|
|
|
|
|
|
|
|
if (main_config.inspector_thread){
|
|
|
|
|
|
|
|
main_config.remove_thread=1;
|
|
|
|
|
|
|
|
pthread_join(main_config.inspector_thread,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pthread_create(&main_config.inspector_thread, NULL, (void *)on_inspector_jornald_read_async, window);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
if (window->terminals){
|
|
|
|
if (window->terminals){
|
|
|
|
|
|
|
|
gtk_widget_hide(gtk_widget_get_parent(window->JournaldTree));
|
|
|
|
|
|
|
|
gtk_widget_show(window->LoggingNotebook);
|
|
|
|
dictionary *dict=NULL;
|
|
|
|
dictionary *dict=NULL;
|
|
|
|
for_dictionaries (dict,window->terminals){
|
|
|
|
for_dictionaries (dict,window->terminals){
|
|
|
|
GtkWidget *terminal = (GtkWidget*)dict->data;
|
|
|
|
GtkWidget *terminal = (GtkWidget*)dict->data;
|
|
|
@ -381,6 +380,10 @@ GtkWidget *yon_inspector_add_terminal(inspector_window *window,char *page_name,i
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_inspector_close(GtkWidget *self){
|
|
|
|
|
|
|
|
main_config.remove_thread++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_inspector_open(GtkWidget *self, main_window *widgets){
|
|
|
|
void on_inspector_open(GtkWidget *self, main_window *widgets){
|
|
|
|
inspector_window *window = malloc(sizeof(inspector_window));
|
|
|
|
inspector_window *window = malloc(sizeof(inspector_window));
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_inspector_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_inspector_path);
|
|
|
@ -395,6 +398,8 @@ void on_inspector_open(GtkWidget *self, main_window *widgets){
|
|
|
|
window->LoggingNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
|
|
|
|
window->LoggingNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
|
|
|
|
window->UpdateButton=yon_gtk_builder_get_widget(builder,"UpdateButton");
|
|
|
|
window->UpdateButton=yon_gtk_builder_get_widget(builder,"UpdateButton");
|
|
|
|
window->JournalActionsBox=yon_gtk_builder_get_widget(builder,"JournalActionsBox");
|
|
|
|
window->JournalActionsBox=yon_gtk_builder_get_widget(builder,"JournalActionsBox");
|
|
|
|
|
|
|
|
window->JournaldTree=yon_gtk_builder_get_widget(builder,"JournaldTree");
|
|
|
|
|
|
|
|
window->list=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
|
|
|
|
yon_window_config_custom_window_setup(GTK_WINDOW(window->MainWindow),"InspectorWindow");
|
|
|
|
yon_window_config_custom_window_setup(GTK_WINDOW(window->MainWindow),"InspectorWindow");
|
|
|
|
gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL);
|
|
|
|
gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL);
|
|
|
|
gtk_window_set_transient_for(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window));
|
|
|
|
gtk_window_set_transient_for(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window));
|
|
|
@ -402,6 +407,7 @@ void on_inspector_open(GtkWidget *self, main_window *widgets){
|
|
|
|
GtkTreeIter iter;
|
|
|
|
GtkTreeIter iter;
|
|
|
|
char *name;
|
|
|
|
char *name;
|
|
|
|
char *paths;
|
|
|
|
char *paths;
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->MainWindow),"destroy", G_CALLBACK(on_inspector_close),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->UpdateButton),"clicked", G_CALLBACK(on_inspector_update),window);
|
|
|
|
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->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->NewMessagesButton),"clicked", G_CALLBACK(on_inspector_update),window);
|
|
|
@ -2262,6 +2268,7 @@ void config_init(){
|
|
|
|
main_config.lock_save_local=0;
|
|
|
|
main_config.lock_save_local=0;
|
|
|
|
main_config.logrotate_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
|
|
|
|
main_config.logrotate_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
|
|
|
|
main_config.logrotate_apps_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
|
|
|
|
main_config.logrotate_apps_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
|
|
|
|
|
|
|
|
main_config.remove_thread=-1;
|
|
|
|
|
|
|
|
|
|
|
|
PolkitSubject *subject = NULL;
|
|
|
|
PolkitSubject *subject = NULL;
|
|
|
|
|
|
|
|
|
|
|
|