Source: NetBSD CVS http://mail-index.netbsd.org/pkgsrc-bugs/2014/04/29/msg053974.html http://cvsweb.de.netbsd.org/cgi-bin/cvsweb.cgi/pkgsrc/print/luatex/patches/ diff -ruN luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/image/epdf.h luatex-beta-0.76.0/source/texk/web2c/luatexdir/image/epdf.h --- luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/image/epdf.h 2013-04-05 12:58:37.000000000 +0200 +++ luatex-beta-0.76.0/source/texk/web2c/luatexdir/image/epdf.h 2014-05-01 01:39:39.838462783 +0200 @@ -37,6 +37,7 @@ # include # include # include +# include # include # include # include diff -ruN luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/lua/lepdflib.cc luatex-beta-0.76.0/source/texk/web2c/luatexdir/lua/lepdflib.cc --- luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/lua/lepdflib.cc 2013-04-05 12:58:37.000000000 +0200 +++ luatex-beta-0.76.0/source/texk/web2c/luatexdir/lua/lepdflib.cc 2014-05-01 01:40:15.698461067 +0200 @@ -48,25 +48,26 @@ //********************************************************************** -#define M_Annot "Annot" -#define M_Annots "Annots" -#define M_Array "Array" -#define M_Catalog "Catalog" -#define M_Dict "Dict" -#define M_EmbFile "EmbFile" -#define M_FileSpec "FileSpec" -#define M_GooString "GooString" -#define M_LinkDest "LinkDest" -#define M_Link "Link" -#define M_Links "Links" -#define M_Object "Object" -#define M_Page "Page" -#define M_PDFDoc "PDFDoc" -#define M_PDFRectangle "PDFRectangle" -#define M_Ref "Ref" -#define M_Stream "Stream" -#define M_XRefEntry "XRefEntry" -#define M_XRef "XRef" +#define M_Annot "epdf.Annot" /* ls-hh: epdf.* gives better protection in registry */ +#define M_Annots "epdf.Annots" +#define M_Array "epdf.Array" +#define M_Catalog "epdf.Catalog" +#define M_Dict "epdf.Dict" +#define M_EmbFile "epdf.EmbFile" +#define M_FileSpec "epdf.FileSpec" +#define M_GooString "epdf.GooString" +#define M_LinkDest "epdf.LinkDest" +#define M_Link "epdf.Link" +#define M_Links "epdf.Links" +#define M_Object "epdf.Object" +#define M_Page "epdf.Page" +#define M_PDFDoc "epdf.PDFDoc" +#define M_PDFRectangle "epdf.PDFRectangle" +#define M_Ref "epdf.Ref" +#define M_Stream "epdf.Stream" +#define M_StructTreeRoot "epdf.StructTreeRoot" +#define M_XRefEntry "epdf.XRefEntry" +#define M_XRef "epdf.XRef" //********************************************************************** @@ -96,6 +97,7 @@ new_poppler_userdata(PDFRectangle); new_poppler_userdata(Ref); new_poppler_userdata(Stream); +new_poppler_userdata(StructTreeRoot); new_poppler_userdata(XRef); //********************************************************************** @@ -573,7 +575,11 @@ m_poppler_get_GOOSTRING(Catalog, getBaseURI); m_poppler_get_GOOSTRING(Catalog, readMetadata); +#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT m_poppler_get_poppler(Catalog, Object, getStructTreeRoot); +#else +m_poppler_get_poppler(Catalog, StructTreeRoot, getStructTreeRoot); +#endif static int m_Catalog_findPage(lua_State * L) { @@ -2146,14 +2152,22 @@ static int m_PDFDoc_getStructTreeRoot(lua_State * L) { +#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT Object *obj; +#else + StructTreeRoot *obj; +#endif udstruct *uin, *uout; uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc); if (uin->pd != NULL && uin->pd->pc != uin->pc) pdfdoc_changed_error(L); if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) { obj = ((PdfDocument *) uin->d)->doc->getStructTreeRoot(); +#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT uout = new_Object_userdata(L); +#else + uout = new_StructTreeRoot_userdata(L); +#endif uout->d = obj; uout->pc = uin->pc; uout->pd = uin->pd; @@ -2617,6 +2631,15 @@ //********************************************************************** +#ifdef LuajitTeX +#define setfuncs_meta(type) \ + luaL_newmetatable(L, M_##type); \ + lua_pushvalue(L, -1); \ + lua_setfield(L, -2, "__index"); \ + lua_pushstring(L, "no user access"); \ + lua_setfield(L, -2, "__metatable"); \ + luaL_register(L, NULL, type##_m) +#else #define setfuncs_meta(type) \ luaL_newmetatable(L, M_##type); \ lua_pushvalue(L, -1); \ @@ -2624,6 +2647,7 @@ lua_pushstring(L, "no user access"); \ lua_setfield(L, -2, "__metatable"); \ luaL_setfuncs(L, type##_m, 0) +#endif int luaopen_epdf(lua_State * L) { @@ -2646,6 +2670,10 @@ setfuncs_meta(XRef); setfuncs_meta(XRefEntry); +#ifdef LuajitTeX + luaL_register(L, "epdf", epdflib_f); +#else luaL_newlib(L, epdflib_f); +#endif return 1; }