-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhacklist.cpp
More file actions
110 lines (100 loc) · 2.12 KB
/
hacklist.cpp
File metadata and controls
110 lines (100 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* Diablo Hacking Utility
*
* Copyright (C)1997 Trojan Consulting Ltd.
*
* andy@trojanco.demon.co.uk
*
* $Header: /diabhack/hacklist.cpp 1 2/03/99 21:21 Andy $
*/
#include "diabhack.h"
CHackList::CHackList()
{
m_pRootHack = NULL;
}
CHackList::~CHackList()
{
removeAll();
}
void
CHackList::add(CHack *pHack)
{
if (m_pRootHack == NULL) {
m_pRootHack = pHack;
} else {
CHack *pListHack = m_pRootHack;
while (pListHack->next() != NULL) {
pListHack = pListHack->next();
}
pListHack->next(pHack);
}
pHack->next(NULL);
}
CHack *
CHackList::find(LPCSTR pszDesc)
{
CHack *pHack = m_pRootHack;
while (pHack != NULL) {
if (stricmp(pHack->desc(), pszDesc) == 0) {
break;
}
pHack = pHack->next();
}
return pHack;
}
CHack *
CHackList::find(DWORD dwOffset, DWORD dwLen)
{
CHack *pHack = m_pRootHack;
while (pHack != NULL) {
if (pHack->findNode(dwOffset, dwLen) != NULL) {
break;
}
pHack = pHack->next();
}
return pHack;
}
void
CHackList::remove(CHack *pHack)
{
CHack *pListHack = m_pRootHack;
CHack *pLast = NULL;
while (pListHack != NULL) {
if (pListHack == pHack) {
if (pLast != NULL) {
// Remove node from singly-linked list
pLast->next(pListHack->next());
} else {
// Must be root node
m_pRootHack = pListHack->next();
}
delete pListHack;
return;
}
pLast = pListHack;
pListHack = pListHack->next();
}
}
void
CHackList::removeAll()
{
while (m_pRootHack != NULL) {
remove(m_pRootHack);
}
}
#ifdef _DEBUG
void
CHackList::dump()
{
char szBuffer[16384];
OutputDebugString("**** Starting dump of hacks ****\n");
CHack *pHack = m_pRootHack;
while (pHack != NULL) {
szBuffer[0] = '\0';
pHack->dumpContents(szBuffer);
OutputDebugString(szBuffer);
pHack = pHack->next();
}
OutputDebugString("**** Ending dump of hacks ****\n");
}
#endif // _DEBUG