diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 0f85427..9d41f61 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -677,8 +677,17 @@ int yon_config_remove_element(char *key, char *delete_target, char *divider){ if (dict){ if (yon_char_is_empty(dict->data)) return 0; char *temp = yon_char_remove_element((char*)dict->data,delete_target,divider); - if (!yon_char_is_empty((char*)dict->data)) free(dict->data); - dict->data = temp; + if (strcmp((char*)dict->data,temp)){ + if (!yon_char_is_empty((char*)dict->data)){ + free(dict->data); + } + dict->data = temp; + if (!yon_char_is_empty(temp)){ + dict->flag1 = -1; + } else { + dict->flag1 = 1; + } + } return 1; } @@ -693,12 +702,14 @@ int yon_config_remove_elements(char *key, char *delete_target, char *divider){ if (yon_char_is_empty(dict->data)) return 0; char *temp = yon_char_remove_elements((char*)dict->data,delete_target,divider); if (!yon_char_is_empty(temp)){ - if (!yon_char_is_empty((char*)dict->data)) free(dict->data); - dict->data = temp; - yon_config_set_status(key,1); + if (strcmp((char*)dict->data,temp)){ + if (!yon_char_is_empty((char*)dict->data)) free(dict->data); + dict->data = temp; + dict->flag1=1; + } } else { dict->data = NULL; - yon_config_set_status(key,-1); + dict->flag1=-1; } @@ -716,12 +727,14 @@ int yon_config_remove_elements_all(char *key, char *delete_target, char *divider if (dict&&yon_char_check_elements((char*)dict->data,delete_target,divider)){ char *temp = yon_char_remove_elements((char*)dict->data,delete_target,divider); if (!yon_char_is_empty(temp)){ - if (!yon_char_is_empty((char*)dict->data)) free(dict->data); - dict->data = temp; - yon_config_set_status(key,1); + if (strcmp((char*)dict->data,temp)){ + if (!yon_char_is_empty((char*)dict->data)) free(dict->data); + dict->data = temp; + dict->flag1=1; + } } else { dict->data = NULL; - yon_config_set_status(key,-1); + dict->flag1=-1; } diff --git a/source/libublsettings.c b/source/libublsettings.c index 539ae78..0c31352 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -169,4 +169,17 @@ int yon_launch_app_with_arguments(char *name, char *args) void yon_launch(char *command) { int ansver = system(command); +} + +#define os_name_get_command "sed -En 's/^PRETTY_NAME=[\"]*([^\"]+)[\"]*/\\1/p' /etc/os-release" +char *yon_ubl_get_os_name(){ + char *os_name = NULL; + int size; + config_str ret = yon_config_load(os_name_get_command,&size); + if (size){ + yon_char_remove_last_symbol(ret[0],'\n'); + os_name = yon_char_new(ret[0]); + yon_char_parsed_free(ret,size); + } + return os_name; } \ No newline at end of file diff --git a/source/libublsettings.h b/source/libublsettings.h index 0043b74..b82dbf6 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1587,24 +1587,34 @@ int yon_config_force_save_registered(char *path); config_str yon_config_find_keys(char *target, int *size); -/**yon_config_get_all(int *size) - * [EN] - * - * [RU] - * Возвращает массив со всеми параметрами конфига, оканчивающаяся NULL - * [size] - указатель, в который выгружается длина массива -*/ +/// @brief Get all configuration parameters list +/// @param size A pointer for returning list's size +/// @return A newly allocated list of parameter keys; config_str yon_config_get_all(int *size); +/// @brief Get all modified configuration parameters +/// @param size A pointer for returning list's size +/// @return A newly allocated list of parameter keys; config_str yon_config_get_all_modified(int *size); +/// @brief Get all configuration parameters, which were not marked as ignored. +/// @param size A pointer for returning list's size +/// @return A newly allocated list of parameter keys; config_str yon_config_get_all_no_ignored(int *size); /*Возвращает ключ из параметра, или сам параметр если ключ не был найден*/ char *yon_config_parameter_get_key(char *parameter_string); - +/// @brief Move configuration parameter to be before another parameter. Used to sort parameters for saving if a precise saving order is required +/// @param parameter Moved configuration parameter; +/// @param target Parameter to which the required parameter will be moved +/// @return TRUE if succeeded, FALSE otherwise int yon_config_move_before(char *parameter, char *target); + +/// @brief Move configuration parameter to be after another parameter. Used to sort parameters for saving if a precise saving order is required +/// @param parameter Moved configuration parameter; +/// @param target Parameter to which the required parameter will be moved +/// @return TRUE if succeeded, FALSE otherwise int yon_config_move_after(char *parameter, char *target); /// @brief Revert configuration to default values. @@ -1670,24 +1680,23 @@ int yon_config_custom_swap(yon_config_custom **target); /// @brief Apply custom config to internal config. Remove all parameters and insert custom configuration; /// @return TRUE if applied successfully, FALSE otherwise int yon_config_custom_apply(yon_config_custom **target); + // terminal-using functions -/**yon_launch_app_with_arguments(char *name, char *args) - * [EN] - * Execute [command] in separate thread; - * [RU] - * Выполнить команду [command] в отдельном потоке; -*/ -int yon_launch_app_with_arguments(char *name, char *args); +/// @brief Execute command in separate thread +/// @param command Command to execute +/// @param args arguments, adding to command, can be NULL; +/// @return returned status of command execution. +int yon_launch_app_with_arguments(char *command, char *args); -/**yon_launch(char *command) - * [EN] - * Execute command [command] - * [RU] - * Выполнить команду [command] -*/ +/// @brief Execute a command +/// @param command Command to execute void yon_launch(char *command); +/// @brief Get cuurent OS name +/// @return Newly allocated string or NULL +char *yon_ubl_get_os_name(); + // // Trash collector functions // int yon_trash_collector_append(void *pointer, char group_key);