}
#ifdef WITH_LUA
+#define LUA_FAILURE_OUTPUT "1"
if (STREQ("lua", f, fn)) {
rpmlua lua = NULL; /* Global state. */
const char *ls = s+sizeof("{lua:")-1;
memcpy(scriptbuf, ls, lse-ls);
scriptbuf[lse-ls] = '\0';
rpmluaPushPrintBuffer(lua);
- if (rpmluaRunScript(lua, scriptbuf, NULL) == -1)
- rc = 1;
- printbuf = rpmluaPopPrintBuffer(lua);
+ if (rpmluaRunScript(lua, scriptbuf, NULL) == -1) {
+ printbuf = rpmluaPopPrintBuffer(lua);
+ rpmlog(RPMLOG_WARNING, _("lua: using fallback output '%s'\n"), LUA_FAILURE_OUTPUT);
+ printbuf = (char *)xcalloc(1, sizeof(LUA_FAILURE_OUTPUT));
+ strcpy(printbuf, LUA_FAILURE_OUTPUT);
+ } else {
+ printbuf = rpmluaPopPrintBuffer(lua);
+ }
if (printbuf) {
mbAppendStr(mb, printbuf);
free(printbuf);
lua_pop(L, 1);
ret = -1;
} else if (lua_pcall(L, 0, 0, 0) != 0) {
- rpmlog(RPMLOG_ERR, _("lua script failed: %s\n"),
+ rpmlog(RPMLOG_WARNING, _("lua script failed: %s\n"),
lua_tostring(L, -1));
lua_pop(L, 1);
ret = -1;