From 964e1add0d5f2971d6ee6adaed5bd536bac89a22 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Thu, 17 Dec 2009 15:07:25 +0100 Subject: [PATCH] Move FSM_MKFIFO in place --- lib/fsm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/fsm.c b/lib/fsm.c index fd4eb6b..957a0ac 100644 --- a/lib/fsm.c +++ b/lib/fsm.c @@ -1825,7 +1825,14 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS)) break; rc = fsmUNSAFE(fsm, FSM_VERIFY); if (rc == CPIOERR_ENOENT) { st->st_mode = 0000; /* XXX abuse st->st_mode */ - rc = fsmNext(fsm, FSM_MKFIFO); + + rc = mkfifo(fsm->path, (st->st_mode & 07777)); + if (_fsm_debug && (FSM_MKFIFO & FSM_SYSCALL)) + rpmlog(RPMLOG_DEBUG, " %8s (%s, 0%04o) %s\n", fileStageString(FSM_MKFIFO), + fsm->path, (unsigned)(st->st_mode & 07777), + (rc < 0 ? strerror(errno) : "")); + if (rc < 0) rc = CPIOERR_MKFIFO_FAILED; + st->st_mode = st_mode; /* XXX restore st->st_mode */ } } else if (S_ISCHR(st->st_mode) || @@ -2123,14 +2130,6 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS)) break; if (rc == 0) rc = CPIOERR_ENOENT; return (rc ? rc : CPIOERR_ENOENT); /* XXX HACK */ break; - case FSM_MKFIFO: - rc = mkfifo(fsm->path, (st->st_mode & 07777)); - if (_fsm_debug && (stage & FSM_SYSCALL)) - rpmlog(RPMLOG_DEBUG, " %8s (%s, 0%04o) %s\n", cur, - fsm->path, (unsigned)(st->st_mode & 07777), - (rc < 0 ? strerror(errno) : "")); - if (rc < 0) rc = CPIOERR_MKFIFO_FAILED; - break; case FSM_MKNOD: /* FIX: check S_IFIFO or dev != 0 */ rc = mknod(fsm->path, (st->st_mode & ~07777), st->st_rdev); -- 2.7.4