1 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/aptcallback.cc.orig 2022-03-26 15:35:58.278412514 +0100
2 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/aptcallback.cc 2022-03-26 15:36:05.188375079 +0100
3 @@ -23,7 +23,11 @@ static void getPackageData(const Header
5 for (Tag = ©Tags[0]; *Tag != NULL; *Tag++) {
6 sprintf(rTag, "%%{%s}", *Tag);
7 +#if RPM_VERSION < 0x040600
8 char *s = headerSprintf(h, rTag, rpmTagTable, rpmHeaderFormats, NULL);
10 + char *s = headerFormat(h, rTag, NULL);
15 @@ -59,12 +63,20 @@ void * rpmCallback(const void * arg,
17 fd = Fopen(filename, "r.ufdio");
19 +#if RPM_VERSION >= 0x040600
22 fd = fdLink(fd, "persist (showProgress)");
27 case RPMCALLBACK_INST_CLOSE_FILE:
28 +#if RPM_VERSION >= 0x040600
31 fd = fdFree(fd, "persist (showProgress)");
36 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.h.orig 2008-01-12 10:45:07.000000000 +0100
37 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.h 2022-03-26 11:39:15.685354565 +0100
38 @@ -62,9 +62,9 @@ class RPMHandler
42 - unsigned int DepOp(int_32 rpmflags);
43 - bool InternalDep(const char *name, const char *ver, int_32 flag);
44 - bool PutDep(const char *name, const char *ver, int_32 flags,
45 + unsigned int DepOp(int32_t rpmflags);
46 + bool InternalDep(const char *name, const char *ver, int32_t flag);
47 + bool PutDep(const char *name, const char *ver, int32_t flags,
48 unsigned int type, vector<Dependency*> &Deps);
51 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.cc.orig 2022-03-26 16:00:06.463900352 +0100
52 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.cc 2022-03-27 08:01:59.956038790 +0200
55 // XXX we'd need to include rpmsq.h but it's not valid C++ in many
56 // existing rpm versions so just declare rpmsqCaught extern.. sigh.
58 -extern sigset_t rpmsqCaught;
60 +#if RPM_VERSION >= 0x040600
61 #include <rpm/rpmsq.h>
63 +extern sigset_t rpmsqCaught;
66 #define rpmxxInitIterator(a,b,c,d) rpmtsInitIterator(a,(rpmTag)b,c,d)
67 @@ -68,8 +68,8 @@ extern sigset_t rpmsqCaught;
69 #ifndef RPM_HAVE_DATA_T
70 typedef void * rpm_data_t;
71 -typedef int_32 rpm_count_t;
72 -typedef int_32 rpm_tagtype_t;
73 +typedef int32_t rpm_count_t;
74 +typedef int32_t rpm_tagtype_t;
77 // An attempt to deal with false zero epochs from repomd. With older rpm's we
78 @@ -97,10 +97,10 @@ string RPMHandler::EVR()
82 -unsigned int RPMHandler::DepOp(int_32 rpmflags)
83 +unsigned int RPMHandler::DepOp(int32_t rpmflags)
86 - int_32 flags = (rpmflags & RPMSENSE_SENSEMASK);
87 + int32_t flags = (rpmflags & RPMSENSE_SENSEMASK);
88 if (flags == RPMSENSE_ANY) {
89 Op = pkgCache::Dep::NoOp;
90 } else if (flags & RPMSENSE_LESS) {
91 @@ -138,7 +138,7 @@ bool RPMHandler::HasFile(const char *Fil
95 -bool RPMHandler::InternalDep(const char *name, const char *ver, int_32 flag)
96 +bool RPMHandler::InternalDep(const char *name, const char *ver, int32_t flag)
98 if (strncmp(name, "rpmlib(", strlen("rpmlib(")) == 0) {
99 #if RPM_VERSION >= 0x040100
100 @@ -247,7 +247,7 @@ bool RPMHandler::InternalDep(const char
104 -bool RPMHandler::PutDep(const char *name, const char *ver, int_32 flags,
105 +bool RPMHandler::PutDep(const char *name, const char *ver, int32_t flags,
106 unsigned int Type, vector<Dependency*> &Deps)
108 if (InternalDep(name, ver, flags) == true) {
109 @@ -282,43 +282,57 @@ bool RPMHandler::PutDep(const char *name
110 string RPMHdrHandler::Epoch()
113 + assert(HeaderP != NULL);
114 +#if RPM_VERSION >= 0x040600
115 + int32_t epoch = headerGetNumber(HeaderP, RPMTAG_EPOCH);
116 + snprintf(str, sizeof(str), "%i", epoch);
122 - assert(HeaderP != NULL);
124 int rc = headerGetEntry(HeaderP, RPMTAG_EPOCH, &type, &val, &count);
125 - epoch = (int_32*)val;
126 + epoch = (int32_t*)val;
127 if (rc == 1 && count > 0) {
128 snprintf(str, sizeof(str), "%i", epoch[0]);
134 off_t RPMHdrHandler::GetITag(rpmTag Tag)
136 + assert(HeaderP != NULL);
137 +#if RPM_VERSION >= 0x040600
138 + int32_t num = headerGetNumber(HeaderP, Tag);
145 - assert(HeaderP != NULL);
147 int rc = headerGetEntry(HeaderP, Tag,
148 &type, &val, &count);
149 - num = (int_32*)val;
150 + num = (int32_t*)val;
155 string RPMHdrHandler::GetSTag(rpmTag Tag)
158 + assert(HeaderP != NULL);
159 +#if RPM_VERSION >= 0x040600
160 + return string(headerGetString(HeaderP, Tag));
165 - assert(HeaderP != NULL);
167 int rc = headerGetEntry(HeaderP, Tag,
168 &type, &val, &count);
169 str = (const char *)val;
170 return string(rc?str:"");
175 @@ -341,7 +355,11 @@ bool RPMHdrHandler::PRCO(unsigned int Ty
177 #if RPM_VERSION >= 0x040403
178 case pkgCache::Dep::Suggests:
179 +#if RPM_VERSION >= 0x040600
180 + deptype = RPMTAG_SUGGESTNAME;
182 deptype = RPMTAG_SUGGESTSNAME;
185 #if 0 // Enhances dep type is not even known to apt, sigh..
186 case pkgCache::Dep::Enhances:
187 @@ -371,7 +371,7 @@ bool RPMHdrHandler::PRCO(unsigned int Ty
190 int res, type, count;
191 - int_32 deptag, depver, depflags;
192 + int32_t deptag, depver, depflags;
193 void *nameval = NULL;
195 void *flagval = NULL;
196 @@ -442,7 +442,7 @@ bool RPMHdrHandler::FileList(vector<stri
198 const char **names = NULL;
203 rpmHeaderGetEntry(HeaderP, RPMTAG_OLDFILENAMES,
204 NULL, (void **) &val, &count);
205 @@ -458,6 +476,36 @@ bool RPMHdrHandler::FileList(vector<stri
207 bool RPMHdrHandler::ChangeLog(vector<ChangeLogEntry *> &ChangeLogs)
209 +#if RPM_VERSION >= 0x040600
210 + headerGetFlags flags = HEADERGET_MINMEM | HEADERGET_EXT;
211 + rpmtd changelogtimes = rpmtdNew();
212 + rpmtd changelognames = rpmtdNew();
213 + rpmtd changelogtexts = rpmtdNew();
215 + if (headerGet(HeaderP, RPMTAG_CHANGELOGTIME, changelogtimes, flags) &&
216 + headerGet(HeaderP, RPMTAG_CHANGELOGNAME, changelognames, flags) &&
217 + headerGet(HeaderP, RPMTAG_CHANGELOGTEXT, changelogtexts, flags)) {
218 + rpmtdInit(changelogtimes);
219 + rpmtdInit(changelognames);
220 + rpmtdInit(changelogtexts);
221 + while ((rpmtdNext(changelogtimes) != -1) &&
222 + (rpmtdNext(changelognames) != -1) &&
223 + (rpmtdNext(changelogtexts) != -1)) {
224 + ChangeLogEntry *Entry = new ChangeLogEntry;
225 + Entry->Time = rpmtdGetNumber(changelogtimes);
226 + Entry->Author = rpmtdGetString(changelognames);
227 + Entry->Text = rpmtdGetString(changelogtexts);
228 + ChangeLogs.push_back(Entry);
231 + rpmtdFreeData(changelogtimes);
232 + rpmtdFreeData(changelognames);
233 + rpmtdFreeData(changelogtexts);
235 + rpmtdFree(changelogtimes);
236 + rpmtdFree(changelognames);
237 + rpmtdFree(changelogtexts);
240 char **authorl = NULL;
241 char **entryl = NULL;
242 @@ -483,7 +531,8 @@ bool RPMHdrHandler::ChangeLog(vector<Cha
252 @@ -870,11 +919,20 @@ RPMDBHandler::~RPMDBHandler()
253 * There's a WTF involved as rpmCheckSignals() actually calls exit()
254 * so we shouldn't even get here really?!
256 +#if RPM_VERSION >= 0x040600
257 + if (rpmsqIsCaught(SIGINT) ||
258 + rpmsqIsCaught(SIGQUIT) ||
259 + rpmsqIsCaught(SIGHUP) ||
260 + rpmsqIsCaught(SIGTERM) ||
261 + rpmsqIsCaught(SIGPIPE))
263 if (sigismember(&rpmsqCaught, SIGINT) ||
264 sigismember(&rpmsqCaught, SIGQUIT) ||
265 sigismember(&rpmsqCaught, SIGHUP) ||
266 sigismember(&rpmsqCaught, SIGTERM) ||
267 - sigismember(&rpmsqCaught, SIGPIPE)) {
268 + sigismember(&rpmsqCaught, SIGPIPE))
272 } else if (Handler != NULL) {
274 @@ -942,7 +942,7 @@ bool RPMDBHandler::Jump(off_t Offset)
276 #if RPM_VERSION >= 0x040000
277 // rpmdb indexes are hardcoded uint32_t, the size must match here
278 - uint_32 rpmOffset = iOffset;
279 + uint32_t rpmOffset = iOffset;
282 rpmdbFreeIterator(RpmIter);
283 @@ -1265,7 +1265,7 @@ bool RPMRepomdHandler::PRCO(unsigned int
286 for (xmlNode *n = prco->children; n; n = n->next) {
289 string deptype, depver;
290 xmlChar *depname, *flags;
291 if ((depname = xmlGetProp(n, (xmlChar*)"name")) == NULL) continue;
292 @@ -1703,7 +1703,7 @@ bool RPMSqliteHandler::PRCO(unsigned int
295 while (prco->Step()) {
298 string deptype, depver = "";
301 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmlistparser.h.orig 2008-01-12 10:45:07.000000000 +0100
302 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmlistparser.h 2022-03-26 21:29:55.630026571 +0100
303 @@ -52,7 +52,7 @@ class rpmListParser : public pkgCacheGen
305 bool ParseStatus(pkgCache::PkgIterator Pkg,pkgCache::VerIterator Ver);
306 bool ParseDepends(pkgCache::VerIterator Ver,
307 - char **namel, char **verl, int_32 *flagl,
308 + char **namel, char **verl, int32_t *flagl,
309 int count, unsigned int Type);
310 bool ParseDepends(pkgCache::VerIterator Ver, unsigned int Type);
311 bool ParseProvides(pkgCache::VerIterator Ver);
312 --- apt-0.5.15lorg3.94a/tools/genpkglist.cc.orig 2008-01-12 10:45:07.000000000 +0100
313 +++ apt-0.5.15lorg3.94a/tools/genpkglist.cc 2022-03-28 18:03:32.655772212 +0200
316 #ifndef RPM_HAVE_DATA_T
317 typedef void * rpm_data_t;
318 -typedef int_32 rpm_count_t;
319 -typedef int_32 rpm_tagtype_t;
320 +typedef int32_t rpm_count_t;
321 +typedef int32_t rpm_tagtype_t;
324 #define CRPMTAG_TIMESTAMP 1012345
327 +rpmTagVal tags[] = {
331 @@ -70,9 +70,10 @@ int tags[] = {
332 RPMTAG_OBSOLETEFLAGS,
333 RPMTAG_OBSOLETEVERSION,
339 -int numTags = sizeof(tags) / sizeof(int);
340 +int numTags = sizeof(tags) / sizeof(int) - 1;
344 @@ -84,7 +85,7 @@ typedef struct {
348 -static inline int usefullFile(char *a)
349 +static inline int usefullFile(const char *a)
353 @@ -103,15 +104,74 @@ static inline int usefullFile(char *a)
355 static void copyStrippedFileList(Header header, Header newHeader)
357 +#if RPM_VERSION >= 0x040600
358 + headerGetFlags flags = HEADERGET_MINMEM | HEADERGET_EXT;
359 + rpmtd dirnames = rpmtdNew();
360 + rpmtd basenames = rpmtdNew();
361 + rpmtd dirindexes = rpmtdNew();
363 + if (headerGet(header, RPMTAG_DIRNAMES, dirnames, flags) &&
364 + headerGet(header, RPMTAG_BASENAMES, basenames, flags) &&
365 + headerGet(header, RPMTAG_DIRINDEXES, dirindexes, flags)) {
366 + rpmtdInit(dirnames);
367 + rpmtdInit(basenames);
368 + rpmtdInit(dirindexes);
369 + std::map<std::string, uint32_t> dirToIndex;
370 + std::vector<std::string> newBasenames, newDirnames;
371 + std::vector<uint32_t> newDirindexes;
372 + while ((rpmtdNext(basenames) != -1) && (rpmtdNext(dirindexes) != -1)) {
373 + const char *basename = rpmtdGetString(basenames);
374 + uint32_t idx = rpmtdGetNumber(dirindexes);
375 + if (rpmtdSetIndex(dirnames, idx) == -1)
377 + const char *dirname = rpmtdGetString(dirnames);
378 + bool ok = usefullFile(basename);
380 + ok = usefullFile(dirname);
382 + newBasenames.push_back(basename);
384 + if (dirToIndex.find(dirname) != dirToIndex.end())
385 + newIdx = dirToIndex.at(dirname);
387 + newIdx = newDirnames.size();
388 + dirToIndex[dirname] = newIdx;
389 + newDirnames.push_back(dirname);
391 + newDirindexes.push_back(newIdx);
394 + if (newBasenames.size() > 0) {
395 + const char **data = new const char*[newDirnames.size()];
396 + for (size_t i = 0; i < newDirnames.size(); i++)
397 + data[i] = newDirnames[i].c_str();
398 + headerPutStringArray(newHeader, RPMTAG_DIRNAMES, data, newDirnames.size());
400 + data = new const char*[newBasenames.size()];
401 + for (size_t i = 0; i < newBasenames.size(); i++)
402 + data[i] = newBasenames[i].c_str();
403 + headerPutStringArray(newHeader, RPMTAG_BASENAMES, data, newBasenames.size());
405 + headerPutUint32(newHeader, RPMTAG_DIRINDEXES, newDirindexes.data(), newDirindexes.size());
408 + rpmtdFreeData(dirnames);
409 + rpmtdFreeData(basenames);
410 + rpmtdFreeData(dirindexes);
412 + rpmtdFree(dirnames);
413 + rpmtdFree(basenames);
414 + rpmtdFree(dirindexes);
416 rpm_count_t i, i1, i2;
418 rpm_tagtype_t type1, type2, type3;
419 rpm_count_t count1, count2, count3;
420 char **dirnames = NULL, **basenames = NULL;
421 - int_32 *dirindexes = NULL;
422 + int32_t *dirindexes = NULL;
423 rpm_data_t dirnameval = NULL, basenameval = NULL, dirindexval = NULL;
424 char **dnames, **bnames;
427 int res1, res2, res3;
429 #define FREE(a) if (a) free(a);
430 @@ -124,7 +184,7 @@ static void copyStrippedFileList(Header
431 &dirindexval, &count3);
432 dirnames = (char **)dirnameval;
433 basenames = (char **)basenameval;
434 - dirindexes = (int_32 *)dirindexval;
435 + dirindexes = (int32_t *)dirindexval;
437 if (res1 != 1 || res2 != 1 || res3 != 1) {
439 @@ -134,7 +194,7 @@ static void copyStrippedFileList(Header
443 - dindexes = (int_32*)malloc(sizeof(int_32)*count3);
444 + dindexes = (int32_t*)malloc(sizeof(int32_t)*count3);
448 @@ -195,6 +255,7 @@ static void copyStrippedFileList(Header
456 @@ -227,11 +288,11 @@ bool loadUpdateInfo(char *path, map<stri
460 -#if RPM_VERSION >= 0x040000
461 +#if RPM_VERSION >= 0x040000 && RPM_VERSION < 0x040600
462 // No prototype from rpm after 4.0.
464 -int headerGetRawEntry(Header h, int_32 tag, int_32 * type,
465 - void *p, int_32 *c);
466 +int headerGetRawEntry(Header h, int32_t tag, int32_t * type,
467 + void *p, int32_t *c);
471 @@ -241,13 +302,16 @@ bool copyFields(Header h, Header newHead
480 +#if RPM_VERSION >= 0x040600
481 + headerCopyTags(h, newHeader, tags);
484 for (i = 0; i < numTags; i++) {
485 - int_32 type, count;
486 + int32_t type, count;
490 @@ -258,8 +322,28 @@ bool copyFields(Header h, Header newHead
492 headerAddEntry(newHeader, tags[i], type, data, count);
497 +#if RPM_VERSION >= 0x040600
498 + headerGetFlags flags = HEADERGET_MINMEM | HEADERGET_EXT;
499 + rpmtd dnames = rpmtdNew();
500 + rpmtd bnames = rpmtdNew();
501 + rpmtd dindexes = rpmtdNew();
502 + if (headerGet(h, RPMTAG_DIRNAMES, dnames, flags) &&
503 + headerGet(h, RPMTAG_BASENAMES, bnames, flags) &&
504 + headerGet(h, RPMTAG_DIRINDEXES, dindexes, flags)) {
505 + headerPut(newHeader, dnames, HEADERPUT_DEFAULT);
506 + headerPut(newHeader, bnames, HEADERPUT_DEFAULT);
507 + headerPut(newHeader, dindexes, HEADERPUT_DEFAULT);
509 + rpmtdFreeData(dnames);
510 + rpmtdFreeData(bnames);
511 + rpmtdFreeData(dindexes);
514 + rpmtdFree(dindexes);
516 rpm_tagtype_t type1, type2, type3;
517 rpm_count_t count1, count2, count3;
518 char **dnames, **bnames, **dindexes;
519 @@ -282,17 +366,23 @@ bool copyFields(Header h, Header newHead
520 headerAddEntry(newHeader, RPMTAG_BASENAMES, type2, bnames, count2);
521 headerAddEntry(newHeader, RPMTAG_DIRINDEXES, type3, dindexes, count3);
525 copyStrippedFileList(h, newHeader);
528 // update index of srpms
530 + const char *srpm, *name;
532 +#if RPM_VERSION >= 0x040600
533 + name = headerGetString(h, RPMTAG_NAME);
534 + srpm = headerGetString(h, RPMTAG_SOURCERPM);
535 + res = (name && srpm) ? 1 : 0;
539 rpm_data_t srpmval, nameval;
543 res = headerGetEntry(h, RPMTAG_NAME, &type,
545 @@ -300,23 +390,36 @@ bool copyFields(Header h, Header newHead
547 name = (char *)nameval;
548 srpm = (char *)srpmval;
552 fprintf(idxfile, "%s %s\n", srpm, name);
555 // our additional tags
556 +#if RPM_VERSION >= 0x040600
557 + uint32_t usize = size[0];
558 + headerPutString(newHeader, CRPMTAG_DIRECTORY, directory);
559 + headerPutString(newHeader, CRPMTAG_FILENAME, filename);
560 + headerPutUint32(newHeader, CRPMTAG_FILESIZE, &usize, 1);
562 headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE,
564 headerAddEntry(newHeader, CRPMTAG_FILENAME, RPM_STRING_TYPE,
566 headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE,
570 // update description tags
571 if (updateInfo.find(string(filename)) != updateInfo.end()) {
573 string name = string(filename);
574 +#if RPM_VERSION >= 0x040600
575 + headerPutString(newHeader, CRPMTAG_UPDATE_SUMMARY, updateInfo[name].summary.c_str());
576 + headerPutString(newHeader, CRPMTAG_UPDATE_URL, updateInfo[name].url.c_str());
577 + headerPutString(newHeader, CRPMTAG_UPDATE_DATE, updateInfo[name].date.c_str());
578 + headerPutString(newHeader, CRPMTAG_UPDATE_IMPORTANCE, updateInfo[name].importance.c_str());
582 tmp = updateInfo[name].summary.c_str();
583 headerAddEntry(newHeader, CRPMTAG_UPDATE_SUMMARY,
584 @@ -334,6 +437,7 @@ bool copyFields(Header h, Header newHead
585 headerAddEntry(newHeader, CRPMTAG_UPDATE_IMPORTANCE,
592 @@ -590,7 +694,11 @@ int main(int argc, char ** argv)
594 md5cache->MD5ForFile(string(dirEntries[entry_cur]->d_name),
596 +#if RPM_VERSION >= 0x040600
597 + headerPutString(newHeader, CRPMTAG_MD5, md5);
599 headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE, md5, 1);
602 headerWrite(outfd, newHeader, HEADER_MAGIC_YES);
604 --- apt-0.5.15lorg3.94a/tools/gensrclist.cc.orig 2008-01-12 10:45:07.000000000 +0100
605 +++ apt-0.5.15lorg3.94a/tools/gensrclist.cc 2022-03-28 18:20:13.380350822 +0200
606 @@ -51,9 +51,10 @@ int tags[] = {
610 - RPMTAG_REQUIREVERSION
611 + RPMTAG_REQUIREVERSION,
614 -int numTags = sizeof(tags) / sizeof(int);
615 +int numTags = sizeof(tags) / sizeof(int) - 1;
617 #if defined(__APPLE__) || defined(__FREEBSD__)
618 int selectDirent(struct dirent *ent)
619 @@ -136,11 +137,11 @@ void usage()
620 cerr << " --cachedir=DIR use a custom directory for package md5sum cache"<<endl;
623 -#if RPM_VERSION >= 0x040000
624 +#if RPM_VERSION >= 0x040000 && RPM_VERSION < 0x040600
626 // No prototype from rpm after 4.0.
627 -int headerGetRawEntry(Header h, int_32 tag, int_32 * type,
628 - void *p, int_32 *c);
629 +int headerGetRawEntry(Header h, int32_t tag, int32_t * type,
630 + void *p, int32_t *c);
634 @@ -153,7 +154,7 @@ int main(int argc, char ** argv)
635 struct dirent **dirEntries;
640 int entry_no, entry_cur;
642 map<string, list<char*>* > rpmTable; // table that maps srpm -> generated rpm
643 @@ -333,6 +334,9 @@ int main(int argc, char ** argv)
644 newHeader = headerNew();
647 +#if RPM_VERSION >= 0x040600
648 + headerCopyTags(h, newHeader, tags);
650 for (i = 0; i < numTags; i++) {
653 @@ -345,9 +349,16 @@ int main(int argc, char ** argv)
655 headerAddEntry(newHeader, tags[i], type, data, count);
660 // our additional tags
661 +#if RPM_VERSION >= 0x040600
662 + uint32_t usize = size[0];
663 + headerPutString(newHeader, CRPMTAG_DIRECTORY, srpmdir.c_str());
664 + headerPutString(newHeader, CRPMTAG_FILENAME, dirEntries[entry_cur]->d_name);
665 + headerPutUint32(newHeader, CRPMTAG_FILESIZE, &usize, 1);
667 headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE,
670 @@ -355,14 +366,19 @@ int main(int argc, char ** argv)
671 dirEntries[entry_cur]->d_name, 1);
672 headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE,
679 md5cache->MD5ForFile(dirEntries[entry_cur]->d_name, sb.st_mtime, md5);
681 +#if RPM_VERSION >= 0x040600
682 + headerPutString(newHeader, CRPMTAG_MD5, md5);
684 headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE,
689 foundInIndex = false;
690 @@ -384,8 +400,12 @@ int main(int argc, char ** argv)
694 +#if RPM_VERSION >= 0x040600
695 + headerPutStringArray(newHeader, CRPMTAG_BINARY, l, count);
697 headerAddEntry(newHeader, CRPMTAG_BINARY,
698 RPM_STRING_ARRAY_TYPE, l, count);
702 if (foundInIndex || !mapi)