forked from EgeBalci/Zeus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig0.h
90 lines (72 loc) · 2.56 KB
/
config0.h
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
#pragma once
/*
Ñòàðûé ôîðìàò ôàéëà êîíèãóðàöèè, áûë âíåñåí â xlib ïî ïðè÷èíè áîëåå óäîáíîé ìîðàëüíîé àäîïòàöèè.
Ïðèìå÷àíèå: Ïî óíè÷òîæåíèþ zeus_old, óíè÷òîæèòü ýòîò ôîðìàò.
*/
#define CONFIG0_MAX_ARGS 200
#define CONFIG0_NAME_SECTION_BEGIN "entry"
#define CONFIG0_NAME_SECTION_END "end"
#define CONFIG0_NAME_SECTION_END_SIZE 3
namespace Config0
{
//Variable description.
typedef struct _VAR
{
LPSTR *pValues; //An array of values
BYTE bValuesCount; //Kolichetsvo values.
_VAR *pChilds; //An array of descendants.
DWORD dwChildsCount; //Kolichetsvo descendants.
}VAR;
//Description of the file.
typedef struct
{
VAR *pVars; //List of root variables.
DWORD dwVarsCount; //Kolichetsvo variables.
}CFGDATA;
/*
Èíèöèàëèçàöèÿ.
*/
void Init(void);
/*
Äåèíèöèàëèçàöèÿ.
*/
void Uninit(void);
/*
Ïàðñèíã ôàéëà.
IN pszFileName - ôàéë äëÿ ïàðñèíãà.
OUT pCD - ðåçóëüòàò, äîëæåí áûòü îñâîáîæäåí ÷åðåç _Close
Return - true - â ñëó÷àè óñïåõà,
false - â ñëó÷àè îøèáêè.
*/
bool _ParseFile(LPWSTR pszFileName, CFGDATA *pCD);
/*
Îñâîáîæäåíèå CFGDATA.
IN pCD - CFGDATA äëÿ îñâîáîæäåíèÿ.
*/
void _Close(CFGDATA *pCD);
/*
Îñâîáîæäåíèå ïåðåìåííîé.
IN pVar - ïåðåìåííàÿ äëÿ îñâîáîæäåíèÿ.
*/
void _FreeVar(VAR *pVar);
/*
Äîáàâëåíèå ïåðåìåííîé â ñïèñîê.
IN pvParent - ðîäèòåëüñêàÿ ïåðåìåííàÿ, ìîæåò áûòü NULL åñëè äîáàâëåíèå ïðîèñõîäèò â êîðåíü.
IN pCD - CFGDATA, ìîæåò áûòü NULL åñëè pvParent != NULL.
IN pValues - ñïèñîê àðãóìåíòîâ äëÿ äîáàâëåíèÿ. Ìàññèâ íå êîïèðóåñÿ, ïðîñòî ñîõðàíÿåòñÿ
ýòîò óêàçàòåëü.
IN bValuesCount - êîëè÷åñòâî àðãóìåíòîâ.
Return - óêàçàòåëü íà íîâóþ ïåðåìåííóþ, èëè NULL â ñëó÷àè îøèáêè.
*/
VAR *_AddVar(VAR *pvParent, CFGDATA *pCD, LPSTR *pValues, BYTE bValuesCount);
/*Â Â Â Â Getting a variable from the list.
    IN pvParent - parent variable may be NULL if the search is at the root.
    IN pCD - CFGDATA, may be NULL if pvParent! = NULL.
    IN pstrName - variable name may be NULL if ishetsya occurrence.
    IN pstrValue - an additional condition if pstrName! = NULL, and the name of the entry if
                      pstrName == NULL.
   Â
    Return - a pointer to a variable, or NULL if an error occurs.
  */
VAR *_GetVar(VAR *pvParent, CFGDATA *pCD, LPSTR pstrName, LPSTR pstrValue);
};