Make fssizes tag extension 64bit
authorPanu Matilainen <pmatilai@redhat.com>
Thu, 12 Jun 2008 14:09:35 +0000 (17:09 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Thu, 12 Jun 2008 14:09:35 +0000 (17:09 +0300)
- type changing doesn't matter much as this is just runtime generated data,
  not from headers
- also gets rid of the remaining old hge() use in tagexts

lib/rpmtag.h
lib/tagexts.c

index 0ea43ba..5f2a819 100644 (file)
@@ -272,7 +272,7 @@ typedef enum rpmTag_e {
     RPMTAG_FILEPROVIDE         = 5001, /* s[] extension */
     RPMTAG_FILEREQUIRE         = 5002, /* s[] extension */
     RPMTAG_FSNAMES             = 5003, /* s[] extension */
-    RPMTAG_FSSIZES             = 5004, /* i[] extension */
+    RPMTAG_FSSIZES             = 5004, /* l[] extension */
     RPMTAG_TRIGGERCONDS                = 5005, /* s[] extension */
     RPMTAG_TRIGGERTYPE         = 5006, /* s[] extension */
     RPMTAG_ORIGFILENAMES       = 5007, /* s[] extension */
index f379bd7..88ebf19 100644 (file)
@@ -207,24 +207,23 @@ static int instprefixTag(Header h, rpmtd td)
  */
 static int fssizesTag(Header h, rpmtd td)
 {
-    HGE_t hge = (HGE_t)headerGetEntryMinMemory;
-    const char ** filenames;
-    rpm_off_t * filesizes;
-    rpm_off_t * usages;
-    rpm_count_t numFiles;
-
-    if (!hge(h, RPMTAG_FILESIZES, NULL, (rpm_data_t *) &filesizes, &numFiles)) {
-       filesizes = NULL;
-       numFiles = 0;
-       filenames = NULL;
-    } else {
-       rpmfiBuildFNames(h, RPMTAG_BASENAMES, &filenames, &numFiles);
+    struct rpmtd_s fsizes, fnames;
+    const char ** filenames = NULL;
+    rpm_loff_t * filesizes = NULL;
+    rpm_loff_t * usages = NULL;
+    rpm_count_t numFiles = 0;
+
+    if (headerGet(h, RPMTAG_LONGFILESIZES, &fsizes, HEADERGET_EXT)) {
+       filesizes = fsizes.data;
+       headerGet(h, RPMTAG_FILENAMES, &fnames, HEADERGET_EXT);
+       filenames = fnames.data;
+       numFiles = rpmtdCount(&fnames);
     }
-
+       
     if (rpmGetFilesystemList(NULL, &(td->count)))
        return 0;
 
-    td->type = RPM_INT32_TYPE;
+    td->type = RPM_INT64_TYPE;
     td->flags = RPMTD_ALLOCED;
 
     if (filenames == NULL) {
@@ -239,7 +238,8 @@ static int fssizesTag(Header h, rpmtd td)
 
     td->data = usages;
 
-    filenames = _free(filenames);
+    rpmtdFreeData(&fnames);
+    rpmtdFreeData(&fsizes);
 
     return 1;
 }