:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / apps / utils / net / roshttpd / config.cpp
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS HTTP Daemon
4  * FILE:        config.cpp
5  * PURPOSE:     Daemon configuration
6  * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
7  * REVISIONS:
8  *   CSH  01/09/2000 Created
9  */
10 #include <new>
11 #include <stdlib.h>
12 #include <string.h>
13 #include <config.h>
14
15 using namespace std;
16
17 LPCConfig pConfiguration;
18 LPCHttpDaemonThread pDaemonThread;
19
20 // Default constructor
21 CConfig::CConfig()
22 {
23         Reset();
24 }
25
26 // Default destructor
27 CConfig::~CConfig()
28 {
29         Clear();
30 }
31
32 // Clear configuration
33 void CConfig::Reset()
34 {
35         MainBase = NULL;
36         HttpBase = NULL;
37         DefaultResources.RemoveAll();
38 }
39
40 // Create default configuration. Can throw bad_alloc
41 void CConfig::Default()
42 {
43         Clear();
44         MainBase = (LPWSTR)_wcsdup(dcfgMainBase);
45         HttpBase = _strdup(dcfgHttpBase);
46
47         LPSTR lpsStr;
48         try {
49                 lpsStr = _strdup(dcfgDefaultResource);
50                 DefaultResources.Insert(lpsStr);
51         } catch (bad_alloc e) {
52                 free((void *)lpsStr);
53                 Clear();
54                 throw;
55         }
56
57     Port = dcfgDefaultPort;
58 }
59
60 // Clear configuration
61 void CConfig::Clear()
62 {
63         if (MainBase != NULL)
64                 free((void *)MainBase);
65         if (HttpBase != NULL)
66                 free((void *)HttpBase);
67
68         // Free memory for all strings
69         CIterator<LPSTR> *i = DefaultResources.CreateIterator();
70         for (i->First(); !i->IsDone(); i->Next())
71                 free((void *)i->CurrentItem());
72         delete i;
73
74         Reset();
75 }
76
77 // Load configuration
78 BOOL CConfig::Load()
79 {
80     Default();
81         return TRUE;
82 }
83
84 // Save configuration
85 BOOL CConfig::Save()
86 {
87     return TRUE;
88 }
89
90 // Return MainBase
91 LPWSTR CConfig::GetMainBase()
92 {
93         return MainBase;
94 }
95
96 // Set MainBase
97 void CConfig::SetMainBase(LPWSTR lpwsMainBase)
98 {
99         MainBase = lpwsMainBase;
100 }
101
102 // Return HttpBase
103 LPSTR CConfig::GetHttpBase()
104 {
105         return HttpBase;
106 }
107
108 // Set HttpBase
109 void CConfig::SetHttpBase(LPSTR lpsHttpBase)
110 {
111         HttpBase = lpsHttpBase;
112 }
113
114 // Return DefaultResources
115 CList<LPSTR>* CConfig::GetDefaultResources()
116 {
117         return &DefaultResources;
118 }
119
120 // Return bound port
121 USHORT CConfig::GetPort()
122 {
123     return Port;
124 }
125
126 // Set port
127 VOID CConfig::SetPort(USHORT wPort)
128 {
129     Port = wPort;
130 }