Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#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]; }
|