/* This converts an old style (rpm 1.x) database to the new style */
-#include <fcntl.h>
-#include <stdlib.h>
-#include <unistd.h>
+#include "system.h"
+
+#include <rpmio_internal.h>
+#include <rpmbuild.h>
+#include <rpmdb.h>
-#include "dbindex.h"
#include "falloc.h"
-#include "header.h"
-#include "misc.h"
#include "oldrpmdb.h"
#include "oldheader.h"
-#include "rpmerr.h"
-#include "rpmlib.h"
+#include "debug.h"
int convertDB(void);
-int convertDB(void) {
+int convertDB(void)
+{
struct oldrpmdb olddb;
rpmdb db;
struct oldrpmdbLabel * packageLabels, * label;
char * preun, * postun;
int i, j;
- if (oldrpmdbOpen(&olddb)) {
- error(RPMERR_OLDDBMISSING, "");
+ if (rpmfileexists("/var/lib/rpm/packages.rpm")) {
+ rpmError(RPMERR_NOCREATEDB, _("RPM database already exists\n"));
return 0;
}
- if (exists("/var/lib/rpm/packages.rpm")) {
-#if 0
- error(RPMERR_NOCREATEDB, "RPM database already exists");
+ if (oldrpmdbOpen(&olddb)) {
+ rpmError(RPMERR_OLDDBMISSING, _("Old db is missing\n"));
return 0;
-#endif
- unlink("/var/lib/rpm/packages.rpm");
}
/* if any of the indexes exist, get rid of them */
unlink("/var/lib/rpm/packageindex.rpm");
unlink("/var/lib/rpm/fileindex.rpm");
- if (rpmdbOpen("", &db, O_RDWR | O_EXCL | O_CREAT, 0644)) {
- error(RPMERR_DBOPEN, "failed to create RPM database /var/lib/rpm");
+ if (rpmdbOpen("", &db, O_RDWR | O_CREAT, 0644)) {
+ rpmError(RPMERR_DBOPEN, _("failed to create RPM database /var/lib/rpm\n"));
return 0;
}
packageLabels = oldrpmdbGetAllLabels(&olddb);
if (!packageLabels) {
- error(RPMERR_OLDDBCORRUPT, "");
+ rpmError(RPMERR_OLDDBCORRUPT, _("Old db is corrupt\n"));
rpmdbClose(db);
unlink("/var/lib/rpm/packages.rpm");
oldrpmdbClose(&olddb);
for (label = packageLabels; label; label = label->next) {
if (oldrpmdbGetPackageInfo(&olddb, *label, &package)) {
- fprintf(stderr, "oldrpmdbGetPackageInfo failed &olddb = %p olddb.packages = %p\n", &olddb, olddb.packages);
- exit(1);
+ fprintf(stderr, _("oldrpmdbGetPackageInfo failed &olddb = %p olddb.packages = %p\n"), &olddb, olddb.packages);
+ exit(EXIT_FAILURE);
}
group = oldrpmdbGetPackageGroup(&olddb, *label);
preun = oldrpmdbGetPackagePreun(&olddb, *label);
postun = oldrpmdbGetPackagePostun(&olddb, *label);
- dbentry = newHeader();
- addEntry(dbentry, RPMTAG_NAME, STRING_TYPE, package.name, 1);
- addEntry(dbentry, RPMTAG_VERSION, STRING_TYPE, package.version, 1);
- addEntry(dbentry, RPMTAG_RELEASE, STRING_TYPE, package.release, 1);
- addEntry(dbentry, RPMTAG_DESCRIPTION, STRING_TYPE,
+ dbentry = headerNew();
+ headerAddEntry(dbentry, RPMTAG_NAME, RPM_STRING_TYPE, package.name, 1);
+ headerAddEntry(dbentry, RPMTAG_VERSION, RPM_STRING_TYPE, package.version, 1);
+ headerAddEntry(dbentry, RPMTAG_RELEASE, RPM_STRING_TYPE, package.release, 1);
+ headerAddEntry(dbentry, RPMTAG_DESCRIPTION, RPM_STRING_TYPE,
package.description, 1);
- addEntry(dbentry, RPMTAG_BUILDTIME, INT32_TYPE, &package.buildTime, 1);
- addEntry(dbentry, RPMTAG_BUILDHOST, STRING_TYPE, package.buildHost, 1);
- addEntry(dbentry, RPMTAG_INSTALLTIME, INT32_TYPE,
+ headerAddEntry(dbentry, RPMTAG_BUILDTIME, RPM_INT32_TYPE, &package.buildTime, 1);
+ headerAddEntry(dbentry, RPMTAG_BUILDHOST, RPM_STRING_TYPE, package.buildHost, 1);
+ headerAddEntry(dbentry, RPMTAG_INSTALLTIME, RPM_INT32_TYPE,
&package.installTime, 1);
- addEntry(dbentry, RPMTAG_DISTRIBUTION, STRING_TYPE,
+ headerAddEntry(dbentry, RPMTAG_DISTRIBUTION, RPM_STRING_TYPE,
package.distribution, 1);
- addEntry(dbentry, RPMTAG_VENDOR, STRING_TYPE, package.vendor, 1);
- addEntry(dbentry, RPMTAG_SIZE, INT32_TYPE, &package.size, 1);
- addEntry(dbentry, RPMTAG_COPYRIGHT, STRING_TYPE, package.copyright, 1);
- addEntry(dbentry, RPMTAG_GROUP, STRING_TYPE, group, 1);
+ headerAddEntry(dbentry, RPMTAG_VENDOR, RPM_STRING_TYPE, package.vendor, 1);
+ headerAddEntry(dbentry, RPMTAG_SIZE, RPM_INT32_TYPE, &package.size, 1);
+ headerAddEntry(dbentry, RPMTAG_LICENSE, RPM_STRING_TYPE, package.copyright, 1);
+ headerAddEntry(dbentry, RPMTAG_GROUP, RPM_STRING_TYPE, group, 1);
if (preun) {
- addEntry(dbentry, RPMTAG_PREUN, STRING_TYPE, preun, 1);
+ headerAddEntry(dbentry, RPMTAG_PREUN, RPM_STRING_TYPE, preun, 1);
free(preun);
}
if (postun) {
- addEntry(dbentry, RPMTAG_POSTUN, STRING_TYPE, postun, 1);
+ headerAddEntry(dbentry, RPMTAG_POSTUN, RPM_STRING_TYPE, postun, 1);
free(postun);
}
gif = oldrpmdbGetPackageGif(&olddb, *label, &gifSize);
if (gif) {
- addEntry(dbentry, RPMTAG_GIF, BIN_TYPE, gif, gifSize);
+ headerAddEntry(dbentry, RPMTAG_GIF, RPM_BIN_TYPE, gif, gifSize);
free(gif);
}
if (package.fileCount) {
/* some packages have no file lists */
- fileList = malloc(sizeof(char *) * package.fileCount);
- fileLinktoList = malloc(sizeof(char *) * package.fileCount);
- fileMD5List = malloc(sizeof(char *) * package.fileCount);
- fileSizeList = malloc(sizeof(int_32) * package.fileCount);
- fileUIDList = malloc(sizeof(int_32) * package.fileCount);
- fileGIDList = malloc(sizeof(int_32) * package.fileCount);
- fileMtimesList = malloc(sizeof(int_32) * package.fileCount);
- fileFlagsList = malloc(sizeof(int_32) * package.fileCount);
- fileModesList = malloc(sizeof(int_16) * package.fileCount);
- fileRDevsList = malloc(sizeof(int_16) * package.fileCount);
- fileStatesList = malloc(sizeof(char) * package.fileCount);
+ fileList = xmalloc(sizeof(char *) * package.fileCount);
+ fileLinktoList = xmalloc(sizeof(char *) * package.fileCount);
+ fileMD5List = xmalloc(sizeof(char *) * package.fileCount);
+ fileSizeList = xmalloc(sizeof(int_32) * package.fileCount);
+ fileUIDList = xmalloc(sizeof(int_32) * package.fileCount);
+ fileGIDList = xmalloc(sizeof(int_32) * package.fileCount);
+ fileMtimesList = xmalloc(sizeof(int_32) * package.fileCount);
+ fileFlagsList = xmalloc(sizeof(int_32) * package.fileCount);
+ fileModesList = xmalloc(sizeof(int_16) * package.fileCount);
+ fileRDevsList = xmalloc(sizeof(int_16) * package.fileCount);
+ fileStatesList = xmalloc(sizeof(char) * package.fileCount);
/* reverse the file list while we're at it */
j = package.fileCount - 1;
fileFlagsList[j] |= RPMFILE_CONFIG;
}
- addEntry(dbentry, RPMTAG_FILENAMES, STRING_ARRAY_TYPE, fileList,
+ headerAddEntry(dbentry, RPMTAG_OLDFILENAMES, RPM_STRING_ARRAY_TYPE, fileList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILELINKTOS, STRING_ARRAY_TYPE,
+ headerAddEntry(dbentry, RPMTAG_FILELINKTOS, RPM_STRING_ARRAY_TYPE,
fileLinktoList, package.fileCount);
- addEntry(dbentry, RPMTAG_FILEMD5S, STRING_ARRAY_TYPE, fileMD5List,
+ headerAddEntry(dbentry, RPMTAG_FILEMD5S, RPM_STRING_ARRAY_TYPE, fileMD5List,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILESIZES, INT32_TYPE, fileSizeList,
+ headerAddEntry(dbentry, RPMTAG_FILESIZES, RPM_INT32_TYPE, fileSizeList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILEUIDS, INT32_TYPE, fileUIDList,
+ headerAddEntry(dbentry, RPMTAG_FILEUIDS, RPM_INT32_TYPE, fileUIDList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILEGIDS, INT32_TYPE, fileGIDList,
+ headerAddEntry(dbentry, RPMTAG_FILEGIDS, RPM_INT32_TYPE, fileGIDList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILEMTIMES, INT32_TYPE, fileMtimesList,
+ headerAddEntry(dbentry, RPMTAG_FILEMTIMES, RPM_INT32_TYPE, fileMtimesList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILEFLAGS, INT32_TYPE, fileFlagsList,
+ headerAddEntry(dbentry, RPMTAG_FILEFLAGS, RPM_INT32_TYPE, fileFlagsList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILEMODES, INT16_TYPE, fileModesList,
+ headerAddEntry(dbentry, RPMTAG_FILEMODES, RPM_INT16_TYPE, fileModesList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILERDEVS, INT16_TYPE, fileRDevsList,
+ headerAddEntry(dbentry, RPMTAG_FILERDEVS, RPM_INT16_TYPE, fileRDevsList,
package.fileCount);
- addEntry(dbentry, RPMTAG_FILESTATES, INT8_TYPE, fileStatesList,
+ headerAddEntry(dbentry, RPMTAG_FILESTATES, RPM_INT8_TYPE, fileStatesList,
package.fileCount);
free(fileList);
free(fileStatesList);
}
- rpmdbAdd(db, dbentry);
+ rpmdbAdd(db, dbentry, NULL, NULL);
free(group);
- freeHeader(dbentry);
+ headerFree(dbentry);
oldrpmdbFreePackageInfo(package);
}
return 1;
}
-int main(int argc, char ** argv) {
+int main(int argc, char ** argv)
+{
+ setprogname(argv[0]);
if (argc != 1) {
- fprintf(stderr, "rpmconvert: no arguments expected");
- exit(1);
+ fprintf(stderr, _("rpmconvert: no arguments expected"));
+ exit(EXIT_FAILURE);
}
- printf("rpmconvert 1.0 - converting database in /var/lib/rpm\n");
+ rpmReadConfigFiles(NULL, NULL);
+
+ printf(_("rpmconvert 1.0 - converting database in /var/lib/rpm\n"));
convertDB();
- exit(0);
+ exit(EXIT_SUCCESS);
}