9 #define _RPMEVR_INTERNAL
18 #define _RPMFI_INTERNAL
41 const char *
name, *version, *release;
42 char fileName[BUFSIZ];
45 sprintf(fileName,
"%s-%s-%s.%ssrc.rpm", name, version, release,
57 const char * payload_format,
const char * fmodeMacro)
64 const char *failedFile = NULL;
69 {
const char *fmode =
rpmExpand(fmodeMacro, NULL);
70 if (!(fmode && fmode[0] ==
'w'))
98 failedFile =
_free(failedFile);
113 while((nb =
Fread(buf,
sizeof(buf[0]),
sizeof(buf), csa->
cpioFdIn)) > 0) {
114 if (
Fwrite(buf,
sizeof(buf[0]), nb, fdo) != nb) {
137 const char * fn = buf;
141 fn =
rpmGetPath(
"%{_builddir}/%{?buildsubdir:%{buildsubdir}/}", file, NULL);
144 if (fn != buf) fn =
_free(fn);
145 if (fd == NULL ||
Ferror(fd)) {
152 while (fgets(buf,
sizeof(buf), f)) {
176 if (hge(h, tag, NULL, &s, NULL)) {
219 _(
"Could not open PreIn file: %s\n"), pkg->
preInFile);
226 _(
"Could not open PreUn file: %s\n"), pkg->
preUnFile);
240 _(
"Could not open PostIn file: %s\n"), pkg->
postInFile);
247 _(
"Could not open PostUn file: %s\n"), pkg->
postUnFile);
262 _(
"Could not open VerifyScript file: %s\n"), pkg->
verifyFile);
277 _(
"Could not open Trigger script file: %s\n"),
301 fdi = (fileName != NULL)
302 ?
Fopen(fileName,
"r")
303 :
fdDup(STDIN_FILENO);
305 if (fdi == NULL ||
Ferror(fdi)) {
307 (fileName ? fileName :
"<stdin>"),
309 if (fdi) (void)
Fclose(fdi);
315 if ((rc =
Fread(lead,
sizeof(
char),
sizeof(*lead), fdi)) !=
sizeof(*lead)) {
317 (fileName ? fileName :
"<stdin>"),
326 (fileName ? fileName :
"<stdin>"),
Fstrerror(fdi));
348 if (sigs) *sigs = NULL;
358 (fileName ? fileName :
"<stdin>"));
363 (fileName ? fileName :
"<stdin>"));
387 0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
391 #define RPMPKGVERSION_MIN 30004
392 #define RPMPKGVERSION_MAX 40003
413 if (rpmlead_version < 3 || rpmlead_version > 4)
415 return rpmlead_version;
422 const char *
name, *version, *release;
427 const char ** provides = NULL;
428 const char ** providesEVR = NULL;
430 int_32 * provideFlags = NULL;
436 xx =
headerNVR(h, &name, &version, &release);
437 if (!(name && version && release))
439 pEVR = p =
alloca(21 + strlen(version) + 1 + strlen(release) + 1);
442 sprintf(p,
"%d:", *epoch);
459 for (i = 0; i < providesCount; i++) {
473 if (provides && providesEVR && provideFlags)
474 for (i = 0; i < providesCount; i++) {
475 if (!(provides[i] && providesEVR[i]))
478 !strcmp(name, provides[i]) && !strcmp(pEVR, providesEVR[i])))
486 provides = hfd(provides, pnt);
487 providesEVR = hfd(providesEVR, pvt);
501 int type,
CSA_t csa,
char *passPhrase,
const char **cookie)
506 const char * sigtarget = NULL;
507 const char * rpmio_flags = NULL;
508 const char * payload_format = NULL;
509 const char * SHA1 = NULL;
536 payload_format =
rpmExpand(
"%{?_source_payload_format}", NULL);
537 rpmio_flags =
rpmExpand(
"%{?_source_payload}", NULL);
540 payload_format =
rpmExpand(
"%{?_binary_payload_format}", NULL);
541 rpmio_flags =
rpmExpand(
"%{?_binary_payload}", NULL);
545 if (!(payload_format && *payload_format)) {
546 payload_format =
_free(payload_format);
547 payload_format =
xstrdup(
"cpio");
549 if (!(rpmio_flags && *rpmio_flags)) {
550 rpmio_flags =
_free(rpmio_flags);
551 rpmio_flags =
xstrdup(
"w9.gzdio");
553 s = strchr(rpmio_flags,
'.');
556 if (payload_format) {
557 if (!strcmp(payload_format,
"tar")
558 || !strcmp(payload_format,
"ustar")) {
569 if (s[1] ==
'g' && s[2] ==
'z')
572 else if (s[1] ==
'b' && s[2] ==
'z')
575 else if (s[1] ==
'l' && s[2] ==
'z') {
580 strcpy(buf, rpmio_flags);
581 buf[s - rpmio_flags] =
'\0';
621 rc =
cpio_doio(fd, h, csa, payload_format, rpmio_flags);
629 rpmio_flags =
_free(rpmio_flags);
630 payload_format =
_free(payload_format);
677 (void) fflush(stdout);
708 static const size_t align = 1024;
709 size_t nb = align - 96 - 16 - 8;
715 b = memset(
alloca(nb), 0, nb);
722 fd =
Fopen(fileName,
"w");
723 if (fd == NULL ||
Ferror(fd)) {
739 }
else if (csa->
lead != NULL) {
744 memset(&lead, 0,
sizeof(lead));
752 {
const char *
name, *version, *release;
753 (void)
headerNVR(h, &name, &version, &release);
754 sprintf(buf,
"%s-%s-%s", name, version, release);
755 strncpy(lead.
name, buf,
sizeof(lead.
name));
772 ifd =
Fopen(sigtarget,
"r");
773 if (ifd == NULL ||
Ferror(ifd)) {
807 while ((count =
Fread(buf,
sizeof(buf[0]),
sizeof(buf), ifd)) > 0) {
814 if (
Fwrite(buf,
sizeof(buf[0]), count, fd) != count) {
828 if (sig != NULL && pkgidp != NULL) {
830 unsigned char * MD5 = NULL;
849 sigtarget =
_free(sigtarget);
875 const char *errorString;
878 for (pkg = spec->
packages; pkg != NULL; pkg = pkg->
next) {
899 {
const char * optflags =
rpmExpand(
"%{optflags}", NULL);
902 optflags =
_free(optflags);
913 {
const char *binFormat =
rpmGetPath(
"%{_rpmfilename}", NULL);
914 char *binRpm, *binDir;
917 binFormat =
_free(binFormat);
918 if (binRpm == NULL) {
922 "filename for package %s: %s\n"), name, errorString);
926 if ((binDir = strchr(binRpm,
'/')) != NULL) {
931 if (
Stat(dn, &st) < 0) {
934 if (
Mkdir(dn, 0755) == 0)
939 dn, strerror(
errno));
945 binRpm =
_free(binRpm);
948 memset(csa, 0,
sizeof(*csa));
949 csa->cpioArchiveSize = 0;
951 csa->cpioFdIn =
fdNew(
"init (packageBinaries)");
959 csa->cpioList =
rpmfiFree(csa->cpioList);
960 csa->cpioFdIn =
fdFree(csa->cpioFdIn,
"init (packageBinaries)");
976 #if defined(RPM_VENDOR_MANDRIVA)
988 #if defined(RPM_VENDOR_MANDRIVA)
1000 memset(csa, 0,
sizeof(*csa));
1001 csa->cpioArchiveSize = 0;
1003 csa->cpioFdIn =
fdNew(
"init (packageSources)");
1012 csa->cpioList =
rpmfiFree(csa->cpioList);
1013 csa->cpioFdIn =
fdFree(csa->cpioFdIn,
"init (packageSources)");