diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c index 9bcf1a6f201058be4ccda19d1a507faa98e1361a..05d3e1829be6393b17d916e92ba4858959af589a 100644 --- a/src/xpdev/ini_file.c +++ b/src/xpdev/ini_file.c @@ -442,15 +442,16 @@ BOOL iniRemoveSections(str_list_t* list, const char* prefix) } // This sorts comments too, so should not be used on human created/edited files -BOOL iniSortSections(str_list_t* list, BOOL sort_keys) +BOOL iniSortSections(str_list_t* list, const char* prefix, BOOL sort_keys) { size_t i; - str_list_t root_keys; + str_list_t root_keys = NULL; str_list_t new_list; str_list_t keys; - str_list_t section_list = iniGetSectionList(*list, /* prefix */NULL); + str_list_t section_list = iniGetSectionList(*list, prefix); - root_keys = iniGetSection(*list, ROOT_SECTION); + if(prefix == NULL) + root_keys = iniGetSection(*list, ROOT_SECTION); if(section_list == NULL && root_keys == NULL) return TRUE; @@ -459,7 +460,12 @@ BOOL iniSortSections(str_list_t* list, BOOL sort_keys) if(section_list != NULL) strListSortAlphaCase(section_list); - new_list = strListInit(); + if(prefix == NULL) + new_list = strListInit(); + else { + new_list = strListDup(*list); + iniRemoveSections(&new_list, prefix); + } if(new_list == NULL) { strListFree(§ion_list); strListFree(&root_keys); @@ -2465,7 +2471,7 @@ void main(int argc, char** argv) continue; } if((list=iniReadFile(fp)) != NULL) { - iniSortSections(&list, TRUE); + iniSortSections(&list, NULL, TRUE); for(size_t j = 0; list[j] != NULL; j++) printf("%s\n", list[j]); strListFree(&list); diff --git a/src/xpdev/ini_file.h b/src/xpdev/ini_file.h index 3d5a86fe16b4fb47ae4972ff02980e2df05b4e59..cdeb48447c109920b0f91022fb4c564b66030681 100644 --- a/src/xpdev/ini_file.h +++ b/src/xpdev/ini_file.h @@ -276,7 +276,7 @@ DLLEXPORT BOOL iniRemoveValue(str_list_t*, const char* section, const char* k DLLEXPORT BOOL iniRemoveSection(str_list_t*, const char* section); DLLEXPORT BOOL iniRemoveSections(str_list_t*, const char* prefix); DLLEXPORT BOOL iniRenameSection(str_list_t*, const char* section, const char* newname); -DLLEXPORT BOOL iniSortSections(str_list_t*, BOOL sort_keys); +DLLEXPORT BOOL iniSortSections(str_list_t*, const char* prefix, BOOL sort_keys); DLLEXPORT BOOL iniHasInclude(const str_list_t);