Skip to content
Snippets Groups Projects
Commit dd9c4607 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

De-duplicate the lists returned by iniGet/ReadSectionList()

I noticed a duplicate area name (AGN_MODS) in a filefix %LIST response
from my FidoNet hub that's running TickIt/TickFix, and I thought to myself:
Self, that shouldn't be possible. But alas, if one does have duplicate
sections in a .ini file (e.g. tickit.ini), the iniGet/ReadSectionList()
function would indeed return duplicate items in the list. Since the second
section with the same name is not actually accessible, it shouldn't be counted
as a valid section and thus not returned as part of the section list. Section
names are not case sensitive, so the names are compared case-insensitively for
de-duplication purposes too.
parent 27f0aa87
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #1462 passed
...@@ -1086,6 +1086,8 @@ str_list_t iniReadSectionList(FILE* fp, const char* prefix) ...@@ -1086,6 +1086,8 @@ str_list_t iniReadSectionList(FILE* fp, const char* prefix)
if(prefix!=NULL) if(prefix!=NULL)
if(strnicmp(p,prefix,strlen(prefix))!=0) if(strnicmp(p,prefix,strlen(prefix))!=0)
continue; continue;
if(strListFind(lp, p, /* case_sensitive */FALSE) >= 0)
continue;
if(strListAppend(&lp,p,items++)==NULL) if(strListAppend(&lp,p,items++)==NULL)
break; break;
} }
...@@ -1115,6 +1117,8 @@ str_list_t iniGetSectionList(str_list_t list, const char* prefix) ...@@ -1115,6 +1117,8 @@ str_list_t iniGetSectionList(str_list_t list, const char* prefix)
if(prefix!=NULL) if(prefix!=NULL)
if(strnicmp(p,prefix,strlen(prefix))!=0) if(strnicmp(p,prefix,strlen(prefix))!=0)
continue; continue;
if(strListFind(lp, p, /* case_sensitive */FALSE) >= 0)
continue;
if(strListAppend(&lp,p,items++)==NULL) if(strListAppend(&lp,p,items++)==NULL)
break; break;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment