|
|
|
|
@ -619,12 +619,29 @@ void on_logrotate_save(GtkWidget *self, dictionary *dict){
|
|
|
|
|
char *endscript="";
|
|
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter);
|
|
|
|
|
int matched=0;
|
|
|
|
|
int path_amount=0;
|
|
|
|
|
config_str found_paths_list=NULL;
|
|
|
|
|
int found_paths=0;
|
|
|
|
|
char *cur_check_paths;
|
|
|
|
|
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.logrotate_list),&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.logrotate_list),&iter)){
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(main_config.logrotate_list),&iter,1,&cur_check_paths,-1);
|
|
|
|
|
if (!found_paths_list) found_paths_list = yon_char_parsed_new(&found_paths,cur_check_paths,NULL);
|
|
|
|
|
else found_paths_list = yon_char_parsed_append(found_paths_list,&found_paths,cur_check_paths);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&iter)){
|
|
|
|
|
char *cur_path;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&cur_path,-1);
|
|
|
|
|
for (int i=0;i<found_paths;i++){
|
|
|
|
|
if (!strcmp(cur_path,found_paths_list[i])) matched++;
|
|
|
|
|
}
|
|
|
|
|
path_amount++;
|
|
|
|
|
paths = yon_char_unite(paths,strcmp(paths,"") ? "," : "", cur_path,NULL);
|
|
|
|
|
}
|
|
|
|
|
if(!window->paths)
|
|
|
|
|
if (matched==path_amount) return;
|
|
|
|
|
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->RotationPeriodCheck))){
|
|
|
|
|
int active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationPeriodMainCombo));
|
|
|
|
|
switch (active){
|
|
|
|
|
@ -1160,13 +1177,29 @@ void on_logrotate_remove(GtkWidget *self, logrotate_window *window){
|
|
|
|
|
|
|
|
|
|
void on_logrotate_apps_configure(GtkWidget *self, logrotate_window *window){
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(main_config.logrotate_apps_list);
|
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
|
GtkTreeIter iter,itar,itor;
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->AppsMainTree)),&model,&iter)){
|
|
|
|
|
char *paths;
|
|
|
|
|
char *name;
|
|
|
|
|
char *settings;
|
|
|
|
|
int cur_size=0;
|
|
|
|
|
int found=0;
|
|
|
|
|
gtk_list_store_append(main_config.logrotate_list,&itar);
|
|
|
|
|
gtk_tree_model_get(model,&iter,0,&name,1,&paths,2,&settings,-1);
|
|
|
|
|
config_str cur = yon_char_parse(paths,&cur_size,"\n");
|
|
|
|
|
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.logrotate_list),&itor);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.logrotate_list),&itor)){
|
|
|
|
|
char *check_paths;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(main_config.logrotate_list),&itor,1,&check_paths,-1);
|
|
|
|
|
int check_size=0;
|
|
|
|
|
config_str parsed_check = yon_char_parse(check_paths,&check_size,"\n");
|
|
|
|
|
for (int i=0;i<cur_size;i++){
|
|
|
|
|
for (int j=0;j<check_size;j++){
|
|
|
|
|
if (!strcmp(cur[i],parsed_check[j])) found ++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (cur_size==found) return;
|
|
|
|
|
}
|
|
|
|
|
settings = yon_char_replace(settings,",\t",",");
|
|
|
|
|
if (settings[0]==',') yon_char_divide_search(settings,",",-1);
|
|
|
|
|
yon_config_register(LOGROTATE(yon_char_replace(paths,"\n",",")),"logging",settings);
|
|
|
|
|
|