From dfe12c5e20da45528567712fcc93a763a2b682ac Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 28 Nov 2025 18:10:20 +0600 Subject: [PATCH] Added new configuration functions --- source/libublsettings-config.c | 44 ++++++++++++++++++++++++++++++++++ source/libublsettings.h | 4 ++++ 2 files changed, 48 insertions(+) diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 2b0ff55..964fbba 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -1508,4 +1508,48 @@ char *yon_config_parameter_get_key(char *parameter_string){ yon_char_remove_last_symbol(key,']'); } return key; +} + +int yon_config_move_before(char *parameter, char *target){ + dictionary *parameter_dict = yon_dictionary_get((dictionary**)&__yon__config__strings,parameter); + dictionary *target_dict = yon_dictionary_get((dictionary**)&__yon__config__strings,target); + if (!parameter_dict||!target_dict) return 0; + dictionary *pnext = parameter_dict->next; + dictionary *pprev = parameter_dict->prev; + + if (pnext) + pnext->prev = pprev; + if (pprev) + pprev->next = pnext; + + dictionary *tprev = target_dict->prev; + + if (tprev) + tprev->next = parameter_dict; + target_dict->prev = parameter_dict; + parameter_dict->next=target_dict; + parameter_dict->prev=tprev; + return 1; +} + +int yon_config_move_after(char *parameter, char *target){ + dictionary *parameter_dict = yon_dictionary_get((dictionary**)&__yon__config__strings,parameter); + dictionary *target_dict = yon_dictionary_get((dictionary**)&__yon__config__strings,target); + if (!parameter_dict||!target_dict) return 0; + dictionary *pnext = parameter_dict->next; + dictionary *pprev = parameter_dict->prev; + + if (pnext) + pnext->prev = pprev; + if (pprev) + pprev->next = pnext; + + dictionary *tnext = target_dict->next; + + if (tnext) + tnext->prev = parameter_dict; + target_dict->next = parameter_dict; + parameter_dict->next=tnext; + parameter_dict->prev=target_dict; + return 1; } \ No newline at end of file diff --git a/source/libublsettings.h b/source/libublsettings.h index 5364a98..344a4d0 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1464,6 +1464,10 @@ config_str yon_config_get_all_no_ignored(int *size); /*Возвращает ключ из параметра, или сам параметр если ключ не был найден*/ char *yon_config_parameter_get_key(char *parameter_string); + +int yon_config_move_before(char *parameter, char *target); +int yon_config_move_after(char *parameter, char *target); + // terminal-using functions /**yon_launch_app_with_arguments(char *name, char *args)