static rpmRC processScriptFiles(rpmSpec spec, Package pkg) { struct TriggerFileEntry *p; int addflags = 0; rpmRC rc = RPMRC_FAIL; Header h = pkg->header; if (addFileToTag(spec, pkg->preInFile, h, RPMTAG_PREIN, 1) || addFileToTag(spec, pkg->preUnFile, h, RPMTAG_PREUN, 1) || addFileToTag(spec, pkg->preTransFile, h, RPMTAG_PRETRANS, 1) || addFileToTag(spec, pkg->postInFile, h, RPMTAG_POSTIN, 1) || addFileToTag(spec, pkg->postUnFile, h, RPMTAG_POSTUN, 1) || addFileToTag(spec, pkg->postTransFile, h, RPMTAG_POSTTRANS, 1) || addFileToTag(spec, pkg->verifyFile, h, RPMTAG_VERIFYSCRIPT, 1)) { goto exit; } /* if any trigger has flags, we need to add flags entry for all of them */ for (p = pkg->triggerFiles; p != NULL; p = p->next) { if (p->flags) { addflags = 1; break; } } for (p = pkg->triggerFiles; p != NULL; p = p->next) { headerPutString(h, RPMTAG_TRIGGERSCRIPTPROG, p->prog); if (addflags) { headerPutUint32(h, RPMTAG_TRIGGERSCRIPTFLAGS, &p->flags, 1); } if (p->script) { headerPutString(h, RPMTAG_TRIGGERSCRIPTS, p->script); } else if (p->fileName) { if (addFileToTag(spec, p->fileName, h, RPMTAG_TRIGGERSCRIPTS, 0)) { goto exit; } } else { /* This is dumb. When the header supports NULL string */ /* this will go away. */ headerPutString(h, RPMTAG_TRIGGERSCRIPTS, ""); } } rc = RPMRC_OK; exit: return rc; }
static rpmRC processScriptFiles(rpmSpec spec, Package pkg) { struct TriggerFileEntry *p; int addflags = 0; if (pkg->preInFile) { if (addFileToTag(spec, pkg->preInFile, pkg->header, RPMTAG_PREIN)) { rpmlog(RPMLOG_ERR, _("Could not open PreIn file: %s\n"), pkg->preInFile); return RPMRC_FAIL; } } if (pkg->preUnFile) { if (addFileToTag(spec, pkg->preUnFile, pkg->header, RPMTAG_PREUN)) { rpmlog(RPMLOG_ERR, _("Could not open PreUn file: %s\n"), pkg->preUnFile); return RPMRC_FAIL; } } if (pkg->preTransFile) { if (addFileToTag(spec, pkg->preTransFile, pkg->header, RPMTAG_PRETRANS)) { rpmlog(RPMLOG_ERR, _("Could not open PreTrans file: %s\n"), pkg->preTransFile); return RPMRC_FAIL; } } if (pkg->postInFile) { if (addFileToTag(spec, pkg->postInFile, pkg->header, RPMTAG_POSTIN)) { rpmlog(RPMLOG_ERR, _("Could not open PostIn file: %s\n"), pkg->postInFile); return RPMRC_FAIL; } } if (pkg->postUnFile) { if (addFileToTag(spec, pkg->postUnFile, pkg->header, RPMTAG_POSTUN)) { rpmlog(RPMLOG_ERR, _("Could not open PostUn file: %s\n"), pkg->postUnFile); return RPMRC_FAIL; } } if (pkg->postTransFile) { if (addFileToTag(spec, pkg->postTransFile, pkg->header, RPMTAG_POSTTRANS)) { rpmlog(RPMLOG_ERR, _("Could not open PostTrans file: %s\n"), pkg->postTransFile); return RPMRC_FAIL; } } if (pkg->verifyFile) { if (addFileToTag(spec, pkg->verifyFile, pkg->header, RPMTAG_VERIFYSCRIPT)) { rpmlog(RPMLOG_ERR, _("Could not open VerifyScript file: %s\n"), pkg->verifyFile); return RPMRC_FAIL; } } /* if any trigger has flags, we need to add flags entry for all of them */ for (p = pkg->triggerFiles; p != NULL; p = p->next) { if (p->flags) { addflags = 1; break; } } for (p = pkg->triggerFiles; p != NULL; p = p->next) { headerPutString(pkg->header, RPMTAG_TRIGGERSCRIPTPROG, p->prog); if (addflags) { headerPutUint32(pkg->header, RPMTAG_TRIGGERSCRIPTFLAGS, &p->flags, 1); } if (p->script) { headerPutString(pkg->header, RPMTAG_TRIGGERSCRIPTS, p->script); } else if (p->fileName) { if (addFileToArrayTag(spec, p->fileName, pkg->header, RPMTAG_TRIGGERSCRIPTS)) { rpmlog(RPMLOG_ERR, _("Could not open Trigger script file: %s\n"), p->fileName); return RPMRC_FAIL; } } else { /* This is dumb. When the header supports NULL string */ /* this will go away. */ headerPutString(pkg->header, RPMTAG_TRIGGERSCRIPTS, ""); } } return RPMRC_OK; }
static rpmRC processScriptFiles(rpmSpec spec, Package pkg) { struct TriggerFileEntry *p; int addflags = 0; rpmRC rc = RPMRC_FAIL; Header h = pkg->header; struct TriggerFileEntry *tfa[] = {pkg->triggerFiles, pkg->fileTriggerFiles, pkg->transFileTriggerFiles}; rpmTagVal progTags[] = {RPMTAG_TRIGGERSCRIPTPROG, RPMTAG_FILETRIGGERSCRIPTPROG, RPMTAG_TRANSFILETRIGGERSCRIPTPROG}; rpmTagVal flagTags[] = {RPMTAG_TRIGGERSCRIPTFLAGS, RPMTAG_FILETRIGGERSCRIPTFLAGS, RPMTAG_TRANSFILETRIGGERSCRIPTFLAGS}; rpmTagVal scriptTags[] = {RPMTAG_TRIGGERSCRIPTS, RPMTAG_FILETRIGGERSCRIPTS, RPMTAG_TRANSFILETRIGGERSCRIPTS}; rpmTagVal priorityTags[] = {0, RPMTAG_FILETRIGGERPRIORITIES, RPMTAG_TRANSFILETRIGGERPRIORITIES}; int i; if (addFileToTag(spec, pkg->preInFile, h, RPMTAG_PREIN, 1) || addFileToTag(spec, pkg->preUnFile, h, RPMTAG_PREUN, 1) || addFileToTag(spec, pkg->preTransFile, h, RPMTAG_PRETRANS, 1) || addFileToTag(spec, pkg->postInFile, h, RPMTAG_POSTIN, 1) || addFileToTag(spec, pkg->postUnFile, h, RPMTAG_POSTUN, 1) || addFileToTag(spec, pkg->postTransFile, h, RPMTAG_POSTTRANS, 1) || addFileToTag(spec, pkg->verifyFile, h, RPMTAG_VERIFYSCRIPT, 1)) { goto exit; } for (i = 0; i < sizeof(tfa)/sizeof(tfa[0]); i++) { addflags = 0; /* if any trigger has flags, we need to add flags entry for all of them */ for (p = tfa[i]; p != NULL; p = p->next) { if (p->flags) { addflags = 1; break; } } for (p = tfa[i]; p != NULL; p = p->next) { headerPutString(h, progTags[i], p->prog); if (priorityTags[i]) { headerPutUint32(h, priorityTags[i], &p->priority, 1); } if (addflags) { headerPutUint32(h, flagTags[i], &p->flags, 1); } if (p->script) { headerPutString(h, scriptTags[i], p->script); } else if (p->fileName) { if (addFileToTag(spec, p->fileName, h, scriptTags[i], 0)) { goto exit; } } else { /* This is dumb. When the header supports NULL string */ /* this will go away. */ headerPutString(h, scriptTags[i], ""); } } } rc = RPMRC_OK; exit: return rc; }