#include <rpm/rpmlog.h>
#include "rpmio/rpmio_internal.h" /* fdInitDigest, fdFiniDigest */
-#include "lib/cpio.h"
#include "lib/fsm.h"
-#include "lib/rpmfi_internal.h" /* rpmfiFSM() */
-#include "lib/rpmte_internal.h" /* rpmfs */
#include "lib/signature.h"
#include "lib/rpmlead.h"
#include "build/rpmbuild_internal.h"
rpmts ts = NULL;
rpmfi fi = csa->cpioList;
rpmte te = NULL;
- rpmfs fs = NULL;
char *failedFile = NULL;
FD_t cfd;
- int i, fsmrc;
+ int fsmrc;
(void) Fflush(fdo);
cfd = Fdopen(fdDup(Fileno(fdo)), fmodeMacro);
ts = rpmtsCreate();
rpmtsAddInstallElement(ts, h, NULL, 0, NULL);
te = rpmtsElement(ts, 0);
- fs = rpmteGetFileStates(te);
-
- fi = rpmfiInit(fi, 0);
- while ((i = rpmfiNext(fi)) >= 0) {
- if (rpmfiFFlags(fi) & RPMFILE_GHOST)
- rpmfsSetAction(fs, i, FA_SKIP);
- else
- rpmfsSetAction(fs, i, FA_COPYOUT);
- }
fsmrc = rpmPackageFilesArchive(ts, te, fi, cfd,
&csa->cpioArchiveSize, &failedFile);
rpmcpio_t archive = rpmcpioOpen(cfd, O_WRONLY);
int rc = 0;
- if (archive == NULL)
+ if (archive == NULL) {
rc = CPIOERR_INTERNAL;
+ } else {
+ rpmfs fs = rpmteGetFileStates(te);
+ int ghost, i, fc = rpmfiFC(fi);
+ /* XXX Is this actually still needed? */
+ for (i = 0; i < fc; i++) {
+ ghost = (rpmfiFFlagsIndex(fi, i) & RPMFILE_GHOST);
+ rpmfsSetAction(fs, i, ghost ? FA_SKIP : FA_COPYOUT);
+ }
+ }
+
while (!rc) {
fsmReset(fsm);
RPM_GNUC_INTERNAL
rpmFileAction rpmfsGetAction(rpmfs fs, unsigned int ix);
-/* XXX this should be internal too but build code needs for now */
+RPM_GNUC_INTERNAL
void rpmfsSetAction(rpmfs fs, unsigned int ix, rpmFileAction action);
#ifdef __cplusplus