From a6eace5116d1a711218a7c9086a4e3c4db88ee57 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 19 Jun 2013 14:52:00 +0200 Subject: [PATCH] support for Lua 5.2 --- Makefile | 2 +- laugeas.c | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index e79a48c..22dca18 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ else FULL_VERSION := $(VERSION) endif -LUAPC := $(shell for pc in lua lua5.1; do \ +LUAPC := $(shell for pc in lua lua5.2 lua5.1; do \ $(PKGCONFIG) --exists $$pc && echo $$pc && break; \ done) diff --git a/laugeas.c b/laugeas.c index 05b99c3..11a8736 100644 --- a/laugeas.c +++ b/laugeas.c @@ -4,6 +4,7 @@ -- In general, the functions map straight to the C library. See the -- descriptions below for details. */ +#include #include #include @@ -21,6 +22,18 @@ #define LUA_FILEHANDLE "FILE*" +#if LUA_VERSION_NUM < 502 +# define luaL_newlib(L,l) (lua_newtable(L), luaL_register(L,NULL,l)) +# define luaL_setfuncs(L,l,n) (assert(n==0), luaL_register(L,NULL,l)) +#else +static int luaL_typerror (lua_State *L, int narg, const char *tname) +{ + const char *msg = lua_pushfstring(L, "%s expected, got %s", + tname, luaL_typename(L, narg)); + return luaL_argerror(L, narg, msg); +} +#endif + struct aug_flagmap { const char *name; int value; @@ -286,7 +299,7 @@ static int Paug_error_details(lua_State *L) return 1; } -static const luaL_reg Paug_methods[] = { +static const luaL_Reg Paug_methods[] = { /* --- Initializes the library. -- @@ -363,7 +376,7 @@ function print(augobj, path, file_handle) {NULL, NULL} }; -static const luaL_reg Luag_meta_methods[] = { +static const luaL_Reg Laug_meta_methods[] = { {"__gc", Paug_close}, {NULL, NULL} }; @@ -372,7 +385,7 @@ static const luaL_reg Luag_meta_methods[] = { LUALIB_API int luaopen_augeas(lua_State *L) { struct aug_flagmap *f = Taug_flagmap; - luaL_register(L, LIBNAME, Paug_methods); + luaL_newlib(L, Paug_methods); lua_pushliteral(L, "version"); lua_pushliteral(L, VERSION); lua_settable(L, -3); @@ -385,7 +398,7 @@ LUALIB_API int luaopen_augeas(lua_State *L) } luaL_newmetatable(L, PAUG_META); - luaL_register(L, NULL, Luag_meta_methods); + luaL_setfuncs(L, Laug_meta_methods, 0); lua_pushliteral(L, "__index"); lua_pushvalue(L, -3); lua_rawset(L, -3); -- 1.8.3.1