Annotate function args.
[tools/librpm-tizen.git] / convertdb.c
index 956655a..e266ccd 100644 (file)
@@ -1,21 +1,20 @@
 /* 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;
@@ -38,17 +37,14 @@ int convertDB(void) {
     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 */
@@ -57,14 +53,14 @@ int convertDB(void) {
     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);
@@ -73,60 +69,60 @@ int convertDB(void) {
 
     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;
@@ -153,27 +149,27 @@ int convertDB(void) {
                    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);
@@ -189,10 +185,10 @@ int convertDB(void) {
            free(fileStatesList);
        }
 
-        rpmdbAdd(db, dbentry);
+        rpmdbAdd(db, dbentry, NULL, NULL);
 
        free(group);
-       freeHeader(dbentry);
+       headerFree(dbentry);
 
        oldrpmdbFreePackageInfo(package);
     }
@@ -203,14 +199,18 @@ int convertDB(void) {
     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);
 }