/** \ingroup payload
* Create directory name iterator.
- * @param fsm file state machine data
+ * @param fi file info set
+ * @param fs file state set
* @param reverse traverse directory names in reverse order?
* @return directory name iterator
*/
-static DNLI_t dnlInitIterator(const FSM_t fsm, int reverse)
+static DNLI_t dnlInitIterator(rpmfi fi, rpmfs fs, int reverse)
{
- rpmfi fi = fsmGetFi(fsm);
- rpmfs fs = rpmteGetFileStates(fsmGetTe(fsm));
DNLI_t dnli;
int i, j;
int dc;
return NULL;
}
-/* forward declaration*/
-static int fsmMkdirs(DNLI_t dnli, struct selabel_handle *sehandle);
-
static int fsmSetup(FSM_t fsm, fileStage goal,
rpmts ts, rpmte te, rpmfi fi, FD_t cfd, rpmpsm psm,
rpm_loff_t * archiveSize, char ** failedFile)
* @param sehandle selinux label handle (bah)
* @return 0 on success
*/
-static int fsmMkdirs(DNLI_t dnli, struct selabel_handle *sehandle)
+static int fsmMkdirs(rpmfi fi, rpmfs fs, struct selabel_handle *sehandle)
{
+ DNLI_t dnli = dnlInitIterator(fi, fs, 0);
struct stat sb;
const char *dpath;
int dc = dnlCount(dnli);
}
free(dnlx);
free(ldn);
+ dnlFreeIterator(dnli);
return rc;
}
/* Detect and create directories not explicitly in package. */
if (!rc) {
- DNLI_t dnli = dnlInitIterator(fsm, 0);
- rc = fsmMkdirs(dnli, fsm->sehandle);
- dnlFreeIterator(dnli);
+ rc = fsmMkdirs(fi, rpmteGetFileStates(te), fsm->sehandle);
}
while (!rc) {