Commit dd9c4607 authored by Rob Swindell's avatar Rob Swindell 💬
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
Pipeline #1462 passed with stage
in 10 minutes and 11 seconds
......@@ -1086,6 +1086,8 @@ str_list_t iniReadSectionList(FILE* fp, const char* prefix)
if(prefix!=NULL)
if(strnicmp(p,prefix,strlen(prefix))!=0)
continue;
if(strListFind(lp, p, /* case_sensitive */FALSE) >= 0)
continue;
if(strListAppend(&lp,p,items++)==NULL)
break;
}
......@@ -1115,6 +1117,8 @@ str_list_t iniGetSectionList(str_list_t list, const char* prefix)
if(prefix!=NULL)
if(strnicmp(p,prefix,strlen(prefix))!=0)
continue;
if(strListFind(lp, p, /* case_sensitive */FALSE) >= 0)
continue;
if(strListAppend(&lp,p,items++)==NULL)
break;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment