unsigned int cpioArchiveSize;
FD_t cpioFdIn;
rpmfi cpioList;
- struct rpmlead * lead; /* XXX FIXME: exorcize lead/arch/os */
} * CSA_t;
/**
* Read rpm package components from file.
* @param fileName file name of package (or NULL to use stdin)
* @retval specp spec structure to carry package header (or NULL)
- * @retval lead package lead
* @retval sigs package signature
* @param csa
* @return 0 on success
*/
int readRPM(const char * fileName,
rpmSpec * specp,
- struct rpmlead * lead,
Header * sigs,
CSA_t csa);
* @retval *hdrp header to write (final header is returned).
* @retval *pkgidp header+payload MD5 of package (NULL to disable).
* @param fileName file name of package
- * @param type RPMLEAD_SOURCE/RPMLEAD_BINARY
* @param csa
* @param passPhrase
* @retval cookie generated cookie (i.e build host/time)
*/
int writeRPM(Header * hdrp, unsigned char ** pkgidp,
const char * fileName,
- int type,
CSA_t csa,
char * passPhrase,
const char ** cookie);
return 0;
}
-int readRPM(const char *fileName, rpmSpec *specp, struct rpmlead *lead,
+int readRPM(const char *fileName, rpmSpec *specp,
Header *sigs, CSA_t csa)
{
FD_t fdi;
return RPMLOG_ERR;
}
- /* Get copy of lead */
- if ((rc = Fread(lead, sizeof(char), RPMLEAD_SIZE, fdi)) != RPMLEAD_SIZE) {
- rpmlog(RPMLOG_ERR, _("readRPM: read %s: %s\n"),
- (fileName ? fileName : "<stdin>"),
- Fstrerror(fdi));
- return RPMLOG_ERR;
- }
-
/* XXX FIXME: EPIPE on <stdin> */
if (Fseek(fdi, 0, SEEK_SET) == -1) {
rpmlog(RPMLOG_ERR, _("%s: Fseek failed: %s\n"),
}
int writeRPM(Header *hdrp, unsigned char ** pkgidp, const char *fileName,
- int type, CSA_t csa, char *passPhrase, const char **cookie)
+ CSA_t csa, char *passPhrase, const char **cookie)
{
FD_t fd = NULL;
FD_t ifd = NULL;
char buf[BUFSIZ];
Header h;
Header sig = NULL;
- int rc = 0;
+ int rc = 0, isSource;
/* Transfer header reference form *hdrp to h. */
h = headerLink(*hdrp);
*pkgidp = NULL;
/* Binary packages now have explicit Provides: name = version-release. */
- if (type == RPMLEAD_BINARY)
+ isSource = headerIsSource(h);
+ if (isSource)
providePackageNVR(h);
/* Save payload information */
- switch(type) {
- case RPMLEAD_SOURCE:
+ if (isSource)
rpmio_flags = rpmExpand("%{?_source_payload}", NULL);
- break;
- case RPMLEAD_BINARY:
+ else
rpmio_flags = rpmExpand("%{?_binary_payload}", NULL);
- break;
- }
+
if (!(rpmio_flags && *rpmio_flags)) {
rpmio_flags = _free(rpmio_flags);
rpmio_flags = xstrdup("w9.gzdio");
csa->cpioFdIn = fdNew("init (packageBinaries)");
csa->cpioList = rpmfiLink(pkg->cpioList, "packageBinaries");
- rc = writeRPM(&pkg->header, NULL, fn, RPMLEAD_BINARY,
- csa, spec->passPhrase, NULL);
+ rc = writeRPM(&pkg->header, NULL, fn, csa, spec->passPhrase, NULL);
csa->cpioList = rpmfiFree(csa->cpioList);
csa->cpioFdIn = fdFree(csa->cpioFdIn, "init (packageBinaries)");
csa->cpioList = rpmfiLink(spec->sourceCpioList, "packageSources");
spec->sourcePkgId = NULL;
- rc = writeRPM(&spec->sourceHeader, &spec->sourcePkgId, fn, RPMLEAD_SOURCE,
+ rc = writeRPM(&spec->sourceHeader, &spec->sourcePkgId, fn,
csa, spec->passPhrase, &(spec->cookie));
csa->cpioList = rpmfiFree(csa->cpioList);
static int
rewriteRPM(const char *fni, const char *fno, cmd_t *cmds[], int ncmds)
{
- struct rpmlead lead; /* XXX FIXME: exorcize lead/arch/os */
Header sigs;
rpmSpec spec;
struct cpioSourceArchive_s csabuf, *csa = &csabuf;
csa->cpioArchiveSize = 0;
csa->cpioFdIn = fdNew("init (rewriteRPM)");
csa->cpioList = NULL;
- csa->lead = &lead; /* XXX FIXME: exorcize lead/arch/os */
/* Read rpm and (partially) recreate spec/pkg control structures */
- if ((rc = readRPM(fni, &spec, &lead, &sigs, csa)) != 0)
+ if ((rc = readRPM(fni, &spec, &sigs, csa)) != 0)
return rc;
/* Inject new strings into header tags */
goto exit;
/* Rewrite the rpm */
- if (lead.type == RPMLEAD_SOURCE) {
- rc = writeRPM(&spec->packages->header, NULL, fno, (int)lead.type,
+ if (headerIsSource(spec->packages->header)) {
+ rc = writeRPM(&spec->packages->header, NULL, fno,
csa, spec->passPhrase, &(spec->cookie));
} else {
- rc = writeRPM(&spec->packages->header, NULL, fno, (int)lead.type,
+ rc = writeRPM(&spec->packages->header, NULL, fno,
csa, spec->passPhrase, NULL);
}