73 lines
1.6 KiB
C++
73 lines
1.6 KiB
C++
|
#include "stdafx.h"
|
||
|
#include "mon.h"
|
||
|
|
||
|
CCommonSection gCommonSections;
|
||
|
|
||
|
int compareCommonSection(LPCOMMON_SECTION p1, LPCOMMON_SECTION p2)
|
||
|
{
|
||
|
return (stricmp(p1->sectName, p2->sectName));
|
||
|
}
|
||
|
|
||
|
CCommonSection::CCommonSection()
|
||
|
{
|
||
|
m_sections.RemoveAll();
|
||
|
}
|
||
|
|
||
|
CCommonSection::~CCommonSection()
|
||
|
{
|
||
|
ClearAll();
|
||
|
}
|
||
|
VOID CCommonSection::ClearAll(VOID)
|
||
|
{
|
||
|
for (int i = 0; i < m_sections.GetSize(); i++)
|
||
|
delete((LPCOMMON_SECTION)m_sections[i]);
|
||
|
m_sections.RemoveAll();
|
||
|
}
|
||
|
|
||
|
LPCOMMON_SECTION CCommonSection::AddOneSection(LPSTR sectName, LPSTR contents)
|
||
|
{
|
||
|
LPCOMMON_SECTION pNewSection = new(COMMON_SECTION);
|
||
|
if (pNewSection == NULL)
|
||
|
{
|
||
|
ASSERT(FALSE);
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
strcpy(pNewSection->sectName, sectName);
|
||
|
strcpy(pNewSection->contents, contents);
|
||
|
LPSTR pEndSectName = pNewSection->sectName + lstrlen(pNewSection->sectName);
|
||
|
int dupSectCount = 1;
|
||
|
|
||
|
int comp = 1;
|
||
|
for (int i = 0; i < m_sections.GetSize(); i++)
|
||
|
{
|
||
|
LPCOMMON_SECTION pSection = (LPCOMMON_SECTION)m_sections[i];
|
||
|
comp = compareCommonSection(pNewSection, pSection);
|
||
|
|
||
|
if (comp > 0)
|
||
|
continue;
|
||
|
else if (comp < 0)
|
||
|
break;
|
||
|
|
||
|
if (stricmp(pNewSection->contents, pSection->contents) == 0)
|
||
|
break;
|
||
|
///////////////////////////////////////////////////////////////
|
||
|
// Come here, we found a section with same section name but
|
||
|
// different contents. Need rename the section Name to make
|
||
|
// it distinct
|
||
|
sprintf(pEndSectName, "%c", 'A'+dupSectCount);
|
||
|
dupSectCount++;
|
||
|
}
|
||
|
if (comp == 0)
|
||
|
{
|
||
|
delete pNewSection;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_sections.InsertAt(i, (LPVOID)pNewSection);
|
||
|
}
|
||
|
|
||
|
return (LPCOMMON_SECTION)m_sections[i];
|
||
|
}
|
||
|
|