#include <rpmfi.h>
-#include "lib/legacy.h" /* XXX rpmfiBuildFNames() */
#include "lib/manifest.h"
#include "debug.h"
#include <rpmlib.h>
#include <rpmmacro.h>
#include <rpmstring.h>
+#include <rpmfi.h>
#include "lib/legacy.h"
#include "debug.h"
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;
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
*/
#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 */
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;
+}
+
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
#include <rpmlib.h>
#include <rpmstring.h>
-#include "lib/legacy.h"
+#include "lib/legacy.h" /* XXX expand/compressFilelist(), providePackageNVR() */
#include <rpmts.h> /* XXX rpmtsCreate/rpmtsFree */