5 #include "XMLPackage.h"
9 // attribute structure for XMLScript
10 structValidAttrs g_paScriptAttrs[] =
12 {0x0000, false, false, "dir", XATTRTYPE_STRING, {"*", NULL}},
13 {0x0001, false, false, "interpreter", XATTRTYPE_STRING, {"*", NULL}},
14 {XATTR_END, false, false, "end", XATTRTYPE_NONE, {NULL}}
17 bool XMLScript::parseCreate(XMLAttrs* pAttrs,
19 XMLScripts& rContainer)
21 if (!pAttrs->validate(g_paScriptAttrs, (XMLBase*)pAttrs))
23 XMLScript script(szScript,
24 pAttrs->asString("interpreter"),
25 pAttrs->asString("dir"));
26 rContainer.add(script);
30 XMLScript::XMLScript(const char* szScript,
31 const char* szInterpreter,
36 m_sValue.assign(szScript);
38 m_sInterpreter.assign(szInterpreter);
43 XMLScript::XMLScript(const XMLScript& rScript)
46 m_sValue.assign(rScript.m_sValue);
47 m_sInterpreter.assign(rScript.m_sInterpreter);
48 m_sDir.assign(rScript.m_sDir);
51 XMLScript::~XMLScript()
55 XMLScript XMLScript::operator=(XMLScript script)
57 m_sValue.assign(script.m_sValue);
58 m_sInterpreter.assign(script.m_sInterpreter);
59 m_sDir.assign(script.m_sDir);
62 void XMLScript::toSpecFile(ostream& rOut)
65 rOut << "cd " << getDirectory() << endl;
66 rOut << getValue() << endl;
69 void XMLScript::toXMLFile(ostream& rOut,
72 rOut << endl << szIndent << "\t\t<script";
74 rOut << " dir=\"" << getDirectory() << "\"";
75 rOut << ">" << getValue() << "</script>";
78 void XMLScript::toRPMStruct(StringBuf* pSB)
81 char szBuff[getDirectoryLen()+3+1]; // 3 == strlen("cd ")
82 sprintf(szBuff, "cd %s", getDirectory());
83 appendStringBuf(*pSB, szBuff);
85 appendStringBuf(*pSB, getValue());
88 bool XMLScripts::addPrepScript(XMLAttrs* pAttrs,
92 // no spec or already set
95 return XMLScript::parseCreate(pAttrs, szScript, pSpec->getPrep());
98 bool XMLScripts::addBuildScript(XMLAttrs* pAttrs,
102 // no spec or already set
105 return XMLScript::parseCreate(pAttrs, szScript, pSpec->getBuild());
108 bool XMLScripts::addInstallScript(XMLAttrs* pAttrs,
109 const char* szScript,
112 // no spec or already set
115 return XMLScript::parseCreate(pAttrs, szScript, pSpec->getInstall());
118 bool XMLScripts::addCleanScript(XMLAttrs* pAttrs,
119 const char* szScript,
122 // no spec or already set
125 return XMLScript::parseCreate(pAttrs, szScript, pSpec->getClean());
128 XMLScripts::XMLScripts()
133 XMLScripts::XMLScripts(const XMLScripts& rContainer)
136 m_vScripts = rContainer.m_vScripts;
139 XMLScripts::~XMLScripts()
143 void XMLScripts::toSpecFile(ostream& rOut,
147 rOut << endl << "%" << szTag << endl;
148 for (unsigned int i = 0; i < numScripts(); i++)
149 getScript(i).toSpecFile(rOut);
153 void XMLScripts::toXMLFile(ostream& rOut,
157 rOut << endl << "\t<" << szTag << ">";
158 for (unsigned int i = 0; i < numScripts(); i++)
159 getScript(i).toXMLFile(rOut, "");
160 rOut << endl << "\t</" << szTag << ">";
164 bool XMLPackageScripts::addPreScript(XMLAttrs* pAttrs,
165 const char* szScript,
170 return XMLScript::parseCreate(pAttrs, szScript, pSpec->lastPackage().getPre());
173 bool XMLPackageScripts::addPostScript(XMLAttrs* pAttrs,
174 const char* szScript,
179 return XMLScript::parseCreate(pAttrs, szScript, pSpec->lastPackage().getPost());
182 bool XMLPackageScripts::addPreUnScript(XMLAttrs* pAttrs,
183 const char* szScript,
188 return XMLScript::parseCreate(pAttrs, szScript, pSpec->lastPackage().getPreUn());
191 bool XMLPackageScripts::addPostUnScript(XMLAttrs* pAttrs,
192 const char* szScript,
197 return XMLScript::parseCreate(pAttrs, szScript, pSpec->lastPackage().getPostUn());
200 bool XMLPackageScripts::addVerifyScript(XMLAttrs* pAttrs,
201 const char* szScript,
206 return XMLScript::parseCreate(pAttrs, szScript, pSpec->lastPackage().getVerify());
209 bool XMLPackageScripts::createPreScripts(XMLAttrs* pAttrs,
214 pSpec->lastPackage().getPre().setInterpreter(pAttrs->asString("interpreter"));
218 bool XMLPackageScripts::createPostScripts(XMLAttrs* pAttrs,
223 pSpec->lastPackage().getPost().setInterpreter(pAttrs->asString("interpreter"));
227 bool XMLPackageScripts::createPreUnScripts(XMLAttrs* pAttrs,
232 pSpec->lastPackage().getPreUn().setInterpreter(pAttrs->asString("interpreter"));
236 bool XMLPackageScripts::createPostUnScripts(XMLAttrs* pAttrs,
241 pSpec->lastPackage().getPostUn().setInterpreter(pAttrs->asString("interpreter"));
245 bool XMLPackageScripts::createVerifyScripts(XMLAttrs* pAttrs,
250 pSpec->lastPackage().getVerify().setInterpreter(pAttrs->asString("interpreter"));
254 XMLPackageScripts::XMLPackageScripts()
259 XMLPackageScripts::XMLPackageScripts(const XMLPackageScripts& rContainer)
260 : XMLScripts(rContainer)
264 XMLPackageScripts::~XMLPackageScripts()
268 void XMLPackageScripts::toSpecFile(ostream& rOut,
271 // NOTE: header not done here, but by "package"
272 for (unsigned int i = 0; i < numScripts(); i++)
273 getScript(i).toSpecFile(rOut);
276 void XMLPackageScripts::toXMLFile(ostream& rOut,
280 rOut << endl << "\t\t<" << szTag << ">";
281 for (unsigned int i = 0; i < numScripts(); i++)
282 getScript(i).toXMLFile(rOut, "\t");
283 rOut << endl << "\t\t</" << szTag << ">";