Toshaan Bharvani
2 years ago
commit
ac11d9475f
23 changed files with 357255 additions and 0 deletions
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash |
||||
|
||||
# Regenerate the fmtutil.cnf file from the pieces which are currently present |
||||
# in the fmtutil.cnf.d directory. |
||||
|
||||
# Abort immediately if any command fails |
||||
set -o errexit |
||||
shopt -s nullglob |
||||
|
||||
texdir=$1 |
||||
[[ -z $texdir ]] && texdir=/usr/share/texlive |
||||
web2cdir=$texdir/texmf-dist/web2c |
||||
|
||||
rm -f $web2cdir/fmtutil.cnf.rpmtmp |
||||
|
||||
echo "# Generated by $0 on $(date)" > $web2cdir/fmtutil.cnf.rpmtmp |
||||
|
||||
cat $web2cdir/fmtutil-hdr.cnf \ |
||||
$texdir/fmtutil.cnf.d/* \ |
||||
>> $web2cdir/fmtutil.cnf.rpmtmp |
||||
|
||||
mv $web2cdir/fmtutil.cnf.rpmtmp $web2cdir/fmtutil.cnf |
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
# macros to keep trees in texlive consistent |
||||
%_texmf /usr/share/texlive/texmf-local |
||||
%_texmf_main /usr/share/texlive/texmf-dist |
||||
%_texmf_vendor /usr/share/texlive/texmf-dist |
||||
%_texmf_var /var/lib/texmf |
||||
%_texmf_conf /usr/share/texlive/texmf-config |
||||
|
||||
%texlive_post \ |
||||
mkdir -p /var/run/texlive \ |
||||
touch /var/run/texlive/run-texhash \ |
||||
touch /var/run/texlive/run-mtxrun \ |
||||
: |
||||
|
||||
%texlive_postun \ |
||||
if [ $1 == 1 ]; then \ |
||||
mkdir -p /var/run/texlive \ |
||||
touch /var/run/run-texhash \ |
||||
else \ |
||||
%{_bindir}/texhash 2> /dev/null \ |
||||
fi \ |
||||
: |
||||
|
||||
%texlive_posttrans \ |
||||
if [ -e /var/run/texlive/run-texhash ] && [ -e %{_bindir}/texhash ]; then %{_bindir}/texhash 2> /dev/null; rm -f /var/run/texlive/run-texhash; fi \ |
||||
if [ -e /var/run/texlive/run-mtxrun ]; then export TEXMF=/usr/share/texlive/texmf-dist; export TEXMFCNF=/usr/share/texlive/texmf-dist/web2c; export TEXMFCACHE=/var/lib/texmf; %{_bindir}/mtxrun --generate &> /dev/null; rm -f /var/run/texlive/run-mtxrun; fi \ |
||||
: |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
diff -up source/texk/kpathsea/texmf.cnf.fixme source/texk/kpathsea/texmf.cnf |
||||
--- source/texk/kpathsea/texmf.cnf.fixme 2016-10-19 15:35:25.804218872 -0400 |
||||
+++ source/texk/kpathsea/texmf.cnf 2016-10-19 15:37:19.308035612 -0400 |
||||
@@ -491,17 +491,17 @@ RUBYINPUTS = .;$TEXMF/scripts/{$progna |
||||
% |
||||
TEXMFCNF = {\ |
||||
$SELFAUTOLOC,\ |
||||
-$SELFAUTOLOC/share/texmf-local/web2c,\ |
||||
-$SELFAUTOLOC/share/texmf-dist/web2c,\ |
||||
-$SELFAUTOLOC/share/texmf/web2c,\ |
||||
+$SELFAUTOLOC/share/texlive/texmf-local/web2c,\ |
||||
+$SELFAUTOLOC/share/texlive/texmf-dist/web2c,\ |
||||
+$SELFAUTOLOC/share/texlive/texmf/web2c,\ |
||||
$SELFAUTOLOC/texmf-local/web2c,\ |
||||
$SELFAUTOLOC/texmf-dist/web2c,\ |
||||
$SELFAUTOLOC/texmf/web2c,\ |
||||
\ |
||||
$SELFAUTODIR,\ |
||||
-$SELFAUTODIR/share/texmf-local/web2c,\ |
||||
-$SELFAUTODIR/share/texmf-dist/web2c,\ |
||||
-$SELFAUTODIR/share/texmf/web2c,\ |
||||
+$SELFAUTODIR/share/texlive/texmf-local/web2c,\ |
||||
+$SELFAUTODIR/share/texlive/texmf-dist/web2c,\ |
||||
+$SELFAUTODIR/share/texlive/texmf/web2c,\ |
||||
$SELFAUTODIR/texmf-local/web2c,\ |
||||
$SELFAUTODIR/texmf-dist/web2c,\ |
||||
$SELFAUTODIR/texmf/web2c,\ |
||||
@@ -509,9 +509,9 @@ $SELFAUTODIR/texmf/web2c,\ |
||||
$SELFAUTOGRANDPARENT/texmf-local/web2c,\ |
||||
$SELFAUTOPARENT,\ |
||||
\ |
||||
-$SELFAUTOPARENT/share/texmf-local/web2c,\ |
||||
-$SELFAUTOPARENT/share/texmf-dist/web2c,\ |
||||
-$SELFAUTOPARENT/share/texmf/web2c,\ |
||||
+$SELFAUTOPARENT/share/texlive/texmf-local/web2c,\ |
||||
+$SELFAUTOPARENT/share/texlive/texmf-dist/web2c,\ |
||||
+$SELFAUTOPARENT/share/texlive/texmf/web2c,\ |
||||
$SELFAUTOPARENT/texmf-local/web2c,\ |
||||
$SELFAUTOPARENT/texmf-dist/web2c,\ |
||||
$SELFAUTOPARENT/texmf/web2c\ |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
--- texlive-20180414/source/libs/luajit/Makefile.in.annocheck 2018-01-10 01:37:05.000000000 +0100 |
||||
+++ texlive-20180414/source/libs/luajit/Makefile.in 2019-01-11 22:45:34.503080977 +0100 |
||||
@@ -680,7 +680,7 @@ |
||||
NEVER_NAMES_LT = -o -name .libs -o -name '*.lo' |
||||
AM_CPPFLAGS = -I$(srcdir)/$(LUAJIT_TREE)/src $(LUAJIT_DEFINES) -U_FORTIFY_SOURCE |
||||
AM_CFLAGS = $(LUAJIT_CFLAGS) $(LUAJIT_HAS_NOT_LOG2) -Wall |
||||
-AM_CCASFLAGS = $(LUAJIT_CFLAGS) $(LUAJIT_HAS_NOT_LOG2) |
||||
+AM_CCASFLAGS = $(LUAJIT_CFLAGS) $(LUAJIT_HAS_NOT_LOG2) -Wa,--generate-missing-build-notes=yes |
||||
SUBDIRS = . native include |
||||
lib_LTLIBRARIES = libtexluajit.la |
||||
libtexluajit_la_LDFLAGS = -bindir @bindir@ -no-undefined -version-info $(LUAJIT_LT_VERSINFO) $(LIBLUAJIT_LDEXTRA) |
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
diff -up texlive-base-20190410/source/texk/dvisvgm/configure.ac.fix-libgs-detection texlive-base-20190410/source/texk/dvisvgm/configure.ac |
||||
--- texlive-base-20190410/source/texk/dvisvgm/configure.ac.fix-libgs-detection 2019-03-10 14:21:29.000000000 -0400 |
||||
+++ texlive-base-20190410/source/texk/dvisvgm/configure.ac 2019-05-23 19:07:30.447057345 -0400 |
||||
@@ -66,7 +66,8 @@ AS_IF([test "x$have_libgs" = "xno"], |
||||
# Ghostscript not found, check for dlopen |
||||
[AC_CHECK_LIB(dl, dlopen,, |
||||
[AC_DEFINE(DISABLE_GS, 1, [Set to 1 if PostScript support should be disabled])] |
||||
- [AC_MSG_WARN(PostScript support disabled)])]) |
||||
+ [AC_MSG_WARN(PostScript support disabled)])], |
||||
+ [test "x$have_libgs" = "xyes"], [HAVE_LIBGS=1]) |
||||
fi |
||||
|
||||
if test -z "$HAVE_LIBGS" || test "$HAVE_LIBGS" -eq 0; then |
||||
diff -up texlive-base-20190410/source/texk/dvisvgm/configure.fix-libgs-detection texlive-base-20190410/source/texk/dvisvgm/configure |
||||
--- texlive-base-20190410/source/texk/dvisvgm/configure.fix-libgs-detection 2019-05-23 19:07:45.568703333 -0400 |
||||
+++ texlive-base-20190410/source/texk/dvisvgm/configure 2019-05-23 19:09:31.341219687 -0400 |
||||
@@ -22013,6 +22013,8 @@ $as_echo "#define DISABLE_GS 1" >>confde |
||||
$as_echo "$as_me: WARNING: PostScript support disabled" >&2;} |
||||
fi |
||||
|
||||
+elif test "x$have_libgs" = "xyes"; then : |
||||
+ HAVE_LIBGS=1 |
||||
fi |
||||
fi |
||||
|
@ -0,0 +1,79 @@
@@ -0,0 +1,79 @@
|
||||
diff -up ./scripts/texlive/tlmgr.pl.ignore-warning ./scripts/texlive/tlmgr.pl |
||||
--- ./scripts/texlive/tlmgr.pl.ignore-warning 2019-05-24 21:35:57.384845754 -0400 |
||||
+++ ./scripts/texlive/tlmgr.pl 2019-05-24 21:39:32.703577109 -0400 |
||||
@@ -231,6 +231,7 @@ my %action_specification = ( |
||||
"dry-run|n" => 1, |
||||
"file" => 1, |
||||
"force" => 1, |
||||
+ "ignore-warning" => 1, |
||||
"no-depends" => 1, |
||||
"no-depends-at-all" => 1, |
||||
"reinstall" => 1, |
||||
@@ -331,6 +332,7 @@ my %action_specification = ( |
||||
"dry-run|n" => 1, |
||||
"exclude" => "=s@", |
||||
"force" => 1, |
||||
+ "ignore-warning" => 1, |
||||
"list" => 1, |
||||
"no-auto-install" => 1, |
||||
"no-auto-remove" => 1, |
||||
@@ -2613,6 +2615,15 @@ sub upd_info { |
||||
} |
||||
|
||||
sub action_update { |
||||
+ if (!($opts{"ignore-warning"})) { |
||||
+ print("*** WARNING ***: Performing this action will likely destroy the Fedora TeXLive install on your system.\n"); |
||||
+ print("*** WARNING ***: This is almost NEVER what you want to do.\n"); |
||||
+ print("*** WARNING ***: Try using dnf install/update instead.\n"); |
||||
+ print("*** WARNING ***: If performing this action is really what you want to do, pass the \"ignore-warning\" option.\n"); |
||||
+ print("*** WARNING ***: But please do not file any bugs with the OS Vendor.\n"); |
||||
+ exit; |
||||
+ } |
||||
+ |
||||
init_local_db(1); |
||||
$opts{"no-depends"} = 1 if $opts{"no-depends-at-all"}; |
||||
|
||||
@@ -3618,6 +3629,15 @@ sub check_announce_format_triggers { |
||||
# anymore! That has all to be done by the caller. |
||||
# |
||||
sub action_install { |
||||
+ if (!($opts{"ignore-warning"})) { |
||||
+ print("*** WARNING ***: Performing this action will likely destroy the Fedora TeXLive install on your system.\n"); |
||||
+ print("*** WARNING ***: This is almost NEVER what you want to do.\n"); |
||||
+ print("*** WARNING ***: Try using dnf install/update instead.\n"); |
||||
+ print("*** WARNING ***: If performing this action is really what you want to do, pass the \"ignore-warning\" option.\n"); |
||||
+ print("*** WARNING ***: But please do not file any bugs with the OS Vendor.\n"); |
||||
+ exit; |
||||
+ } |
||||
+ |
||||
init_local_db(1); |
||||
my $ret = $F_OK; |
||||
return ($F_ERROR) if !check_on_writable(); |
||||
@@ -8151,6 +8171,13 @@ If updates to C<tlmgr> itself (or other |
||||
infrastructure) are present, C<tlmgr> will bail out and not perform the |
||||
installation unless this option is given. Not recommended. |
||||
|
||||
+=item B<--ignore-warning> |
||||
+ |
||||
+The tlmgr tool can really ruin a Fedora install of TeXLive. |
||||
+We have added a warning check here to try to keep you from |
||||
+blindly following a tutorial and doing this. If you still want to |
||||
+proceed, just use this option. |
||||
+ |
||||
=item B<--no-depends> |
||||
|
||||
Do not install dependencies. (By default, installing a package ensures |
||||
@@ -8846,6 +8873,13 @@ In short: |
||||
Nothing is actually installed; instead, the actions to be performed are |
||||
written to the terminal. This is a more detailed report than C<--list>. |
||||
|
||||
+=item B<--ignore-warning> |
||||
+ |
||||
+The tlmgr tool can really ruin a Fedora install of TeXLive. |
||||
+We have added a warning check here to try to keep you from |
||||
+blindly following a tutorial and doing this. If you still want to |
||||
+proceed, just use this option. |
||||
+ |
||||
=item B<--list> [I<pkg>] |
||||
|
||||
Concisely list the packages which would be updated, newly installed, or |
@ -0,0 +1,142 @@
@@ -0,0 +1,142 @@
|
||||
diff -up texlive-base-20200327/source/texk/web2c/am/texmf.am.dt texlive-base-20200327/source/texk/web2c/am/texmf.am |
||||
--- texlive-base-20200327/source/texk/web2c/am/texmf.am.dt 2019-12-17 14:24:59.000000000 -0500 |
||||
+++ texlive-base-20200327/source/texk/web2c/am/texmf.am 2020-04-20 14:33:43.465656684 -0400 |
||||
@@ -75,7 +75,7 @@ DISTCLEANFILES += $(nodist_tex_SOURCES) |
||||
|
||||
# TeX tests |
||||
# |
||||
-tex_tests = triptest.test tests/write18-quote-test.pl tests/tex-closeout.test |
||||
+tex_tests = tests/write18-quote-test.pl tests/tex-closeout.test |
||||
triptest.log: tex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) |
||||
tests/write18-quote-test.log tests/tex-closeout.test: tex$(EXEEXT) |
||||
EXTRA_DIST += $(tex_tests) |
||||
@@ -203,7 +203,7 @@ DISTCLEANFILES += $(nodist_libmf_a_SOURC |
||||
|
||||
# Metafont tests |
||||
# |
||||
-mf_tests = mftraptest.test |
||||
+mf_tests = |
||||
mftraptest.log: mf$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) |
||||
EXTRA_DIST += $(mf_tests) |
||||
if MF |
||||
diff -up texlive-base-20200327/source/texk/web2c/eptexdir/am/eptex.am.dt texlive-base-20200327/source/texk/web2c/eptexdir/am/eptex.am |
||||
--- texlive-base-20200327/source/texk/web2c/eptexdir/am/eptex.am.dt 2020-04-20 14:32:46.325851485 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/eptexdir/am/eptex.am 2020-04-20 14:34:20.015892398 -0400 |
||||
@@ -83,7 +83,7 @@ EXTRA_DIST += \ |
||||
|
||||
# e-pTeX Tests |
||||
# |
||||
-eptex_tests = eptexdir/eptriptest.test eptexdir/pdfprimitive.test eptexdir/epver.test |
||||
+eptex_tests = eptexdir/epver.test |
||||
eptexdir/eptriptest.log: eptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) |
||||
eptexdir/pdfprimitive.log: eptex$(EXEEXT) |
||||
eptexdir/epver.log: eptex$(EXEEXT) |
||||
diff -up texlive-base-20200327/source/texk/web2c/euptexdir/am/euptex.am.dt texlive-base-20200327/source/texk/web2c/euptexdir/am/euptex.am |
||||
--- texlive-base-20200327/source/texk/web2c/euptexdir/am/euptex.am.dt 2020-04-20 14:32:46.326851464 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/euptexdir/am/euptex.am 2020-04-20 14:34:55.625147806 -0400 |
||||
@@ -84,7 +84,7 @@ EXTRA_DIST += \ |
||||
|
||||
# e-upTeX Tests |
||||
# |
||||
-euptex_tests = euptexdir/euptriptest.test euptexdir/pdfprimitive.test euptexdir/eupver.test |
||||
+euptex_tests = euptexdir/eupver.test |
||||
euptexdir/euptriptest.log: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) |
||||
euptexdir/pdfprimitive.log: euptex$(EXEEXT) |
||||
euptexdir/eupver.log: euptex$(EXEEXT) |
||||
diff -up texlive-base-20200327/source/texk/web2c/mfluadir/am/mflua.am.dt texlive-base-20200327/source/texk/web2c/mfluadir/am/mflua.am |
||||
--- texlive-base-20200327/source/texk/web2c/mfluadir/am/mflua.am.dt 2017-04-16 06:11:22.000000000 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/mfluadir/am/mflua.am 2020-04-20 14:32:46.326851464 -0400 |
||||
@@ -110,7 +110,7 @@ EXTRA_DIST += \ |
||||
|
||||
# MFLua tests |
||||
# |
||||
-mflua_tests = mfluadir/mfluatraptest.test |
||||
+mflua_tests = |
||||
mfluadir/mfluatraptest.log: mflua$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) |
||||
EXTRA_DIST += $(mflua_tests) |
||||
|
||||
diff -up texlive-base-20200327/source/texk/web2c/mfluajitdir/am/mfluajit.am.dt texlive-base-20200327/source/texk/web2c/mfluajitdir/am/mfluajit.am |
||||
--- texlive-base-20200327/source/texk/web2c/mfluajitdir/am/mfluajit.am.dt 2017-04-16 06:11:22.000000000 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/mfluajitdir/am/mfluajit.am 2020-04-20 14:32:46.326851464 -0400 |
||||
@@ -106,7 +106,7 @@ EXTRA_DIST += \ |
||||
|
||||
# MFLuaJIT tests |
||||
# |
||||
-mfluajit_tests = mfluajitdir/mfluajittraptest.test |
||||
+mfluajit_tests = |
||||
mfluajitdir/mfluajittraptest.log: mfluajit$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) |
||||
EXTRA_DIST += $(mfluajit_tests) |
||||
|
||||
diff -up texlive-base-20200327/source/texk/web2c/pdftexdir/am/pdftex.am.dt texlive-base-20200327/source/texk/web2c/pdftexdir/am/pdftex.am |
||||
--- texlive-base-20200327/source/texk/web2c/pdftexdir/am/pdftex.am.dt 2020-04-20 14:32:46.326851464 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/pdftexdir/am/pdftex.am 2020-04-20 14:35:48.451043188 -0400 |
||||
@@ -95,8 +95,8 @@ EXTRA_DIST += \ |
||||
|
||||
# pdfTeX tests |
||||
# |
||||
-pdftex_tests = pdftexdir/wprob.test pdftexdir/pdftex.test \ |
||||
- pdftexdir/pdfimage.test pdftexdir/expanded.test \ |
||||
+pdftex_tests = pdftexdir/pdftex.test \ |
||||
+ pdftexdir/expanded.test \ |
||||
pdftexdir/tests/cnfline.test |
||||
|
||||
pdftexdir/wprob.log pdftexdir/pdftex.log \ |
||||
diff -up texlive-base-20200327/source/texk/web2c/ptexdir/am/ptex.am.dt texlive-base-20200327/source/texk/web2c/ptexdir/am/ptex.am |
||||
--- texlive-base-20200327/source/texk/web2c/ptexdir/am/ptex.am.dt 2020-04-20 14:32:46.327851443 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/ptexdir/am/ptex.am 2020-04-20 14:36:23.750305069 -0400 |
||||
@@ -168,7 +168,7 @@ EXTRA_DIST += \ |
||||
|
||||
# pTeX Tests |
||||
# |
||||
-ptex_tests = ptexdir/ptriptest.test ptexdir/pver.test |
||||
+ptex_tests = ptexdir/pver.test |
||||
ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) |
||||
ptexdir/pver.log: ptex$(EXEEXT) |
||||
pweb_tests = \ |
||||
diff -up texlive-base-20200327/source/texk/web2c/uptexdir/am/uptex.am.dt texlive-base-20200327/source/texk/web2c/uptexdir/am/uptex.am |
||||
--- texlive-base-20200327/source/texk/web2c/uptexdir/am/uptex.am.dt 2020-04-20 14:32:46.327851443 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/uptexdir/am/uptex.am 2020-04-20 14:36:53.266687857 -0400 |
||||
@@ -158,7 +158,7 @@ EXTRA_DIST += \ |
||||
uptexdir/ChangeLog |
||||
|
||||
# upTeX Tests |
||||
-uptex_tests = uptexdir/uptriptest.test uptexdir/upver.test |
||||
+uptex_tests = uptexdir/upver.test |
||||
uptexdir/uptriptest.log: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) |
||||
uptexdir/upver.log: uptex$(EXEEXT) |
||||
upweb_tests = \ |
||||
diff -up texlive-base-20200327/source/texk/web2c/xetexdir/am/xetex.am.dt texlive-base-20200327/source/texk/web2c/xetexdir/am/xetex.am |
||||
--- texlive-base-20200327/source/texk/web2c/xetexdir/am/xetex.am.dt 2020-04-20 14:32:46.327851443 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/xetexdir/am/xetex.am 2020-04-20 14:37:13.223270564 -0400 |
||||
@@ -201,7 +201,6 @@ EXTRA_DIST += \ |
||||
# |
||||
xetex_tests = \ |
||||
xetexdir/xetex-filedump.test \ |
||||
- xetexdir/xetex-bug73.test \ |
||||
xetexdir/xetex.test |
||||
xetexdir/xetex-filedump.log xetexdir/xetex-bug73.log xetexdir/xetex.log: xetex$(EXEEXT) |
||||
|
||||
diff -up texlive-base-20200327/source/texk/kpathsea/Makefile.am.dt texlive-base-20200327/source/texk/kpathsea/Makefile.am |
||||
--- texlive-base-20200327/source/texk/kpathsea/Makefile.am.dt 2020-04-20 15:49:39.282325550 -0400 |
||||
+++ texlive-base-20200327/source/texk/kpathsea/Makefile.am 2020-04-20 15:49:51.475074045 -0400 |
||||
@@ -275,7 +275,7 @@ uninstall-local: |
||||
AM_TESTS_ENVIRONMENT = LN_S='$(LN_S)'; export LN_S; |
||||
AM_TESTS_ENVIRONMENT += LT_OBJDIR='$(LT_OBJDIR)'; export LT_OBJDIR; |
||||
# |
||||
-TESTS = tests/cnfline.test tests/cnfnewline.test |
||||
+TESTS = tests/cnfnewline.test |
||||
TESTS += tests/cnfnull.test tests/cnfprog.test |
||||
TESTS += tests/kpseaccess.test |
||||
TESTS += tests/kpsereadlink.test tests/kpsestat.test tests/kpsewhich.test |
||||
diff -up texlive-base-20200327/source/texk/kpathsea/Makefile.in.dt texlive-base-20200327/source/texk/kpathsea/Makefile.in |
||||
--- texlive-base-20200327/source/texk/kpathsea/Makefile.in.dt 2020-04-21 10:17:29.766949867 -0400 |
||||
+++ texlive-base-20200327/source/texk/kpathsea/Makefile.in 2020-04-21 10:17:36.926798780 -0400 |
||||
@@ -858,7 +858,7 @@ dist_noinst_DATA = texmf.cnf |
||||
AM_TESTS_ENVIRONMENT = LN_S='$(LN_S)'; export LN_S; \ |
||||
LT_OBJDIR='$(LT_OBJDIR)'; export LT_OBJDIR; |
||||
# |
||||
-TESTS = tests/cnfline.test tests/cnfnewline.test tests/cnfnull.test \ |
||||
+TESTS = tests/cnfnewline.test tests/cnfnull.test \ |
||||
tests/cnfprog.test tests/kpseaccess.test \ |
||||
tests/kpsereadlink.test tests/kpsestat.test \ |
||||
tests/kpsewhich.test |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
diff -up texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler090 texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc |
||||
--- texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler090 2020-07-14 13:13:31.620607263 -0400 |
||||
+++ texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc 2020-07-14 13:16:01.530248309 -0400 |
||||
@@ -766,7 +766,7 @@ read_pdf_info(char *image_name, char *pa |
||||
if (page_name) { |
||||
// get page by name |
||||
GString name(page_name); |
||||
- LinkDest *link = pdf_doc->doc->findDest(&name); |
||||
+ std::unique_ptr<LinkDest> link = pdf_doc->doc->findDest(&name); |
||||
if (link == 0 || !link->isOk()) |
||||
pdftex_fail("PDF inclusion: invalid destination <%s>", page_name); |
||||
Ref ref = link->getPageRef(); |
||||
@@ -774,7 +774,6 @@ read_pdf_info(char *image_name, char *pa |
||||
if (page_num == 0) |
||||
pdftex_fail("PDF inclusion: destination is not a page <%s>", |
||||
page_name); |
||||
- delete link; |
||||
} else { |
||||
// get page by number |
||||
if (page_num <= 0 || page_num > epdf_num_pages) |
@ -0,0 +1,578 @@
@@ -0,0 +1,578 @@
|
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.newpoppler texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.newpoppler 2020-05-14 17:45:48.000000000 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-06 17:39:49.308416042 -0400 |
||||
@@ -1,5 +1,5 @@ |
||||
/* |
||||
-Copyright 1996-2016 Han The Thanh, <thanh@pdftex.org> |
||||
+Copyright 1996-2017 Han The Thanh, <thanh@pdftex.org> |
||||
|
||||
This file is part of pdfTeX. |
||||
|
||||
@@ -17,6 +17,15 @@ You should have received a copy of the G |
||||
with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
|
||||
+/* |
||||
+This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at |
||||
+https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk |
||||
+by Arch Linux. A little modifications are made to avoid a crash for |
||||
+some kind of pdf images, such as figure_missing.pdf in gnuplot. |
||||
+The poppler should be 0.59.0 or newer versions. |
||||
+POPPLER_VERSION should be defined. |
||||
+*/ |
||||
+ |
||||
/* Do this early in order to avoid a conflict between |
||||
MINGW32 <rpcndr.h> defining 'boolean' as 'unsigned char' and |
||||
<kpathsea/types.h> defining Pascal's boolean as 'int'. |
||||
@@ -75,31 +84,6 @@ extern integer zround(double); |
||||
#define MASK_SUPPRESS_PTEX_PAGENUMBER 0x04 |
||||
#define MASK_SUPPRESS_PTEX_INFODICT 0x08 |
||||
|
||||
-// PdfObject encapsulates the xpdf Object type, |
||||
-// and properly frees its resources on destruction. |
||||
-// Use obj-> to access members of the Object, |
||||
-// and &obj to get a pointer to the object. |
||||
-// It is no longer necessary to call Object::free explicitely. |
||||
- |
||||
-class PdfObject { |
||||
- public: |
||||
- PdfObject() { // nothing |
||||
- } ~PdfObject() { |
||||
- iObject.free(); |
||||
- } |
||||
- Object *operator->() { |
||||
- return &iObject; |
||||
- } |
||||
- Object *operator&() { |
||||
- return &iObject; |
||||
- } |
||||
- private: // no copying or assigning |
||||
- PdfObject(const PdfObject &); |
||||
- void operator=(const PdfObject &); |
||||
- public: |
||||
- Object iObject; |
||||
-}; |
||||
- |
||||
// When copying the Resources of the selected page, all objects are copied |
||||
// recusively top-down. Indirect objects however are not fetched during |
||||
// copying, but get a new object number from pdfTeX and then will be |
||||
@@ -203,18 +187,6 @@ static void delete_document(PdfDocument |
||||
delete pdf_doc; |
||||
} |
||||
|
||||
-// Replacement for |
||||
-// Object *initDict(Dict *dict1){ initObj(objDict); dict = dict1; return this; } |
||||
- |
||||
-static void initDictFromDict(PdfObject & obj, Dict * dict) |
||||
-{ |
||||
- obj->initDict(xref); |
||||
- for (int i = 0, l = dict->getLength(); i < l; i++) { |
||||
- Object obj1; |
||||
- obj->dictAdd(copyString(dict->getKey(i)), dict->getValNF(i, &obj1)); |
||||
- } |
||||
-} |
||||
- |
||||
// -------------------------------------------------------------------- |
||||
|
||||
static int addEncoding(GfxFont * gfont) |
||||
@@ -311,10 +283,10 @@ static void copyName(char *s) |
||||
|
||||
static void copyDictEntry(Object * obj, int i) |
||||
{ |
||||
- PdfObject obj1; |
||||
+ Object obj1; |
||||
copyName(obj->dictGetKey(i)); |
||||
pdf_puts(" "); |
||||
- obj->dictGetValNF(i, &obj1); |
||||
+ obj1 = obj->dictGetValNF(i); |
||||
copyObject(&obj1); |
||||
pdf_puts("\n"); |
||||
} |
||||
@@ -367,17 +339,17 @@ static void copyStream(Stream * str) |
||||
static void copyProcSet(Object * obj) |
||||
{ |
||||
int i, l; |
||||
- PdfObject procset; |
||||
+ Object procset; |
||||
if (!obj->isArray()) |
||||
pdftex_fail("PDF inclusion: invalid ProcSet array type <%s>", |
||||
obj->getTypeName()); |
||||
pdf_puts("/ProcSet [ "); |
||||
for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { |
||||
- obj->arrayGetNF(i, &procset); |
||||
- if (!procset->isName()) |
||||
+ procset = obj->arrayGetNF(i); |
||||
+ if (!procset.isName()) |
||||
pdftex_fail("PDF inclusion: invalid ProcSet entry type <%s>", |
||||
- procset->getTypeName()); |
||||
- copyName(procset->getName()); |
||||
+ procset.getTypeName()); |
||||
+ copyName(procset.getName()); |
||||
pdf_puts(" "); |
||||
} |
||||
pdf_puts("]\n"); |
||||
@@ -385,10 +357,29 @@ static void copyProcSet(Object * obj) |
||||
|
||||
#define REPLACE_TYPE1C true |
||||
|
||||
+static bool embeddableFont(Object * fontdesc) |
||||
+{ |
||||
+ Object fontfile, ffsubtype; |
||||
+ |
||||
+ if (!fontdesc->isDict()) |
||||
+ return false; |
||||
+ fontfile = fontdesc->dictLookup("FontFile"); |
||||
+ if (fontfile.isStream()) |
||||
+ return true; |
||||
+ if (REPLACE_TYPE1C) { |
||||
+ fontfile = fontdesc->dictLookup("FontFile3"); |
||||
+ if (!fontfile.isStream()) |
||||
+ return false; |
||||
+ ffsubtype = fontfile.streamGetDict()->lookup("Subtype"); |
||||
+ return ffsubtype.isName() && !strcmp(ffsubtype.getName(), "Type1C"); |
||||
+ } |
||||
+ return false; |
||||
+} |
||||
+ |
||||
static void copyFont(char *tag, Object * fontRef) |
||||
{ |
||||
- PdfObject fontdict, subtype, basefont, fontdescRef, fontdesc, charset, |
||||
- fontfile, ffsubtype, stemV; |
||||
+ Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset, |
||||
+ stemV; |
||||
GfxFont *gfont; |
||||
fd_entry *fd; |
||||
fm_entry *fontmap; |
||||
@@ -404,33 +395,39 @@ static void copyFont(char *tag, Object * |
||||
} |
||||
// Only handle included Type1 (and Type1C) fonts; anything else will be copied. |
||||
// Type1C fonts are replaced by Type1 fonts, if REPLACE_TYPE1C is true. |
||||
- if (!fixedinclusioncopyfont && fontRef->fetch(xref, &fontdict)->isDict() |
||||
- && fontdict->dictLookup("Subtype", &subtype)->isName() |
||||
- && !strcmp(subtype->getName(), "Type1") |
||||
- && fontdict->dictLookup("BaseFont", &basefont)->isName() |
||||
- && fontdict->dictLookupNF("FontDescriptor", &fontdescRef)->isRef() |
||||
- && fontdescRef->fetch(xref, &fontdesc)->isDict() |
||||
- && (fontdesc->dictLookup("FontFile", &fontfile)->isStream() |
||||
- || (REPLACE_TYPE1C |
||||
- && fontdesc->dictLookup("FontFile3", &fontfile)->isStream() |
||||
- && fontfile->streamGetDict()->lookup("Subtype", |
||||
- &ffsubtype)->isName() |
||||
- && !strcmp(ffsubtype->getName(), "Type1C"))) |
||||
- && (fontmap = lookup_fontmap(basefont->getName())) != NULL) { |
||||
+ fontdict = fontRef->fetch(xref); |
||||
+ fontdesc = Object(objNull); |
||||
+ if (fontdict.isDict()) { |
||||
+ subtype = fontdict.dictLookup("Subtype"); |
||||
+ basefont = fontdict.dictLookup("BaseFont"); |
||||
+ fontdescRef = fontdict.dictLookupNF("FontDescriptor"); |
||||
+ if (fontdescRef.isRef()) { |
||||
+ fontdesc = fontdescRef.fetch(xref); |
||||
+ } |
||||
+ } |
||||
+ if (!fixedinclusioncopyfont && fontdict.isDict() |
||||
+ && subtype.isName() |
||||
+ && !strcmp(subtype.getName(), "Type1") |
||||
+ && basefont.isName() |
||||
+ && fontdescRef.isRef() |
||||
+ && fontdesc.isDict() |
||||
+ && embeddableFont(&fontdesc) |
||||
+ && (fontmap = lookup_fontmap(basefont.getName())) != NULL) { |
||||
// round /StemV value, since the PDF input is a float |
||||
// (see Font Descriptors in PDF reference), but we only store an |
||||
// integer, since we don't want to change the struct. |
||||
- fontdesc->dictLookup("StemV", &stemV); |
||||
- fd = epdf_create_fontdescriptor(fontmap, zround(stemV->getNum())); |
||||
- if (fontdesc->dictLookup("CharSet", &charset) && |
||||
- charset->isString() && is_subsetable(fontmap)) |
||||
- epdf_mark_glyphs(fd, charset->getString()->getCString()); |
||||
+ stemV = fontdesc.dictLookup("StemV"); |
||||
+ fd = epdf_create_fontdescriptor(fontmap, zround(stemV.getNum())); |
||||
+ charset = fontdesc.dictLookup("CharSet"); |
||||
+ if (!charset.isNull() && |
||||
+ charset.isString() && is_subsetable(fontmap)) |
||||
+ epdf_mark_glyphs(fd, charset.getString()->getCString()); |
||||
else |
||||
embed_whole_font(fd); |
||||
- addFontDesc(fontdescRef->getRef(), fd); |
||||
+ addFontDesc(fontdescRef.getRef(), fd); |
||||
copyName(tag); |
||||
gfont = GfxFont::makeFont(xref, tag, fontRef->getRef(), |
||||
- fontdict->getDict()); |
||||
+ fontdict.getDict()); |
||||
pdf_printf(" %d 0 R ", addFont(fontRef->getRef(), fd, |
||||
addEncoding(gfont))); |
||||
} else { |
||||
@@ -442,24 +439,24 @@ static void copyFont(char *tag, Object * |
||||
|
||||
static void copyFontResources(Object * obj) |
||||
{ |
||||
- PdfObject fontRef; |
||||
+ Object fontRef; |
||||
int i, l; |
||||
if (!obj->isDict()) |
||||
pdftex_fail("PDF inclusion: invalid font resources dict type <%s>", |
||||
obj->getTypeName()); |
||||
pdf_puts("/Font << "); |
||||
for (i = 0, l = obj->dictGetLength(); i < l; ++i) { |
||||
- obj->dictGetValNF(i, &fontRef); |
||||
- if (fontRef->isRef()) |
||||
+ fontRef = obj->dictGetValNF(i); |
||||
+ if (fontRef.isRef()) |
||||
copyFont(obj->dictGetKey(i), &fontRef); |
||||
- else if (fontRef->isDict()) { // some programs generate pdf with embedded font object |
||||
+ else if (fontRef.isDict()) { // some programs generate pdf with embedded font object |
||||
copyName(obj->dictGetKey(i)); |
||||
pdf_puts(" "); |
||||
copyObject(&fontRef); |
||||
} |
||||
else |
||||
pdftex_fail("PDF inclusion: invalid font in reference type <%s>", |
||||
- fontRef->getTypeName()); |
||||
+ fontRef.getTypeName()); |
||||
} |
||||
pdf_puts(">>\n"); |
||||
} |
||||
@@ -548,7 +545,7 @@ static char *convertNumToPDF(double n) |
||||
|
||||
static void copyObject(Object * obj) |
||||
{ |
||||
- PdfObject obj1; |
||||
+ Object obj1; |
||||
int i, l, c; |
||||
Ref ref; |
||||
char *p; |
||||
@@ -592,8 +589,8 @@ static void copyObject(Object * obj) |
||||
} else if (obj->isArray()) { |
||||
pdf_puts("["); |
||||
for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { |
||||
- obj->arrayGetNF(i, &obj1); |
||||
- if (!obj1->isName()) |
||||
+ obj1 = obj->arrayGetNF(i); |
||||
+ if (!obj1.isName()) |
||||
pdf_puts(" "); |
||||
copyObject(&obj1); |
||||
} |
||||
@@ -603,9 +600,8 @@ static void copyObject(Object * obj) |
||||
copyDict(obj); |
||||
pdf_puts(">>"); |
||||
} else if (obj->isStream()) { |
||||
- initDictFromDict(obj1, obj->streamGetDict()); |
||||
pdf_puts("<<\n"); |
||||
- copyDict(&obj1); |
||||
+ copyDict(obj->getStream()->getDictObject()); |
||||
pdf_puts(">>\n"); |
||||
pdf_puts("stream\n"); |
||||
copyStream(obj->getStream()->getUndecodedStream()); |
||||
@@ -629,9 +625,8 @@ static void writeRefs() |
||||
InObj *r; |
||||
for (r = inObjList; r != 0; r = r->next) { |
||||
if (!r->written) { |
||||
- Object obj1; |
||||
r->written = 1; |
||||
- xref->fetch(r->ref.num, r->ref.gen, &obj1); |
||||
+ Object obj1 = xref->fetch(r->ref.num, r->ref.gen); |
||||
if (r->type == objFont) { |
||||
assert(!obj1.isStream()); |
||||
pdfbeginobj(r->num, 2); // \pdfobjcompresslevel = 2 is for this |
||||
@@ -647,7 +642,6 @@ static void writeRefs() |
||||
pdf_puts("\n"); |
||||
pdfendobj(); |
||||
} |
||||
- obj1.free(); |
||||
} |
||||
} |
||||
} |
||||
@@ -805,8 +799,8 @@ void write_epdf(void) |
||||
Page *page; |
||||
Ref *pageRef; |
||||
Dict *pageDict; |
||||
- PdfObject contents, obj1, obj2, pageObj, dictObj; |
||||
- PdfObject groupDict; |
||||
+ Object contents, obj1, obj2, pageObj, dictObj; |
||||
+ Object groupDict; |
||||
bool writeSepGroup = false; |
||||
Object info; |
||||
char *key; |
||||
@@ -833,8 +827,8 @@ void write_epdf(void) |
||||
encodingList = 0; |
||||
page = pdf_doc->doc->getCatalog()->getPage(epdf_selected_page); |
||||
pageRef = pdf_doc->doc->getCatalog()->getPageRef(epdf_selected_page); |
||||
- xref->fetch(pageRef->num, pageRef->gen, &pageObj); |
||||
- pageDict = pageObj->getDict(); |
||||
+ pageObj = xref->fetch(pageRef->num, pageRef->gen); |
||||
+ pageDict = pageObj.getDict(); |
||||
rotate = page->getRotate(); |
||||
PDFRectangle *pagebox; |
||||
// write the Page header |
||||
@@ -852,7 +846,7 @@ void write_epdf(void) |
||||
pdf_printf("/%s.PageNumber %i\n", pdfkeyprefix, (int) epdf_selected_page); |
||||
} |
||||
if ((suppress_ptex_info & MASK_SUPPRESS_PTEX_INFODICT) == 0) { |
||||
- pdf_doc->doc->getDocInfoNF(&info); |
||||
+ info = pdf_doc->doc->getDocInfoNF(); |
||||
if (info.isRef()) { |
||||
// the info dict must be indirect (PDF Ref p. 61) |
||||
pdf_printf("/%s.InfoDict ", pdfkeyprefix); |
||||
@@ -908,14 +902,14 @@ void write_epdf(void) |
||||
pdf_puts(stripzeros(s)); |
||||
|
||||
// Metadata validity check (as a stream it must be indirect) |
||||
- pageDict->lookupNF("Metadata", &dictObj); |
||||
- if (!dictObj->isNull() && !dictObj->isRef()) |
||||
+ dictObj = pageDict->lookupNF("Metadata"); |
||||
+ if (!dictObj.isNull() && !dictObj.isRef()) |
||||
pdftex_warn("PDF inclusion: /Metadata must be indirect object"); |
||||
|
||||
// copy selected items in Page dictionary except Resources & Group |
||||
for (i = 0; pageDictKeys[i] != NULL; i++) { |
||||
- pageDict->lookupNF(pageDictKeys[i], &dictObj); |
||||
- if (!dictObj->isNull()) { |
||||
+ dictObj = pageDict->lookupNF(pageDictKeys[i]); |
||||
+ if (!dictObj.isNull()) { |
||||
pdf_newline(); |
||||
pdf_printf("/%s ", pageDictKeys[i]); |
||||
copyObject(&dictObj); // preserves indirection |
||||
@@ -923,8 +917,8 @@ void write_epdf(void) |
||||
} |
||||
|
||||
// handle page group |
||||
- pageDict->lookupNF("Group", &dictObj); |
||||
- if (!dictObj->isNull()) { |
||||
+ dictObj = pageDict->lookupNF("Group"); |
||||
+ if (!dictObj.isNull()) { |
||||
if (pdfpagegroupval == 0) { |
||||
// another pdf with page group was included earlier on the |
||||
// same page; copy the Group entry as is. See manual for |
||||
@@ -938,11 +932,36 @@ void write_epdf(void) |
||||
copyObject(&dictObj); |
||||
} else { |
||||
// write Group dict as a separate object, since the Page dict also refers to it |
||||
- pageDict->lookup("Group", &dictObj); |
||||
- if (!dictObj->isDict()) |
||||
+ dictObj = pageDict->lookup("Group"); |
||||
+ if (!dictObj.isDict()) |
||||
pdftex_fail("PDF inclusion: /Group dict missing"); |
||||
writeSepGroup = true; |
||||
- initDictFromDict(groupDict, page->getGroup()); |
||||
+/* |
||||
+This part is only a single line |
||||
+ groupDict = Object(page->getGroup()); |
||||
+in the original patch. In this case, however, pdftex crashes at |
||||
+"delete pdf_doc->doc" in "delete_document()" for inclusion of some |
||||
+kind of pdf images, for example, figure_missing.pdf in gnuplot. |
||||
+A change |
||||
+ groupDict = Object(page->getGroup()).copy(); |
||||
+does not improve the situation. |
||||
+The changes below seem to work fine. |
||||
+*/ |
||||
+// begin modification |
||||
+ groupDict = pageDict->lookup("Group"); |
||||
+ const Dict& dic1 = page->getGroup(); |
||||
+ const Dict& dic2 = groupDict.getDict(); |
||||
+ // replace dic2 in groupDict with dic1 |
||||
+ l = dic2.getLength(); |
||||
+ for (i = 0; i < l; i++) { |
||||
+ groupDict.dictRemove(dic2.getKey(i)); |
||||
+ } |
||||
+ l = dic1.getLength(); |
||||
+ for (i = 0; i < l; i++) { |
||||
+ groupDict.dictAdd(copyString(dic1.getKey(i)), |
||||
+ dic1.getValNF(i)); |
||||
+ } |
||||
+// end modification |
||||
pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); |
||||
} |
||||
} |
||||
@@ -955,14 +974,14 @@ void write_epdf(void) |
||||
pdftex_warn |
||||
("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)"); |
||||
} else { |
||||
- initDictFromDict(obj1, page->getResourceDict()); |
||||
+ Object *obj1 = page->getResourceDictObject(); |
||||
if (!obj1->isDict()) |
||||
pdftex_fail("PDF inclusion: invalid resources dict type <%s>", |
||||
obj1->getTypeName()); |
||||
pdf_newline(); |
||||
pdf_puts("/Resources <<\n"); |
||||
for (i = 0, l = obj1->dictGetLength(); i < l; ++i) { |
||||
- obj1->dictGetVal(i, &obj2); |
||||
+ obj2 = obj1->dictGetVal(i); |
||||
key = obj1->dictGetKey(i); |
||||
if (strcmp("Font", key) == 0) |
||||
copyFontResources(&obj2); |
||||
@@ -975,8 +994,8 @@ void write_epdf(void) |
||||
} |
||||
|
||||
// write the page contents |
||||
- page->getContents(&contents); |
||||
- if (contents->isStream()) { |
||||
+ contents = page->getContents(); |
||||
+ if (contents.isStream()) { |
||||
|
||||
// Variant A: get stream and recompress under control |
||||
// of \pdfcompresslevel |
||||
@@ -987,36 +1006,35 @@ void write_epdf(void) |
||||
|
||||
// Variant B: copy stream without recompressing |
||||
// |
||||
- contents->streamGetDict()->lookup("F", &obj1); |
||||
- if (!obj1->isNull()) { |
||||
+ obj1 = contents.streamGetDict()->lookup("F"); |
||||
+ if (!obj1.isNull()) { |
||||
pdftex_fail("PDF inclusion: Unsupported external stream"); |
||||
} |
||||
- contents->streamGetDict()->lookup("Length", &obj1); |
||||
- assert(!obj1->isNull()); |
||||
+ obj1 = contents.streamGetDict()->lookup("Length"); |
||||
+ assert(!obj1.isNull()); |
||||
pdf_puts("/Length "); |
||||
copyObject(&obj1); |
||||
pdf_puts("\n"); |
||||
- contents->streamGetDict()->lookup("Filter", &obj1); |
||||
- if (!obj1->isNull()) { |
||||
+ obj1 = contents.streamGetDict()->lookup("Filter"); |
||||
+ if (!obj1.isNull()) { |
||||
pdf_puts("/Filter "); |
||||
copyObject(&obj1); |
||||
pdf_puts("\n"); |
||||
- contents->streamGetDict()->lookup("DecodeParms", &obj1); |
||||
- if (!obj1->isNull()) { |
||||
+ obj1 = contents.streamGetDict()->lookup("DecodeParms"); |
||||
+ if (!obj1.isNull()) { |
||||
pdf_puts("/DecodeParms "); |
||||
copyObject(&obj1); |
||||
pdf_puts("\n"); |
||||
} |
||||
} |
||||
pdf_puts(">>\nstream\n"); |
||||
- copyStream(contents->getStream()->getUndecodedStream()); |
||||
+ copyStream(contents.getStream()->getUndecodedStream()); |
||||
pdfendstream(); |
||||
- } else if (contents->isArray()) { |
||||
+ } else if (contents.isArray()) { |
||||
pdfbeginstream(); |
||||
- for (i = 0, l = contents->arrayGetLength(); i < l; ++i) { |
||||
- Object contentsobj; |
||||
- copyStream((contents->arrayGet(i, &contentsobj))->getStream()); |
||||
- contentsobj.free(); |
||||
+ for (i = 0, l = contents.arrayGetLength(); i < l; ++i) { |
||||
+ Object contentsobj = contents.arrayGet(i); |
||||
+ copyStream(contentsobj.getStream()); |
||||
if (i < l - 1) |
||||
pdf_newline(); // add a newline after each stream except the last |
||||
} |
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.newpoppler texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.newpoppler 2020-05-14 17:45:48.000000000 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-06 17:50:38.863177570 -0400 |
||||
@@ -16,6 +16,14 @@ GNU General Public License for more deta |
||||
You should have received a copy of the GNU General Public License along |
||||
with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
+ |
||||
+/* |
||||
+This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at |
||||
+https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk |
||||
+by Arch Linux. The poppler should be 0.59.0 or newer versions. |
||||
+POPPLER_VERSION should be defined. |
||||
+*/ |
||||
+ |
||||
#include <w2c/config.h> |
||||
|
||||
#include <stdlib.h> |
||||
@@ -77,22 +85,20 @@ int main(int argc, char *argv[]) |
||||
objgen = atoi(argv[3]); |
||||
} |
||||
xref = doc->getXRef(); |
||||
- catalogDict.initNull(); |
||||
- xref->getCatalog(&catalogDict); |
||||
+ catalogDict = xref->getCatalog(); |
||||
if (!catalogDict.isDict("Catalog")) { |
||||
fprintf(stderr, "No Catalog found\n"); |
||||
exit(1); |
||||
} |
||||
- srcStream.initNull(); |
||||
+ srcStream = Object(objNull); |
||||
if (objnum == 0) { |
||||
- catalogDict.dictLookup("SourceObject", &srcStream); |
||||
+ srcStream = catalogDict.dictLookup("SourceObject"); |
||||
static char const_SourceFile[] = "SourceFile"; |
||||
if (!srcStream.isStream(const_SourceFile)) { |
||||
fprintf(stderr, "No SourceObject found\n"); |
||||
exit(1); |
||||
} |
||||
- srcName.initNull(); |
||||
- srcStream.getStream()->getDict()->lookup("SourceName", &srcName); |
||||
+ srcName = srcStream.getStream()->getDict()->lookup("SourceName"); |
||||
if (!srcName.isString()) { |
||||
fprintf(stderr, "No SourceName found\n"); |
||||
exit(1); |
||||
@@ -101,7 +107,7 @@ int main(int argc, char *argv[]) |
||||
// We cannot free srcName, as objname shares its string. |
||||
// srcName.free(); |
||||
} else if (objnum > 0) { |
||||
- xref->fetch(objnum, objgen, &srcStream); |
||||
+ srcStream = xref->fetch(objnum, objgen); |
||||
if (!srcStream.isStream()) { |
||||
fprintf(stderr, "Not a Stream object\n"); |
||||
exit(1); |
||||
@@ -151,26 +157,24 @@ int main(int argc, char *argv[]) |
||||
int localOffset = 0; |
||||
Guint firstOffset; |
||||
|
||||
- assert(xref->fetch(e->offset, 0, &objStr)->isStream()); |
||||
- nObjects = objStr.streamGetDict()->lookup("N", &obj1)->getInt(); |
||||
- obj1.free(); |
||||
- first = objStr.streamGetDict()->lookup("First", &obj1)->getInt(); |
||||
- obj1.free(); |
||||
+ objStr = xref->fetch(e->offset, 0); |
||||
+ assert(objStr.isStream()); |
||||
+ obj1 = objStr.streamGetDict()->lookup("N"); |
||||
+ nObjects = obj1.getInt(); |
||||
+ obj1 = objStr.streamGetDict()->lookup("First"); |
||||
+ first = obj1.getInt(); |
||||
firstOffset = objStr.getStream()->getBaseStream()->getStart() + first; |
||||
|
||||
// parse the header: object numbers and offsets |
||||
objStr.streamReset(); |
||||
- obj1.initNull(); |
||||
- str = new EmbedStream(objStr.getStream(), &obj1, gTrue, first); |
||||
+ str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first); |
||||
lexer = new Lexer(xref, str); |
||||
parser = new Parser(xref, lexer, gFalse); |
||||
for (n = 0; n < nObjects; ++n) { |
||||
- parser->getObj(&obj1); |
||||
- parser->getObj(&obj2); |
||||
+ obj1 = parser->getObj(); |
||||
+ obj2 = parser->getObj(); |
||||
if (n == e->gen) |
||||
localOffset = obj2.getInt(); |
||||
- obj1.free(); |
||||
- obj2.free(); |
||||
} |
||||
#if defined(XPDF304) |
||||
while (str->getChar() != EOF) ; |
||||
@@ -178,7 +182,6 @@ int main(int argc, char *argv[]) |
||||
lexer->skipToEOF(); |
||||
#endif |
||||
delete parser; |
||||
- objStr.free(); |
||||
|
||||
fprintf(outfile, "%.10lu 00000 n\n", |
||||
(long unsigned)(firstOffset + localOffset)); |
||||
@@ -189,7 +192,6 @@ int main(int argc, char *argv[]) |
||||
s->reset(); |
||||
while ((c = s->getChar()) != EOF) |
||||
fputc(c, outfile); |
||||
- srcStream.free(); |
||||
} |
||||
if (objnum == 0) |
||||
fprintf(stderr, "Source file extracted to %s\n", outname); |
||||
@@ -198,7 +200,6 @@ int main(int argc, char *argv[]) |
||||
else |
||||
fprintf(stderr, "Cross-reference table extracted to %s\n", outname); |
||||
fclose(outfile); |
||||
- catalogDict.free(); |
||||
delete doc; |
||||
delete globalParams; |
||||
} |
@ -0,0 +1,200 @@
@@ -0,0 +1,200 @@
|
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.73 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.73 2021-05-06 18:01:35.847959461 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-06 18:08:20.143955577 -0400 |
||||
@@ -114,7 +114,7 @@ struct UsedEncoding { |
||||
|
||||
static InObj *inObjList; |
||||
static UsedEncoding *encodingList; |
||||
-static GBool isInit = gFalse; |
||||
+static bool isInit = false; |
||||
|
||||
// -------------------------------------------------------------------- |
||||
// Maintain list of open embedded PDF files |
||||
@@ -269,7 +269,7 @@ static int getNewObjectNumber(Ref ref) |
||||
|
||||
static void copyObject(Object *); |
||||
|
||||
-static void copyName(char *s) |
||||
+static void copyName(const char *s) |
||||
{ |
||||
pdf_puts("/"); |
||||
for (; *s != 0; s++) { |
||||
@@ -304,7 +304,7 @@ static void copyDict(Object * obj) |
||||
static void copyFontDict(Object * obj, InObj * r) |
||||
{ |
||||
int i, l; |
||||
- char *key; |
||||
+ const char *key; |
||||
if (!obj->isDict()) |
||||
pdftex_fail("PDF inclusion: invalid dict type <%s>", |
||||
obj->getTypeName()); |
||||
@@ -376,7 +376,7 @@ static bool embeddableFont(Object * font |
||||
return false; |
||||
} |
||||
|
||||
-static void copyFont(char *tag, Object * fontRef) |
||||
+static void copyFont(const char *tag, Object * fontRef) |
||||
{ |
||||
Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset, |
||||
stemV; |
||||
@@ -412,7 +412,7 @@ static void copyFont(char *tag, Object * |
||||
&& fontdescRef.isRef() |
||||
&& fontdesc.isDict() |
||||
&& embeddableFont(&fontdesc) |
||||
- && (fontmap = lookup_fontmap(basefont.getName())) != NULL) { |
||||
+ && (fontmap = lookup_fontmap((char *)basefont.getName())) != NULL) { |
||||
// round /StemV value, since the PDF input is a float |
||||
// (see Font Descriptors in PDF reference), but we only store an |
||||
// integer, since we don't want to change the struct. |
||||
@@ -421,7 +421,7 @@ static void copyFont(char *tag, Object * |
||||
charset = fontdesc.dictLookup("CharSet"); |
||||
if (!charset.isNull() && |
||||
charset.isString() && is_subsetable(fontmap)) |
||||
- epdf_mark_glyphs(fd, charset.getString()->getCString()); |
||||
+ epdf_mark_glyphs(fd, (char *)charset.getString()->c_str()); |
||||
else |
||||
embed_whole_font(fd); |
||||
addFontDesc(fontdescRef.getRef(), fd); |
||||
@@ -461,7 +461,7 @@ static void copyFontResources(Object * o |
||||
pdf_puts(">>\n"); |
||||
} |
||||
|
||||
-static void copyOtherResources(Object * obj, char *key) |
||||
+static void copyOtherResources(Object * obj, const char *key) |
||||
{ |
||||
// copies all other resources (write_epdf handles Fonts and ProcSets), |
||||
|
||||
@@ -548,8 +548,8 @@ static void copyObject(Object * obj) |
||||
Object obj1; |
||||
int i, l, c; |
||||
Ref ref; |
||||
- char *p; |
||||
- GString *s; |
||||
+ const char *p; |
||||
+ const GString *s; |
||||
if (obj->isBool()) { |
||||
pdf_printf("%s", obj->getBool()? "true" : "false"); |
||||
} else if (obj->isInt()) { |
||||
@@ -560,7 +560,7 @@ static void copyObject(Object * obj) |
||||
pdf_printf("%s", convertNumToPDF(obj->getNum())); |
||||
} else if (obj->isString()) { |
||||
s = obj->getString(); |
||||
- p = s->getCString(); |
||||
+ p = s->c_str(); |
||||
l = s->getLength(); |
||||
if (strlen(p) == (unsigned int) l) { |
||||
pdf_puts("("); |
||||
@@ -658,7 +658,7 @@ static void writeEncodings() |
||||
("PDF inclusion: CID fonts are not supported" |
||||
" (try to disable font replacement to fix this)"); |
||||
} |
||||
- if ((s = ((Gfx8BitFont *) r->font)->getCharName(i)) != 0) |
||||
+ if ((s = (char *) ((Gfx8BitFont *) r->font)->getCharName(i)) != 0) |
||||
glyphNames[i] = s; |
||||
else |
||||
glyphNames[i] = notdef; |
||||
@@ -673,7 +673,7 @@ static void writeEncodings() |
||||
} |
||||
|
||||
// get the pagebox according to the pagebox_spec |
||||
-static PDFRectangle *get_pagebox(Page * page, int pagebox_spec) |
||||
+static const PDFRectangle *get_pagebox(Page * page, int pagebox_spec) |
||||
{ |
||||
if (pagebox_spec == pdfboxspecmedia) |
||||
return page->getMediaBox(); |
||||
@@ -705,13 +705,13 @@ read_pdf_info(char *image_name, char *pa |
||||
{ |
||||
PdfDocument *pdf_doc; |
||||
Page *page; |
||||
- PDFRectangle *pagebox; |
||||
+ const PDFRectangle *pagebox; |
||||
float pdf_version_found, pdf_version_wanted; |
||||
// initialize |
||||
if (!isInit) { |
||||
globalParams = new GlobalParams(); |
||||
- globalParams->setErrQuiet(gFalse); |
||||
- isInit = gTrue; |
||||
+ globalParams->setErrQuiet(false); |
||||
+ isInit = true; |
||||
} |
||||
// open PDF file |
||||
pdf_doc = find_add_document(image_name); |
||||
@@ -803,7 +803,7 @@ void write_epdf(void) |
||||
Object groupDict; |
||||
bool writeSepGroup = false; |
||||
Object info; |
||||
- char *key; |
||||
+ const char *key; |
||||
char s[256]; |
||||
int i, l; |
||||
int rotate; |
||||
@@ -830,7 +830,7 @@ void write_epdf(void) |
||||
pageObj = xref->fetch(pageRef->num, pageRef->gen); |
||||
pageDict = pageObj.getDict(); |
||||
rotate = page->getRotate(); |
||||
- PDFRectangle *pagebox; |
||||
+ const PDFRectangle *pagebox; |
||||
// write the Page header |
||||
pdf_puts("/Type /XObject\n"); |
||||
pdf_puts("/Subtype /Form\n"); |
||||
@@ -958,7 +958,7 @@ The changes below seem to work fine. |
||||
} |
||||
l = dic1.getLength(); |
||||
for (i = 0; i < l; i++) { |
||||
- groupDict.dictAdd(copyString(dic1.getKey(i)), |
||||
+ groupDict.dictAdd(dic1.getKey(i), |
||||
dic1.getValNF(i)); |
||||
} |
||||
// end modification |
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.73 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.73 2021-05-06 18:01:35.847959461 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-06 18:01:35.854959565 -0400 |
||||
@@ -103,7 +103,7 @@ int main(int argc, char *argv[]) |
||||
fprintf(stderr, "No SourceName found\n"); |
||||
exit(1); |
||||
} |
||||
- outname = srcName.getString()->getCString(); |
||||
+ outname = (char *)srcName.getString()->c_str(); |
||||
// We cannot free srcName, as objname shares its string. |
||||
// srcName.free(); |
||||
} else if (objnum > 0) { |
||||
@@ -112,7 +112,7 @@ int main(int argc, char *argv[]) |
||||
fprintf(stderr, "Not a Stream object\n"); |
||||
exit(1); |
||||
} |
||||
- sprintf(buf, "%s", fileName->getCString()); |
||||
+ sprintf(buf, "%s", fileName->c_str()); |
||||
if ((p = strrchr(buf, '.')) == 0) |
||||
p = strchr(buf, 0); |
||||
if (objgen == 0) |
||||
@@ -122,7 +122,7 @@ int main(int argc, char *argv[]) |
||||
outname = buf; |
||||
} else { // objnum < 0 means we are extracting the XRef table |
||||
extract_xref_table = true; |
||||
- sprintf(buf, "%s", fileName->getCString()); |
||||
+ sprintf(buf, "%s", fileName->c_str()); |
||||
if ((p = strrchr(buf, '.')) == 0) |
||||
p = strchr(buf, 0); |
||||
sprintf(p, ".xref"); |
||||
@@ -155,7 +155,7 @@ int main(int argc, char *argv[]) |
||||
Object objStr, obj1, obj2; |
||||
int nObjects, first, n; |
||||
int localOffset = 0; |
||||
- Guint firstOffset; |
||||
+ unsigned int firstOffset; |
||||
|
||||
objStr = xref->fetch(e->offset, 0); |
||||
assert(objStr.isStream()); |
||||
@@ -167,9 +167,9 @@ int main(int argc, char *argv[]) |
||||
|
||||
// parse the header: object numbers and offsets |
||||
objStr.streamReset(); |
||||
- str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first); |
||||
+ str = new EmbedStream(objStr.getStream(), Object(objNull), true, first); |
||||
lexer = new Lexer(xref, str); |
||||
- parser = new Parser(xref, lexer, gFalse); |
||||
+ parser = new Parser(xref, lexer, false); |
||||
for (n = 0; n < nObjects; ++n) { |
||||
obj1 = parser->getObj(); |
||||
obj2 = parser->getObj(); |
||||
diff -up texlive-base-20210325/source/texk/web2c/xetexdir/pdfimage.cpp.poppler-0.73 texlive-base-20210325/source/texk/web2c/xetexdir/pdfimage.cpp |
@ -0,0 +1,228 @@
@@ -0,0 +1,228 @@
|
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.84 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.84 2021-05-06 18:21:18.379430999 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-10 11:15:09.572907304 -0400 |
||||
@@ -26,6 +26,15 @@ The poppler should be 0.59.0 or newer ve |
||||
POPPLER_VERSION should be defined. |
||||
*/ |
||||
|
||||
+#ifdef POPPLER_VERSION |
||||
+#include <poppler-config.h> |
||||
+#define xpdfVersion POPPLER_VERSION |
||||
+#define xpdfString "poppler" |
||||
+#else |
||||
+#include <xpdf/config.h> /* just to get the xpdf version */ |
||||
+#define xpdfString "xpdf" |
||||
+#endif |
||||
+ |
||||
/* Do this early in order to avoid a conflict between |
||||
MINGW32 <rpcndr.h> defining 'boolean' as 'unsigned char' and |
||||
<kpathsea/types.h> defining Pascal's boolean as 'int'. |
||||
@@ -286,7 +295,7 @@ static void copyDictEntry(Object * obj, |
||||
Object obj1; |
||||
copyName(obj->dictGetKey(i)); |
||||
pdf_puts(" "); |
||||
- obj1 = obj->dictGetValNF(i); |
||||
+ obj1 = obj->dictGetValNF(i).copy(); |
||||
copyObject(&obj1); |
||||
pdf_puts("\n"); |
||||
} |
||||
@@ -345,7 +354,7 @@ static void copyProcSet(Object * obj) |
||||
obj->getTypeName()); |
||||
pdf_puts("/ProcSet [ "); |
||||
for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { |
||||
- procset = obj->arrayGetNF(i); |
||||
+ procset = obj->arrayGetNF(i).copy(); |
||||
if (!procset.isName()) |
||||
pdftex_fail("PDF inclusion: invalid ProcSet entry type <%s>", |
||||
procset.getTypeName()); |
||||
@@ -400,7 +409,7 @@ static void copyFont(const char *tag, Ob |
||||
if (fontdict.isDict()) { |
||||
subtype = fontdict.dictLookup("Subtype"); |
||||
basefont = fontdict.dictLookup("BaseFont"); |
||||
- fontdescRef = fontdict.dictLookupNF("FontDescriptor"); |
||||
+ fontdescRef = fontdict.dictLookupNF("FontDescriptor").copy(); |
||||
if (fontdescRef.isRef()) { |
||||
fontdesc = fontdescRef.fetch(xref); |
||||
} |
||||
@@ -446,7 +455,7 @@ static void copyFontResources(Object * o |
||||
obj->getTypeName()); |
||||
pdf_puts("/Font << "); |
||||
for (i = 0, l = obj->dictGetLength(); i < l; ++i) { |
||||
- fontRef = obj->dictGetValNF(i); |
||||
+ fontRef = obj->dictGetValNF(i).copy(); |
||||
if (fontRef.isRef()) |
||||
copyFont(obj->dictGetKey(i), &fontRef); |
||||
else if (fontRef.isDict()) { // some programs generate pdf with embedded font object |
||||
@@ -589,7 +598,7 @@ static void copyObject(Object * obj) |
||||
} else if (obj->isArray()) { |
||||
pdf_puts("["); |
||||
for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { |
||||
- obj1 = obj->arrayGetNF(i); |
||||
+ obj1 = obj->arrayGetNF(i).copy(); |
||||
if (!obj1.isName()) |
||||
pdf_puts(" "); |
||||
copyObject(&obj1); |
||||
@@ -709,7 +718,7 @@ read_pdf_info(char *image_name, char *pa |
||||
float pdf_version_found, pdf_version_wanted; |
||||
// initialize |
||||
if (!isInit) { |
||||
- globalParams = new GlobalParams(); |
||||
+ globalParams = std::unique_ptr<GlobalParams>(new GlobalParams()); |
||||
globalParams->setErrQuiet(false); |
||||
isInit = true; |
||||
} |
||||
@@ -742,7 +751,7 @@ read_pdf_info(char *image_name, char *pa |
||||
if (link == 0 || !link->isOk()) |
||||
pdftex_fail("PDF inclusion: invalid destination <%s>", page_name); |
||||
Ref ref = link->getPageRef(); |
||||
- page_num = pdf_doc->doc->getCatalog()->findPage(ref.num, ref.gen); |
||||
+ page_num = pdf_doc->doc->getCatalog()->findPage(ref); |
||||
if (page_num == 0) |
||||
pdftex_fail("PDF inclusion: destination is not a page <%s>", |
||||
page_name); |
||||
@@ -902,13 +911,13 @@ void write_epdf(void) |
||||
pdf_puts(stripzeros(s)); |
||||
|
||||
// Metadata validity check (as a stream it must be indirect) |
||||
- dictObj = pageDict->lookupNF("Metadata"); |
||||
+ dictObj = pageDict->lookupNF("Metadata").copy(); |
||||
if (!dictObj.isNull() && !dictObj.isRef()) |
||||
pdftex_warn("PDF inclusion: /Metadata must be indirect object"); |
||||
|
||||
// copy selected items in Page dictionary except Resources & Group |
||||
for (i = 0; pageDictKeys[i] != NULL; i++) { |
||||
- dictObj = pageDict->lookupNF(pageDictKeys[i]); |
||||
+ dictObj = pageDict->lookupNF(pageDictKeys[i]).copy(); |
||||
if (!dictObj.isNull()) { |
||||
pdf_newline(); |
||||
pdf_printf("/%s ", pageDictKeys[i]); |
||||
@@ -917,7 +926,7 @@ void write_epdf(void) |
||||
} |
||||
|
||||
// handle page group |
||||
- dictObj = pageDict->lookupNF("Group"); |
||||
+ dictObj = pageDict->lookupNF("Group").copy(); |
||||
if (!dictObj.isNull()) { |
||||
if (pdfpagegroupval == 0) { |
||||
// another pdf with page group was included earlier on the |
||||
@@ -959,7 +968,7 @@ The changes below seem to work fine. |
||||
l = dic1.getLength(); |
||||
for (i = 0; i < l; i++) { |
||||
groupDict.dictAdd(dic1.getKey(i), |
||||
- dic1.getValNF(i)); |
||||
+ dic1.getValNF(i).copy()); |
||||
} |
||||
// end modification |
||||
pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); |
||||
@@ -1089,6 +1098,6 @@ void epdf_check_mem() |
||||
delete_document(p); |
||||
} |
||||
// see above for globalParams |
||||
- delete globalParams; |
||||
+ globalParams.reset(); |
||||
} |
||||
} |
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.84 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.84 2021-05-06 18:21:18.379430999 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-06 18:21:18.383431058 -0400 |
||||
@@ -24,6 +24,15 @@ by Arch Linux. The poppler should be 0.5 |
||||
POPPLER_VERSION should be defined. |
||||
*/ |
||||
|
||||
+#ifdef POPPLER_VERSION |
||||
+#include <poppler-config.h> |
||||
+#define xpdfVersion POPPLER_VERSION |
||||
+#define xpdfString "poppler" |
||||
+#else |
||||
+#include <xpdf/config.h> /* just to get the xpdf version */ |
||||
+#define xpdfString "xpdf" |
||||
+#endif |
||||
+ |
||||
#include <w2c/config.h> |
||||
|
||||
#include <stdlib.h> |
||||
@@ -73,7 +82,7 @@ int main(int argc, char *argv[]) |
||||
exit(1); |
||||
} |
||||
fileName = new GString(argv[1]); |
||||
- globalParams = new GlobalParams(); |
||||
+ globalParams = std::unique_ptr<GlobalParams>(new GlobalParams()); |
||||
doc = new PDFDoc(fileName); |
||||
if (!doc->isOk()) { |
||||
fprintf(stderr, "Invalid PDF file\n"); |
||||
@@ -94,7 +103,7 @@ int main(int argc, char *argv[]) |
||||
if (objnum == 0) { |
||||
srcStream = catalogDict.dictLookup("SourceObject"); |
||||
static char const_SourceFile[] = "SourceFile"; |
||||
- if (!srcStream.isStream(const_SourceFile)) { |
||||
+ if (!(srcStream.isStream() && srcStream.getDict()->is(const_SourceFile))) { |
||||
fprintf(stderr, "No SourceObject found\n"); |
||||
exit(1); |
||||
} |
||||
@@ -150,7 +159,6 @@ int main(int argc, char *argv[]) |
||||
(e->type == xrefEntryFree ? "f" : "n")); |
||||
else { // e->offset is the object number of the object stream |
||||
Stream *str; |
||||
- Lexer *lexer; |
||||
Parser *parser; |
||||
Object objStr, obj1, obj2; |
||||
int nObjects, first, n; |
||||
@@ -168,8 +176,7 @@ int main(int argc, char *argv[]) |
||||
// parse the header: object numbers and offsets |
||||
objStr.streamReset(); |
||||
str = new EmbedStream(objStr.getStream(), Object(objNull), true, first); |
||||
- lexer = new Lexer(xref, str); |
||||
- parser = new Parser(xref, lexer, false); |
||||
+ parser = new Parser(xref, str, false); |
||||
for (n = 0; n < nObjects; ++n) { |
||||
obj1 = parser->getObj(); |
||||
obj2 = parser->getObj(); |
||||
@@ -201,5 +208,5 @@ int main(int argc, char *argv[]) |
||||
fprintf(stderr, "Cross-reference table extracted to %s\n", outname); |
||||
fclose(outfile); |
||||
delete doc; |
||||
- delete globalParams; |
||||
+ globalParams.reset(); |
||||
} |
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c.poppler-0.84 texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c.poppler-0.84 2019-12-29 19:37:32.000000000 -0500 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c 2021-05-06 18:21:18.383431058 -0400 |
||||
@@ -32,14 +32,6 @@ with this program. If not, see <http:// |
||||
#include <zlib.h> |
||||
#include "ptexlib.h" |
||||
#include <png.h> |
||||
-#ifdef POPPLER_VERSION |
||||
-/* POPPLER_VERSION should be a proper version string */ |
||||
-#define xpdfVersion POPPLER_VERSION |
||||
-#define xpdfString "poppler" |
||||
-#else |
||||
-#include <xpdf/config.h> /* just to get the xpdf version */ |
||||
-#define xpdfString "xpdf" |
||||
-#endif |
||||
|
||||
#define check_nprintf(size_get, size_want) \ |
||||
if ((unsigned)(size_get) >= (unsigned)(size_want)) \ |
||||
@@ -977,12 +969,10 @@ void initversionstring(char **versions) |
||||
{ |
||||
const_string fmt = |
||||
"Compiled with libpng %s; using libpng %s\n" |
||||
- "Compiled with zlib %s; using zlib %s\n" |
||||
- "Compiled with %s version %s\n"; |
||||
+ "Compiled with zlib %s; using zlib %s\n"; |
||||
size_t len = strlen(fmt) |
||||
+ strlen(PNG_LIBPNG_VER_STRING) + strlen(png_libpng_ver) |
||||
+ strlen(ZLIB_VERSION) + strlen(zlib_version) |
||||
- + strlen(xpdfString) + strlen(xpdfVersion) |
||||
+ 1; |
||||
|
||||
/* len will be more than enough, because of the placeholder chars in fmt |
||||
@@ -990,7 +980,7 @@ void initversionstring(char **versions) |
||||
*versions = xmalloc(len); |
||||
sprintf(*versions, fmt, |
||||
PNG_LIBPNG_VER_STRING, png_libpng_ver, |
||||
- ZLIB_VERSION, zlib_version, xpdfString, xpdfVersion); |
||||
+ ZLIB_VERSION, zlib_version); |
||||
} |
||||
|
||||
|
||||
diff -up texlive-base-20210325/source/texk/web2c/xetexdir/XeTeX_ext.c.poppler-0.84 texlive-base-20210325/source/texk/web2c/xetexdir/XeTeX_ext.c |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
diff -up texlive-base-20210325/source/texk/kpathsea/texmf.cnf.texinfo-fix texlive-base-20210325/source/texk/kpathsea/texmf.cnf |
||||
--- texlive-base-20210325/source/texk/kpathsea/texmf.cnf.texinfo-fix 2021-05-06 17:53:44.616943275 -0400 |
||||
+++ texlive-base-20210325/source/texk/kpathsea/texmf.cnf 2021-05-06 17:55:40.097662674 -0400 |
||||
@@ -83,6 +83,9 @@ TEXMFSYSCONFIG = $TEXMFROOT/texmf-config |
||||
% to %USERPROFILE% on Windows, $HOME otherwise. |
||||
TEXMFHOME = ~/texmf |
||||
|
||||
+% Texinfo on Fedora lives out of $TEXMFROOT |
||||
+TEXINFOHOME = $SELFAUTODIR/share/texmf |
||||
+ |
||||
% TEXMFVAR, where texconfig/updmap/fmtutil store cached runtime data. |
||||
TEXMFVAR = ~/.texlive2021/texmf-var |
||||
|
||||
@@ -108,7 +111,7 @@ TEXMFAUXTREES = {} |
||||
% The odd-looking $TEXMFAUXTREES$TEXMF... construct is so that if no auxtree is |
||||
% ever defined (the 99% common case), no extra elements will be added to |
||||
% the search paths. tlmgr takes care to end any value with a trailing comma. |
||||
-TEXMF = {$TEXMFAUXTREES$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFDIST} |
||||
+TEXMF = {$TEXMFAUXTREES$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXINFOHOME,!!$TEXMFLOCAL,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFDIST} |
||||
|
||||
% Where to look for, and where mktexlsr creates, ls-R files. By default, |
||||
% this is all and only the !! elements of TEXMF, so that mktexlsr does not |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
diff -up texlive-base-20180414/source/texk/web2c/omegafonts/check.test.disabletest texlive-base-20180414/source/texk/web2c/omegafonts/check.test |
||||
--- texlive-base-20180414/source/texk/web2c/omegafonts/check.test.disabletest 2018-10-04 13:24:17.965126655 -0400 |
||||
+++ texlive-base-20180414/source/texk/web2c/omegafonts/check.test 2018-10-04 13:24:26.068945230 -0400 |
||||
@@ -4,6 +4,8 @@ |
||||
# Copyright 2014, 2015 Peter Breitenlohner <tex-live@tug.org> |
||||
# You may freely use, modify and/or distribute this file. |
||||
|
||||
+exit 0 |
||||
+ |
||||
test -d tests || mkdir -p tests |
||||
|
||||
TEXMFCNF=$srcdir/../../kpathsea |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
diff -up texlive-base-20200327/source/texk/kpathsea/texmf.cnf.me texlive-base-20200327/source/texk/kpathsea/texmf.cnf |
||||
--- texlive-base-20200327/source/texk/kpathsea/texmf.cnf.me 2020-09-23 09:35:26.729192291 +0200 |
||||
+++ texlive-base-20200327/source/texk/kpathsea/texmf.cnf 2020-09-23 09:36:01.849651692 +0200 |
||||
@@ -786,7 +786,7 @@ texmf_casefold_search = 1 |
||||
% For some xy-pic samples, you may need as much as 700000 words of memory. |
||||
% For the vast majority of documents, 60000 or less will do. |
||||
% |
||||
-main_memory = 5000000 % words of inimemory available; also applies to inimf&mp |
||||
+main_memory = 6000000 % words of inimemory available; also applies to inimf&mp |
||||
extra_mem_top = 0 % extra high memory for chars, tokens, etc. |
||||
extra_mem_bot = 0 % extra low memory for boxes, glue, breakpoints, etc. |
||||
|
@ -0,0 +1,159 @@
@@ -0,0 +1,159 @@
|
||||
diff -up texlive-base-20210325/source/configure.poppler-xpdf-fix texlive-base-20210325/source/configure |
||||
--- texlive-base-20210325/source/configure.poppler-xpdf-fix 2021-03-24 17:28:22.000000000 -0400 |
||||
+++ texlive-base-20210325/source/configure 2021-05-10 15:21:08.254142588 -0400 |
||||
@@ -21497,7 +21497,27 @@ if test "x$with_mpfr_libdir" != x && tes |
||||
MPFR_LIBS="-L$with_mpfr_libdir $MPFR_LIBS" |
||||
fi |
||||
|
||||
-: "kpse_xpdf_system_flags - no-op" |
||||
+if $PKG_CONFIG poppler --atleast-version=0.30; then |
||||
+ POPPLER_INCLUDES=`$PKG_CONFIG poppler --cflags` |
||||
+ POPPLER_LIBS=`$PKG_CONFIG poppler --libs` |
||||
+elif test "x$need_poppler:$with_system_poppler" = xyes:yes; then |
||||
+ as_fn_error $? "did not find poppler 0.30 or better" "$LINENO" 5 |
||||
+fi |
||||
+ |
||||
+POPPLER_VERSION='-DPOPPLER_VERSION=\"'`$PKG_CONFIG poppler --modversion`'\"' |
||||
+POPPLER_INCLUDES="$POPPLER_VERSION $POPPLER_INCLUDES" |
||||
+ |
||||
+if $PKG_CONFIG poppler --atleast-version=0.12; then |
||||
+ XPDF_INCLUDES=`$PKG_CONFIG poppler --cflags` |
||||
+ XPDF_LIBS=`$PKG_CONFIG poppler --libs` |
||||
+elif test "x$need_xpdf:$with_system_xpdf" = xyes:yes; then |
||||
+ as_fn_error $? "did not find poppler 0.12 or better" "$LINENO" 5 |
||||
+fi |
||||
+ |
||||
+POPPLER_VERSION='-DPOPPLER_VERSION=\"'`$PKG_CONFIG poppler --modversion`'\"' |
||||
+XPDF_INCLUDES="$POPPLER_VERSION $XPDF_INCLUDES" |
||||
+ |
||||
+# : "kpse_xpdf_system_flags - no-op" |
||||
|
||||
if $PKG_CONFIG zziplib --atleast-version=0.12; then |
||||
ZZIPLIB_INCLUDES=`$PKG_CONFIG zziplib --cflags` |
||||
diff -up texlive-base-20210325/source/texk/web2c/configure.poppler-xpdf-fix texlive-base-20210325/source/texk/web2c/configure |
||||
--- texlive-base-20210325/source/texk/web2c/configure.poppler-xpdf-fix 2021-02-16 22:03:54.000000000 -0500 |
||||
+++ texlive-base-20210325/source/texk/web2c/configure 2021-05-10 15:21:08.256142617 -0400 |
||||
@@ -25500,9 +25500,21 @@ fi |
||||
##tldbg _KPSE_LIB_FLAGS: Setup xpdf (-lxpdf) flags. |
||||
echo 'tldbg:_KPSE_LIB_FLAGS called: libdir=xpdf, libname=xpdf, options=, tlincl=-DPDF_PARSER_ONLY -IBLD/libs/xpdf -IBLD/libs/xpdf/goo -IBLD/libs/xpdf/xpdf, tllib=BLD/libs/xpdf/libxpdf.a, tlextra=, rebuildsrcdeps=, rebuildblddeps=${top_builddir}/../../libs/xpdf/xpdf/Stream.h.' >&5 |
||||
##tldbg _KPSE_LIB_FLAGS_TL: xpdf (xpdf) . |
||||
-: "kpse_xpdf_options - no-op" |
||||
+# Check whether --with-system-xpdf was given. |
||||
+if test "${with_system_xpdf+set}" = set; then : |
||||
+ withval=$with_system_xpdf; |
||||
+fi |
||||
+ |
||||
if test "x$with_system_xpdf" = xyes; then |
||||
- : "kpse_xpdf_system_flags - no-op" |
||||
+ if $PKG_CONFIG poppler --atleast-version=0.12; then |
||||
+ XPDF_INCLUDES=`$PKG_CONFIG poppler --cflags` |
||||
+ XPDF_LIBS=`$PKG_CONFIG poppler --libs` |
||||
+elif test "x$need_xpdf:$with_system_xpdf" = xyes:yes; then |
||||
+ as_fn_error $? "did not find poppler 0.12 or better" "$LINENO" 5 |
||||
+fi |
||||
+ |
||||
+POPPLER_VERSION='-DPOPPLER_VERSION=\"'`$PKG_CONFIG poppler --modversion`'\"' |
||||
+XPDF_INCLUDES="$POPPLER_VERSION $XPDF_INCLUDES" |
||||
else |
||||
XPDF_INCLUDES="-DPDF_PARSER_ONLY -I$kpse_BLD/libs/xpdf -I$kpse_BLD/libs/xpdf/goo -I$kpse_BLD/libs/xpdf/xpdf" |
||||
XPDF_LIBS="$kpse_BLD/libs/xpdf/libxpdf.a" |
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-xpdf-fix texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-xpdf-fix 2021-05-10 15:56:50.770034767 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-10 16:05:07.939283063 -0400 |
||||
@@ -49,10 +49,16 @@ POPPLER_VERSION should be defined. |
||||
#include <string.h> |
||||
#include <ctype.h> |
||||
|
||||
-#include <aconf.h> |
||||
-#include <GString.h> |
||||
-#include <gmem.h> |
||||
-#include <gfile.h> |
||||
+#ifdef POPPLER_VERSION |
||||
+#include <dirent.h> |
||||
+#include <poppler-config.h> |
||||
+#include <goo/GooString.h> |
||||
+#include <goo/gmem.h> |
||||
+#include <goo/gfile.h> |
||||
+#define GString GooString |
||||
+#else |
||||
+#error POPPLER_VERSION should be defined. |
||||
+#endif |
||||
#include <assert.h> |
||||
|
||||
#include "Object.h" |
||||
@@ -676,7 +682,7 @@ static void writeEncodings() |
||||
} |
||||
for (r = encodingList; r != 0; r = n) { |
||||
n = r->next; |
||||
- delete r->font; |
||||
+ r->font->decRefCnt(); |
||||
delete r; |
||||
} |
||||
} |
||||
@@ -715,7 +721,7 @@ read_pdf_info(char *image_name, char *pa |
||||
PdfDocument *pdf_doc; |
||||
Page *page; |
||||
const PDFRectangle *pagebox; |
||||
- float pdf_version_found, pdf_version_wanted; |
||||
+ int pdf_major_version_found, pdf_minor_version_found; |
||||
// initialize |
||||
if (!isInit) { |
||||
globalParams = std::unique_ptr<GlobalParams>(new GlobalParams()); |
||||
@@ -730,17 +736,18 @@ read_pdf_info(char *image_name, char *pa |
||||
// this works only for PDF 1.x -- but since any versions of PDF newer |
||||
// than 1.x will not be backwards compatible to PDF 1.x, pdfTeX will |
||||
// then have to changed drastically anyway. |
||||
- pdf_version_found = pdf_doc->doc->getPDFVersion(); |
||||
- pdf_version_wanted = major_pdf_version_wanted + (minor_pdf_version_wanted * 0.1); |
||||
- if (pdf_version_found > pdf_version_wanted + 0.01) { |
||||
- char msg[] = |
||||
- "PDF inclusion: found PDF version <%.1f>, but at most version <%.1f> allowed"; |
||||
+ pdf_major_version_found = pdf_doc->doc->getPDFMajorVersion(); |
||||
+ pdf_minor_version_found = pdf_doc->doc->getPDFMinorVersion(); |
||||
+ if ((pdf_major_version_found > major_pdf_version_wanted) |
||||
+ || (pdf_minor_version_found > minor_pdf_version_wanted)) { |
||||
+ const char *msg = |
||||
+ "PDF inclusion: found PDF version <%d.%d>, but at most version <%d.%d> allowed"; |
||||
if (pdf_inclusion_errorlevel > 0) { |
||||
- pdftex_fail(msg, pdf_version_found, pdf_version_wanted); |
||||
+ pdftex_fail(msg, pdf_major_version_found, pdf_minor_version_found, major_pdf_version_wanted, minor_pdf_version_wanted); |
||||
} else if (pdf_inclusion_errorlevel < 0) { |
||||
; /* do nothing */ |
||||
} else { /* = 0, give warning */ |
||||
- pdftex_warn(msg, pdf_version_found, pdf_version_wanted); |
||||
+ pdftex_warn(msg, pdf_major_version_found, pdf_minor_version_found, major_pdf_version_wanted, minor_pdf_version_wanted); |
||||
} |
||||
} |
||||
epdf_num_pages = pdf_doc->doc->getCatalog()->getNumPages(); |
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-xpdf-fix texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-xpdf-fix 2021-05-10 15:26:43.545060694 -0400 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-10 16:06:58.614896618 -0400 |
||||
@@ -41,10 +41,15 @@ POPPLER_VERSION should be defined. |
||||
#include <string.h> |
||||
#include <ctype.h> |
||||
|
||||
-#include <aconf.h> |
||||
-#include <GString.h> |
||||
-#include <gmem.h> |
||||
-#include <gfile.h> |
||||
+#ifdef POPPLER_VERSION |
||||
+#define GString GooString |
||||
+#include <dirent.h> |
||||
+#include <goo/GooString.h> |
||||
+#include <goo/gmem.h> |
||||
+#include <goo/gfile.h> |
||||
+#else |
||||
+#error POPPLER_VERSION should be defined. |
||||
+#endif |
||||
#include <assert.h> |
||||
|
||||
#include "Object.h" |
||||
@@ -183,7 +188,7 @@ int main(int argc, char *argv[]) |
||||
if (n == e->gen) |
||||
localOffset = obj2.getInt(); |
||||
} |
||||
-#if defined(XPDF304) |
||||
+#if defined(POPPLER_VERSION) || defined(XPDF304) |
||||
while (str->getChar() != EOF) ; |
||||
#else /* xpdf 4.00 */ |
||||
lexer->skipToEOF(); |
@ -0,0 +1,168 @@
@@ -0,0 +1,168 @@
|
||||
diff -U0 texlive-base-20210325/source/texk/mendexk/ChangeLog.archfix texlive-base-20210325/source/texk/mendexk/ChangeLog |
||||
--- texlive-base-20210325/source/texk/mendexk/ChangeLog.archfix 2021-05-27 15:01:46.888501972 -0400 |
||||
+++ texlive-base-20210325/source/texk/mendexk/ChangeLog 2021-05-27 15:02:10.669627643 -0400 |
||||
@@ -0,0 +1,13 @@ |
||||
+2021-05-09 Karl Berry <karl@freefriends.org> |
||||
+ |
||||
+ * mendex.h (page.attr): use int, not char, since we do signed |
||||
+ comparison and aarch64 apparently treats char as unsigned. |
||||
+ (index.words): use unsigned char for consistency. |
||||
+ * fwrite.c (printpage): factor out beginning/end page values. |
||||
+ * tests/rangetwo.idx, |
||||
+ * tests/rangetwo.ind, |
||||
+ * tests/rangetwo.ist: new simple test. |
||||
+ * tests/mendex.test: run the rangetwo test. |
||||
+ Report from Johannes Hielscher, |
||||
+ https://tug.org/pipermail/tlbuild/2021q1/004873.html. |
||||
+ |
||||
diff -up texlive-base-20210325/source/texk/mendexk/fwrite.c.archfix texlive-base-20210325/source/texk/mendexk/fwrite.c |
||||
--- texlive-base-20210325/source/texk/mendexk/fwrite.c.archfix 2021-05-27 15:02:37.867771347 -0400 |
||||
+++ texlive-base-20210325/source/texk/mendexk/fwrite.c 2021-05-27 15:07:00.875160968 -0400 |
||||
@@ -326,7 +326,11 @@ static void printpage(struct index *ind, |
||||
for(j=0;j<ind[num].num;j++) { |
||||
cc=range_check(ind[num],j,lbuff); |
||||
if (cc>j) { |
||||
- if (pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0])==pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])) { |
||||
+ int epage = pnumconv(ind[num].p[cc].page, |
||||
+ ind[num].p[cc].attr[0]); |
||||
+ int bpage = pnumconv(ind[num].p[j].page, |
||||
+ ind[num].p[j].attr[0]); |
||||
+ if (epage==bpage) { |
||||
j=cc-1; |
||||
continue; |
||||
} |
||||
@@ -337,20 +341,18 @@ static void printpage(struct index *ind, |
||||
if (strlen(ind[num].p[j].enc)>0) { |
||||
SPRINTF(buff,"%s%s%s",encap_prefix,ind[num].p[j].enc,encap_infix); |
||||
} |
||||
- if (strlen(suffix_3p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==2) { |
||||
- SAPPENDF(buff,"%s",ind[num].p[j].page); |
||||
+ /* print beginning of range */ |
||||
+ SAPPENDF(buff,"%s",ind[num].p[j].page); |
||||
+ if (strlen(suffix_3p)>0 && (epage-bpage)==2) { |
||||
SAPPENDF(buff,"%s",suffix_3p); |
||||
} |
||||
- else if (strlen(suffix_mp)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))>=2) { |
||||
- SAPPENDF(buff,"%s",ind[num].p[j].page); |
||||
+ else if (strlen(suffix_mp)>0 && (epage-bpage)>=2) { |
||||
SAPPENDF(buff,"%s",suffix_mp); |
||||
} |
||||
- else if (strlen(suffix_2p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==1) { |
||||
- SAPPENDF(buff,"%s",ind[num].p[j].page); |
||||
+ else if (strlen(suffix_2p)>0 && (epage-bpage)==1) { |
||||
SAPPENDF(buff,"%s",suffix_2p); |
||||
} |
||||
else { |
||||
- SAPPENDF(buff,"%s",ind[num].p[j].page); |
||||
SAPPENDF(buff,"%s",delim_r); |
||||
SAPPENDF(buff,"%s",ind[num].p[cc].page); |
||||
} |
||||
diff -up texlive-base-20210325/source/texk/mendexk/mendex.h.archfix texlive-base-20210325/source/texk/mendexk/mendex.h |
||||
--- texlive-base-20210325/source/texk/mendexk/mendex.h.archfix 2021-05-27 15:07:31.173321042 -0400 |
||||
+++ texlive-base-20210325/source/texk/mendexk/mendex.h 2021-05-27 15:07:50.429422834 -0400 |
||||
@@ -14,12 +14,12 @@ |
||||
struct page { |
||||
char *page; |
||||
char *enc; |
||||
- char attr[3]; |
||||
+ int attr[3]; |
||||
}; |
||||
|
||||
struct index { |
||||
int num; |
||||
- char words; |
||||
+ unsigned char words; |
||||
char *org[3]; |
||||
char *dic[3]; |
||||
char *idx[3]; |
||||
diff -up texlive-base-20210325/source/texk/mendexk/tests/mendex.test.archfix texlive-base-20210325/source/texk/mendexk/tests/mendex.test |
||||
--- texlive-base-20210325/source/texk/mendexk/tests/mendex.test.archfix 2021-05-27 15:08:12.848541283 -0400 |
||||
+++ texlive-base-20210325/source/texk/mendexk/tests/mendex.test 2021-05-27 15:13:28.110189451 -0400 |
||||
@@ -1,6 +1,6 @@ |
||||
#! /bin/sh -vx |
||||
# $Id: mendex.test 58575 2021-03-21 08:54:52Z takuji $ |
||||
-# Copyright 2017 Karl Berry <tex-live@tug.org> |
||||
+# Copyright 2017-2021 Karl Berry <tex-live@tug.org> |
||||
# Copyright 2013 Peter Breitenlohner <tex-live@tug.org> |
||||
# You may freely use, modify and/or distribute this file. |
||||
|
||||
@@ -24,13 +24,21 @@ cat $srcdir/tests/uni.idx | \ |
||||
>uni.ind2 2>uni.ilg2 \ |
||||
&& diff $srcdir/tests/uni.ind uni.ind2 || exit 1 |
||||
|
||||
-# test for page_precedence |
||||
-./mendex -s $srcdir/tests/pprec0.ist $srcdir/tests/pprecA.idx -o pprecA-0.ind1 -t pprecA-0.ilg \ |
||||
+# test for two-element range suffix_2p |
||||
+./mendex -s $srcdir/tests/rangetwo.ist $srcdir/tests/rangetwo.idx \ |
||||
+ -o rangetwo.ind1 -t rangetwo.ilg \ |
||||
+ && diff $srcdir/tests/rangetwo.ind rangetwo.ind1 || exit 1 |
||||
+ |
||||
+# test for page_precedence and suffix_3p |
||||
+./mendex -s $srcdir/tests/pprec0.ist $srcdir/tests/pprecA.idx \ |
||||
+ -o pprecA-0.ind1 -t pprecA-0.ilg \ |
||||
&& diff $srcdir/tests/pprecA-0.ind pprecA-0.ind1 || exit 1 |
||||
|
||||
-./mendex -s $srcdir/tests/pprec1.ist $srcdir/tests/pprecA.idx -o pprecA-1.ind1 -t pprecA-1.ilg \ |
||||
+./mendex -s $srcdir/tests/pprec1.ist $srcdir/tests/pprecA.idx \ |
||||
+ -o pprecA-1.ind1 -t pprecA-1.ilg \ |
||||
&& diff $srcdir/tests/pprecA-1.ind pprecA-1.ind1 || exit 1 |
||||
|
||||
-./mendex -s $srcdir/tests/pprec2.ist $srcdir/tests/pprecA.idx -o pprecA-2.ind1 -t pprecA-2.ilg \ |
||||
+./mendex -s $srcdir/tests/pprec2.ist $srcdir/tests/pprecA.idx \ |
||||
+ -o pprecA-2.ind1 -t pprecA-2.ilg \ |
||||
&& diff $srcdir/tests/pprecA-2.ind pprecA-2.ind1 || exit 1 |
||||
|
||||
diff -up texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx.archfix texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx |
||||
--- texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx.archfix 2021-05-27 15:14:09.048403077 -0400 |
||||
+++ texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx 2021-05-27 15:14:03.416373688 -0400 |
||||
@@ -0,0 +1,2 @@ |
||||
+\indexentry{entryA}{1} |
||||
+\indexentry{entryA}{2} |
||||
diff -up texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind.archfix texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind |
||||
--- texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind.archfix 2021-05-27 15:14:30.601515549 -0400 |
||||
+++ texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind 2021-05-27 15:14:59.970668807 -0400 |
||||
@@ -0,0 +1,5 @@ |
||||
+\begin{theindex} |
||||
+ |
||||
+ \item entryA, 1[[sfx2p]] |
||||
+ |
||||
+\end{theindex} |
||||
diff -up texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist.archfix texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist |
||||
--- texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist.archfix 2021-05-27 15:15:24.712797920 -0400 |
||||
+++ texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist 2021-05-27 15:15:51.412937250 -0400 |
||||
@@ -0,0 +1,2 @@ |
||||
+suffix_2p "[[sfx2p]]" |
||||
+ |
||||
diff -U0 texlive-base-20210325/source/texk/upmendex/ChangeLog.archfix texlive-base-20210325/source/texk/upmendex/ChangeLog |
||||
--- texlive-base-20210325/source/texk/upmendex/ChangeLog.archfix 2021-05-27 14:58:11.836365567 -0400 |
||||
+++ texlive-base-20210325/source/texk/upmendex/ChangeLog 2021-05-27 14:59:42.613845327 -0400 |
||||
@@ -0,0 +1,11 @@ |
||||
+2021-05-09 Karl Berry <karl@freefriends.org> |
||||
+ * mendex.h (page.attr): use int, not char, since we do signed |
||||
+ comparison and aarch64 apparently treats char as unsigned. |
||||
+ (index.words): use unsigned char for consistency. |
||||
+ |
||||
+ Same fixes as for mendex; see mendexk/ChangeLog. |
||||
+ Report from Johannes Hielscher, |
||||
+ https://tug.org/pipermail/tlbuild/2021q1/004873.html |
||||
+ and follow-up: |
||||
+ https://tug.org/pipermail/tlbuild/2021q2/004911.html |
||||
+ |
||||
diff -up texlive-base-20210325/source/texk/upmendex/mendex.h.archfix texlive-base-20210325/source/texk/upmendex/mendex.h |
||||
--- texlive-base-20210325/source/texk/upmendex/mendex.h.archfix 2021-05-27 14:59:52.774899013 -0400 |
||||
+++ texlive-base-20210325/source/texk/upmendex/mendex.h 2021-05-27 15:01:33.381430577 -0400 |
||||
@@ -14,12 +14,12 @@ |
||||
struct page { |
||||
char *page; |
||||
char *enc; |
||||
- char attr[3]; |
||||
+ int attr[3]; |
||||
}; |
||||
|
||||
struct index { |
||||
int num; |
||||
- char words; |
||||
+ unsigned char words; |
||||
UChar *dic[3]; |
||||
UChar *org[3]; |
||||
UChar *idx[3]; |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
diff -up texlive-base-20210325/source/utils/asymptote/patches/dvipdf.no-setpdfwrite texlive-base-20210325/source/utils/asymptote/patches/dvipdf |
||||
--- texlive-base-20210325/source/utils/asymptote/patches/dvipdf.no-setpdfwrite 2021-06-21 10:05:10.392585479 -0400 |
||||
+++ texlive-base-20210325/source/utils/asymptote/patches/dvipdf 2021-06-21 10:05:30.969698895 -0400 |
||||
@@ -50,5 +50,5 @@ fi |
||||
|
||||
# We have to include the options twice because -I only takes effect if it |
||||
# appears before other options. |
||||
-exec dvips $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile="$outfile" $OPTIONS -c .setpdfwrite - |
||||
+exec dvips $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile="$outfile" $OPTIONS -c 3000000 setvmthreshold - |
||||
|
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.debug texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.debug 2022-01-20 10:25:58.454233201 -0500 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2022-01-20 12:57:04.241513707 -0500 |
||||
@@ -962,21 +962,30 @@ A change |
||||
does not improve the situation. |
||||
The changes below seem to work fine. |
||||
*/ |
||||
+ if (page->getGroup() != NULL) { |
||||
+ groupDict = Object(page->getGroup()); |
||||
+ } else { |
||||
+ pdftex_fail("PDF inclusion: getGroup failed"); |
||||
+ } |
||||
+/* |
||||
// begin modification |
||||
groupDict = pageDict->lookup("Group"); |
||||
Dict *dic1 = page->getGroup(); |
||||
Dict *dic2 = groupDict.getDict(); |
||||
// replace dic2 in groupDict with dic1 |
||||
l = dic2->getLength(); |
||||
+ pdftex_warn("dic2 length is %d", l); |
||||
for (i = 0; i < l; i++) { |
||||
groupDict.dictRemove(dic2->getKey(i)); |
||||
} |
||||
l = dic1->getLength(); |
||||
+ pdftex_warn("dic1 length is %d", l); |
||||
for (i = 0; i < l; i++) { |
||||
groupDict.dictAdd(dic1->getKey(i), |
||||
dic1->getValNF(i).copy()); |
||||
} |
||||
// end modification |
||||
+*/ |
||||
pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); |
||||
} |
||||
} |
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
diff -up texlive-base-20210325/source/texk/web2c/Makefile.in.poppler22 texlive-base-20210325/source/texk/web2c/Makefile.in |
||||
--- texlive-base-20210325/source/texk/web2c/Makefile.in.poppler22 2022-01-15 16:57:15.020632269 -0500 |
||||
+++ texlive-base-20210325/source/texk/web2c/Makefile.in 2022-01-15 17:00:20.852711238 -0500 |
||||
@@ -4573,7 +4573,7 @@ ttf2afm_tests = pdftexdir/ttf2afm.test |
||||
# Force Automake to use CXXLD for linking |
||||
nodist_EXTRA_pdftosrc_SOURCES = dummy.cxx |
||||
pdftosrc_CPPFLAGS = $(pdftex_cppflags) |
||||
-pdftosrc_CXXFLAGS = $(WARNING_CXXFLAGS) |
||||
+pdftosrc_CXXFLAGS = $(WARNING_CXXFLAGS) -std=c++17 |
||||
pdftosrc_SOURCES = pdftexdir/pdftosrc.cc |
||||
pdftosrc_LDADD = $(pdftex_ldadd) $(LDADD) |
||||
pdftosrc_DEPENDENCIES = $(pdftex_dependencies) |
||||
@@ -18343,7 +18343,7 @@ xetex-xetex-pool.obj: xetex-pool.c |
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< |
||||
|
||||
pdftexdir/libpdftex_a-pdftoepdf.o: pdftexdir/pdftoepdf.cc |
||||
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpdftex_a_CPPFLAGS) $(CPPFLAGS) $(libpdftex_a_CXXFLAGS) $(CXXFLAGS) -MT pdftexdir/libpdftex_a-pdftoepdf.o -MD -MP -MF pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Tpo -c -o pdftexdir/libpdftex_a-pdftoepdf.o `test -f 'pdftexdir/pdftoepdf.cc' || echo '$(srcdir)/'`pdftexdir/pdftoepdf.cc |
||||
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpdftex_a_CPPFLAGS) $(CPPFLAGS) -std=c++17 $(libpdftex_a_CXXFLAGS) $(CXXFLAGS) -MT pdftexdir/libpdftex_a-pdftoepdf.o -MD -MP -MF pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Tpo -c -o pdftexdir/libpdftex_a-pdftoepdf.o `test -f 'pdftexdir/pdftoepdf.cc' || echo '$(srcdir)/'`pdftexdir/pdftoepdf.cc |
||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Tpo pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Po |
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='pdftexdir/pdftoepdf.cc' object='pdftexdir/libpdftex_a-pdftoepdf.o' libtool=no @AMDEPBACKSLASH@ |
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
||||
diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler22 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc |
||||
--- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler22 2022-01-14 15:01:29.811105995 -0500 |
||||
+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2022-01-14 15:01:29.831106120 -0500 |
||||
@@ -964,17 +964,17 @@ The changes below seem to work fine. |
||||
*/ |
||||
// begin modification |
||||
groupDict = pageDict->lookup("Group"); |
||||
- const Dict& dic1 = page->getGroup(); |
||||
- const Dict& dic2 = groupDict.getDict(); |
||||
+ Dict *dic1 = page->getGroup(); |
||||
+ Dict *dic2 = groupDict.getDict(); |
||||
// replace dic2 in groupDict with dic1 |
||||
- l = dic2.getLength(); |
||||
+ l = dic2->getLength(); |
||||
for (i = 0; i < l; i++) { |
||||
- groupDict.dictRemove(dic2.getKey(i)); |
||||
+ groupDict.dictRemove(dic2->getKey(i)); |
||||
} |
||||
- l = dic1.getLength(); |
||||
+ l = dic1->getLength(); |
||||
for (i = 0; i < l; i++) { |
||||
- groupDict.dictAdd(dic1.getKey(i), |
||||
- dic1.getValNF(i).copy()); |
||||
+ groupDict.dictAdd(dic1->getKey(i), |
||||
+ dic1->getValNF(i).copy()); |
||||
} |
||||
// end modification |
||||
pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); |
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
diff -up texlive-base-20180414/source/texk/dvi2tty/dvi2tty-src/DVI.format texlive-base-20180414/source/texk/dvi2tty/dvi2tty-src/DVI |
||||
diff -up texlive-base-20180414/source/texk/dvidvi/dvidvi.c.format texlive-base-20180414/source/texk/dvidvi/dvidvi.c |
||||
--- texlive-base-20180414/source/texk/dvidvi/dvidvi.c.format 2017-06-23 10:55:46.000000000 -0400 |
||||
+++ texlive-base-20180414/source/texk/dvidvi/dvidvi.c 2018-04-30 13:07:17.910020544 -0400 |
||||
@@ -349,7 +349,7 @@ static void stringdvibuf(integer p, inte |
||||
* Print a usage error messsage, and quit. |
||||
*/ |
||||
static void usage(void) { |
||||
- (void)fprintf(stderr,banner); |
||||
+ (void)fprintf(stderr,"%s",banner); |
||||
(void)fprintf(stderr,"Usage: dvidvi [options] input[.dvi] [output]\n"); |
||||
(void)fprintf(stderr,"where options are:\n"); |
||||
(void)fprintf(stderr," [-f n] first page printed [-l n] last page printed\n"); |
||||
@@ -828,7 +828,7 @@ default: |
||||
} /* else argument with '-' */ |
||||
} /* for */ |
||||
if (*iname == 0) { |
||||
- (void)fprintf(stderr, banner) ; |
||||
+ (void)fprintf(stderr, "%s", banner) ; |
||||
error("! no input file specified"); |
||||
} |
||||
/* Inserted by djc@dsmail.hmi.de 3.8.1994 */ |
||||
@@ -839,7 +839,7 @@ default: |
||||
} |
||||
|
||||
if (*oname != 0 && !quiet) { |
||||
- (void)fprintf(stderr, banner) ; |
||||
+ (void)fprintf(stderr, "%s", banner) ; |
||||
(void)fprintf(stderr, "%s -> %s\n",iname,oname); |
||||
temp = nextstring ; |
||||
} |
||||
diff -up texlive-base-20180414/source/texk/web2c/tiedir/tie.c.format texlive-base-20180414/source/texk/web2c/tiedir/tie.c |
||||
--- texlive-base-20180414/source/texk/web2c/tiedir/tie.c.format 2016-11-25 13:24:38.000000000 -0500 |
||||
+++ texlive-base-20180414/source/texk/web2c/tiedir/tie.c 2018-04-30 13:07:27.792787747 -0400 |
||||
@@ -27,14 +27,14 @@ |
||||
\ |
||||
|
||||
#define term_out stdout |
||||
-#define print(a)fprintf(term_out,a) |
||||
+#define print(a)fprintf(term_out,"%s",a) |
||||
#define print2(a,b)fprintf(term_out,a,b) |
||||
#define print3(a,b,c)fprintf(term_out,a,b,c) |
||||
#define print_c(v)fputc(v,term_out); |
||||
#define new_line(v)fputc('\n',v) |
||||
#define term_new_line new_line(term_out) \ |
||||
|
||||
-#define print_ln(v){fprintf(term_out,v);term_new_line;} \ |
||||
+#define print_ln(v){fprintf(term_out,"%s",v);term_new_line;} \ |
||||
|
||||
#define print2_ln(a,b){print2(a,b);term_new_line;} |
||||
#define print3_ln(a,b,c){print3(a,b,c);term_new_line;} \ |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
diff -up texlive-2013/source/texk/kpathsea/progname.c.kpfix texlive-2013/source/texk/kpathsea/progname.c |
||||
--- source/texk/kpathsea/progname.c.kpfix 2013-08-12 09:28:14.422522624 +0200 |
||||
+++ source/texk/kpathsea/progname.c 2013-08-12 12:16:02.958132658 +0200 |
||||
@@ -668,7 +668,7 @@ kpathsea_set_program_name (kpathsea kpse |
||||
kpathsea_xputenv (kpse, "SELFAUTOLOC", fix_selfdir (sdir)); |
||||
sdir_parent = xdirname (sdir); |
||||
kpathsea_xputenv (kpse, "SELFAUTODIR", fix_selfdir (sdir_parent)); |
||||
- sdir_grandparent = xdirname (sdir_parent); |
||||
+ sdir_grandparent = strdup("/usr/share/texlive"); |
||||
kpathsea_xputenv (kpse, "SELFAUTOPARENT", fix_selfdir (sdir_grandparent)); |
||||
sdir_greatgrandparent = xdirname (sdir_grandparent); |
||||
kpathsea_xputenv (kpse, "SELFAUTOGRANDPARENT", fix_selfdir (sdir_greatgrandparent)); |
Loading…
Reference in new issue