csomh / source-git / rpm

Forked from source-git/rpm 4 years ago
Clone
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 */