summaryrefslogtreecommitdiff
path: root/net/libquvi
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2020-04-12 19:48:20 +0000
committerjoerg <joerg@pkgsrc.org>2020-04-12 19:48:20 +0000
commit8feb84c3ab221a16f58031ab2dc8637804f17d0e (patch)
treecbd85775095bae8ec1b21b164080ca645acf1f3c /net/libquvi
parent6e27dfef70ca0df3f4780db18bd9976ffdc8dbfc (diff)
downloadpkgsrc-8feb84c3ab221a16f58031ab2dc8637804f17d0e.tar.gz
Fix missing functions with Lua 5.3. Bump revision.
Diffstat (limited to 'net/libquvi')
-rw-r--r--net/libquvi/Makefile4
-rw-r--r--net/libquvi/distinfo3
-rw-r--r--net/libquvi/patches/patch-src_libquvi_lua__wrap.c66
3 files changed, 70 insertions, 3 deletions
diff --git a/net/libquvi/Makefile b/net/libquvi/Makefile
index d7e96f1eb3a..040488dcf56 100644
--- a/net/libquvi/Makefile
+++ b/net/libquvi/Makefile
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.29 2020/03/20 11:58:08 nia Exp $
+# $NetBSD: Makefile,v 1.30 2020/04/12 19:48:20 joerg Exp $
#
DISTNAME= libquvi-0.4.1
-PKGREVISION= 22
+PKGREVISION= 23
CATEGORIES= net
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=quvi/}
EXTRACT_SUFX= .tar.bz2
diff --git a/net/libquvi/distinfo b/net/libquvi/distinfo
index 78242f82f57..8aa513ce1fe 100644
--- a/net/libquvi/distinfo
+++ b/net/libquvi/distinfo
@@ -1,6 +1,7 @@
-$NetBSD: distinfo,v 1.3 2015/11/04 00:35:09 agc Exp $
+$NetBSD: distinfo,v 1.4 2020/04/12 19:48:20 joerg Exp $
SHA1 (libquvi-0.4.1.tar.bz2) = b7ac371185c35a1a9a2135ef4ee61c86c48f78f4
RMD160 (libquvi-0.4.1.tar.bz2) = 38535a867bef195b32a81b5bdadf927110f79603
SHA512 (libquvi-0.4.1.tar.bz2) = a5cc2c837c1a767dc5f543c7cf0b5611a92b7e397b532c1d6afd023f10831865b793193fe1ba5d14006308f2b1f0a575447c47dd383cb307ea6130ca6fab8078
Size (libquvi-0.4.1.tar.bz2) = 308126 bytes
+SHA1 (patch-src_libquvi_lua__wrap.c) = ae032ca04cdaeaf3d7025faabeedb84f5aa3399b
diff --git a/net/libquvi/patches/patch-src_libquvi_lua__wrap.c b/net/libquvi/patches/patch-src_libquvi_lua__wrap.c
new file mode 100644
index 00000000000..55c2b045dbf
--- /dev/null
+++ b/net/libquvi/patches/patch-src_libquvi_lua__wrap.c
@@ -0,0 +1,66 @@
+$NetBSD: patch-src_libquvi_lua__wrap.c,v 1.1 2020/04/12 19:48:20 joerg Exp $
+
+Inline part of the Lua 5.1/5.2 compat code.
+
+--- src/libquvi/lua_wrap.c.orig 2020-04-12 16:02:28.082417799 +0000
++++ src/libquvi/lua_wrap.c
+@@ -410,17 +410,58 @@ static int lua_files_only(const struct d
+ }
+
+ /* Init. */
++static const char *my_luaL_findtable (lua_State *L, int idx,
++ const char *fname, int szhint) {
++ const char *e;
++ if (idx) lua_pushvalue(L, idx);
++ do {
++ e = strchr(fname, '.');
++ if (e == NULL) e = fname + strlen(fname);
++ lua_pushlstring(L, fname, e - fname);
++ if (lua_rawget(L, -2) == LUA_TNIL) { /* no such field? */
++ lua_pop(L, 1); /* remove this nil */
++ lua_createtable(L, 0, (*e == '.' ? 1 : szhint)); /* new table for field */
++ lua_pushlstring(L, fname, e - fname);
++ lua_pushvalue(L, -2);
++ lua_settable(L, -4); /* set new table into field */
++ }
++ else if (!lua_istable(L, -1)) { /* field has a non-table value? */
++ lua_pop(L, 2); /* remove table and value */
++ return fname; /* return problematic part of the name */
++ }
++ lua_remove(L, -2); /* remove previous table */
++ fname = e + 1;
++ } while (*e == '.');
++ return NULL;
++}
+
+ int init_lua(_quvi_t quvi)
+ {
+ QUVIcode rc;
++ int size;
++ const luaL_Reg *l;
+
+ quvi->lua = luaL_newstate();
+ if (!quvi->lua)
+ return (QUVI_LUAINIT);
+
+ luaL_openlibs(quvi->lua);
+- luaL_openlib(quvi->lua, "quvi", reg_meth, 1);
++
++ for (l = reg_meth, size = 0; l && l->name; l++) size++;
++ my_luaL_findtable(quvi->lua, LUA_REGISTRYINDEX, LUA_LOADED_TABLE, 1);
++ if (lua_getfield(quvi->lua, -1, "quvi") != LUA_TTABLE) { /* no LOADED["quvi"]? */
++ lua_pop(quvi->lua, 1); /* remove previous result */
++ /* try global variable (and create one if it does not exist) */
++ lua_pushglobaltable(quvi->lua);
++ if (my_luaL_findtable(quvi->lua, 0, "quvi", size) != NULL)
++ luaL_error(quvi->lua, "name conflict for module '%s'", "quvi");
++ lua_pushvalue(quvi->lua, -1);
++ lua_setfield(quvi->lua, -3, "quvi"); /* LOADED["quvi"] = new table */
++ }
++ lua_remove(quvi->lua, -2); /* remove LOADED table */
++
++ lua_insert(quvi->lua, -2);
++ luaL_setfuncs(quvi->lua, reg_meth, 1);
+
+ rc = scan_known_dirs(&quvi->util_scripts, "lua/util", lua_files_only);
+