diff -up apt-0.5.15lorg3.94pt/apt-pkg/rpm/rapttypes.h.rpm414 apt-0.5.15lorg3.94pt/apt-pkg/rpm/rapttypes.h --- apt-0.5.15lorg3.94pt/apt-pkg/rpm/rapttypes.h.rpm414 2009-02-24 11:46:07.000000000 +0100 +++ apt-0.5.15lorg3.94pt/apt-pkg/rpm/rapttypes.h 2017-09-01 02:10:06.182343306 +0200 @@ -6,6 +6,8 @@ * C happily converts enum to int etc automatically, C++ doesn't... */ +#include "config.h" + #ifdef HAVE_RPM_RPMTYPES_H #include <rpm/rpmtypes.h> #include <rpm/rpmds.h> diff -up apt-0.5.15lorg3.94pt/apt-pkg/rpm/rpmhandler.h.rpm414 apt-0.5.15lorg3.94pt/apt-pkg/rpm/rpmhandler.h --- apt-0.5.15lorg3.94pt/apt-pkg/rpm/rpmhandler.h.rpm414 2017-09-01 00:30:45.482477437 +0200 +++ apt-0.5.15lorg3.94pt/apt-pkg/rpm/rpmhandler.h 2017-09-01 02:14:37.264531097 +0200 @@ -10,6 +10,8 @@ #ifndef PKGLIB_RPMHANDLER_H #define PKGLIB_RPMHANDLER_H +#include "config.h" + #include <apt-pkg/aptconf.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/pkgrecords.h> diff -up apt-0.5.15lorg3.94pt/tools/genpkglist.cc.rpm414 apt-0.5.15lorg3.94pt/tools/genpkglist.cc --- apt-0.5.15lorg3.94pt/tools/genpkglist.cc.rpm414 2017-09-01 00:30:46.617469648 +0200 +++ apt-0.5.15lorg3.94pt/tools/genpkglist.cc 2017-09-01 02:26:30.588778802 +0200 @@ -108,21 +108,27 @@ static void copyStrippedFileList(Header raptTagCount count1, count2, count3; char **dirnames = NULL, **basenames = NULL; raptInt *dirindexes = NULL; - raptTagData dirnameval = NULL, basenameval = NULL, dirindexval = NULL; +// raptTagData dirnameval = NULL, basenameval = NULL, dirindexval = NULL; char **dnames, **bnames; raptInt *dindexes; bool res1, res2, res3; + rpmtd td_dirnames = rpmtdNew(); + rpmtd td_basenames = rpmtdNew(); + rpmtd td_dirindexes = rpmtdNew(); #define FREE(a) if (a) free(a); - res1 = headerGetRawEntry(header, RPMTAG_DIRNAMES, &type1, - &dirnameval, &count1); - res2 = headerGetRawEntry(header, RPMTAG_BASENAMES, &type2, - &basenameval, &count2); - res3 = headerGetRawEntry(header, RPMTAG_DIRINDEXES, &type3, - &dirindexval, &count3); - dirnames = (char **)dirnameval; - basenames = (char **)basenameval; - dirindexes = (raptInt *)dirindexval; + res1 = headerGet(header, RPMTAG_DIRNAMES, td_dirnames, HEADERGET_RAW); + res2 = headerGet(header, RPMTAG_BASENAMES, td_basenames, HEADERGET_RAW); + res3 = headerGet(header, RPMTAG_DIRINDEXES, td_dirindexes, HEADERGET_RAW); +// res1 = headerGetRawEntry(header, RPMTAG_DIRNAMES, &type1, +// &dirnameval, &count1); +// res2 = headerGetRawEntry(header, RPMTAG_BASENAMES, &type2, +// &basenameval, &count2); +// res3 = headerGetRawEntry(header, RPMTAG_DIRINDEXES, &type3, +// &dirindexval, &count3); + dirnames = (char **)td_dirnames->data; + basenames = (char **)td_basenames->data; + dirindexes = (raptInt *)td_dirindexes->data; if (res1!= 1 || res2!= 1 || res3!= 1 ) { FREE(dirnames); @@ -180,15 +186,23 @@ static void copyStrippedFileList(Header return; } - headerAddEntry(newHeader, RPMTAG_DIRNAMES, type1, dnames, i2); + headerPutStringArray(newHeader, RPMTAG_DIRNAMES, (char const **)dnames, i2); + headerPutStringArray(newHeader, RPMTAG_BASENAMES, (char const **)bnames, i1); + headerPutUint32(newHeader, RPMTAG_DIRINDEXES, dindexes, i1); + + td_dirnames = rpmtdFree(td_dirnames); + td_basenames = rpmtdFree(td_basenames); + td_dirindexes = rpmtdFree(td_dirindexes); + +// headerAddEntry(newHeader, RPMTAG_DIRNAMES, type1, dnames, i2); - headerAddEntry(newHeader, RPMTAG_BASENAMES, type2, bnames, i1); +// headerAddEntry(newHeader, RPMTAG_BASENAMES, type2, bnames, i1); - headerAddEntry(newHeader, RPMTAG_DIRINDEXES, type3, dindexes, i1); +// headerAddEntry(newHeader, RPMTAG_DIRINDEXES, type3, dindexes, i1); - FREE(dirnames); - FREE(basenames); - FREE(dindexes); +// FREE(dirnames); +// FREE(basenames); +// FREE(dindexes); } @@ -229,6 +243,7 @@ bool copyFields(Header h, Header newHead { int i; raptInt size[1]; + rpmtd td = rpmtdNew(); size[0] = filesize; @@ -241,35 +256,50 @@ bool copyFields(Header h, Header newHead // Copy raw entry, so that internationalized strings // will get copied correctly. - res = headerGetRawEntry(h, (raptTag) tags[i], &type, &data, &count); + res = headerGet(h, (raptTag) tags[i], td, HEADERGET_RAW); +// res = headerGetRawEntry(h, (raptTag) tags[i], &type, &data, &count); if (res != 1) continue; - headerAddEntry(newHeader, (raptTag) tags[i], type, data, count); + res = headerPut(newHeader, td, HEADERPUT_DEFAULT); +// headerAddEntry(newHeader, (raptTag) tags[i], type, data, count); } + td = rpmtdFree(td); if (fullFileList) { raptTagType type1, type2, type3; - raptTagCount count1, count2, count3; - char **dnames, **bnames, **dindexes; - raptTagData dnameval, bnameval, dindexval; +// raptTagCount count1, count2, count3; +// char **dnames, **bnames, **dindexes; +// raptTagData dnameval, bnameval, dindexval; int res; - - res = headerGetEntry(h, RPMTAG_DIRNAMES, (rpm_tagtype_t*)&type1, - &dnameval, &count1); - res = headerGetEntry(h, RPMTAG_BASENAMES, (rpm_tagtype_t*)&type2, - &bnameval, &count2); - res = headerGetEntry(h, RPMTAG_DIRINDEXES, (rpm_tagtype_t*)&type3, - &dindexval, &count3); - - dnames = (char **)dnameval; - bnames = (char **)bnameval; - dindexes = (char **)dindexval; + rpmtd td_dirnames = rpmtdNew(); + rpmtd td_basenames = rpmtdNew(); + rpmtd td_dirindexes = rpmtdNew(); + + res = headerGet(h, RPMTAG_DIRNAMES, td_dirnames, HEADERGET_DEFAULT); + res = headerGet(h, RPMTAG_BASENAMES, td_basenames, HEADERGET_DEFAULT); + res = headerGet(h, RPMTAG_DIRINDEXES, td_dirindexes, HEADERGET_DEFAULT); +// res = headerGetEntry(h, RPMTAG_DIRNAMES, (rpm_tagtype_t*)&type1, +// &dnameval, &count1); +// res = headerGetEntry(h, RPMTAG_BASENAMES, (rpm_tagtype_t*)&type2, +// &bnameval, &count2); +// res = headerGetEntry(h, RPMTAG_DIRINDEXES, (rpm_tagtype_t*)&type3, +// &dindexval, &count3); + +// dnames = (char **)dnameval; +// bnames = (char **)bnameval; +// dindexes = (char **)dindexval; if (res == 1) { - headerAddEntry(newHeader, RPMTAG_DIRNAMES, type1, dnames, count1); - headerAddEntry(newHeader, RPMTAG_BASENAMES, type2, bnames, count2); - headerAddEntry(newHeader, RPMTAG_DIRINDEXES, type3, dindexes, count3); + headerPut(newHeader, td_dirnames, HEADERPUT_DEFAULT); + headerPut(newHeader, td_basenames, HEADERPUT_DEFAULT); + headerPut(newHeader, td_dirindexes, HEADERPUT_DEFAULT); +// headerAddEntry(newHeader, RPMTAG_DIRNAMES, type1, dnames, count1); +// headerAddEntry(newHeader, RPMTAG_BASENAMES, type2, bnames, count2); +// headerAddEntry(newHeader, RPMTAG_DIRINDEXES, type3, dindexes, count3); } + td_dirnames = rpmtdFree(td_dirnames); + td_basenames = rpmtdFree(td_basenames); + td_dirindexes = rpmtdFree(td_dirindexes); } else { copyStrippedFileList(h, newHeader); } @@ -279,49 +309,77 @@ bool copyFields(Header h, Header newHead raptTagType type; raptTagCount count; raptTagData srpmval, nameval; - char *srpm, *name; + char const *srpm, *name; int res; + rpmtd td_name = rpmtdNew(); + rpmtd td_srpm = rpmtdNew(); - res = headerGetEntry(h, RPMTAG_NAME, (rpm_tagtype_t*)&type, - &nameval, &count); - res = headerGetEntry(h, RPMTAG_SOURCERPM, (rpm_tagtype_t*)&type, - &srpmval, &count); - name = (char *)nameval; - srpm = (char *)srpmval; + res = headerGet(h, RPMTAG_NAME, td_name, HEADERGET_DEFAULT); + res = headerGet(h, RPMTAG_SOURCERPM, td_srpm, HEADERGET_DEFAULT); +// res = headerGetEntry(h, RPMTAG_NAME, (rpm_tagtype_t*)&type, +// &nameval, &count); +// res = headerGetEntry(h, RPMTAG_SOURCERPM, (rpm_tagtype_t*)&type, +// &srpmval, &count); + name = rpmtdNextString(td_name); + srpm = rpmtdNextString(td_srpm); if (res == 1) { fprintf(idxfile, "%s %s\n", srpm, name); } } + { // our additional tags - headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE, - directory, 1); - headerAddEntry(newHeader, CRPMTAG_FILENAME, RPM_STRING_TYPE, - filename, 1); - headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE, - size, 1); + rpmtd td_directory = rpmtdNew(); + rpmtd td_filename = rpmtdNew(); + rpmtd td_filesize = rpmtdNew(); + rpmtdFromString(td_directory, CRPMTAG_DIRECTORY, directory); + rpmtdFromString(td_filename, CRPMTAG_FILENAME, filename); + rpmtdFromUint32(td_filesize, CRPMTAG_FILESIZE, size, 1); + headerPut(newHeader, td_directory, HEADERPUT_DEFAULT); + headerPut(newHeader, td_filename, HEADERPUT_DEFAULT); + headerPut(newHeader, td_filesize, HEADERPUT_DEFAULT); + td_directory = rpmtdFree(td_directory); + td_filename = rpmtdFree(td_filename); + td_filesize = rpmtdFree(td_filesize); + } +// headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE, +// directory, 1); +// headerAddEntry(newHeader, CRPMTAG_FILENAME, RPM_STRING_TYPE, +// filename, 1); +// headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE, +// size, 1); // update description tags if (updateInfo.find(string(filename)) != updateInfo.end()) { const char *tmp; string name = string(filename); + td = rpmtdNew(); tmp = updateInfo[name].summary.c_str(); - headerAddEntry(newHeader, CRPMTAG_UPDATE_SUMMARY, - RPM_STRING_TYPE, - tmp, 1); + rpmtdFromString(td, CRPMTAG_UPDATE_SUMMARY, tmp); + headerPut(newHeader, td, HEADERPUT_DEFAULT); +// headerAddEntry(newHeader, CRPMTAG_UPDATE_SUMMARY, +// RPM_STRING_TYPE, +// tmp, 1); tmp = updateInfo[name].url.c_str(); - headerAddEntry(newHeader, CRPMTAG_UPDATE_URL, - RPM_STRING_TYPE, - tmp, 1); + rpmtdFromString(td, CRPMTAG_UPDATE_URL, tmp); + headerPut(newHeader, td, HEADERPUT_DEFAULT); +// headerAddEntry(newHeader, CRPMTAG_UPDATE_URL, +// RPM_STRING_TYPE, +// tmp, 1); tmp = updateInfo[name].date.c_str(); - headerAddEntry(newHeader, CRPMTAG_UPDATE_DATE, - RPM_STRING_TYPE, - tmp, 1); + rpmtdFromString(td, CRPMTAG_UPDATE_DATE, tmp); + headerPut(newHeader, td, HEADERPUT_DEFAULT); +// headerAddEntry(newHeader, CRPMTAG_UPDATE_DATE, +// RPM_STRING_TYPE, +// tmp, 1); tmp = updateInfo[name].importance.c_str(); - headerAddEntry(newHeader, CRPMTAG_UPDATE_IMPORTANCE, - RPM_STRING_TYPE, - tmp, 1); + rpmtdFromString(td, CRPMTAG_UPDATE_IMPORTANCE, tmp); + headerPut(newHeader, td, HEADERPUT_DEFAULT); +// headerAddEntry(newHeader, CRPMTAG_UPDATE_IMPORTANCE, +// RPM_STRING_TYPE, +// tmp, 1); + td = rpmtdFree(td); } return true; @@ -549,7 +607,11 @@ int main(int argc, char ** argv) md5cache->MD5ForFile(string(dirEntries[entry_cur]->d_name), sb.st_mtime, md5); - headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE, md5, 1); + rpmtd td = rpmtdNew(); + rpmtdFromString(td, CRPMTAG_MD5, md5); + headerPut(newHeader, td, HEADERPUT_DEFAULT); + td = rpmtdFree(td); +// headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE, md5, 1); headerWrite(outfd, newHeader, HEADER_MAGIC_YES); diff -up apt-0.5.15lorg3.94pt/tools/gensrclist.cc.rpm414 apt-0.5.15lorg3.94pt/tools/gensrclist.cc --- apt-0.5.15lorg3.94pt/tools/gensrclist.cc.rpm414 2009-02-24 11:46:07.000000000 +0100 +++ apt-0.5.15lorg3.94pt/tools/gensrclist.cc 2017-09-01 02:32:29.008391312 +0200 @@ -302,6 +302,7 @@ int main(int argc, char ** argv) Header newHeader; int i; bool foundInIndex; + rpmtd td = rpmtdNew(); newHeader = headerNew(); @@ -314,29 +315,46 @@ int main(int argc, char ** argv) // Copy raw entry, so that internationalized strings // will get copied correctly. - res = headerGetRawEntry(h, (raptTag) tags[i], &type, &data, &count); + res = headerGet(h, tags[i], td, HEADERGET_RAW); +// res = headerGetRawEntry(h, (raptTag) tags[i], &type, &data, &count); if (res != 1) continue; - headerAddEntry(newHeader, (raptTag) tags[i], type, data, count); + headerPut(newHeader, td, HEADERPUT_DEFAULT); +// headerAddEntry(newHeader, (raptTag) tags[i], type, data, count); } // our additional tags - headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE, - srpmdir.c_str(), 1); + { + rpmtd td_directory = rpmtdNew(); + rpmtd td_filename = rpmtdNew(); + rpmtd td_filesize = rpmtdNew(); + rpmtdFromString(td_directory, CRPMTAG_DIRECTORY, srpmdir.c_str()); + rpmtdFromString(td_filename, CRPMTAG_FILENAME, dirEntries[entry_cur]->d_name); + rpmtdFromUint32(td_filesize, CRPMTAG_FILESIZE, size, 1); + headerPut(newHeader, td_directory, HEADERPUT_DEFAULT); + headerPut(newHeader, td_filename, HEADERPUT_DEFAULT); + headerPut(newHeader, td_filesize, HEADERPUT_DEFAULT); + td_directory = rpmtdFree(td_directory); + td_filename = rpmtdFree(td_filename); + td_filesize = rpmtdFree(td_filesize); + } +// headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE, +// srpmdir.c_str(), 1); - headerAddEntry(newHeader, CRPMTAG_FILENAME, RPM_STRING_TYPE, - dirEntries[entry_cur]->d_name, 1); - headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE, - size, 1); +// headerAddEntry(newHeader, CRPMTAG_FILENAME, RPM_STRING_TYPE, +// dirEntries[entry_cur]->d_name, 1); +// headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE, +// size, 1); { char md5[34]; md5cache->MD5ForFile(dirEntries[entry_cur]->d_name, sb.st_mtime, md5); - headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE, - md5, 1); + headerPutString(newHeader, CRPMTAG_MD5, md5); +// headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE, +// md5, 1); } foundInIndex = false; @@ -358,8 +376,9 @@ int main(int argc, char ** argv) } if (count) { - headerAddEntry(newHeader, CRPMTAG_BINARY, - RPM_STRING_ARRAY_TYPE, l, count); + headerPutStringArray(newHeader, CRPMTAG_BINARY, (char const **)l, count); +// headerAddEntry(newHeader, CRPMTAG_BINARY, +// RPM_STRING_ARRAY_TYPE, l, count); } } if (foundInIndex || !mapi)