1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
From a6eace5116d1a711218a7c9086a4e3c4db88ee57 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
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 <assert.h>
#include <stdlib.h>
#include <lua.h>
@@ -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
|