- The fsm shouldn't know any archive format specifics, detect the trailer
from rpmcpioHeaderRead() and signal EOF through CPIOERR_HDR_TRAILER
instead.
#include <rpm/rpmio.h>
#include <rpm/rpmlog.h>
+#include <rpm/rpmstring.h>
#include "lib/cpio.h"
rc = rpmcpioReadPad(cpio);
cpio->fileend = cpio->offset + st->st_size;
+ if (!rc && rstreq(*path, CPIO_TRAILER))
+ rc = CPIOERR_HDR_TRAILER;
+
return rc;
}
rc = rpmcpioHeaderRead(archive, &(fsm->path), &(fsm->sb));
/* Detect and exit on end-of-payload. */
- if (!rc && rstreq(fsm->path, CPIO_TRAILER))
+ if (rc == CPIOERR_HDR_TRAILER) {
+ rc = 0;
break;
+ }
if (rc) break;