PackageManager: Uploaded forgotten File
[reactos.git] / rosapps / packmgr / lib / options.cpp
1 ////////////////////////////////////////////////////////
2 //
3 // options.cpp
4 //
5 // Settting and Loading Options
6 //
7 //
8 // Maarten Bosma, 09.01.2004
9 // maarten.paul@bosma.de
10 //
11 ////////////////////////////////////////////////////////////////////
12
13 #include "package.hpp"
14 #include "log.h"
15 #include "expat.h"
16
17
18 int PML_XmlDownload (pTree tree, const char* url, void* usrdata,
19 XML_StartElementHandler start, XML_EndElementHandler end, XML_CharacterDataHandler text) ;
20
21
22 // expat callback for start of a "node" tag
23 void opt_start (void* usrdata, const char* tag, const char** arg)
24 {
25 TREE* tree = (TREE*)usrdata;
26
27 if (!strcmp(tag, "source"))
28 {
29 tree->sources.push_back((char*)NULL);
30 tree->field = &tree->sources.back();
31 }
32 }
33
34 // expat callback for end of a "node" tag
35 void opt_end (void* usrdata, const char* tag)
36 {
37 TREE* tree = (TREE*)usrdata;
38
39 tree->field = NULL;
40 }
41
42 // expat callback for end of a "node" tag
43 void opt_text (void* usrdata, const char* data, int len)
44 {
45 TREE* tree = (TREE*)usrdata;
46
47 if(!tree->field)
48 return;
49
50 *tree->field = new char[len+1];
51 strncpy(*tree->field, data, len);
52 (*tree->field)[len] = '\0';
53 }
54
55
56 int CreateOptions (TREE* tree)
57 {
58 // string source;
59
60 // ifstream file ("help.txt", ios_base::in);
61 Log("* Creating options,xml");
62
63 return ERR_OK;
64 }
65
66 int LoadOptions (TREE* tree)
67 {
68 int error;
69
70 error = PML_XmlDownload(tree, "file://options.xml", (void*)tree, opt_start, opt_end, opt_text);
71 if(!error)
72 return ERR_OK;
73
74 CreateOptions(tree);
75 return PML_XmlDownload(tree, "file://options.xml", (void*)tree, opt_start, opt_end, opt_text);
76 }