|
|
2ff057 |
#include "system.h"
|
|
|
2ff057 |
|
|
|
2ff057 |
#ifdef WITH_LUA
|
|
|
2ff057 |
#include <lua.h>
|
|
|
2ff057 |
#include <lauxlib.h>
|
|
|
2ff057 |
#include <rpm/rpmlib.h>
|
|
|
2ff057 |
|
|
|
2ff057 |
#define _RPMLUA_INTERNAL
|
|
|
2ff057 |
#include "rpmio/rpmlua.h"
|
|
|
2ff057 |
#include "lib/rpmliblua.h"
|
|
|
2ff057 |
|
|
|
2ff057 |
static int rpm_vercmp(lua_State *L)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
const char *v1, *v2;
|
|
|
2ff057 |
int rc = 0;
|
|
|
2ff057 |
|
|
|
2ff057 |
v1 = luaL_checkstring(L, 1);
|
|
|
2ff057 |
v2 = luaL_checkstring(L, 2);
|
|
|
2ff057 |
if (v1 && v2) {
|
|
|
2ff057 |
lua_pushinteger(L, rpmvercmp(v1, v2));
|
|
|
2ff057 |
rc = 1;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
return rc;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
static const luaL_Reg luarpmlib_f[] = {
|
|
|
2ff057 |
{"vercmp", rpm_vercmp},
|
|
|
2ff057 |
{NULL, NULL}
|
|
|
2ff057 |
};
|
|
|
2ff057 |
|
|
|
2ff057 |
#ifndef lua_pushglobaltable
|
|
|
2ff057 |
#define lua_pushglobaltable(L) lua_pushvalue(L, LUA_GLOBALSINDEX)
|
|
|
2ff057 |
#endif
|
|
|
2ff057 |
|
|
|
2ff057 |
void rpmLuaInit(void)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
rpmlua lua = rpmluaGetGlobalState();
|
|
|
2ff057 |
lua_pushglobaltable(lua->L);
|
|
|
2ff057 |
#if (LUA_VERSION_NUM < 502) || defined(LUA_COMPAT_MODULE)
|
|
|
2ff057 |
luaL_register(lua->L, "rpm", luarpmlib_f);
|
|
|
2ff057 |
#else
|
|
|
2ff057 |
luaL_pushmodule(lua->L, "rpm", 1);
|
|
|
2ff057 |
lua_insert(lua->L, -1);
|
|
|
2ff057 |
luaL_setfuncs(lua->L, luarpmlib_f, 0);
|
|
|
2ff057 |
#endif
|
|
|
2ff057 |
return;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
void rpmLuaFree(void)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
rpmlua lua = rpmluaGetGlobalState();
|
|
|
2ff057 |
rpmluaFree(lua);
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
#endif /* WITH_LUA */
|