From 683d30858610c548ae3a3999b458b438d7275546 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Fri, 3 Jul 2009 14:46:06 +0300 Subject: [PATCH] Unify extension + header data getter calling conventions - simplifies headerGet() & friends a bit and reduces redundancy - also just return an error instead of dying with assert on NULL td argument --- lib/header.c | 39 ++++++++++----------------------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/lib/header.c b/lib/header.c index 1afd4eb..aa84720 100644 --- a/lib/header.c +++ b/lib/header.c @@ -1327,23 +1327,18 @@ exit: /** * Retrieve tag data from header. * @param h header - * @param tag tag to retrieve * @retval td tag data container * @param flags flags to control retrieval * @return 1 on success, 0 on not found */ -static int intGetTdEntry(Header h, rpmTag tag, rpmtd td, headerGetFlags flags) +static int intGetTdEntry(Header h, rpmtd td, headerGetFlags flags) { indexEntry entry; int rc; - assert(td != NULL); - /* ensure clean state */ - rpmtdReset(td); - td->tag = tag; /* First find the tag */ /* FIX: h modified by sort. */ - entry = findEntry(h, tag, RPM_NULL_TYPE); + entry = findEntry(h, td->tag, RPM_NULL_TYPE); if (entry == NULL) { /* Td is zeroed above, just return... */ return 0; @@ -1366,35 +1361,21 @@ static int intGetTdEntry(Header h, rpmTag tag, rpmtd td, headerGetFlags flags) return ((rc == 1) ? 1 : 0); } -/* - * XXX temporary kludgery until tag extensions have been converted to - * take rpmtd as argument - */ -static int intGetTagExt(Header h, rpmTag tag, rpmtd td, headerTagTagFunction tagfunc) -{ - int rc; - rpmtdReset(td); - rc = tagfunc(h, td, HEADERGET_DEFAULT); - td->tag = tag; - return rc; -} - int headerGet(Header h, rpmTag tag, rpmtd td, headerGetFlags flags) { int rc; - headerTagTagFunction tagfunc = NULL; + headerTagTagFunction tagfunc = intGetTdEntry; - assert(td != NULL); + if (td == NULL) return 0; + + rpmtdReset(td); + td->tag = tag; if (flags & HEADERGET_EXT) { - tagfunc = rpmHeaderTagFunc(tag); - } - - if (tagfunc) { - rc = intGetTagExt(h, tag, td, tagfunc); - } else { - rc = intGetTdEntry(h, tag, td, flags); + headerTagTagFunction extfunc = rpmHeaderTagFunc(tag); + if (extfunc) tagfunc = extfunc; } + rc = tagfunc(h, td, flags); assert(tag == td->tag); return rc; -- 2.7.4