From: Panu Matilainen Date: Thu, 4 Dec 2008 19:55:52 +0000 (+0200) Subject: Pay more attention to tag extension return codes X-Git-Tag: tznext/4.11.0.1.tizen20130304~3292 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e232344a496798e4ca143630a127d8ead086eb7c;p=tools%2Flibrpm-tizen.git Pay more attention to tag extension return codes - behave like headerGet() does and return failure if there's no data to return - some cases where we used to return nothing previously now return (none) in query, but the former behavior was inconsistent between tags - not sure if (none) is really wanted for a return of no value always, but at least it's consistent now --- diff --git a/lib/tagexts.c b/lib/tagexts.c index 8a60d55..501d8ac 100644 --- a/lib/tagexts.c +++ b/lib/tagexts.c @@ -105,6 +105,7 @@ static int filedepTag(Header h, rpmTag tagN, rpmtd td) int numfiles; char deptype = 'R'; int fileix; + int rc = 0; numfiles = rpmfiFC(fi); if (numfiles <= 0) { @@ -146,12 +147,13 @@ static int filedepTag(Header h, rpmTag tagN, rpmtd td) td->data = fdeps; td->count = numfiles; td->flags = RPMTD_ALLOCED | RPMTD_PTR_ALLOCED; + td->type = RPM_STRING_ARRAY_TYPE; + rc = 1; exit: - td->type = RPM_STRING_ARRAY_TYPE; fi = rpmfiFree(fi); ds = rpmdsFree(ds); - return 1; + return rc; } /** @@ -374,11 +376,13 @@ static int triggertypeTag(Header h, rpmtd td) */ static int filenamesTag(Header h, rpmtd td) { - td->type = RPM_STRING_ARRAY_TYPE; rpmfiBuildFNames(h, RPMTAG_BASENAMES, (const char ***) &(td->data), &(td->count)); - td->flags = RPMTD_ALLOCED; - return 1; + if (td->data) { + td->type = RPM_STRING_ARRAY_TYPE; + td->flags = RPMTD_ALLOCED; + } + return (td->data != NULL); } /** @@ -389,11 +393,13 @@ static int filenamesTag(Header h, rpmtd td) */ static int origfilenamesTag(Header h, rpmtd td) { - td->type = RPM_STRING_ARRAY_TYPE; rpmfiBuildFNames(h, RPMTAG_ORIGBASENAMES, (const char ***) &(td->data), &(td->count)); - td->flags = RPMTD_ALLOCED; - return 1; + if (td->data) { + td->type = RPM_STRING_ARRAY_TYPE; + td->flags = RPMTD_ALLOCED; + } + return (td->data != NULL); } /** * Retrieve file classes. @@ -406,6 +412,7 @@ static int fileclassTag(Header h, rpmtd td) rpmfi fi = rpmfiNew(NULL, h, RPMTAG_BASENAMES, RPMFI_NOHEADER); char **fclasses; int ix, numfiles; + int rc = 0; numfiles = rpmfiFC(fi); if (numfiles <= 0) { @@ -422,11 +429,12 @@ static int fileclassTag(Header h, rpmtd td) td->data = fclasses; td->count = numfiles; td->flags = RPMTD_ALLOCED | RPMTD_PTR_ALLOCED; + td->type = RPM_STRING_ARRAY_TYPE; + rc = 1; exit: - td->type = RPM_STRING_ARRAY_TYPE; fi = rpmfiFree(fi); - return 1; + return rc; } /**