diff options
author | joerg <joerg@pkgsrc.org> | 2020-04-12 19:48:20 +0000 |
---|---|---|
committer | joerg <joerg@pkgsrc.org> | 2020-04-12 19:48:20 +0000 |
commit | 8feb84c3ab221a16f58031ab2dc8637804f17d0e (patch) | |
tree | cbd85775095bae8ec1b21b164080ca645acf1f3c /net/libquvi | |
parent | 6e27dfef70ca0df3f4780db18bd9976ffdc8dbfc (diff) | |
download | pkgsrc-8feb84c3ab221a16f58031ab2dc8637804f17d0e.tar.gz |
Fix missing functions with Lua 5.3. Bump revision.
Diffstat (limited to 'net/libquvi')
-rw-r--r-- | net/libquvi/Makefile | 4 | ||||
-rw-r--r-- | net/libquvi/distinfo | 3 | ||||
-rw-r--r-- | net/libquvi/patches/patch-src_libquvi_lua__wrap.c | 66 |
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); + |