int index;
char reqargs[BUFSIZ];
+ int res = PART_ERROR; /* assume failure */
int rc, argc;
int arg;
const char **argv = NULL;
if (!p) {
rpmlog(RPMLOG_ERR, _("line %d: triggers must have --: %s\n"),
spec->lineNum, spec->line);
- return RPMRC_FAIL;
+ return PART_ERROR;
}
*p = '\0';
if ((rc = poptParseArgvString(spec->line, &argc, &argv))) {
rpmlog(RPMLOG_ERR, _("line %d: Error parsing %s: %s\n"),
spec->lineNum, partname, poptStrerror(rc));
- return RPMRC_FAIL;
+ return PART_ERROR;
}
optCon = poptGetContext(NULL, argc, argv, optionsTable, 0);
rpmlog(RPMLOG_ERR,
_("line %d: internal script must end "
"with \'>\': %s\n"), spec->lineNum, prog);
- rc = RPMRC_FAIL;
goto exit;
}
} else if (prog[0] != '/') {
rpmlog(RPMLOG_ERR,
_("line %d: script program must begin "
"with \'/\': %s\n"), spec->lineNum, prog);
- rc = RPMRC_FAIL;
goto exit;
}
break;
spec->lineNum,
poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
spec->line);
- rc = RPMRC_FAIL;
goto exit;
}
rpmlog(RPMLOG_ERR, _("line %d: Too many names: %s\n"),
spec->lineNum,
spec->line);
- rc = RPMRC_FAIL;
goto exit;
}
}
if (lookupPackage(spec, name, flag, &pkg)) {
rpmlog(RPMLOG_ERR, _("line %d: Package does not exist: %s\n"),
spec->lineNum, spec->line);
- rc = RPMRC_FAIL;
goto exit;
}
if (headerIsEntry(pkg->header, progtag)) {
rpmlog(RPMLOG_ERR, _("line %d: Second %s\n"),
spec->lineNum, partname);
- rc = RPMRC_FAIL;
goto exit;
}
}
if ((rc = poptParseArgvString(prog, &progArgc, &progArgv))) {
rpmlog(RPMLOG_ERR, _("line %d: Error parsing %s: %s\n"),
spec->lineNum, partname, poptStrerror(rc));
- rc = RPMRC_FAIL;
goto exit;
}
sb = newStringBuf();
if ((rc = readLine(spec, STRIP_NOTHING)) > 0) {
nextPart = PART_NONE;
+ } else if (rc < 0) {
+ goto exit;
} else {
- if (rc)
- goto exit;
while (! (nextPart = isPart(spec->line))) {
appendStringBuf(sb, spec->line);
if ((rc = readLine(spec, STRIP_NOTHING)) > 0) {
nextPart = PART_NONE;
break;
- }
- if (rc)
+ } else if (rc < 0) {
goto exit;
+ }
}
}
stripTrailingBlanksStringBuf(sb);
if (!strcmp(progArgv[0], "<lua>")) {
rpmlua lua = NULL; /* Global state. */
if (rpmluaCheckScript(lua, p, partname) != RPMRC_OK) {
- rc = RPMRC_FAIL;
goto exit;
}
(void) rpmlibNeedsFeature(pkg->header,
rpmlog(RPMLOG_ERR,
_("line %d: unsupported internal script: %s\n"),
spec->lineNum, progArgv[0]);
- rc = RPMRC_FAIL;
goto exit;
} else {
(void) addReqProv(spec, pkg->header, RPMTAG_REQUIRENAME,
}
}
}
- rc = nextPart;
+ res = nextPart;
exit:
sb = freeStringBuf(sb);
argv = _free(argv);
optCon = poptFreeContext(optCon);
- return rc;
+ return res;
}