summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch')
-rw-r--r--gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch318
1 files changed, 318 insertions, 0 deletions
diff --git a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
new file mode 100644
index 0000000000..d8b9bf172a
--- /dev/null
+++ b/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
@@ -0,0 +1,318 @@
+Fix LuaTeX compatibility with Poppler 0.72.
+
+Upstream LuaTeX have moved from Poppler to "pplib" and thus upstream
+fixes are unavailable. This is based on Arch Linux patches, with minor
+changes for Poppler 0.72:
+https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin&id=f1b424435c8fa31d9296c7a6dc17f939a8332780
+
+diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
+--- a/texk/web2c/luatexdir/image/pdftoepdf.w
++++ b/texk/web2c/luatexdir/image/pdftoepdf.w
+@@ -35,7 +35,7 @@
+
+ extern void md5(Guchar *msg, int msgLen, Guchar *digest);
+
+-static GBool isInit = gFalse;
++static bool isInit = false;
+
+ /* Maintain AVL tree of all PDF files for embedding */
+
+@@ -363,10 +363,10 @@ void copyReal(PDF pdf, double d)
+
+ static void copyString(PDF pdf, GooString * string)
+ {
+- char *p;
++ const char *p;
+ unsigned char c;
+ size_t i, l;
+- p = string->getCString();
++ p = string->c_str();
+ l = (size_t) string->getLength();
+ if (pdf->cave)
+ pdf_out(pdf, ' ');
+@@ -393,7 +393,7 @@ static void copyString(PDF pdf, GooString * string)
+ pdf->cave = true;
+ }
+
+-static void copyName(PDF pdf, char *s)
++static void copyName(PDF pdf, const char *s)
+ {
+ pdf_out(pdf, '/');
+ for (; *s != 0; s++) {
+@@ -468,14 +468,14 @@ static void copyObject(PDF pdf, PdfDocument * pdf_doc, Object * obj)
+ break;
+ /*
+ case objNum:
+- GBool isNum() { return type == objInt || type == objReal; }
++ bool isNum() { return type == objInt || type == objReal; }
+ break;
+ */
+ case objString:
+ copyString(pdf, (GooString *)obj->getString());
+ break;
+ case objName:
+- copyName(pdf, (char *)obj->getName());
++ copyName(pdf, obj->getName());
+ break;
+ case objNull:
+ pdf_add_null(pdf);
+@@ -531,22 +531,22 @@ static PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
+ {
+ switch (pagebox_spec) {
+ case PDF_BOX_SPEC_MEDIA:
+- return page->getMediaBox();
++ return (PDFRectangle *) page->getMediaBox();
+ break;
+ case PDF_BOX_SPEC_CROP:
+- return page->getCropBox();
++ return (PDFRectangle *) page->getCropBox();
+ break;
+ case PDF_BOX_SPEC_BLEED:
+- return page->getBleedBox();
++ return (PDFRectangle *) page->getBleedBox();
+ break;
+ case PDF_BOX_SPEC_TRIM:
+- return page->getTrimBox();
++ return (PDFRectangle *) page->getTrimBox();
+ break;
+ case PDF_BOX_SPEC_ART:
+- return page->getArtBox();
++ return (PDFRectangle *) page->getArtBox();
+ break;
+ default:
+- return page->getMediaBox();
++ return (PDFRectangle *) page->getMediaBox();
+ break;
+ }
+ }
+@@ -587,11 +587,11 @@ void read_pdf_info(image_dict * idict)
+ PDFRectangle *pagebox;
+ int pdf_major_version_found, pdf_minor_version_found;
+ float xsize, ysize, xorig, yorig;
+- if (isInit == gFalse) {
++ if (isInit == false) {
+ if (!(globalParams))
+ globalParams = new GlobalParams();
+- globalParams->setErrQuiet(gFalse);
+- isInit = gTrue;
++ globalParams->setErrQuiet(false);
++ isInit = true;
+ }
+ if (img_type(idict) == IMG_TYPE_PDF)
+ pdf_doc = refPdfDocument(img_filepath(idict), FE_FAIL);
+@@ -966,7 +966,7 @@ void epdf_free()
+ if (PdfDocumentTree != NULL)
+ avl_destroy(PdfDocumentTree, destroyPdfDocument);
+ PdfDocumentTree = NULL;
+- if (isInit == gTrue)
++ if (isInit == true)
+ delete globalParams;
+- isInit = gFalse;
++ isInit = false;
+ }
+diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
+--- a/texk/web2c/luatexdir/lua/lepdflib.cc
++++ b/texk/web2c/luatexdir/lua/lepdflib.cc
+@@ -240,7 +240,7 @@ static int l_new_Attribute(lua_State * L)
+ if (uobj->pd != NULL && uobj->pd->pc != uobj->pc)
+ pdfdoc_changed_error(L);
+ uout = new_Attribute_userdata(L);
+- uout->d = new Attribute(n, nlen, (Object *)uobj->d);
++ uout->d = new Attribute((GooString)n, (Object *)uobj->d);
+ uout->atype = ALLOC_LEPDF;
+ uout->pc = uobj->pc;
+ uout->pd = uobj->pd;
+@@ -439,7 +439,7 @@ static int l_new_Object(lua_State * L)
+ break;
+ case 1:
+ if (lua_isboolean (L,1)) {
+- uout->d = new Object(lua_toboolean(L, 1)? gTrue : gFalse);
++ uout->d = new Object(lua_toboolean(L, 1)? true : false);
+ uout->atype = ALLOC_LEPDF;
+ uout->pc = 0;
+ uout->pd = NULL;
+@@ -596,7 +596,7 @@ static int m_##in##_##function(lua_State * L) \
+ uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \
+ if (uin->pd != NULL && uin->pd->pc != uin->pc) \
+ pdfdoc_changed_error(L); \
+- o = ((in *) uin->d)->function(); \
++ o = (out *) ((in *) uin->d)->function(); \
+ if (o != NULL) { \
+ uout = new_##out##_userdata(L); \
+ uout->d = o; \
+@@ -676,7 +676,7 @@ static int m_##in##_##function(lua_State * L) \
+ pdfdoc_changed_error(L); \
+ gs = (GooString *)((in *) uin->d)->function(); \
+ if (gs != NULL) \
+- lua_pushlstring(L, gs->getCString(), gs->getLength()); \
++ lua_pushlstring(L, gs->c_str(), gs->getLength()); \
+ else \
+ lua_pushnil(L); \
+ return 1; \
+@@ -911,7 +911,7 @@ static int m_Array_getString(lua_State * L)
+ if (i > 0 && i <= len) {
+ gs = new GooString();
+ if (((Array *) uin->d)->getString(i - 1, gs))
+- lua_pushlstring(L, gs->getCString(), gs->getLength());
++ lua_pushlstring(L, gs->c_str(), gs->getLength());
+ else
+ lua_pushnil(L);
+ delete gs;
+@@ -1063,7 +1063,7 @@ static int m_Catalog_getJS(lua_State * L)
+ if (i > 0 && i <= len) {
+ gs = ((Catalog *) uin->d)->getJS(i - 1);
+ if (gs != NULL)
+- lua_pushlstring(L, gs->getCString(), gs->getLength());
++ lua_pushlstring(L, gs->c_str(), gs->getLength());
+ else
+ lua_pushnil(L);
+ delete gs;
+@@ -1125,12 +1125,12 @@ m_poppler_get_INT(Dict, getLength);
+
+ static int m_Dict_add(lua_State * L)
+ {
+- char *s;
++ const char *s;
+ udstruct *uin, *uobj;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+- s = copyString(luaL_checkstring(L, 2));
++ s = luaL_checkstring(L, 2);
+ uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
+ ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d)));
+ return 0;
+@@ -1378,7 +1378,7 @@ static int m_GooString__tostring(lua_State * L)
+ uin = (udstruct *) luaL_checkudata(L, 1, M_GooString);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+- lua_pushlstring(L, ((GooString *) uin->d)->getCString(),
++ lua_pushlstring(L, ((GooString *) uin->d)->c_str(),
+ ((GooString *) uin->d)->getLength());
+ return 1;
+ }
+@@ -1527,9 +1527,9 @@ static int m_Object_initBool(lua_State * L)
+ pdfdoc_changed_error(L);
+ luaL_checktype(L, 2, LUA_TBOOLEAN);
+ if (lua_toboolean(L, 2) != 0)
+- *((Object *) uin->d) = Object(gTrue);
++ *((Object *) uin->d) = Object(true);
+ else
+- *((Object *) uin->d) = Object(gFalse);
++ *((Object *) uin->d) = Object(false);
+ return 0;
+ }
+
+@@ -1814,7 +1814,7 @@ static int m_Object_getString(lua_State * L)
+ pdfdoc_changed_error(L);
+ if (((Object *) uin->d)->isString()) {
+ gs = (GooString *)((Object *) uin->d)->getString();
+- lua_pushlstring(L, gs->getCString(), gs->getLength());
++ lua_pushlstring(L, gs->c_str(), gs->getLength());
+ } else
+ lua_pushnil(L);
+ return 1;
+@@ -2051,7 +2051,7 @@ static int m_Object_dictAdd(lua_State * L)
+ pdfdoc_changed_error(L);
+ if (!((Object *) uin->d)->isDict())
+ luaL_error(L, "Object is not a Dict");
+- ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d)));
++ ((Object *) uin->d)->dictAdd(s, std::move(*((Object *) uobj->d)));
+ return 0;
+ }
+
+@@ -2470,9 +2470,9 @@ static int m_PDFDoc_getFileName(lua_State * L)
+ uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+- gs = ((PdfDocument *) uin->d)->doc->getFileName();
++ gs = (GooString *) ((PdfDocument *) uin->d)->doc->getFileName();
+ if (gs != NULL)
+- lua_pushlstring(L, gs->getCString(), gs->getLength());
++ lua_pushlstring(L, gs->c_str(), gs->getLength());
+ else
+ lua_pushnil(L);
+ return 1;
+@@ -2559,9 +2559,9 @@ static int m_PDFDoc_readMetadata(lua_State * L)
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+ if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
+- gs = ((PdfDocument *) uin->d)->doc->readMetadata();
++ gs = (GooString *) ((PdfDocument *) uin->d)->doc->readMetadata();
+ if (gs != NULL)
+- lua_pushlstring(L, gs->getCString(), gs->getLength());
++ lua_pushlstring(L, gs->c_str(), gs->getLength());
+ else
+ lua_pushnil(L);
+ } else
+@@ -2577,7 +2577,7 @@ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
+ 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();
++ obj = (StructTreeRoot *) ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
+ uout = new_StructTreeRoot_userdata(L);
+ uout->d = obj;
+ uout->pc = uin->pc;
+@@ -3038,12 +3038,12 @@ m_poppler_get_BOOL(Attribute, isHidden);
+
+ static int m_Attribute_setHidden(lua_State * L)
+ {
+- GBool i;
++ bool i;
+ udstruct *uin;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_Attribute);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+- i = (GBool) lua_toboolean(L, 2);
++ i = (bool) lua_toboolean(L, 2);
+ ((Attribute *) uin->d)->setHidden(i);
+ return 0;
+ }
+@@ -3180,7 +3180,7 @@ static int m_StructElement_getParentRef(lua_State * L)
+ // Ref is false if the C++ functione return false
+ static int m_StructElement_getPageRef(lua_State * L)
+ {
+- GBool b;
++ bool b;
+ Ref *r;
+ udstruct *uin, *uout;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
+@@ -3226,16 +3226,16 @@ static int m_StructElement_setRevision(lua_State * L)
+
+ static int m_StructElement_getText(lua_State * L)
+ {
+- GBool i;
++ bool i;
+ GooString *gs;
+ udstruct *uin;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+- i = (GBool) lua_toboolean(L, 2);
++ i = (bool) lua_toboolean(L, 2);
+ gs = ((StructElement *) uin->d)->getText(i);
+ if (gs != NULL)
+- lua_pushlstring(L, gs->getCString(), gs->getLength());
++ lua_pushlstring(L, gs->c_str(), gs->getLength());
+ else
+ lua_pushnil(L);
+ return 1;
+@@ -3321,7 +3321,7 @@ static int m_StructElement_findAttribute(lua_State * L)
+ {
+ Attribute::Type t;
+ Attribute::Owner o;
+- GBool g;
++ bool g;
+ udstruct *uin, *uout;
+ const Attribute *a;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
+@@ -3329,7 +3329,7 @@ static int m_StructElement_findAttribute(lua_State * L)
+ pdfdoc_changed_error(L);
+ t = (Attribute::Type) luaL_checkint(L,1);
+ o = (Attribute::Owner) luaL_checkint(L,2);
+- g = (GBool) lua_toboolean(L, 3);
++ g = (bool) lua_toboolean(L, 3);
+ a = ((StructElement *) uin->d)->findAttribute(t,g,o);
+
+ if (a!=NULL){