Journald settings saving

pull/2/head
Ivan Yartsev 2 years ago
parent ef6504ce84
commit 850cac908c

@ -1,4 +1,4 @@
journald;Системный журнал событий;systemctl start;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set config SERVICESSTART+=systemd-journald.service;ubconfig set config SERVICESSTART-=systemd-journald.service;systemctl status systemd-journald.service journald;Системный журнал событий;systemctl start;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set config SERVICESSTART+=systemd-journald.service;ubconfig set config SERVICESSTART-=systemd-journald.service;systemctl status systemd-journald.service
logrotate;Служба ротации системных журналов событий;systemctl start logrotate.service;systemctl stop logrotate.service;ubconfig set config SERVICESSTART+=logrotate.service;ubconfig set config SERVICESSTART-=logrotate.service;systemctl status logrotate.service logrotate;Служба ротации системных журналов событий;systemctl start logrotate.service;systemctl stop logrotate.service;ubconfig set config SERVICESSTART+=logrotate.service;ubconfig set config SERVICESSTART-=logrotate.service;systemctl status logrotate.service
metalog;Системный журнал событий;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service #metalog;Системный журнал событий;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service
syslog-ng;Сервис сбора сообщений системных событий активных сетевых устройств;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set config SERVICESSTART+=syslog-ng.service;ubconfig set config SERVICESSTART-=syslog-ng.service;systemctl status syslog-ng.service #syslog-ng;Сервис сбора сообщений системных событий активных сетевых устройств;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set config SERVICESSTART+=syslog-ng.service;ubconfig set config SERVICESSTART-=syslog-ng.service;systemctl status syslog-ng.service
1 journald;Системный журнал событий;systemctl start;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set config SERVICESSTART+=systemd-journald.service;ubconfig set config SERVICESSTART-=systemd-journald.service;systemctl status systemd-journald.service
2 logrotate;Служба ротации системных журналов событий;systemctl start logrotate.service;systemctl stop logrotate.service;ubconfig set config SERVICESSTART+=logrotate.service;ubconfig set config SERVICESSTART-=logrotate.service;systemctl status logrotate.service
3 metalog;Системный журнал событий;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service #metalog;Системный журнал событий;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service
4 syslog-ng;Сервис сбора сообщений системных событий активных сетевых устройств;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set config SERVICESSTART+=syslog-ng.service;ubconfig set config SERVICESSTART-=syslog-ng.service;systemctl status syslog-ng.service #syslog-ng;Сервис сбора сообщений системных событий активных сетевых устройств;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set config SERVICESSTART+=syslog-ng.service;ubconfig set config SERVICESSTART-=syslog-ng.service;systemctl status syslog-ng.service

