mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 23:01:50 +00:00
- use a proper FString to hold the name of config sections instead of a buffer tacked onto the actual structure. This is necessary if we want to be able to rename a section.
This commit is contained in:
parent
b300cfaf62
commit
cac634567b
2 changed files with 8 additions and 11 deletions
|
@ -138,7 +138,7 @@ FConfigFile &FConfigFile::operator = (const FConfigFile &other)
|
||||||
while (fromsection != NULL)
|
while (fromsection != NULL)
|
||||||
{
|
{
|
||||||
fromentry = fromsection->RootEntry;
|
fromentry = fromsection->RootEntry;
|
||||||
tosection = NewConfigSection (fromsection->Name);
|
tosection = NewConfigSection (fromsection->SectionName);
|
||||||
while (fromentry != NULL)
|
while (fromentry != NULL)
|
||||||
{
|
{
|
||||||
NewConfigEntry (tosection, fromentry->Key, fromentry->Value);
|
NewConfigEntry (tosection, fromentry->Key, fromentry->Value);
|
||||||
|
@ -309,7 +309,7 @@ const char *FConfigFile::GetCurrentSection () const
|
||||||
{
|
{
|
||||||
if (CurrentSection != NULL)
|
if (CurrentSection != NULL)
|
||||||
{
|
{
|
||||||
return CurrentSection->Name;
|
return CurrentSection->SectionName.GetChars();
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -506,7 +506,7 @@ FConfigFile::FConfigSection *FConfigFile::FindSection (const char *name) const
|
||||||
{
|
{
|
||||||
FConfigSection *section = Sections;
|
FConfigSection *section = Sections;
|
||||||
|
|
||||||
while (section != NULL && stricmp (section->Name, name) != 0)
|
while (section != NULL && section->SectionName.CompareNoCase(name) != 0)
|
||||||
{
|
{
|
||||||
section = section->Next;
|
section = section->Next;
|
||||||
}
|
}
|
||||||
|
@ -540,19 +540,15 @@ FConfigFile::FConfigEntry *FConfigFile::FindEntry (
|
||||||
FConfigFile::FConfigSection *FConfigFile::NewConfigSection (const char *name)
|
FConfigFile::FConfigSection *FConfigFile::NewConfigSection (const char *name)
|
||||||
{
|
{
|
||||||
FConfigSection *section;
|
FConfigSection *section;
|
||||||
char *memblock;
|
|
||||||
|
|
||||||
section = FindSection (name);
|
section = FindSection (name);
|
||||||
if (section == NULL)
|
if (section == NULL)
|
||||||
{
|
{
|
||||||
size_t namelen = strlen (name);
|
section = new FConfigSection;
|
||||||
memblock = new char[sizeof(*section)+namelen];
|
|
||||||
section = ::new(memblock) FConfigSection;
|
|
||||||
section->RootEntry = NULL;
|
section->RootEntry = NULL;
|
||||||
section->LastEntryPtr = §ion->RootEntry;
|
section->LastEntryPtr = §ion->RootEntry;
|
||||||
section->Next = NULL;
|
section->Next = NULL;
|
||||||
memcpy (section->Name, name, namelen);
|
section->SectionName = name;
|
||||||
section->Name[namelen] = 0;
|
|
||||||
*LastSectionPtr = section;
|
*LastSectionPtr = section;
|
||||||
LastSectionPtr = §ion->Next;
|
LastSectionPtr = §ion->Next;
|
||||||
}
|
}
|
||||||
|
@ -777,7 +773,7 @@ bool FConfigFile::WriteConfigFile () const
|
||||||
{
|
{
|
||||||
fputs (section->Note.GetChars(), file);
|
fputs (section->Note.GetChars(), file);
|
||||||
}
|
}
|
||||||
fprintf (file, "[%s]\n", section->Name);
|
fprintf (file, "[%s]\n", section->SectionName.GetChars());
|
||||||
while (entry != NULL)
|
while (entry != NULL)
|
||||||
{
|
{
|
||||||
if (strpbrk(entry->Value, "\r\n") == NULL)
|
if (strpbrk(entry->Value, "\r\n") == NULL)
|
||||||
|
|
|
@ -93,11 +93,12 @@ private:
|
||||||
};
|
};
|
||||||
struct FConfigSection
|
struct FConfigSection
|
||||||
{
|
{
|
||||||
|
FString SectionName;
|
||||||
FConfigEntry *RootEntry;
|
FConfigEntry *RootEntry;
|
||||||
FConfigEntry **LastEntryPtr;
|
FConfigEntry **LastEntryPtr;
|
||||||
FConfigSection *Next;
|
FConfigSection *Next;
|
||||||
FString Note;
|
FString Note;
|
||||||
char Name[1]; // + length of name
|
//char Name[1]; // + length of name
|
||||||
};
|
};
|
||||||
|
|
||||||
FConfigSection *Sections;
|
FConfigSection *Sections;
|
||||||
|
|
Loading…
Reference in a new issue