static
Header headerCopyWithConvert(Header h, cmd_t *cmds[], int ncmds)
{
- rpmTag tag;
- rpmTagType type;
- rpm_count_t count;
- rpm_data_t vals;
HeaderIterator headerIter;
Header res = headerNew();
+ struct rpmtd_s td;
headerIter = headerInitIterator(h);
- while (headerNextIterator(headerIter, &tag, &type, &vals, &count)) {
+ while (headerNext(headerIter, &td)) {
enum cvtaction ca;
- void *nvals;
- rpm_count_t ncount;
+ struct rpmtd_s ntd = { .type = td.type, .tag = td.tag,
+ .count = 0, .data = NULL
+ };
- nvals = NULL;
- ncount = 0;
- ca = convertExistingAMD(tag, type, &vals, &count, &nvals, &ncount, cmds, ncmds);
+ ca = convertExistingAMD(td.tag, td.type, &td.data, &td.count,
+ &ntd.data, &ntd.count, cmds, ncmds);
switch (ca) {
case CA_ERR:
case CA_OLD: /* copy old tag and values to header */
default:
/* Don't copy the old changelog, we'll do that later. */
- switch (tag) {
+ switch (td.tag) {
case RPMTAG_CHANGELOGTIME:
case RPMTAG_CHANGELOGNAME:
case RPMTAG_CHANGELOGTEXT:
break;
default:
- headerAddEntry(res, tag, type, vals, count);
+ headerPut(res, &td, HEADERPUT_DEFAULT);
break;
}
break;
case CA_NEW: /* copy new tag and values to header */
- headerAddEntry(res, tag, type, nvals, ncount);
+ headerPut(res, &ntd, HEADERPUT_DEFAULT);
break;
case CA_OMIT: /* delete old tag and values from header */
break;
}
- if (type == RPM_STRING_ARRAY_TYPE || type == RPM_I18NSTRING_TYPE)
- _free(vals);
- if (nvals)
- _free(nvals);
+ rpmtdFreeData(&td);
+ if (ntd.data)
+ free(ntd.data);
}
headerFreeIterator(headerIter);
rc = headerIsEntry(h, c->tagval);
if (!rc && !c->done && c->injmode != INJ_DELETE) {
- rpmTagType type;
- rpm_count_t ncount;
- void *nvals;
+ struct rpmtd_s td;
enum cvtaction ca;
- type = (c->nvals > 0) ? RPM_STRING_ARRAY_TYPE : RPM_STRING_TYPE;
- ca = convertAMD(CA_NEW, type, &nvals, &ncount, c);
+ td.type = (c->nvals > 0) ? RPM_STRING_ARRAY_TYPE : RPM_STRING_TYPE;
+ td.tag = c->tagval;
+ ca = convertAMD(CA_NEW, td.type, &td.data, &td.count, c);
if (ca == CA_NEW)
- headerAddEntry(h, c->tagval, type, nvals, ncount);
+ headerPut(h, &td, HEADERPUT_DEFAULT);
rc = headerIsEntry(h, c->tagval);
}
if (ec == 0 && *hdrp) {
static char name[512] = "";
static const char *text = NULL;
- static int cltags[] = {
+ static rpmTag cltags[] = {
RPMTAG_CHANGELOGTIME,
RPMTAG_CHANGELOGNAME,
RPMTAG_CHANGELOGTEXT,
do_tsort(const char *fileArgv[], int noDeps)
{
rpmts ts = NULL;
- const char ** pkgURL = NULL;
+ char ** pkgURL = NULL;
char * pkgState = NULL;
const char ** fnp;
- const char * fileURL = NULL;
+ char * fileURL = NULL;
int numPkgs = 0;
int numFailed = 0;
int prevx;
int pkgx;
- const char ** argv = NULL;
+ char ** argv = NULL;
int argc = 0;
- const char ** av = NULL;
+ ARGV_t av = NULL;
int ac = 0;
Header h;
int rc = 0;
fileURL = _free(fileURL);
/* Continue processing file arguments, building transaction set. */
- for (fnp = pkgURL+prevx; *fnp; fnp++, prevx++) {
+ for (fnp = (const char**) pkgURL+prevx; *fnp; fnp++, prevx++) {
const char * fileName;
FD_t fd;