@ -101,6 +101,28 @@ void on_about(){
gtk_widget_show(window); gtk_widget_show(window);
} }
char *yon_size_get_letter_from_int(int size){
switch (size){
case 0: return "K";
break;
case 1: return "M";
break;
case 2: return "G";
break;
}
}
int yon_size_get_int_from_letter(char size){
switch (size){
case 'K': return 0;
break;
case 'M': return 1;
break;
case 'G': return 2;
break;
}
}
//functions //functions
void yon_load_proceed(char *command){ void yon_load_proceed(char *command){
@ -481,17 +503,145 @@ void on_logrotate_tab_open(GtkWidget *self, main_window *widgets){
// Journald window // Journald window
void on_journald_open(GtkWidget *self, main_window *widgets){ void yon_combo_compress_check(GtkComboBox *self, journald_window *window){
if (gtk_combo_box_get_active(self)==3){
gtk_widget_set_sensitive(window->LogCompressionSizeCombo,1);
gtk_widget_set_sensitive(window->LogCompressionEntry,1);
} else {
gtk_widget_set_sensitive(window->LogCompressionSizeCombo,0);
gtk_widget_set_sensitive(window->LogCompressionEntry,0);
}
}
void on_journald_save(GtkWidget *self, journald_window *window){
char *storage;
int storage_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->LogStorageCombo));
switch (storage_active){
case 0: storage="auto";
break;
case 1: storage="volatile";
break;
case 2: storage="persistent";
break;
case 3: storage="none";
break;
}
char *compress;
int compress_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->LogCompressionCombo));
if (compress_active==1) compress = "yes";
else if (compress_active==2) compress = "no";
else if (compress_active==3) {
int compress_size_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->LogCompressionSizeCombo));
int compress_size = atoi(gtk_entry_get_text(GTK_ENTRY(window->LogCompressionEntry)));
compress=yon_char_from_int(compress_size);
if (compress_size==0)
compress_active=0;
switch (compress_size_active){
case 0: compress = yon_char_append(compress,"K");
break;
case 1: compress = yon_char_append(compress,"M");
break;
case 2: compress = yon_char_append(compress,"G");
break;
}
}
char *splitmode;
int splitmode_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->DivideJournalFilesCombo));
if (splitmode_active == 1) splitmode = "uid";
else if (splitmode_active == 2 ) splitmode = "none";
long interval=-1;
long amount=-1;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->LogIntervalCheck))){
interval = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->LogIntervalSpin));
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->LogIntervalAmountCheck))){
amount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->LogIntervalAmountSpin));
yon_config_register(JOURNALD("RateLimitBurst"),"logging",yon_char_from_long(amount));
}
if (amount>0)
yon_config_register(JOURNALD("RateLimitIntervalSec"),"logging",yon_char_from_long(interval));
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->LogSizeMaxCheck))){
long logssize=-1;
logssize = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->LogSizeMaxSpin));
int log_size_mod = gtk_combo_box_get_active(GTK_COMBO_BOX(window->LogSizeMaxCombo));
for (int i=0;i<log_size_mod+1;i++){
logssize=logssize*1024;
}
if (logssize>0)
yon_config_register(JOURNALD("SystemMaxUse"),"logging",yon_char_from_long(logssize));
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->RotationSizeMaxCheck))){
char * rotationMaxSize;
long maxsize = 0;
maxsize=gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->RotationSizeMaxSpin));
char *modif = yon_size_get_letter_from_int(gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationSizeMaxCombo)));
rotationMaxSize = yon_char_append(yon_char_from_long(maxsize),modif);
if (maxsize>0)
yon_config_register(JOURNALD("SystemMaxFileSize"),"logging",rotationMaxSize);
}
long storagefree;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->LogFreeSpaceCheck))){
char *storagespace;
storagefree = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->LogFreeSpaceSpin));
char *modif = yon_size_get_letter_from_int(gtk_combo_box_get_active(GTK_COMBO_BOX(window->LogFreeSpaceCombo)));
storagespace = yon_char_append(yon_char_from_long(storagefree),modif);
if (storagefree>0)
yon_config_register(JOURNALD("SystemKeepFree"),"logging",storagespace);
}
int consoleforwardactive = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RedirectCombo));
char *confor=NULL;
char *TTY=NULL;
if (consoleforwardactive == 1){
confor = "yes";
TTY = (char*)gtk_entry_get_text(GTK_ENTRY(window->RedirectTTYEntry));
if (yon_char_is_empty(TTY))
consoleforwardactive=0;
}
else if (consoleforwardactive == 2){
confor = "no";
}
int forwardempty = gtk_combo_box_get_active(GTK_COMBO_BOX(window->ForwardedTypeCombo));
yon_config_register(JOURNALD("Storage"),"logging",storage);
if (compress_active!=0)
yon_config_register(JOURNALD("Compress"),"logging",compress);
else
yon_config_remove_by_key(JOURNALD("Compress"));
if (splitmode_active!=0)
yon_config_register(JOURNALD("SplitMode"),"logging",splitmode);
else
yon_config_remove_by_key(JOURNALD("SplitMode"));
if (consoleforwardactive != 0)
yon_config_register(JOURNALD("ForwardToConsole"),"logging",confor);
else
yon_config_remove_by_key(JOURNALD("ForwardToConsole"));
if (forwardempty!=0)
yon_config_register(JOURNALD("MaxLevelConsole"),"logging",yon_char_from_int(forwardempty-1));
else
yon_config_remove_by_key(JOURNALD("MaxLevelConsole"));
on_close_subwindow(window->MainWindow);
}
journald_window *yon_journald_open(GtkWidget *self, main_window *widgets){
journald_window *window = malloc(sizeof(journald_window)); journald_window *window = malloc(sizeof(journald_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_journald_path); GtkBuilder *builder = gtk_builder_new_from_resource(glade_journald_path);
window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow"); window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton"); window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
window->LogNameLabel=yon_gtk_builder_get_widget(builder,"LogNameLabel"); window->LogNameLabel=yon_gtk_builder_get_widget(builder,"LogNameEntry");
window->LogDescriptionLabel=yon_gtk_builder_get_widget(builder,"LogDescriptionLabel"); window->LogDescriptionLabel=yon_gtk_builder_get_widget(builder,"LogDescriptionEntry");
window->LogStorageCombo=yon_gtk_builder_get_widget(builder,"LogStorageCombo"); window->LogStorageCombo=yon_gtk_builder_get_widget(builder,"LogStorageCombo");
window->LogCompressionCombo=yon_gtk_builder_get_widget(builder,"LogCompressionCombo"); window->LogCompressionCombo=yon_gtk_builder_get_widget(builder,"LogCompressionCombo");
window->LogCompressionEntry=yon_gtk_builder_get_widget(builder,"LogCompressionEntry"); window->LogCompressionEntry=yon_gtk_builder_get_widget(builder,"LogCompressionSpin");
window->LogCompressionSizeCombo=yon_gtk_builder_get_widget(builder,"LogCompressionSizeCombo"); window->LogCompressionSizeCombo=yon_gtk_builder_get_widget(builder,"LogCompressionSizeCombo");
window->DivideJournalFilesCombo=yon_gtk_builder_get_widget(builder,"DivideJournalFilesCombo"); window->DivideJournalFilesCombo=yon_gtk_builder_get_widget(builder,"DivideJournalFilesCombo");
window->LogIntervalCheck=yon_gtk_builder_get_widget(builder,"LogIntervalCheck"); window->LogIntervalCheck=yon_gtk_builder_get_widget(builder,"LogIntervalCheck");
@ -511,10 +661,10 @@ void on_journald_open(GtkWidget *self, main_window *widgets){
window->RedirectTTYEntry=yon_gtk_builder_get_widget(builder,"RedirectTTYEntry"); window->RedirectTTYEntry=yon_gtk_builder_get_widget(builder,"RedirectTTYEntry");
window->ForwardedTypeCombo=yon_gtk_builder_get_widget(builder,"ForwardedTypeCombo"); window->ForwardedTypeCombo=yon_gtk_builder_get_widget(builder,"ForwardedTypeCombo");
window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel"); window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel");
window->LowerSizeEntry=yon_gtk_builder_get_widget(builder,"LowerSizeEntry"); window->LowerSizeEntry=yon_gtk_builder_get_widget(builder,"LowerSizeSpin");
window->LowerSizeCombo=yon_gtk_builder_get_widget(builder,"LowerSizeCombo"); window->LowerSizeCombo=yon_gtk_builder_get_widget(builder,"LowerSizeCombo");
window->LowerSizeButton=yon_gtk_builder_get_widget(builder,"LowerSizeButton"); window->LowerSizeButton=yon_gtk_builder_get_widget(builder,"LowerSizeButton");
window->LowerTimeEntry=yon_gtk_builder_get_widget(builder,"LowerTimeEntry"); window->LowerTimeEntry=yon_gtk_builder_get_widget(builder,"LowerTimeSpin");
window->LowerTimeCombo=yon_gtk_builder_get_widget(builder,"LowerTimeCombo"); window->LowerTimeCombo=yon_gtk_builder_get_widget(builder,"LowerTimeCombo");
window->LowerTimeButton=yon_gtk_builder_get_widget(builder,"LowerTimeButton"); window->LowerTimeButton=yon_gtk_builder_get_widget(builder,"LowerTimeButton");
window->headerTopic=yon_gtk_builder_get_widget(builder,"headerTopic"); window->headerTopic=yon_gtk_builder_get_widget(builder,"headerTopic");
@ -522,7 +672,7 @@ void on_journald_open(GtkWidget *self, main_window *widgets){
gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_journald_save),window);
g_signal_connect(G_OBJECT(window->LogIntervalCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogIntervalSpin); g_signal_connect(G_OBJECT(window->LogIntervalCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogIntervalSpin);
g_signal_connect(G_OBJECT(window->LogIntervalCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogIntervalAmountCheck); g_signal_connect(G_OBJECT(window->LogIntervalCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogIntervalAmountCheck);
@ -539,11 +689,37 @@ void on_journald_open(GtkWidget *self, main_window *widgets){
g_signal_connect(G_OBJECT(window->RedirectCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->RedirectTTYEntry); g_signal_connect(G_OBJECT(window->RedirectCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->RedirectTTYEntry);
g_signal_connect(G_OBJECT(window->LogCompressionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogCompressionEntry); g_signal_connect(G_OBJECT(window->LogCompressionCombo),"changed",G_CALLBACK(yon_combo_compress_check),window);
g_signal_connect(G_OBJECT(window->LogCompressionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogCompressionSizeCombo); return window;
gtk_widget_show(window->MainWindow);
} }
void on_journald_open(GtkWidget *self, main_window *widgets){
journald_window *window = yon_journald_open(self,widgets);
GtkTreeIter iter;
GtkTreeModel *model;
GtkWidget *tree_view;
char *name, *description;
int name_col, desc_col;
if (self == widgets->ServicesEditButton){
model = GTK_TREE_MODEL(widgets->ServicesList);
tree_view = widgets->ServicesTree;
name_col = 2;
desc_col = 3;
} else {
model = GTK_TREE_MODEL(widgets->list);
tree_view = widgets->MainTree;
name_col = 0;
desc_col = 2;
}
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)),&model,&iter)){
gtk_tree_model_get(model,&iter,name_col,&name,desc_col,&description,-1);
gtk_entry_set_text(GTK_ENTRY(window->LogDescriptionLabel),description);
gtk_entry_set_text(GTK_ENTRY(window->LogNameLabel),name);
}
int jsize;
config_str journald_parameters = yon_config_get_all_by_key("JOURNALD[",&jsize);
gtk_widget_show(window->MainWindow);
}
// Log adding menu // Log adding menu
@ -569,7 +745,6 @@ add_log_window *on_add_open(){
gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked", G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL);
return window; return window;
} }
@ -661,7 +836,7 @@ void on_log_edit(GtkWidget *self,main_window *widgets){
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->LogrotateButton),"clicked", G_CALLBACK(on_log_edit_logrotate_settings),dict); g_signal_connect(G_OBJECT(window->LogrotateButton),"clicked", G_CALLBACK(on_log_edit_logrotate_settings),dict);
// g_signal_connect(G_OBJECT(window->MetalogButton),"clicked", G_CALLBACK(on_log),widgets); // g_signal_connect(G_OBJECT(window->MetalogButton),"clicked", G_CALLBACK(on_log),widgets);
// g_signal_connect(G_OBJECT(window->SyslogButton),"clicked", G_CALLBACK(on_journald_open),widgets); // g_signal_connect(G_OBJECT(window->SyslogButton),"clicked", G_CALLBACK(yon_journald_open),widgets);
} }
window->log_name=name; window->log_name=name;
gtk_entry_set_text(GTK_ENTRY(window->LogDescriptionEntry),description); gtk_entry_set_text(GTK_ENTRY(window->LogDescriptionEntry),description);
@ -697,6 +872,7 @@ void on_log_remove(GtkWidget *self, main_window *widgets){
// Main window // Main window
void on_service_edit(GtkWidget *self,main_window *widgets){ void on_service_edit(GtkWidget *self,main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->ServicesList); GtkTreeModel *model = GTK_TREE_MODEL(widgets->ServicesList);
GtkTreeIter iter; GtkTreeIter iter;
@ -704,7 +880,7 @@ void on_service_edit(GtkWidget *self,main_window *widgets){
char *name; char *name;
gtk_tree_model_get(model,&iter,2,&name,-1); gtk_tree_model_get(model,&iter,2,&name,-1);
if (!strcmp(name,"journald")){ if (!strcmp(name,"journald")){
on_journald_open(NULL,widgets); on_journald_open(self,widgets);
} else { } else {
on_logrotate_tab_open(NULL,widgets); on_logrotate_tab_open(NULL,widgets);
} }
@ -809,12 +985,14 @@ main_window *setup_window(){
} }
config_str services = yon_file_open(services_list_path,&service_size); config_str services = yon_file_open(services_list_path,&service_size);
for (int i=0;i<service_size;i++){ for (int i=0;i<service_size;i++){
if (services[i][0]!='#'){
int log_size; int log_size;
services[i]=yon_char_divide_search(services[i],"\n",-1); services[i]=yon_char_divide_search(services[i],"\n",-1);
config_str log = yon_char_parse(services[i],&log_size,";"); config_str log = yon_char_parse(services[i],&log_size,";");
gtk_list_store_append(widgets->ServicesList,&iter); gtk_list_store_append(widgets->ServicesList,&iter);
gtk_list_store_set(widgets->ServicesList,&iter,0,0,1,0,2,log[0],3,log[1],-1); gtk_list_store_set(widgets->ServicesList,&iter,0,0,1,0,2,log[0],3,log[1],-1);
} }
}
config_str dirs = yon_config_load(logrotate_config_command,&dirs_size); config_str dirs = yon_config_load(logrotate_config_command,&dirs_size);
for (int i=0;i<dirs_size;i++){ for (int i=0;i<dirs_size;i++){
int filesize; int filesize;

@ -36,6 +36,7 @@
#define LocalePath "/usr/share/locale" #define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-logging" #define LocaleName "ubl-settings-logging"
#define JOURNALD(key) yon_char_unite("JOURNALD[",key,"]",NULL)
#define get_journal_output_command "journalctl --no-pager" #define get_journal_output_command "journalctl --no-pager"
#define get_journal_output_since_boot_command "journalctl --no-pager -b" #define get_journal_output_since_boot_command "journalctl --no-pager -b"

@ -68,7 +68,8 @@
#define JOURNAL_DESCRIPTION_LABEL _("Description:") #define JOURNAL_DESCRIPTION_LABEL _("Description:")
#define JOURNAL_STORAGE_LABEL _("Journal storage place:") #define JOURNAL_STORAGE_LABEL _("Journal storage place:")
#define COMPRESSION_LABEL _("Use compression:") #define COMPRESSION_LABEL _("Use compression:")
#define DIVIDE_LABEL _("Divide journal files:") #define COMPRESSION_LABEL _("Use compression:")
#define DIVIDE_LABEL _("Split journal files:")
#define INTERVAL_LABEL _("Log recording journal interval:") #define INTERVAL_LABEL _("Log recording journal interval:")
#define RECORDS_COUNT_LABEL _("Records amount:") #define RECORDS_COUNT_LABEL _("Records amount:")
#define MAX_SIZE_LABEL _("Maximum size of all logs:") #define MAX_SIZE_LABEL _("Maximum size of all logs:")

@ -607,6 +607,26 @@ char *yon_char_from_int(int int_to_convert)
return ch; return ch;
} }
/**yon_char_from_long(int int_to_convert)
* [EN]
* converts int to char*.
*
* [RU]
* Конвертирует int в char*
*/
char *yon_char_from_long(long int_to_convert)
{
int i = 1;
double convert_check = (double)int_to_convert;
for (i = 1; convert_check >= 10; i++)
{
convert_check = convert_check / 10;
}
char *ch = g_malloc0(i * sizeof(char) + 1);
sprintf(ch, "%ld", int_to_convert);
return ch;
}
/**yon_char_replace(char *source, char *find, char*replace) /**yon_char_replace(char *source, char *find, char*replace)
* [EN] * [EN]
* *
@ -1161,6 +1181,20 @@ void *yon_config_get_by_key(char *key){
return NULL; return NULL;
} }
void *yon_config_get_all_by_key(char *key, int *size){
check_config{
config_str ret_data=NULL;
dictionary *dict = NULL;
for_dictionaries(dict, (dictionary*)__yon__config__strings){
if (strstr(dict->key,key)) {
if (ret_data) ret_data = yon_char_parsed_append(ret_data,size,dict->key);
else ret_data = yon_char_parsed_new(size,dict->key,NULL);
}
}
return ret_data;
}
}
/**yon_config_get_key_by_data(char *data) /**yon_config_get_key_by_data(char *data)
* [EN] * [EN]
* *
@ -1926,11 +1960,11 @@ void yon_gtk_widget_set_sensitive_from_toggle_button_inversed(GtkToggleButton *t
} }
void yon_gtk_widget_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){ void yon_gtk_widget_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){
gtk_widget_set_sensitive(target,gtk_combo_box_get_active(toggle)>=0 ? 1 : 0); gtk_widget_set_sensitive(target,gtk_combo_box_get_active(toggle)>0 ? 1 : 0);
} }
void yon_gtk_widget_set_sensitive_from_combo_box_inversed(GtkComboBox *toggle, GtkWidget *target){ void yon_gtk_widget_set_sensitive_from_combo_box_inversed(GtkComboBox *toggle, GtkWidget *target){
gtk_widget_set_sensitive(target,!gtk_combo_box_get_active(toggle)>=0 ? 0 : 1); gtk_widget_set_sensitive(target,!gtk_combo_box_get_active(toggle)>0 ? 0 : 1);
} }
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path) void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path)

@ -123,6 +123,8 @@ void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(vo
#define yon_char_divide_search_self(str,find,delete_divider) {char *temp = str; str = yon_char_divide_search(str,find,delete_divider); free(temp);} #define yon_char_divide_search_self(str,find,delete_divider) {char *temp = str; str = yon_char_divide_search(str,find,delete_divider); free(temp);}
#define yon_char_is_empty(string) !string||!strcmp(string,"")
int yon_char_find_last(char *source, char find); int yon_char_find_last(char *source, char find);
char *yon_char_append(char *source, char *append); char *yon_char_append(char *source, char *append);
@ -139,6 +141,8 @@ char *yon_char_divide_search(char *source, char *dividepos, int delete_divider);
char *yon_char_from_int(int int_to_convert); char *yon_char_from_int(int int_to_convert);
char *yon_char_from_long(long int_to_convert);
char *yon_char_replace(char *source, char *find, char*replace); char *yon_char_replace(char *source, char *find, char*replace);
char **yon_char_parse(char *parameters, int *size, char *divider); char **yon_char_parse(char *parameters, int *size, char *divider);
@ -206,6 +210,8 @@ int yon_config_remove_element(char *key, char *deleted);
void *yon_config_get_by_key(char *key); void *yon_config_get_by_key(char *key);
void *yon_config_get_all_by_key(char *key, int *size);
char *yon_config_get_key_by_data(char *data); char *yon_config_get_key_by_data(char *data);
int yon_config_set(char *key, void *data); int yon_config_set(char *key, void *data);

@ -9,6 +9,16 @@
<property name="step-increment">1</property> <property name="step-increment">1</property>
<property name="page-increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkAdjustment" id="adjustment10">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment11">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment2"> <object class="GtkAdjustment" id="adjustment2">
<property name="upper">1024</property> <property name="upper">1024</property>
<property name="step-increment">1</property> <property name="step-increment">1</property>
@ -44,6 +54,11 @@
<property name="step-increment">1</property> <property name="step-increment">1</property>
<property name="page-increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkAdjustment" id="adjustment9">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -136,10 +151,11 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel" id="label1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Log/Journal:</property> <property name="label" translatable="yes">Log/Journal:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -148,15 +164,15 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="LogNameLabel"> <object class="GtkEntry" id="LogNameEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="label" translatable="yes">logname</property> <property name="text" translatable="yes">journald</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -172,10 +188,11 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel" id="label2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Description:</property> <property name="label" translatable="yes">Description:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -184,15 +201,15 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="LogDescriptionLabel"> <object class="GtkEntry" id="LogDescriptionEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="sensitive">False</property>
<property name="label" translatable="yes">logdescription</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -214,7 +231,7 @@
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label-xalign">0</property> <property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property> <property name="shadow-type">in</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
@ -255,7 +272,7 @@
<item translatable="yes">Default</item> <item translatable="yes">Default</item>
<item translatable="yes">RAM</item> <item translatable="yes">RAM</item>
<item translatable="yes">Drive</item> <item translatable="yes">Drive</item>
<item translatable="yes">Off</item> <item translatable="yes">None</item>
</items> </items>
</object> </object>
<packing> <packing>
@ -307,11 +324,10 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="LogCompressionEntry"> <object class="GtkSpinButton" id="LogCompressionSpin">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="input-purpose">number</property> <property name="adjustment">adjustment11</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -329,7 +345,6 @@
<item translatable="yes">Kb</item> <item translatable="yes">Kb</item>
<item translatable="yes">Mb</item> <item translatable="yes">Mb</item>
<item translatable="yes">Gb</item> <item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items> </items>
</object> </object>
<packing> <packing>
@ -645,6 +660,7 @@
<object class="GtkComboBoxText" id="RedirectCombo"> <object class="GtkComboBoxText" id="RedirectCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Default</item> <item translatable="yes">Default</item>
<item translatable="yes">Yes</item> <item translatable="yes">Yes</item>
@ -710,11 +726,13 @@
<object class="GtkComboBoxText" id="ForwardedTypeCombo"> <object class="GtkComboBoxText" id="ForwardedTypeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Default</item> <item translatable="yes">Default</item>
<item translatable="yes">emerg</item> <item translatable="yes">emerg</item>
<item translatable="yes">alert</item> <item translatable="yes">alert</item>
<item translatable="yes">critlerr</item> <item translatable="yes">crit</item>
<item translatable="yes">err</item>
<item translatable="yes">warning</item> <item translatable="yes">warning</item>
<item translatable="yes">notice</item> <item translatable="yes">notice</item>
<item translatable="yes">info</item> <item translatable="yes">info</item>
@ -756,7 +774,7 @@
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label-xalign">0</property> <property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property> <property name="shadow-type">in</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
@ -825,10 +843,10 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="LowerSizeEntry"> <object class="GtkSpinButton" id="LowerSizeSpin">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="input-purpose">number</property> <property name="adjustment">adjustment9</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -840,6 +858,7 @@
<object class="GtkComboBoxText" id="LowerSizeCombo"> <object class="GtkComboBoxText" id="LowerSizeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Kb</item> <item translatable="yes">Kb</item>
<item translatable="yes">Mb</item> <item translatable="yes">Mb</item>
@ -891,10 +910,10 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="LowerTimeEntry"> <object class="GtkSpinButton" id="LowerTimeSpin">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="input-purpose">number</property> <property name="adjustment">adjustment10</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -1009,4 +1028,10 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkSizeGroup">
<widgets>
<widget name="label1"/>
<widget name="label2"/>
</widgets>
</object>
</interface> </interface>

@ -775,6 +775,7 @@
<object class="GtkComboBoxText" id="ErrorProcessingCombo"> <object class="GtkComboBoxText" id="ErrorProcessingCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Output errors if log file does not exist</item> <item translatable="yes">Output errors if log file does not exist</item>
</items> </items>

@ -270,7 +270,7 @@ msgid "Use compression:"
msgstr "" msgstr ""
#: source/ubl-strings.h:71 #: source/ubl-strings.h:71
msgid "Divide journal files:" msgid "Split journal files:"
msgstr "" msgstr ""
#: source/ubl-strings.h:72 #: source/ubl-strings.h:72

@ -276,7 +276,7 @@ msgid "Use compression:"
msgstr "Использовать сжатие:" msgstr "Использовать сжатие:"
#: source/ubl-strings.h:71 #: source/ubl-strings.h:71
msgid "Divide journal files:" msgid "Split journal files:"
msgstr "Разделять файлы журнала:" msgstr "Разделять файлы журнала:"
#: source/ubl-strings.h:72 #: source/ubl-strings.h:72

Loading…
Cancel
Save