From 775f4217560ac2d136b5c53b6c691771af058244 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 26 May 2008 09:22:17 +0300 Subject: [PATCH] Convert python rpmMergeHeaders to new interfaces --- python/header-py.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/python/header-py.c b/python/header-py.c index d409683..449d9b4 100644 --- a/python/header-py.c +++ b/python/header-py.c @@ -689,44 +689,44 @@ int rpmMergeHeaders(PyObject * list, FD_t fd, int matchTag) { Header h; HeaderIterator hi; - int32_t * newMatch; - int32_t * oldMatch; + rpmTag newMatch, oldMatch; hdrObject * hdr; - rpm_count_t c, count = 0; - rpmTag tag; - rpmTagType type; - void * p; + rpm_count_t count = 0; + int rc = 1; /* assume failure */ + rpmtd td = rpmtdNew(); Py_BEGIN_ALLOW_THREADS h = headerRead(fd, HEADER_MAGIC_YES); Py_END_ALLOW_THREADS while (h) { - if (!headerGetEntry(h, matchTag, NULL, (void **) &newMatch, NULL)) { + if (!headerGet(h, matchTag, td, HEADERGET_MINMEM)) { PyErr_SetString(pyrpmError, "match tag missing in new header"); - return 1; + goto exit; } + newMatch = rpmtdTag(td); + rpmtdFreeData(td); hdr = (hdrObject *) PyList_GetItem(list, count++); - if (!hdr) return 1; + if (!hdr) goto exit; - if (!headerGetEntry(hdr->h, matchTag, NULL, (void **) &oldMatch, NULL)) { + if (!headerGet(hdr->h, matchTag, td, HEADERGET_MINMEM)) { PyErr_SetString(pyrpmError, "match tag missing in new header"); - return 1; + goto exit; } + oldMatch = rpmtdTag(td); + rpmtdFreeData(td); - if (*newMatch != *oldMatch) { + if (newMatch != oldMatch) { PyErr_SetString(pyrpmError, "match tag mismatch"); - return 1; + goto exit; } - for (hi = headerInitIterator(h); - headerNextIterator(hi, &tag, &type, (void *) &p, &c); - p = headerFreeData(p, type)) + for (hi = headerInitIterator(h); headerNext(hi, td); rpmtdFreeData(td)) { /* could be dupes */ - headerRemoveEntry(hdr->h, tag); - headerAddEntry(hdr->h, tag, type, p, c); + headerRemoveEntry(hdr->h, rpmtdTag(td)); + headerPut(hdr->h, td, HEADERPUT_DEFAULT); } headerFreeIterator(hi); @@ -736,8 +736,11 @@ int rpmMergeHeaders(PyObject * list, FD_t fd, int matchTag) h = headerRead(fd, HEADER_MAGIC_YES); Py_END_ALLOW_THREADS } + rc = 0; - return 0; +exit: + rpmtdFree(td); + return rc; } PyObject * -- 2.7.4