Move rpmfiBuildFNames() to rpmfi now that it's possible
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 27 Nov 2007 09:52:55 +0000 (11:52 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 27 Nov 2007 09:52:55 +0000 (11:52 +0200)
lib/formats.c
lib/legacy.c
lib/legacy.h
lib/psm.c
lib/rpmfi.c
lib/rpmfi.h
python/header-py.c

index fdb6a5f..f9f8627 100644 (file)
@@ -9,7 +9,6 @@
 
 #include <rpmfi.h>
 
-#include "lib/legacy.h"        /* XXX rpmfiBuildFNames() */
 #include "lib/manifest.h"
 
 #include "debug.h"
index 6a8e253..267b136 100644 (file)
@@ -7,6 +7,7 @@
 #include <rpmlib.h>
 #include <rpmmacro.h>
 #include <rpmstring.h>
+#include <rpmfi.h>
 #include "lib/legacy.h"
 #include "debug.h"
 
@@ -115,61 +116,6 @@ exit:
     xx = hre(h, RPMTAG_OLDFILENAMES);
 }
 
-void rpmfiBuildFNames(Header h, rpmTag tagN,
-       const char *** fnp, int * fcp)
-{
-    HGE_t hge = (HGE_t)headerGetEntryMinMemory;
-    HFD_t hfd = headerFreeData;
-    const char ** baseNames;
-    const char ** dirNames;
-    uint32_t * dirIndexes;
-    int count;
-    const char ** fileNames;
-    int size;
-    rpmTag dirNameTag = 0;
-    rpmTag dirIndexesTag = 0;
-    rpmTagType bnt, dnt;
-    char * t;
-    int i, xx;
-
-    if (tagN == RPMTAG_BASENAMES) {
-       dirNameTag = RPMTAG_DIRNAMES;
-       dirIndexesTag = RPMTAG_DIRINDEXES;
-    } else if (tagN == RPMTAG_ORIGBASENAMES) {
-       dirNameTag = RPMTAG_ORIGDIRNAMES;
-       dirIndexesTag = RPMTAG_ORIGDIRINDEXES;
-    }
-
-    if (!hge(h, tagN, &bnt, (void **) &baseNames, &count)) {
-       if (fnp) *fnp = NULL;
-       if (fcp) *fcp = 0;
-       return;         /* no file list */
-    }
-
-    xx = hge(h, dirNameTag, &dnt, (void **) &dirNames, NULL);
-    xx = hge(h, dirIndexesTag, NULL, (void **) &dirIndexes, &count);
-
-    size = sizeof(*fileNames) * count;
-    for (i = 0; i < count; i++)
-       size += strlen(baseNames[i]) + strlen(dirNames[dirIndexes[i]]) + 1;
-
-    fileNames = xmalloc(size);
-    t = ((char *) fileNames) + (sizeof(*fileNames) * count);
-    for (i = 0; i < count; i++) {
-       fileNames[i] = t;
-       t = stpcpy( stpcpy(t, dirNames[dirIndexes[i]]), baseNames[i]);
-       *t++ = '\0';
-    }
-    baseNames = hfd(baseNames, bnt);
-    dirNames = hfd(dirNames, dnt);
-
-    if (fnp)
-       *fnp = fileNames;
-    else
-       fileNames = _free(fileNames);
-    if (fcp) *fcp = count;
-}
-
 void expandFilelist(Header h)
 {
     HAE_t hae = (HAE_t)headerAddEntry;
index fcec32b..95a9640 100644 (file)
@@ -21,26 +21,6 @@ extern "C" {
 void compressFilelist(Header h);
 
 /**
- * Retrieve file names from header.
- *
- * The representation of file names in package headers changed in rpm-4.0.
- * Originally, file names were stored as an array of absolute paths.
- * In rpm-4.0, file names are stored as separate arrays of dirname's and
- * basename's, * with a dirname index to associate the correct dirname
- * with each basname.
- *
- * This function is used to retrieve file names independent of how the
- * file names are represented in the package header.
- * 
- * @param h            header
- * @param tagN         RPMTAG_BASENAMES | PMTAG_ORIGBASENAMES
- * @retval *fnp                array of file names
- * @retval *fcp                number of files
- */
-void rpmfiBuildFNames(Header h, rpmTag tagN,
-               const char *** fnp, int * fcp);
-
-/**
  * Convert (dirname,basename,dirindex) tags to absolute path tag.
  * @param h            header
  */
index 22989e9..f32b3c2 100644 (file)
--- a/lib/psm.c
+++ b/lib/psm.c
@@ -27,7 +27,6 @@
 
 #include "lib/rpmlead.h"               /* writeLead proto */
 #include "lib/signature.h"             /* signature constants */
-#include "lib/legacy.h"                /* XXX rpmfiBuildFNames() */
 #include <rpmfileutil.h>       /* rpmMkTempFile() */
 #include "lib/misc.h"          /* XXX rpmMkdirPath, doputenv */
 #include <rpmdb.h>             /* XXX for db_chrootDone */
index 0a21030..faca414 100644 (file)
@@ -1539,3 +1539,59 @@ exit:
        av = _free(av);
     if (fcp) *fcp = ac;
 }
+
+void rpmfiBuildFNames(Header h, rpmTag tagN,
+       const char *** fnp, int * fcp)
+{
+    HGE_t hge = (HGE_t)headerGetEntryMinMemory;
+    HFD_t hfd = headerFreeData;
+    const char ** baseNames;
+    const char ** dirNames;
+    uint32_t * dirIndexes;
+    int count;
+    const char ** fileNames;
+    int size;
+    rpmTag dirNameTag = 0;
+    rpmTag dirIndexesTag = 0;
+    rpmTagType bnt, dnt;
+    char * t;
+    int i, xx;
+
+    if (tagN == RPMTAG_BASENAMES) {
+       dirNameTag = RPMTAG_DIRNAMES;
+       dirIndexesTag = RPMTAG_DIRINDEXES;
+    } else if (tagN == RPMTAG_ORIGBASENAMES) {
+       dirNameTag = RPMTAG_ORIGDIRNAMES;
+       dirIndexesTag = RPMTAG_ORIGDIRINDEXES;
+    }
+
+    if (!hge(h, tagN, &bnt, (void **) &baseNames, &count)) {
+       if (fnp) *fnp = NULL;
+       if (fcp) *fcp = 0;
+       return;         /* no file list */
+    }
+
+    xx = hge(h, dirNameTag, &dnt, (void **) &dirNames, NULL);
+    xx = hge(h, dirIndexesTag, NULL, (void **) &dirIndexes, &count);
+
+    size = sizeof(*fileNames) * count;
+    for (i = 0; i < count; i++)
+       size += strlen(baseNames[i]) + strlen(dirNames[dirIndexes[i]]) + 1;
+
+    fileNames = xmalloc(size);
+    t = ((char *) fileNames) + (sizeof(*fileNames) * count);
+    for (i = 0; i < count; i++) {
+       fileNames[i] = t;
+       t = stpcpy( stpcpy(t, dirNames[dirIndexes[i]]), baseNames[i]);
+       *t++ = '\0';
+    }
+    baseNames = hfd(baseNames, bnt);
+    dirNames = hfd(dirNames, dnt);
+
+    if (fnp)
+       *fnp = fileNames;
+    else
+       fileNames = _free(fileNames);
+    if (fcp) *fcp = count;
+}
+
index 17bf803..ec46094 100644 (file)
@@ -447,6 +447,26 @@ void rpmfiBuildFDeps(Header h, rpmTag tagN,
                const char *** fdepsp, int * fcp);
 
 /** \ingroup rpmfi
+ * Retrieve file names from header.
+ *
+ * The representation of file names in package headers changed in rpm-4.0.
+ * Originally, file names were stored as an array of absolute paths.
+ * In rpm-4.0, file names are stored as separate arrays of dirname's and
+ * basename's, * with a dirname index to associate the correct dirname
+ * with each basname.
+ *
+ * This function is used to retrieve file names independent of how the
+ * file names are represented in the package header.
+ * 
+ * @param h            header
+ * @param tagN         RPMTAG_BASENAMES | PMTAG_ORIGBASENAMES
+ * @retval *fnp                array of file names
+ * @retval *fcp                number of files
+ */
+void rpmfiBuildFNames(Header h, rpmTag tagN,
+               const char *** fnp, int * fcp);
+
+/** \ingroup rpmfi
  * Return file type from mode_t.
  * @param mode         file mode bits (from header)
  * @return             file type
index 165743e..cfd5e17 100644 (file)
@@ -7,7 +7,7 @@
 #include <rpmlib.h>
 #include <rpmstring.h>
 
-#include "lib/legacy.h"
+#include "lib/legacy.h"        /* XXX expand/compressFilelist(), providePackageNVR() */
 
 #include <rpmts.h>     /* XXX rpmtsCreate/rpmtsFree */