From 675393c450c3ff67aa6cdc63a5677047549c4393 Mon Sep 17 00:00:00 2001 From: jbj Date: Thu, 10 Oct 2002 22:48:21 +0000 Subject: [PATCH] Patch from 20021010. CVS patchset: 5764 CVS date: 2002/10/10 22:48:21 --- xmlspec/Makefile | 11 +++++--- xmlspec/xml2rpm.c | 47 +++++++++++++++++++++++++++++++--- xmlspec/xmlparse.c | 67 ++++++++++++++++++++++++++++++++---------------- xmlspec/xmlstruct.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++-- xmlspec/xmlstruct.h | 17 ++++++++++++ xmlspec/xmlverify.c | 61 ++++++++++++++++++++++++++++++++++++++++--- xmlspec/xmlverify.h | 2 ++ 7 files changed, 245 insertions(+), 34 deletions(-) diff --git a/xmlspec/Makefile b/xmlspec/Makefile index cad6f85..b0dff48 100644 --- a/xmlspec/Makefile +++ b/xmlspec/Makefile @@ -7,7 +7,9 @@ LDFLAGS = CFLAGS = -O2 -Wall -Wpointer-arith -Wno-char-subscripts INCDIR = -I. -I.. -I../build -I../lib -I../misc -I../popt -I../rpmdb -I../rpmio RPMDIR = .. -DESTDIR = /usr/local + +prefix = /usr +DESTDIR = XMLBUILD = rpmxmlbuild XMLBUILD_SRC = rpmxmlbuild.c @@ -21,6 +23,7 @@ XMLLIB_OBJ = $(XMLLIB_SRC:.c=.o) LIBS = $(XMLLIB) $(RPMDIR)/build/.libs/librpmbuild.a \ $(RPMDIR)/lib/.libs/librpm.a $(RPMDIR)/rpmdb/.libs/librpmdb.a \ $(RPMDIR)/rpmio/.libs/librpmio.a $(RPMDIR)/popt/.libs/libpopt.a \ + $(RPMDIR)/libelf/lib/.libs/libelf.a \ -lz -lexpat -lbz2 LIBDIR = -L. -L$(RPMDIR)/.libs -L/usr/lib @@ -33,9 +36,9 @@ strip: $(STRIP) $(XMLBUILD) install: - @(cp $(XMLBUILD) $(DESTDIR)/bin) - @(cp $(XMLLIB) $(DESTDIR)/lib) - @(cp $(XMLLIB_H) $(DESTDIR)/include) + @(install -m 755 $(XMLBUILD) $(DESTDIR)$(prefix)/bin) + @(install -m 644 $(XMLLIB) $(DESTDIR)$(prefix)/lib) + @(install -m 644 $(XMLLIB_H) $(DESTDIR)$(prefix)/include/rpm) $(XMLLIB): $(XMLLIB_OBJ) $(AR) $(ARFLAGS) $(XMLLIB) $(XMLLIB_OBJ) diff --git a/xmlspec/xml2rpm.c b/xmlspec/xml2rpm.c index 1a8490e..7e78201 100644 --- a/xmlspec/xml2rpm.c +++ b/xmlspec/xml2rpm.c @@ -8,6 +8,10 @@ #include "xml2rpm.h" #include "xmlstruct.h" +#ifdef XML_DEBUG +#include "header_internal.h" +#endif + // This is where our packaged scripts start (or the largest number // of the sources) int g_nMaxSourceNum = 511; @@ -304,8 +308,14 @@ StringBuf scriptsToStringBuf(const t_structXMLScripts* pScripts, createRPMSource(pScript->m_szScript, g_nMaxSourceNum+1, pSpec, RPMBUILD_ISSOURCE); } - if (pScript->m_szEntry) - appendLineStringBuf(pSb, pScript->m_szEntry); + if (pScript->m_szEntry) { + // we do a newStrEx to make sure we expand all + // macros, as is done in the case of the files + // (done as part of the fileToStr call) + newStrEx(pScript->m_szEntry, (char**)(&szTmp)); + appendLineStringBuf(pSb, szTmp); + freeStr(&(szTmp)); + } pScript = pScript->m_pNext; } } @@ -335,6 +345,32 @@ void convertXMLScripts(const t_structXMLScripts* pScripts, pScripts->m_szInterpreter, 1); } +void handleProvObsConf(Header pHeader, t_structXMLRequire* pReqs, rpmsenseFlags fSense) +{ + t_structXMLRequire* pReq = NULL; + int nFlags = 0; + int i = 0; + int nIndex = 0; + + pReq = pReqs; + while (pReq) { + if (pReq->m_szName) { + nFlags = 0; + if (pReq->m_szCompare && pReq->m_szVersion) { + for (i = 0; sReqComp[i].m_szCmp; i++) { + if (!strcasecmp(sReqComp[i].m_szCmp, + pReq->m_szCompare)) { + nFlags = (sReqComp[i].m_rpmCmp | RPMSENSE_ANY) & ~RPMSENSE_SENSEMASK; + } + } + } + addReqProv(NULL, pHeader, fSense | nFlags, + pReq->m_szName, pReq->m_szVersion, nIndex++); + } + pReq = pReq->m_pNext; + } +} + void convertXMLPackage(const t_structXMLPackage* pXMLPkg, const t_structXMLSpec* pXMLSpec, Spec pSpec) @@ -364,6 +400,11 @@ void convertXMLPackage(const t_structXMLPackage* pXMLPkg, _free(szArch); _free(szOs); + // do the provides, obsoletes, conflicts + handleProvObsConf(pPkg->header, pXMLPkg->m_pProvides, RPMSENSE_PROVIDES); + handleProvObsConf(pPkg->header, pXMLPkg->m_pObsoletes, RPMSENSE_OBSOLETES); + handleProvObsConf(pPkg->header, pXMLPkg->m_pConflicts, RPMSENSE_CONFLICTS); + if (pXMLPkg->m_szName) headerAddOrAppendEntry(pPkg->header, RPMTAG_NAME, RPM_STRING_TYPE, pXMLPkg->m_szName, 1); @@ -514,7 +555,7 @@ Spec toRPMStruct(const t_structXMLSpec* pXMLSpec) pSpec->build = scriptsToStringBuf(pXMLSpec->m_pBuild, pSpec); pSpec->install = scriptsToStringBuf(pXMLSpec->m_pInstall, pSpec); pSpec->clean = scriptsToStringBuf(pXMLSpec->m_pClean, pSpec); - + convertXMLPackage(pXMLSpec->m_pPackages, pXMLSpec, pSpec); initSourceHeader(pSpec); diff --git a/xmlspec/xmlparse.c b/xmlspec/xmlparse.c index 5ff6aae..00d32ed 100644 --- a/xmlspec/xmlparse.c +++ b/xmlspec/xmlparse.c @@ -43,7 +43,15 @@ void handleXMLStartLevel1(t_structXMLParse* pParse) addXMLMacro(pParse->m_pAttrs, &(pSpec->m_pMacros)); break; case TAGVAL_SOURCE: - addXMLSource(pParse->m_pAttrs, &(pSpec->m_pSources)); + if (pSpec->m_pSources) + addXMLSource(pParse->m_pAttrs, &(pSpec->m_pSources)); + else { + if ((addXMLSource(pParse->m_pAttrs, &(pSpec->m_pSources))) && + (pSpec->m_pSources->m_szDirectory)) { + newStr(pSpec->m_pSources->m_szDirectory, + (char**)&(pSpec->m_szBuildSubdir)); + } + } break; case TAGVAL_PATCH: addXMLSource(pParse->m_pAttrs, &(pSpec->m_pPatches)); @@ -178,6 +186,12 @@ void handleXMLStartLevel2(t_structXMLParse* pParse) appendStringBuf(pSb, szTmp); appendStringBuf(pSb, pSource->m_szName); } + else if (!strcasecmp(szTmp, "tgz")) { + szTmp = NULL; + newStrEx("%{_gzipbin} -dc ", &szTmp); + appendStringBuf(pSb, szTmp); + appendStringBuf(pSb, pSource->m_szName); + } else if (!strcasecmp(szTmp, "zip")) { szTmp = NULL; newStrEx("%{_unzipbin} ", &szTmp); @@ -265,8 +279,8 @@ void handleXMLStartLevel2(t_structXMLParse* pParse) appendStringBuf(pSb, pSource->m_szName); } freeStr(&szTmp); - szTmp = malloc(strlen(" > patch -p1234567890 -s ")+strlen(pSource->m_szName)+1); - sprintf(szTmp, " | patch -p%d -s", nLevel); + szTmp = malloc(strlen(" > patch -pN1234567890 -s ")+strlen(pSource->m_szName)+1); + sprintf(szTmp, " | patch -Np%d -s", nLevel); appendStringBuf(pSb, szTmp); appendLineStringBuf(pSb, ""); appendLineStringBuf(pSb, "STATUS=$?"); @@ -290,6 +304,9 @@ void handleXMLStartLevel2(t_structXMLParse* pParse) case TAGVAL_SUMMARY: case TAGVAL_DESCRIPTION: case TAGVAL_REQUIRES: + case TAGVAL_PROVIDES: + case TAGVAL_OBSOLETES: + case TAGVAL_CONFLICTS: // we don't need to do anything break; default: @@ -315,6 +332,18 @@ void handleXMLStartLevel3(t_structXMLParse* pParse) pPkg = getLastXMLPackage(pSpec->m_pPackages); addXMLRequire(pParse->m_pAttrs, &(pPkg->m_pRequires)); break; + case TAGVAL_PROVIDE: + pPkg = getLastXMLPackage(pSpec->m_pPackages); + addXMLRequire(pParse->m_pAttrs, &(pPkg->m_pProvides)); + break; + case TAGVAL_OBSOLETE: + pPkg = getLastXMLPackage(pSpec->m_pPackages); + addXMLRequire(pParse->m_pAttrs, &(pPkg->m_pObsoletes)); + break; + case TAGVAL_CONFLICT: + pPkg = getLastXMLPackage(pSpec->m_pPackages); + addXMLRequire(pParse->m_pAttrs, &(pPkg->m_pConflicts)); + break; case TAGVAL_CHANGE: pChanges = getLastXMLChanges(pSpec->m_pChangelog); addXMLChange(pParse->m_pAttrs, &(pChanges->m_pChanges)); @@ -544,32 +573,26 @@ void dataXMLCB(void* pData, int nLen) { t_structXMLParse* pParse = NULL; + char* szVal = NULL; char* szTmp = NULL; - char* szTmpValue = NULL; - char* szPos = NULL; if ((pParse = (t_structXMLParse*)pData)) { - szTmp = malloc(nLen+2); - szTmp[nLen] = '\0'; - snprintf(szTmp, nLen+1, "%s", szValue); - szPos = szTmp; - while ((*szPos == ' ') || - (*szPos == '\t') || - (*szPos == '\r') || - (*szPos == '\n')) - szPos++; - - if (strlen(szPos)) { + szVal = malloc(nLen+2); + szVal[nLen] = '\0'; + snprintf(szVal, nLen+1, "%s", szValue); + if (strlen(szVal)) { + while ((szTmp = strchr(szVal, '\t'))) + *szTmp = ' '; if (pParse->m_szValue) { - szTmpValue = malloc(strlen(szPos)+strlen(pParse->m_szValue)+1); - sprintf(szTmpValue, "%s%s", pParse->m_szValue, szPos); - newStr(szTmpValue, &(pParse->m_szValue)); - free(szTmpValue); + szTmp = malloc(strlen(szVal)+strlen(pParse->m_szValue)+1); + sprintf(szTmp, "%s%s", pParse->m_szValue, szVal); + newStr(szTmp, &(pParse->m_szValue)); + free(szTmp); } else - newStr(szPos, &(pParse->m_szValue)); + newStr(szVal, &(pParse->m_szValue)); } - free(szTmp); + free(szVal); } } diff --git a/xmlspec/xmlstruct.c b/xmlspec/xmlstruct.c index 154cacb..0292f41 100644 --- a/xmlspec/xmlstruct.c +++ b/xmlspec/xmlstruct.c @@ -97,7 +97,7 @@ t_structXMLAttr* getXMLAttr(const char* szName, { while (pAttr && (strcasecmp(szName, pAttr->m_szName) != 0)) pAttr = pAttr->m_pNext; - + return pAttr; } @@ -236,7 +236,7 @@ t_structXMLSource* newXMLSource(const t_structXMLAttr* pAttrs) attrSetInt(pAttr, "size", &(pSource->m_nSize)); attrSetStr(pAttr, "md5", &(pSource->m_szMD5)); attrSetStr(pAttr, "directory", &(pSource->m_szDirectory)); - attrSetInt(pAttr, "number", &(pSource->m_nNum)); + attrSetInt(pAttr, "id", &(pSource->m_nNum)); } while ((pAttr = pAttr->m_pNext)); } @@ -365,6 +365,8 @@ t_structXMLScript* newXMLScript(const t_structXMLAttr* pAttrs) if ((pScript = malloc(sizeof(t_structXMLScript)))) { pScript->m_szInterpreter = NULL; + pScript->m_szArch = NULL; + pScript->m_szOS = NULL; pScript->m_szScript = NULL; pScript->m_szEntry = NULL; pScript->m_pNext = NULL; @@ -373,6 +375,10 @@ t_structXMLScript* newXMLScript(const t_structXMLAttr* pAttrs) do { attrSetStr(pAttr, "interpreter", &(pScript->m_szInterpreter)); + attrSetStr(pAttr, "arch", + &(pScript->m_szArch)); + attrSetStr(pAttr, "os", + &(pScript->m_szOS)); attrSetStr(pAttr, "script", &(pScript->m_szScript)); } while ((pAttr = pAttr->m_pNext)); @@ -386,6 +392,8 @@ int freeXMLScript(t_structXMLScript** ppScript) { if (*ppScript) { freeStr(&((*ppScript)->m_szInterpreter)); + freeStr(&((*ppScript)->m_szArch)); + freeStr(&((*ppScript)->m_szOS)); freeStr(&((*ppScript)->m_szScript)); freeStr(&((*ppScript)->m_szEntry)); freeXMLScript(&((*ppScript)->m_pNext)); @@ -485,6 +493,59 @@ int freeXMLFiles(t_structXMLFiles** ppFiles) return 0; } +t_structI18NStr* newI18NStr(const t_structXMLAttr* pAttrs) +{ + t_structI18NStr* pStr = NULL; + t_structXMLAttr* pAttr = NULL; + + if ((pStr = malloc(sizeof(t_structI18NStr)))) { + pStr->m_szLang = NULL; + pStr->m_szText = NULL; + pStr->m_pNext = NULL; + + pAttr = (t_structXMLAttr*)pAttrs; + do { + attrSetStr(pAttr, "lang", &(pStr->m_szLang)); + } while ((pAttr = pAttr->m_pNext)); + } + + return pStr; +} + +int freeI18NStr(t_structI18NStr** ppStr) +{ + if (*ppStr) { + freeStr(&((*ppStr)->m_szLang)); + freeStr(&((*ppStr)->m_szText)); + freeI18NStr(&((*ppStr)->m_pNext)); + free(*ppStr); + } + *ppStr = NULL; + + return 0; +} + +t_structI18NStr* addI18NStr(const t_structXMLAttr* pAttrs, + t_structI18NStr** ppStr) +{ + t_structI18NStr* pStr = NULL; + + if ((pStr = getLastI18NStr(*ppStr))) + pStr = (pStr->m_pNext = newI18NStr(pAttrs)); + else + pStr = (*ppStr = newI18NStr(pAttrs)); + + return pStr; +} + +t_structI18NStr* getLastI18NStr(t_structI18NStr* pStr) +{ + while (pStr && (pStr->m_pNext)) + pStr = pStr->m_pNext; + + return pStr; +} + t_structXMLPackage* newXMLPackage(const t_structXMLAttr* pAttrs) { t_structXMLPackage* pPackage = NULL; @@ -492,6 +553,7 @@ t_structXMLPackage* newXMLPackage(const t_structXMLAttr* pAttrs) if ((pPackage = malloc(sizeof(t_structXMLPackage)))) { pPackage->m_szName = NULL; + pPackage->m_szVersion = NULL; pPackage->m_szGroup = NULL; pPackage->m_szSummary = NULL; pPackage->m_szDescription = NULL; @@ -507,15 +569,21 @@ t_structXMLPackage* newXMLPackage(const t_structXMLAttr* pAttrs) pPackage->m_pRequires = NULL; pPackage->m_pSuggests = NULL; pPackage->m_pObsoletes = NULL; + pPackage->m_pConflicts = NULL; pPackage->m_pProvides = NULL; pPackage->m_pNext = NULL; pAttr = (t_structXMLAttr*)pAttrs; do { attrSetStr(pAttr, "name", &(pPackage->m_szName)); + attrSetStr(pAttr, "version", &(pPackage->m_szVersion)); attrSetStr(pAttr, "group", &(pPackage->m_szGroup)); attrSetBool(pAttr, "autorequire", &(pPackage->m_nAutoRequire)); + attrSetBool(pAttr, "autoreq", &(pPackage->m_nAutoRequire)); attrSetBool(pAttr, "autoprovide", &(pPackage->m_nAutoProvide)); + attrSetBool(pAttr, "autoprov", &(pPackage->m_nAutoProvide)); + attrSetBool(pAttr, "autoreqprov", &(pPackage->m_nAutoProvide)); + attrSetBool(pAttr, "autoreqprov", &(pPackage->m_nAutoRequire)); attrSetBool(pAttr, "autosuggest", &(pPackage->m_nAutoSuggest)); } while ((pAttr = pAttr->m_pNext)); } @@ -527,6 +595,7 @@ int freeXMLPackage(t_structXMLPackage** ppPackage) { if (*ppPackage) { freeStr(&((*ppPackage)->m_szName)); + freeStr(&((*ppPackage)->m_szVersion)); freeStr(&((*ppPackage)->m_szGroup)); freeStr(&((*ppPackage)->m_szSummary)); freeStr(&((*ppPackage)->m_szDescription)); @@ -539,6 +608,7 @@ int freeXMLPackage(t_structXMLPackage** ppPackage) freeXMLRequire(&((*ppPackage)->m_pRequires)); freeXMLRequire(&((*ppPackage)->m_pSuggests)); freeXMLRequire(&((*ppPackage)->m_pObsoletes)); + freeXMLRequire(&((*ppPackage)->m_pConflicts)); freeXMLRequire(&((*ppPackage)->m_pProvides)); freeXMLPackage(&((*ppPackage)->m_pNext)); free(*ppPackage); diff --git a/xmlspec/xmlstruct.h b/xmlspec/xmlstruct.h index 6b8e62a..7802615 100644 --- a/xmlspec/xmlstruct.h +++ b/xmlspec/xmlstruct.h @@ -52,6 +52,8 @@ typedef struct structXMLRequire typedef struct structXMLScript { char* m_szInterpreter; + char* m_szArch; + char* m_szOS; char* m_szScript; char* m_szEntry; struct structXMLScript* m_pNext; @@ -71,9 +73,17 @@ typedef struct structXMLFiles char* m_szGID; } t_structXMLFiles; +typedef struct structI18NStr +{ + char* m_szLang; + char* m_szText; + struct structI18NStr* m_pNext; +} t_structI18NStr; + typedef struct structXMLPackage { char* m_szName; + char* m_szVersion; char* m_szGroup; char* m_szSummary; char* m_szDescription; @@ -89,6 +99,7 @@ typedef struct structXMLPackage struct structXMLRequire* m_pRequires; struct structXMLRequire* m_pSuggests; struct structXMLRequire* m_pObsoletes; + struct structXMLRequire* m_pConflicts; struct structXMLRequire* m_pProvides; struct structXMLPackage* m_pNext; } t_structXMLPackage; @@ -201,6 +212,12 @@ int freeXMLScripts(t_structXMLScripts** ppScripts); t_structXMLFiles* newXMLFiles(const t_structXMLAttr* pAttrs); int freeXMLFiles(t_structXMLFiles** ppFiles); +t_structI18NStr* newI18NStr(const t_structXMLAttr* pAttrs); +int freeI18NStr(t_structI18NStr** ppStr); +t_structI18NStr* addI18NStr(const t_structXMLAttr* pAttrs, + t_structI18NStr** ppStr); +t_structI18NStr* getLastI18NStr(t_structI18NStr* pStr); + t_structXMLPackage* newXMLPackage(const t_structXMLAttr* pAttrs); int freeXMLPackage(t_structXMLPackage** ppPackage); t_structXMLPackage* addXMLPackage(const t_structXMLAttr* pAttrs, diff --git a/xmlspec/xmlverify.c b/xmlspec/xmlverify.c index 718a0cf..f04d31b 100644 --- a/xmlspec/xmlverify.c +++ b/xmlspec/xmlverify.c @@ -58,7 +58,7 @@ t_structXMLTags g_pXMLTags[] = {"size", ATTRTYPE_NUMERIC, 0}, {"md5", ATTRTYPE_MD5, 0}, {"path", ATTRTYPE_ANY, 0}, - {"number", ATTRTYPE_NUMERIC, 0}, + {"id", ATTRTYPE_NUMERIC, 0}, {NULL, ATTRTYPE_ANY, 1} } }, @@ -89,7 +89,7 @@ t_structXMLTags g_pXMLTags[] = {"size", ATTRTYPE_NUMERIC, 0}, {"md5", ATTRTYPE_MD5, 0}, {"path", ATTRTYPE_ANY, 0}, - {"number", ATTRTYPE_NUMERIC, 0}, + {"id", ATTRTYPE_NUMERIC, 0}, {NULL, ATTRTYPE_ANY, 1} } }, @@ -165,6 +165,7 @@ t_structXMLTags g_pXMLTags[] = }, { {"name", ATTRTYPE_ANY, 0}, + {"version", ATTRTYPE_ANY, 0}, {"group", ATTRTYPE_ANY, 1}, {"autoreqprov", ATTRTYPE_BOOL, 0}, {"autoprov", ATTRTYPE_BOOL, 0}, @@ -219,6 +220,7 @@ t_structXMLTags g_pXMLTags[] = }, { {"name", ATTRTYPE_ANY, 1}, + {"version", ATTRTYPE_ANY, 0}, {NULL, ATTRTYPE_ANY, 1} } }, @@ -243,6 +245,34 @@ t_structXMLTags g_pXMLTags[] = }, { {"name", ATTRTYPE_ANY, 1}, + {"version", ATTRTYPE_ANY, 0}, + {"cmp", ATTRTYPE_CMP, 0}, + {NULL, ATTRTYPE_ANY, 1} + } + }, + { + "conflicts", TAGVAL_CONFLICTS, 2, + { + TAGVAL_SPEC, + TAGVAL_PACKAGE, + TAGVAL_LAST + }, + { + {NULL, ATTRTYPE_ANY, 1} + } + }, + { + "conflict", TAGVAL_CONFLICT, 3, + { + TAGVAL_SPEC, + TAGVAL_PACKAGE, + TAGVAL_CONFLICTS, + TAGVAL_LAST + }, + { + {"name", ATTRTYPE_ANY, 1}, + {"version", ATTRTYPE_ANY, 0}, + {"cmp", ATTRTYPE_CMP, 0}, {NULL, ATTRTYPE_ANY, 1} } }, @@ -280,6 +310,7 @@ t_structXMLTags g_pXMLTags[] = TAGVAL_LAST }, { + {"lang", ATTRTYPE_ANY, 0}, {NULL, ATTRTYPE_ANY, 1} } }, @@ -291,6 +322,7 @@ t_structXMLTags g_pXMLTags[] = TAGVAL_LAST }, { + {"lang", ATTRTYPE_ANY, 0}, {NULL, ATTRTYPE_ANY, 1} } }, @@ -317,6 +349,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -344,6 +378,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -371,6 +407,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -398,11 +436,14 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } }, - {"verify", TAGVAL_VERIFY, 2, + { + "verify", TAGVAL_VERIFY, 2, { TAGVAL_SPEC, TAGVAL_PACKAGE, @@ -424,6 +465,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -463,6 +506,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -476,6 +521,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"source", ATTRTYPE_NUMERIC, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"path", ATTRTYPE_ANY, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -489,6 +536,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"patch", ATTRTYPE_NUMERIC, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"level", ATTRTYPE_NUMERIC, 0}, {"path", ATTRTYPE_ANY, 0}, {NULL, ATTRTYPE_ANY, 1} @@ -515,6 +564,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -540,6 +591,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } @@ -565,6 +618,8 @@ t_structXMLTags g_pXMLTags[] = }, { {"interpreter", ATTRTYPE_ANY, 0}, + {"arch", ATTRTYPE_ANY, 0}, + {"os", ATTRTYPE_ANY, 0}, {"script", ATTRTYPE_SCRIPT, 0}, {NULL, ATTRTYPE_ANY, 1} } diff --git a/xmlspec/xmlverify.h b/xmlspec/xmlverify.h index 0eba1e2..d1eff3d 100644 --- a/xmlspec/xmlverify.h +++ b/xmlspec/xmlverify.h @@ -22,6 +22,8 @@ typedef enum enumXMLTagVals TAGVAL_REQUIRE, TAGVAL_OBSOLETES, TAGVAL_OBSOLETE, + TAGVAL_CONFLICTS, + TAGVAL_CONFLICT, TAGVAL_SUGGESTS, TAGVAL_SUGGEST, TAGVAL_SUMMARY, -- 2.7.4