diff options
author | Norbert Preining <norbert@preining.info> | 2020-01-06 03:01:05 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-01-06 03:01:05 +0000 |
commit | 9d0c8699c4a9f01ec5cc8aeb7e3b14956b3d51c1 (patch) | |
tree | 570162c5a6220ea63dffe4e5471f477e99e77c99 /dviware/dvipng | |
parent | d703bc2777b69363e791c0ec50045947b1a399da (diff) |
CTAN sync 202001060301
Diffstat (limited to 'dviware/dvipng')
-rw-r--r-- | dviware/dvipng/ChangeLog | 59 | ||||
-rw-r--r-- | dviware/dvipng/INSTALL | 12 | ||||
-rw-r--r-- | dviware/dvipng/RELEASE | 8 | ||||
-rw-r--r-- | dviware/dvipng/acinclude.m4 | 104 | ||||
-rw-r--r-- | dviware/dvipng/aclocal.m4 | 498 | ||||
-rw-r--r-- | dviware/dvipng/color.c | 4 | ||||
-rw-r--r-- | dviware/dvipng/config.h | 10 | ||||
-rw-r--r-- | dviware/dvipng/config.h.in | 6 | ||||
-rwxr-xr-x | dviware/dvipng/configure | 367 | ||||
-rw-r--r-- | dviware/dvipng/configure.ac | 14 | ||||
-rw-r--r-- | dviware/dvipng/dvi.c | 4 | ||||
-rw-r--r-- | dviware/dvipng/dvipng.1 | 31 | ||||
-rw-r--r-- | dviware/dvipng/dvipng.c | 8 | ||||
-rw-r--r-- | dviware/dvipng/dvipng.texi | 19 | ||||
-rw-r--r-- | dviware/dvipng/install.texi | 12 | ||||
-rw-r--r-- | dviware/dvipng/misc.c | 40 | ||||
-rw-r--r-- | dviware/dvipng/pk.c | 32 | ||||
-rw-r--r-- | dviware/dvipng/special.c | 10 | ||||
-rw-r--r-- | dviware/dvipng/tfm.c | 16 | ||||
-rw-r--r-- | dviware/dvipng/vf.c | 4 |
20 files changed, 771 insertions, 487 deletions
diff --git a/dviware/dvipng/ChangeLog b/dviware/dvipng/ChangeLog index 6fb7cd99a5..f30d538bda 100644 --- a/dviware/dvipng/ChangeLog +++ b/dviware/dvipng/ChangeLog @@ -1,3 +1,62 @@ +2020-01-05 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Prepare for 1.17 + +2019-11-29 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Fix typo that cause PK files to fail + +2019-07-03 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Fix format for gamma interactive printout. Add credit. + +2019-07-01 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Fix segfault when starting interactive mode without DVI. Thanks to Ahzo for finding the issue. + +2019-06-29 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Revert change for acinclude.m4, and add test for strncasecmp + +2019-06-27 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Remove segfault for invalid color names + +2019-04-06 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Release 1.16 + +2019-04-06 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Check for a possible integer addition overflow + Check bounds for mmap access + Update copyright notice + +2019-02-26 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Add sentence on disabling Freetype for identical output on different platforms. + Amend FT2 test, move remaining local scripts to acinclude.m4, regenerate aclocal.m4 + +2015-03-28 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Add const where needed + Don't re-define pipe and snprintf + Test for and use texlive_gs_init() + Use WIN32 _spawnlp + Use char* in debug printout calculations + Don't use basename, ignore case, and use correct directory delimiter + +2015-03-05 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Change libgd download address + +2015-03-02 Jan-Åke Larsson <jan-ake.larsson@liu.se> + + Remove datarootdir configure warning, adjust distclean target + Remove texi2pod.pl, we only use that for building the man page + Remove cvs remnants + Adjust distclean target + 2015-03-01 Jan-Åke Larsson <jan-ake.larsson@liu.se> * RELEASE: Release 1.15 diff --git a/dviware/dvipng/INSTALL b/dviware/dvipng/INSTALL index b7f8aebb9f..0fecfaa2a2 100644 --- a/dviware/dvipng/INSTALL +++ b/dviware/dvipng/INSTALL @@ -10,11 +10,11 @@ Prerequisites * The GD Graphics Draw library, libgd The drawing library 'libgd' is necessary, and is downloadable at - <http://www.boutell.com/gd>, and there are binary packages for most - operating systems from their respective distributors. In any case, - the latest version of the library installs using 'autoconf' so it - should not be difficult for you to install it from source, and then - proceed with installing dvipng. + <https://bitbucket.org/libgd/gd-libgd/downloads>, and there are + binary packages for most operating systems from their respective + distributors. In any case, the library installs using 'autoconf' + so it should not be difficult for you to install it from source, + and then proceed with installing dvipng. * The path-searching library kpathsea @@ -154,4 +154,4 @@ This program is released under the GNU Lesser General Public License version 3, see the COPYING file in the dvipng distribution or <http://www.gnu.org/licenses/>. - Copyright (C) 2002-2015 Jan-AAke Larsson + Copyright (C) 2002-2015, 2019 Jan-AAke Larsson diff --git a/dviware/dvipng/RELEASE b/dviware/dvipng/RELEASE index eb8615efed..5417af0f86 100644 --- a/dviware/dvipng/RELEASE +++ b/dviware/dvipng/RELEASE @@ -1,14 +1,10 @@ -Release notes for version 1.15 of the dvipng package: +Release notes for version 1.17 of the dvipng package: This program makes PNG graphics from DVI files as obtained from TeX and its relatives. -This is a bugfix release that removes the unnecessarily long delay in --follow -mode and a few segfaults on out-of-memory or missing standard-latex files, and -adds some documentation improvements. It also removes support for libt1, which -is reportedly not developed anymore, and not needed since Freetype does a much -better job. +This is a bugfix release that re-enables PK font rendering and enables gamma printout and interactive mode startup without DVI. Report any bugs you find, see README for instructions. diff --git a/dviware/dvipng/acinclude.m4 b/dviware/dvipng/acinclude.m4 new file mode 100644 index 0000000000..2bc2d6cd87 --- /dev/null +++ b/dviware/dvipng/acinclude.m4 @@ -0,0 +1,104 @@ +# acinclude.m4 + +#************************************************************************ +# +# Part of the dvipng distribution +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/>. +# +# Copyright (C) 2002-2015,2019 Jan-Ã…ke Larsson +# +#************************************************************************ + + +dnl +dnl MAKEINFO_CHECK_MACRO( MACRO, [ACTION-IF-FOUND +dnl [, ACTION-IF-NOT-FOUND]]) +dnl +AC_DEFUN([MAKEINFO_CHECK_MACRO], +[if test -n "$MAKEINFO" -a "$makeinfo" != ":"; then + AC_MSG_CHECKING([for @$1{}]) + echo \\\\input texinfo > conftest.texi + echo @$1{test} >> conftest.texi + if $MAKEINFO conftest.texi > /dev/null 2> /dev/null; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + ifelse([$3], , :, [$3]) + fi + rm -f conftest.texi conftest.info +fi +]) + +dnl +dnl MAKEINFO_CHECK_MACROS( MACRO ... [, ACTION-IF-FOUND +dnl [, ACTION-IF-NOT-FOUND]]) +dnl +AC_DEFUN([MAKEINFO_CHECK_MACROS], +[for ac_macro in $1; do + MAKEINFO_CHECK_MACRO($ac_macro, $2, + [MAKEINFO_MACROS="-D no-$ac_macro $MAKEINFO_MACROS" + $3])dnl + done +AC_SUBST(MAKEINFO_MACROS) +]) + + +dnl +dnl Check for enc, cmap, sfd formats +dnl +AC_DEFUN([AC_HAS_KPSE_ENC_FORMATS], + [AC_MSG_CHECKING([for kpse_enc_format]) + AC_TRY_COMPILE([ + #include <stdio.h> + #include <kpathsea/kpathsea.h>], + [kpse_enc_format;kpse_cmap_format;kpse_sfd_format], + [AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_KPSE_ENC_FORMATS, 1, + [Define to 1 if your kpathsea has kpse_enc_format])], + [AC_MSG_RESULT(no)])]) + + +dnl +dnl Check devices for GS +dnl AC_GS_HAS_DEVICE(DEVICE,ACTION-IF-FAILED) +dnl +AC_DEFUN([AC_GS_HAS_DEVICE], + [AC_MSG_CHECKING([whether $GS has the $1 device]) + if $GS -h | grep $1 >/dev/null; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + $2 + fi +]) + +dnl +dnl GS_CHECK_DEVICES +dnl +AC_DEFUN([GS_CHECK_DEVICES], + [GS_WARN="" + AC_GS_HAS_DEVICE(pngalpha, + [GS_WARN="Your EPS inclusions will be cropped to the + boundingbox, and rendered on an opaque background. + Upgrade GhostScript to avoid this." + AC_GS_HAS_DEVICE(png16m, + [GS_WARN="Your EPS inclusions may not work. + Upgrade/install GhostScript to avoid this."])]) + if test -n "$GS_WARN"; then + AC_MSG_WARN([$GS_WARN]) + fi +]) diff --git a/dviware/dvipng/aclocal.m4 b/dviware/dvipng/aclocal.m4 index 0cd4eddf92..a8189afc3f 100644 --- a/dviware/dvipng/aclocal.m4 +++ b/dviware/dvipng/aclocal.m4 @@ -1,7 +1,7 @@ -# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. -# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -11,227 +11,281 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -# Configure paths for FreeType2 -# Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor - -dnl AC_CHECK_FT2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for FreeType2, and define FT2_CFLAGS and FT2_LIBS -dnl -AC_DEFUN(AC_CHECK_FT2, -[dnl -dnl Get the cflags and libraries from the freetype-config script -dnl -AC_ARG_WITH(ft-prefix, -[ --with-ft-prefix=PREFIX - Prefix where FreeType is installed (optional)], - ft_config_prefix="$withval", ft_config_prefix="") -AC_ARG_WITH(ft-exec-prefix, -[ --with-ft-exec-prefix=PREFIX - Exec prefix where FreeType is installed (optional)], - ft_config_exec_prefix="$withval", ft_config_exec_prefix="") -AC_ARG_ENABLE(freetypetest, -[ --disable-freetypetest Do not try to compile and run - a test FreeType program], - [], enable_fttest=yes) - -if test x$ft_config_exec_prefix != x ; then - ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config - fi -fi -if test x$ft_config_prefix != x ; then - ft_config_args="$ft_config_args --prefix=$ft_config_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_prefix/bin/freetype-config - fi +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +dnl serial 11 (pkg-config-0.29.1) +dnl +dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>. +dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com> +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi -AC_PATH_PROG(FT2_CONFIG, freetype-config, no) +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG -min_ft_version=ifelse([$1], ,6.1.0,$1) -AC_MSG_CHECKING(for FreeType - version >= $min_ft_version) -no_ft="" -if test "$FT2_CONFIG" = "no" ; then - no_ft=yes +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` - FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` - ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - ft_min_major_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - ft_min_minor_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - ft_min_micro_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test x$enable_fttest = xyes ; then - ft_config_is_lt="" - if test $ft_config_major_version -lt $ft_min_major_version ; then - ft_config_is_lt=yes - else - if test $ft_config_major_version -eq $ft_min_major_version ; then - if test $ft_config_minor_version -lt $ft_min_minor_version ; then - ft_config_is_lt=yes - else - if test $ft_config_minor_version -eq $ft_min_minor_version ; then - if test $ft_config_micro_version -lt $ft_min_micro_version ; then - ft_config_is_lt=yes - fi - fi + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi - fi - fi - if test x$ft_config_is_lt = xyes ; then - no_ft=yes - else - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $FT2_CFLAGS" - LIBS="$FT2_LIBS $LIBS" -dnl -dnl Sanity checks for the results of freetype-config to some extent -dnl - AC_TRY_RUN([ -#include <ft2build.h> -#include FT_FREETYPE_H -#include <stdio.h> -#include <stdlib.h> - -int -main() -{ - FT_Library library; - FT_Error error; - - error = FT_Init_FreeType(&library); - - if (error) - return 1; - else - { - FT_Done_FreeType(library); - return 0; - } -} -],, no_ft=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi # test $ft_config_version -lt $ft_min_version - fi # test x$enable_fttest = xyes -fi # test "$FT2_CONFIG" = "no" -if test x$no_ft = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl + ]) else - AC_MSG_RESULT(no) - if test "$FT2_CONFIG" = "no" ; then - echo "*** The freetype-config script installed by FreeType 2 could not be found." - echo "*** If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the FT2_CONFIG environment variable to the" - echo "*** full path to freetype-config." - else - if test x$ft_config_is_lt = xyes ; then - echo "*** Your installed version of the FreeType 2 library is too old." - echo "*** If you have different versions of FreeType 2, make sure that" - echo "*** correct values for --with-ft-prefix or --with-ft-exec-prefix" - echo "*** are used, or set the FT2_CONFIG environment variable to the" - echo "*** full path to freetype-config." - else - echo "*** The FreeType test program failed to run. If your system uses" - echo "*** shared libraries and they are installed outside the normal" - echo "*** system library path, make sure the variable LD_LIBRARY_PATH" - echo "*** (or whatever is appropiate for your system) is correctly set." - fi - fi - FT2_CFLAGS="" - FT2_LIBS="" - ifelse([$3], , :, [$3]) -fi -AC_SUBST(FT2_CFLAGS) -AC_SUBST(FT2_LIBS) -]) - - -dnl -dnl MAKEINFO_CHECK_MACRO( MACRO, [ACTION-IF-FOUND -dnl [, ACTION-IF-NOT-FOUND]]) -dnl -AC_DEFUN(MAKEINFO_CHECK_MACRO, -[if test -n "$MAKEINFO" -a "$makeinfo" != ":"; then - AC_MSG_CHECKING([for @$1{}]) - echo \\\\input texinfo > conftest.texi - echo @$1{test} >> conftest.texi - if $MAKEINFO conftest.texi > /dev/null 2> /dev/null; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - ifelse([$3], , :, [$3]) - fi - rm -f conftest.texi conftest.info -fi -]) - -dnl -dnl MAKEINFO_CHECK_MACROS( MACRO ... [, ACTION-IF-FOUND -dnl [, ACTION-IF-NOT-FOUND]]) -dnl -AC_DEFUN(MAKEINFO_CHECK_MACROS, -[for ac_macro in $1; do - MAKEINFO_CHECK_MACRO($ac_macro, $2, - [MAKEINFO_MACROS="-D no-$ac_macro $MAKEINFO_MACROS" - $3])dnl - done -AC_SUBST(MAKEINFO_MACROS) -]) - - -dnl -dnl Check for enc, cmap, sfd formats -dnl -AC_DEFUN(AC_HAS_KPSE_ENC_FORMATS, - [AC_MSG_CHECKING([for kpse_enc_format]) - AC_TRY_COMPILE([ - #include <stdio.h> - #include <kpathsea/kpathsea.h>], - [kpse_enc_format;kpse_cmap_format;kpse_sfd_format], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_KPSE_ENC_FORMATS, 1, - [Define to 1 if your kpathsea has kpse_enc_format])], - [AC_MSG_RESULT(no)])]) - - -dnl -dnl Check devices for GS -dnl AC_GS_HAS_DEVICE(DEVICE,ACTION-IF-FAILED) -dnl -AC_DEFUN(AC_GS_HAS_DEVICE, - [AC_MSG_CHECKING([whether $GS has the $1 device]) - if $GS -h | grep $1 >/dev/null; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - $2 - fi -]) - -dnl -dnl GS_CHECK_DEVICES -dnl -AC_DEFUN(GS_CHECK_DEVICES, - [GS_WARN="" - AC_GS_HAS_DEVICE(pngalpha, - [GS_WARN="Your EPS inclusions will be cropped to the - boundingbox, and rendered on an opaque background. - Upgrade GhostScript to avoid this." - AC_GS_HAS_DEVICE(png16m, - [GS_WARN="Your EPS inclusions may not work. - Upgrade/install GhostScript to avoid this."])]) - if test -n "$GS_WARN"; then - AC_MSG_WARN([$GS_WARN]) - fi -]) + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +m4_include([acinclude.m4]) diff --git a/dviware/dvipng/color.c b/dviware/dvipng/color.c index 63fc29c6c5..76cb7004a4 100644 --- a/dviware/dvipng/color.c +++ b/dviware/dvipng/color.c @@ -18,7 +18,7 @@ License along with this program. If not, see <http://www.gnu.org/licenses/>. - Copyright (C) 2002-2015 Jan-Åke Larsson + Copyright (C) 2002-2015,2019 Jan-Åke Larsson ************************************************************************/ @@ -355,7 +355,7 @@ void stringrgb(const char* color,int *r,int *g,int *b) tmp=tmp->next; } } - if (strcmp(color,tmp->name)==0) { + if (tmp!=NULL) { /* Found: one-level recursion */ DEBUG_PRINT(DEBUG_COLOR,("\n ---RECURSION--- ")) stringrgb(tmp->color,r,g,b); diff --git a/dviware/dvipng/config.h b/dviware/dvipng/config.h index cc9d64b46b..6316d0914f 100644 --- a/dviware/dvipng/config.h +++ b/dviware/dvipng/config.h @@ -127,6 +127,9 @@ /* Define to 1 if you have the <string.h> header file. */ #define HAVE_STRING_H 1 +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 @@ -151,6 +154,9 @@ /* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 +/* Define to 1 if you have the `texlive_gs_init' function. */ +/* #undef HAVE_TEXLIVE_GS_INIT */ + /* Define to 1 if you have the <unistd.h> header file. */ #define HAVE_UNISTD_H 1 @@ -179,7 +185,7 @@ #define PACKAGE_NAME "dvipng" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "dvipng 1.15" +#define PACKAGE_STRING "dvipng 1.17" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "dvipng" @@ -188,7 +194,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.15" +#define PACKAGE_VERSION "1.17" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 diff --git a/dviware/dvipng/config.h.in b/dviware/dvipng/config.h.in index f1475404a9..a8ba47bb6e 100644 --- a/dviware/dvipng/config.h.in +++ b/dviware/dvipng/config.h.in @@ -126,6 +126,9 @@ /* Define to 1 if you have the <string.h> header file. */ #undef HAVE_STRING_H +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR @@ -150,6 +153,9 @@ /* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H +/* Define to 1 if you have the `texlive_gs_init' function. */ +#undef HAVE_TEXLIVE_GS_INIT + /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H diff --git a/dviware/dvipng/configure b/dviware/dvipng/configure index 33ed13463f..497a196a4d 100755 --- a/dviware/dvipng/configure +++ b/dviware/dvipng/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for dvipng 1.15. +# Generated by GNU Autoconf 2.69 for dvipng 1.17. # # Report bugs to <dvipng@nongnu.org>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='dvipng' PACKAGE_TARNAME='dvipng' -PACKAGE_VERSION='1.15' -PACKAGE_STRING='dvipng 1.15' +PACKAGE_VERSION='1.17' +PACKAGE_STRING='dvipng 1.17' PACKAGE_BUGREPORT='dvipng@nongnu.org' PACKAGE_URL='' @@ -633,7 +633,9 @@ LIBOBJS POW_LIB FT2_LIBS FT2_CFLAGS -FT2_CONFIG +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG PSFONTS_O EGREP GREP @@ -670,6 +672,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -695,9 +698,6 @@ enable_option_checking enable_debug enable_timing with_gs -with_ft_prefix -with_ft_exec_prefix -enable_freetypetest enable_selfauto_set ' ac_precious_vars='build_alias @@ -708,7 +708,12 @@ CFLAGS LDFLAGS LIBS CPPFLAGS -CPP' +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +FT2_CFLAGS +FT2_LIBS' # Initialize some variables set by options. @@ -747,6 +752,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -999,6 +1005,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1136,7 +1151,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1249,7 +1264,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures dvipng 1.15 to adapt to many kinds of systems. +\`configure' configures dvipng 1.17 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1289,6 +1304,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1310,7 +1326,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dvipng 1.15:";; + short | recursive ) echo "Configuration of dvipng 1.17:";; esac cat <<\_ACEOF @@ -1320,8 +1336,6 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-debug Compile without debug (-d) option --enable-timing Output execution time of dvipng - --disable-freetypetest Do not try to compile and run - a test FreeType program --enable-selfauto-set This option will make the final binary explicitly set the $SELFAUTO... variables to make it look as dvipng is installed in the main texmf tree, even if @@ -1336,10 +1350,6 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gs=/PATH/TO/gs Hard-wire the location of GhostScript - --with-ft-prefix=PREFIX - Prefix where FreeType is installed (optional) - --with-ft-exec-prefix=PREFIX - Exec prefix where FreeType is installed (optional) Some influential environment variables: CC C compiler command @@ -1350,6 +1360,13 @@ Some influential environment variables: CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + FT2_CFLAGS C compiler flags for FT2, overriding pkg-config + FT2_LIBS linker flags for FT2, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1417,7 +1434,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dvipng configure 1.15 +dvipng configure 1.17 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1840,7 +1857,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dvipng $as_me 1.15, which was +It was created by dvipng $as_me 1.17, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3519,7 +3536,8 @@ _ACEOF else as_fn_error $? "cannot find/use libgd -This drawing library can be downloaded at http://www.boutell.com/gd" "$LINENO" 5 +This drawing library can be downloaded at +https://bitbucket.org/libgd/gd-libgd/downloads" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kpse_set_program_name in -lkpathsea" >&5 @@ -3998,51 +4016,67 @@ done PSFONTS_O="" -# Check whether --with-ft-prefix was given. -if test "${with_ft_prefix+set}" = set; then : - withval=$with_ft_prefix; ft_config_prefix="$withval" -else - ft_config_prefix="" -fi -# Check whether --with-ft-exec-prefix was given. -if test "${with_ft_exec_prefix+set}" = set; then : - withval=$with_ft_exec_prefix; ft_config_exec_prefix="$withval" + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 else - ft_config_exec_prefix="" -fi + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -# Check whether --enable-freetypetest was given. -if test "${enable_freetypetest+set}" = set; then : - enableval=$enable_freetypetest; + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } else - enable_fttest=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test x$ft_config_exec_prefix != x ; then - ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config - fi -fi -if test x$ft_config_prefix != x ; then - ft_config_args="$ft_config_args --prefix=$ft_config_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_prefix/bin/freetype-config - fi fi -# Extract the first word of "freetype-config", so it can be a program name with args. -set dummy freetype-config; ac_word=$2 +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FT2_CONFIG+:} false; then : +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else - case $FT2_CONFIG in + case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) - ac_cv_path_FT2_CONFIG="$FT2_CONFIG" # Let the user override the test with a path. + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4052,7 +4086,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_FT2_CONFIG="$as_dir/$ac_word$ac_exec_ext" + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -4060,148 +4094,124 @@ done done IFS=$as_save_IFS - test -z "$ac_cv_path_FT2_CONFIG" && ac_cv_path_FT2_CONFIG="no" ;; esac fi -FT2_CONFIG=$ac_cv_path_FT2_CONFIG -if test -n "$FT2_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FT2_CONFIG" >&5 -$as_echo "$FT2_CONFIG" >&6; } +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - - -min_ft_version=6.1.0 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FreeType - version >= $min_ft_version" >&5 -$as_echo_n "checking for FreeType - version >= $min_ft_version... " >&6; } -no_ft="" -if test "$FT2_CONFIG" = "no" ; then - no_ft=yes -else - FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` - FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` - ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - ft_min_major_version=`echo $min_ft_version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - ft_min_minor_version=`echo $min_ft_version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - ft_min_micro_version=`echo $min_ft_version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - if test x$enable_fttest = xyes ; then - ft_config_is_lt="" - if test $ft_config_major_version -lt $ft_min_major_version ; then - ft_config_is_lt=yes - else - if test $ft_config_major_version -eq $ft_min_major_version ; then - if test $ft_config_minor_version -lt $ft_min_minor_version ; then - ft_config_is_lt=yes - else - if test $ft_config_minor_version -eq $ft_min_minor_version ; then - if test $ft_config_micro_version -lt $ft_min_micro_version ; then - ft_config_is_lt=yes - fi - fi - fi - fi - fi - if test x$ft_config_is_lt = xyes ; then - no_ft=yes - else - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $FT2_CFLAGS" - LIBS="$FT2_LIBS $LIBS" - if test "$cross_compiling" = yes; then : - echo $ac_n "cross compiling; assumed OK... $ac_c" + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi -#include <ft2build.h> -#include FT_FREETYPE_H -#include <stdio.h> -#include <stdlib.h> +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi -int -main() -{ - FT_Library library; - FT_Error error; +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FT2" >&5 +$as_echo_n "checking for FT2... " >&6; } - error = FT_Init_FreeType(&library); +if test -n "$FT2_CFLAGS"; then + pkg_cv_FT2_CFLAGS="$FT2_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 6.1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "freetype2 >= 6.1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FT2_CFLAGS=`$PKG_CONFIG --cflags "freetype2 >= 6.1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$FT2_LIBS"; then + pkg_cv_FT2_LIBS="$FT2_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 6.1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "freetype2 >= 6.1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FT2_LIBS=`$PKG_CONFIG --libs "freetype2 >= 6.1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi - if (error) - return 1; - else - { - FT_Done_FreeType(library); - return 0; - } -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - no_ft=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + FT2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "freetype2 >= 6.1.0" 2>&1` + else + FT2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "freetype2 >= 6.1.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$FT2_PKG_ERRORS" >&5 - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi # test $ft_config_version -lt $ft_min_version - fi # test x$enable_fttest = xyes -fi # test "$FT2_CONFIG" = "no" -if test x$no_ft = x ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + ac_have_freetype2="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ac_have_freetype2="no" +else + FT2_CFLAGS=$pkg_cv_FT2_CFLAGS + FT2_LIBS=$pkg_cv_FT2_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - CFLAGS="$FT2_CFLAGS $CFLAGS" + CFLAGS="$FT2_CFLAGS $CFLAGS" LIBS="$FT2_LIBS $LIBS" PSFONTS_O="sfd.o ft.o enc.o fontmap.o tfm.o" $as_echo "#define HAVE_FT2 1" >>confdefs.h ac_have_freetype2="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - if test "$FT2_CONFIG" = "no" ; then - echo "*** The freetype-config script installed by FreeType 2 could not be found." - echo "*** If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the FT2_CONFIG environment variable to the" - echo "*** full path to freetype-config." - else - if test x$ft_config_is_lt = xyes ; then - echo "*** Your installed version of the FreeType 2 library is too old." - echo "*** If you have different versions of FreeType 2, make sure that" - echo "*** correct values for --with-ft-prefix or --with-ft-exec-prefix" - echo "*** are used, or set the FT2_CONFIG environment variable to the" - echo "*** full path to freetype-config." - else - echo "*** The FreeType test program failed to run. If your system uses" - echo "*** shared libraries and they are installed outside the normal" - echo "*** system library path, make sure the variable LD_LIBRARY_PATH" - echo "*** (or whatever is appropiate for your system) is correctly set." - fi - fi - FT2_CFLAGS="" - FT2_LIBS="" - ac_have_freetype2="no" fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : @@ -4944,6 +4954,8 @@ main () if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF @@ -5099,7 +5111,7 @@ fi done -for ac_func in dup2 memset munmap pow putenv strchr strrchr strtol strstr +for ac_func in dup2 memset munmap pow putenv strchr strrchr strtol strstr strncasecmp do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -5142,6 +5154,17 @@ if test "$ac_cv_func_gdImageGif" = "yes"; then else INSTALL_BIN_TARGET="install-dvipng" fi +for ac_func in texlive_gs_init +do : + ac_fn_c_check_func "$LINENO" "texlive_gs_init" "ac_cv_func_texlive_gs_init" +if test "x$ac_cv_func_texlive_gs_init" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_TEXLIVE_GS_INIT 1 +_ACEOF + +fi +done + # Documentation-related checks @@ -5386,6 +5409,7 @@ fi (dvigif): $ac_cv_func_gdImageGif FreeType font rendering available: $ac_have_freetype2 Support for subfonts (CJK-LaTeX): $ac_have_freetype2 + Building within TeX Live: $ac_cv_func_texlive_gs_init " >&5 $as_echo " ** Configuration summary for $PACKAGE_STRING: @@ -5407,6 +5431,7 @@ $as_echo " (dvigif): $ac_cv_func_gdImageGif FreeType font rendering available: $ac_have_freetype2 Support for subfonts (CJK-LaTeX): $ac_have_freetype2 + Building within TeX Live: $ac_cv_func_texlive_gs_init " >&6; } ac_config_headers="$ac_config_headers config.h" @@ -5919,7 +5944,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dvipng $as_me 1.15, which was +This file was extended by dvipng $as_me 1.17, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5981,7 +6006,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -dvipng config.status 1.15 +dvipng config.status 1.17 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/dviware/dvipng/configure.ac b/dviware/dvipng/configure.ac index 9b3852cdd5..62e252deab 100644 --- a/dviware/dvipng/configure.ac +++ b/dviware/dvipng/configure.ac @@ -18,12 +18,12 @@ # License along with this program. If not, see # <http://www.gnu.org/licenses/>. # -# Copyright (C) 2002-2015 Jan-Åke Larsson +# Copyright (C) 2002-2015,2019 Jan-Åke Larsson # #************************************************************************ # Process this file with autoconf to produce a configure script. -AC_INIT([dvipng], [1.15], [dvipng@nongnu.org]) +AC_INIT([dvipng], [1.17], [dvipng@nongnu.org]) AC_CONFIG_SRCDIR([dvipng.c]) AC_ARG_ENABLE(debug, @@ -67,7 +67,8 @@ AC_CHECK_LIB([png], [png_read_image],, [AC_MSG_ERROR([cannot find/use libpng])]) AC_CHECK_LIB([gd], [gdImageCreate],, [AC_MSG_ERROR([cannot find/use libgd -This drawing library can be downloaded at http://www.boutell.com/gd])]) +This drawing library can be downloaded at +https://bitbucket.org/libgd/gd-libgd/downloads])]) AC_CHECK_LIB([kpathsea], [kpse_set_program_name],, AC_MSG_ERROR([cannot find/use libkpathsea])) @@ -78,7 +79,8 @@ AC_CHECK_HEADERS([gd.h png.h kpathsea/kpathsea.h],, AC_CHECK_HEADERS([libgen.h]) PSFONTS_O="" AC_SUBST(PSFONTS_O) -AC_CHECK_FT2(,[CFLAGS="$FT2_CFLAGS $CFLAGS" +PKG_CHECK_MODULES([FT2], [freetype2 >= 6.1.0], + [CFLAGS="$FT2_CFLAGS $CFLAGS" LIBS="$FT2_LIBS $LIBS" PSFONTS_O="sfd.o ft.o enc.o fontmap.o tfm.o" AC_DEFINE(HAVE_FT2, 1, [Define to 1 if you have freetype2]) @@ -122,7 +124,7 @@ AC_FUNC_MMAP # AC_FUNC_REALLOC AC_FUNC_STRTOD AC_FUNC_VPRINTF -AC_CHECK_FUNCS([dup2 memset munmap pow putenv strchr strrchr strtol strstr]) +AC_CHECK_FUNCS([dup2 memset munmap pow putenv strchr strrchr strtol strstr strncasecmp]) if test "$enable_timing" = "yes"; then AC_CHECK_FUNCS([ftime gettimeofday]) fi @@ -132,6 +134,7 @@ if test "$ac_cv_func_gdImageGif" = "yes"; then else INSTALL_BIN_TARGET="install-dvipng" fi +AC_CHECK_FUNCS([texlive_gs_init]) AC_SUBST(INSTALL_BIN_TARGET) # Documentation-related checks @@ -212,6 +215,7 @@ AC_MSG_RESULT([ (dvigif): $ac_cv_func_gdImageGif FreeType font rendering available: $ac_have_freetype2 Support for subfonts (CJK-LaTeX): $ac_have_freetype2 + Building within TeX Live: $ac_cv_func_texlive_gs_init ]) AC_CONFIG_HEADER([config.h]) diff --git a/dviware/dvipng/dvi.c b/dviware/dvipng/dvi.c index 7221c315c0..139d0ea13c 100644 --- a/dviware/dvipng/dvi.c +++ b/dviware/dvipng/dvi.c @@ -18,7 +18,7 @@ License along with this program. If not, see <http://www.gnu.org/licenses/>. - Copyright (C) 2002-2015 Jan-Åke Larsson + Copyright (C) 2002-2015, 2019 Jan-Åke Larsson ************************************************************************/ @@ -208,6 +208,8 @@ unsigned char* DVIGetCommand(struct dvi_data* dvi) break; } if (strlength > 0) { /* Read string */ + if (strlength > UINT32_MAX - (uint32_t)length - 1) + Fatal("integer overflow in DVI command length"); if (strlength+1 + (uint32_t)length > commlen) { /* string + command length exceeds that of buffer */ commlen=strlength+1 + (uint32_t)length; diff --git a/dviware/dvipng/dvipng.1 b/dviware/dvipng/dvipng.1 index be24b6ad2e..613912fea6 100644 --- a/dviware/dvipng/dvipng.1 +++ b/dviware/dvipng/dvipng.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "DVIPNG 1" -.TH DVIPNG 1 "2015-02-23" "dvipng 1.15" "User commands" +.TH DVIPNG 1 "2020-01-05" "dvipng 1.17" "User commands" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -295,7 +291,10 @@ for rendering the fonts. If you have PostScript versions of Computer Modern installed, there will be no need to generate bitmapped (\s-1PK\s0) variants on disk of these. Then, you can render images at different (and unusual) resolutions without cluttering the disk with lots of bitmapped -fonts. +fonts. +One reason to disable FreeType font rendering would be to generate +identical output on different platforms, since FreeType uses the native +renderer and therefore can give slightly different output on each platform. .IP "\fB\-\-gamma\fR \fInum\fR" 4 .IX Item "--gamma num" Control the interpolation of colors in the greyscale anti-aliasing @@ -504,4 +503,4 @@ This program is released under the \s-1GNU\s0 Lesser General Public License version 3, see the \s-1COPYING\s0 file in the dvipng distribution or <\fBhttp://www.gnu.org/licenses/gpl.html\fR>. .PP -Copyright (c) 2002\-2015 Jan-AAke Larsson +Copyright (c) 2002\-2015, 2019 Jan-AAke Larsson diff --git a/dviware/dvipng/dvipng.c b/dviware/dvipng/dvipng.c index 69b6c6c4e8..c71d1a2669 100644 --- a/dviware/dvipng/dvipng.c +++ b/dviware/dvipng/dvipng.c @@ -18,7 +18,7 @@ License along with this program. If not, see <http://www.gnu.org/licenses/>. - Copyright (C) 2002-2015 Jan-Åke Larsson + Copyright (C) 2002-2015,2019 Jan-Åke Larsson ************************************************************************/ @@ -79,6 +79,10 @@ int main(int argc, char ** argv) kpse_set_program_enabled (kpse_pk_format, makeTexPK, kpse_src_compile); #endif +#ifdef HAVE_TEXLIVE_GS_INIT + texlive_gs_init(); +#endif + initcolor(); parsestdin = DecodeArgs(argc, argv); @@ -99,7 +103,7 @@ int main(int argc, char ** argv) InitPSFontMap(); #endif - DrawPages(); + if (dvi!=NULL) DrawPages(); if (parsestdin) { char line[STRSIZE]; diff --git a/dviware/dvipng/dvipng.texi b/dviware/dvipng/dvipng.texi index 16a40ec3a0..2b8e157bdc 100644 --- a/dviware/dvipng/dvipng.texi +++ b/dviware/dvipng/dvipng.texi @@ -9,8 +9,8 @@ dvipng [options] [filename] - @c man end @end ifset -@set version 1.15 -@set month-year February 2015 +@set version 1.17 +@set month-year January 2020 @c Put everything in one index (arbitrarily chosen to be the concept index). @syncodeindex fn cp @@ -39,7 +39,7 @@ dvipng [options] [filename] - @author by Jan-@AA{}ke Larsson. @page @vskip 0pt plus 1filll -Copyright @copyright{} 2002-2015 Jan-@AA{}ke Larsson +Copyright @copyright{} 2002-2020 Jan-@AA{}ke Larsson Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -346,7 +346,10 @@ for rendering the fonts. If you have PostScript versions of Computer Modern installed, there will be no need to generate bitmapped (PK) variants on disk of these. Then, you can render images at different (and unusual) resolutions without cluttering the disk with lots of bitmapped -fonts. +fonts. +One reason to disable FreeType font rendering would be to generate +identical output on different platforms, since FreeType uses the native +renderer and therefore can give slightly different output on each platform. @item --gamma @var{num} @cindex gamma @@ -934,8 +937,8 @@ Tollak Munkejord, James Longstreet, Bernhard Simon, Bob McElrath, Georg Schwarz, Jason Farmer, Brian V. Smith, Samuel Hathaway, Thomas R. Shemanske, Stephen Gibson, Christian Ridderstr@"om, Ezra Peisach, William H Wheeler, Thomas Klausner, Harald Koenig, Adrian Bunk, Kevin -Smith, Jason Riedy, Wolfram Krause, Reinhard Kotucha, Takeshi Abe, and -Waldeck Schutzer. +Smith, Jason Riedy, Wolfram Krause, Reinhard Kotucha, Takeshi Abe, +Waldeck Schutzer, Ahzo, and Andy Nguyen. @ifset man @c man begin NOTES @@ -949,7 +952,7 @@ This program is released under the GNU Lesser General Public License version 3, see the COPYING file in the dvipng distribution or @url{http://www.gnu.org/licenses/gpl.html}. -Copyright @copyright{} 2002-2015 Jan-@AA{}ke Larsson +Copyright @copyright{} 2002-2015, 2019 Jan-@AA{}ke Larsson @c man end @end ifset @@ -972,7 +975,7 @@ License along with this program. If not, see @sp 2 @noindent -Copyright @copyright{} 2002-2015 Jan-@AA{}ke Larsson +Copyright @copyright{} 2002-2015, 2019 Jan-@AA{}ke Larsson @node Index @unnumbered Index diff --git a/dviware/dvipng/install.texi b/dviware/dvipng/install.texi index c9928a1ba7..61e47e565b 100644 --- a/dviware/dvipng/install.texi +++ b/dviware/dvipng/install.texi @@ -28,11 +28,11 @@ Installing dvipng should be simple: merely @code{./configure}, @item The GD Graphics Draw library, libgd The drawing library @samp{libgd} is necessary, and is downloadable at -@uref{http://www.boutell.com/gd}, and there are binary packages for -most operating systems from their respective distributors. In any -case, the latest version of the library installs using @samp{autoconf} -so it should not be difficult for you to install it from source, and -then proceed with installing dvipng. +@uref{https://bitbucket.org/libgd/gd-libgd/downloads}, and there are +binary packages for most operating systems from their respective +distributors. In any case, the library installs using @samp{autoconf} so +it should not be difficult for you to install it from source, and then +proceed with installing dvipng. @item The path-searching library kpathsea @@ -190,5 +190,5 @@ This program is released under the GNU Lesser General Public License version 3, see the COPYING file in the dvipng distribution or @url{http://www.gnu.org/licenses/}. -Copyright @copyright{} 2002-2015 Jan-@AA{}ke Larsson +Copyright @copyright{} 2002-2015, 2019 Jan-@AA{}ke Larsson @end ifset diff --git a/dviware/dvipng/misc.c b/dviware/dvipng/misc.c index 853fab2deb..01bd94d33a 100644 --- a/dviware/dvipng/misc.c +++ b/dviware/dvipng/misc.c @@ -18,15 +18,13 @@ License along with this program. If not, see <http://www.gnu.org/licenses/>. - Copyright (C) 2002-2015 Jan-Åke Larsson + Copyright (C) 2002-2015, 2019 Jan-Åke Larsson ************************************************************************/ #include "dvipng.h" #ifdef HAVE_LIBGEN_H # include <libgen.h> -#else -#define basename xbasename #endif #include <fcntl.h> /* open/close */ #ifdef HAVE_MMAP @@ -34,6 +32,15 @@ #endif #include <sys/stat.h> +#if defined _WIN32 && !defined __CYGWIN__ && !defined __CYGWIN32__ + /* Use Windows separators on all _WIN32 defining + environments, except Cygwin. */ +# define DIR_SEPARATOR_CHAR '\\' +#endif +#ifndef DIR_SEPARATOR_CHAR +# define DIR_SEPARATOR_CHAR '/' +#endif /* !DIR_SEPARATOR_CHAR */ + static char *programname; /*-->DecodeArgs*/ @@ -48,23 +55,24 @@ bool DecodeArgs(int argc, char ** argv) char *dviname=NULL; /* Name of dvi file */ char *outname=NULL; /* Name of output file */ + programname=PACKAGE_NAME; if (argv[0]) { #ifdef HAVE_GDIMAGEGIF - programname=strrchr(argv[0],'/'); + programname=strrchr(argv[0],DIR_SEPARATOR_CHAR); if (programname!=NULL) programname++; else programname=argv[0]; - if (strncmp(programname,"dvigif",6)==0) + if (strncasecmp(programname,"dvigif",6)==0) option_flags |= GIF_OUTPUT; #endif programname=argv[0]; - Message(BE_NONQUIET,"This is %s",programname); - if (strcmp(basename(programname),PACKAGE_NAME)!=0) - Message(BE_NONQUIET," (%s)", PACKAGE_NAME); - Message(BE_NONQUIET," %s Copyright 2002-2015 Jan-Ake Larsson\n", - PACKAGE_VERSION); } + Message(BE_NONQUIET,"This is %s",programname); + if (option_flags & GIF_OUTPUT) + Message(BE_NONQUIET," (%s)", PACKAGE_NAME); + Message(BE_NONQUIET," %s Copyright 2002-2015, 2019 Jan-Ake Larsson\n", + PACKAGE_VERSION); for (i=1; i<argc; i++) { if (*argv[i]=='-') { @@ -343,7 +351,7 @@ bool DecodeArgs(int argc, char ** argv) gamma=DEFAULT_GAMMA; } Gamma(gamma); - Message(PARSE_STDIN,"Gamma value is %s\n", gamma); + Message(PARSE_STDIN,"Gamma value is %f\n", gamma); break; #ifdef HAVE_GDIMAGEGIF } else if (strncmp(p,"if",2)==0) { /* --gif output */ @@ -482,12 +490,8 @@ bool DecodeArgs(int argc, char ** argv) } break; case 'v': /* verbatim mode */ - if (strcmp(p, "ersion")==0) { - if (strcmp(basename(programname),PACKAGE_NAME)!=0) - printf("%s (%s) %s\n",basename(programname), - PACKAGE_NAME,PACKAGE_VERSION); - else - puts(PACKAGE_STRING); + if (strcmp(p, "ersion")==0) { + puts(PACKAGE_STRING); #ifdef HAVE_LIBKPATHSEA puts (KPSEVERSION); #endif @@ -506,7 +510,7 @@ bool DecodeArgs(int argc, char ** argv) } # endif #endif - puts ("Copyright (C) 2002-2015 Jan-Ake Larsson.\n\ + puts ("Copyright (C) 2002-2015, 2019 Jan-Ake Larsson.\n\ There is NO warranty. You may redistribute this software\n\ under the terms of the GNU Lesser General Public License\n\ version 3, see the COPYING file in the dvipng distribution\n\ diff --git a/dviware/dvipng/pk.c b/dviware/dvipng/pk.c index b1c316eee2..4e0b0c0e1b 100644 --- a/dviware/dvipng/pk.c +++ b/dviware/dvipng/pk.c @@ -18,7 +18,7 @@ License along with this program. If not, see <http://www.gnu.org/licenses/>. - Copyright (C) 2002-2009 Jan-Åke Larsson + Copyright (C) 2002-2009, 2019 Jan-Åke Larsson ************************************************************************/ @@ -74,20 +74,23 @@ static uint32_t pk_packed_num(unsigned char** pos) } } -static unsigned char* skip_specials(unsigned char* pos) +static unsigned char* skip_specials(unsigned char* pos, unsigned char* end) { uint32_t i; - while (*pos >= 240 && *pos != PK_POST) { + while (pos < end && *pos >= 240 && *pos != PK_POST) { i=0; switch (*pos++) { case 243: i = *pos++; case 242: + if (pos >= end) break; i = 256 * i + *pos++; case 241: + if (pos >= end) break; i = 256 * i + *pos++; case 240: + if (pos >= end) break; i = 256 * i + *pos++; DEBUG_PRINT(DEBUG_PK,("\n PK SPECIAL\t'%.*s' ",(int)i,pos)); pos += i; @@ -308,7 +311,7 @@ void LoadPK(int32_t c, register struct char_entry * ptr) void InitPK(struct font_entry * tfontp) { - unsigned char* position; + unsigned char* position, *end; struct char_entry *tcharptr; /* temporary char_entry pointer */ uint32_t hppp, vppp, packet_length; uint32_t c; @@ -318,7 +321,7 @@ void InitPK(struct font_entry * tfontp) if (MmapFile(tfontp->name,&(tfontp->fmmap))) Fatal("font file %s unusable", tfontp->name); position=(unsigned char*)tfontp->fmmap.data; - if (tfontp->fmmap.size < 2 || tfontp->fmmap.size < 3+*(position+2)+16) + if (tfontp->fmmap.size < 3 || tfontp->fmmap.size < 3+*(position+2)+16) Fatal("PK file %s ends prematurely",tfontp->name); if (*position++ != PK_PRE) Fatal("unknown font format in file %s",tfontp->name); @@ -344,27 +347,29 @@ void InitPK(struct font_entry * tfontp) tfontp->magnification = (uint32_t)((uint64_t)hppp * 7227 * 5 / 65536l + 50)/100; position+=16; /* Read char definitions */ - position = skip_specials(position); - while (*position != PK_POST) { + end=(unsigned char *) tfontp->fmmap.data+tfontp->fmmap.size; + position = skip_specials(position,end); + while (position < end && *position != PK_POST) { DEBUG_PRINT(DEBUG_PK,("\n @%ld PK CHAR:\t%d", - (long)position - (long)tfontp->fmmap.data, *position)); + (long)((char *)position - tfontp->fmmap.data), *position)); if ((tcharptr = malloc(sizeof(struct char_entry))) == NULL) Fatal("cannot allocate space for char_entry"); tcharptr->flag_byte = *position; tcharptr->data = NULL; tcharptr->tfmw = 0; if ((*position & 7) == 7) { + if (position >= end - 9) Fatal("PK file %s ends prematurely",tfontp->name); packet_length = UNumRead(position+1,4); c = UNumRead(position+5, 4); position += 9; } else if (*position & 4) { - packet_length = (*position & 3) * 65536l + - UNumRead(position+1, 2); + if (position >= end - 4) Fatal("PK file %s ends prematurely",tfontp->name); + packet_length = (*position & 3) * 65536l + UNumRead(position+1, 2); c = UNumRead(position+3, 1); position += 4; } else { - packet_length = (*position & 3) * 256 + - UNumRead(position+1, 1); + if (position >= end - 3) Fatal("PK file %s ends prematurely",tfontp->name); + packet_length = (*position & 3) * 256 + UNumRead(position+1, 1); c = UNumRead(position+2, 1); position += 3; } @@ -375,8 +380,9 @@ void InitPK(struct font_entry * tfontp) tcharptr->pkdata = position; tfontp->chr[c]=tcharptr; position += packet_length; - position = skip_specials(position); + position = skip_specials(position, end); } + if (position >= end) Fatal("PK file %s ends prematurely",tfontp->name); } static void UnLoadPK(struct char_entry *ptr) diff --git a/dviware/dvipng/special.c b/dviware/dvipng/special.c index 7eee37fa45..60d899faae 100644 --- a/dviware/dvipng/special.c +++ b/dviware/dvipng/special.c @@ -31,8 +31,12 @@ #include <fcntl.h> #include <io.h> #include <process.h> +#ifndef pipe #define pipe(p) _pipe(p, 65536, O_BINARY | _O_NOINHERIT) +#endif +#ifndef snprintf #define snprintf _snprintf +#endif #endif /* WIN32 */ #endif @@ -44,9 +48,9 @@ struct pscode { struct pscode* next; char* special; /* complete special */ - char* code; /* PS string, null if a file */ + const char* code; /* PS string, null if a file */ char* filename; /* file name, null if a string */ - char* postcode; /* post PS string */ + const char* postcode; /* post PS string */ struct filemmap fmmap; /* file mmap */ }; @@ -217,7 +221,7 @@ ps2png(struct pscode* pscodep, const char *device, int hresolution, int vresolut savestdout = _dup(fileno(stdout)); _dup2(pngpipe[WRITE_END], fileno(stdout)); if ((hchild= - (HANDLE)spawnlp(_P_NOWAIT, GS_PATH, GS_PATH, device, resolution, + (HANDLE)_spawnlp(_P_NOWAIT, GS_PATH, GS_PATH, device, resolution, "-dBATCH", "-dNOPAUSE", "-q", "-sOutputFile=-", "-dTextAlphaBits=4", "-dGraphicsAlphaBits=4", (option_flags & NO_GSSAFER) ? "-": "-dSAFER", diff --git a/dviware/dvipng/tfm.c b/dviware/dvipng/tfm.c index 5bfdb4b2b8..ee04383cb4 100644 --- a/dviware/dvipng/tfm.c +++ b/dviware/dvipng/tfm.c @@ -18,7 +18,7 @@ License along with this program. If not, see <http://www.gnu.org/licenses/>. - Copyright (C) 2002-2009 Jan-Åke Larsson + Copyright (C) 2002-2009, 2019 Jan-Åke Larsson ************************************************************************/ @@ -36,17 +36,20 @@ bool ReadTFM(struct font_entry * tfontp, char* tfmname) ("\n OPEN METRICS:\t'%s'", tfmname)); if (MmapFile(tfmname,&fmmap)) return(false); position=(unsigned char*)fmmap.data; + if (fmmap.size<10) Fatal("TFM file %s ends prematurely",tfmname); lh = UNumRead(position+2,2); bc = UNumRead(position+4,2); ec = UNumRead(position+6,2); nw = UNumRead(position+8,2); DEBUG_PRINT(DEBUG_TFM,(" %d %d %d %d",lh,bc,ec,nw)); if (nw>0) { + unsigned char *end=(unsigned char *) fmmap.data+fmmap.size; if ((width=malloc(nw*sizeof(dviunits)))==NULL) Fatal("cannot allocate memory for TFM widths"); c=0; position=position+24+(lh+ec-bc+1)*4; while( c < nw ) { + if (position >= end - 4) Fatal("TFM file %s ends prematurely",tfmname); width[c] = SNumRead(position,4); c++; position += 4; @@ -55,18 +58,23 @@ bool ReadTFM(struct font_entry * tfontp, char* tfmname) c=bc; position=(unsigned char*)fmmap.data+24+lh*4; while(c <= ec) { + if (position >= end) Fatal("TFM file %s ends prematurely",tfmname); DEBUG_PRINT(DEBUG_TFM,("\n@%ld TFM METRICS:\t", - (long)position - (long)fmmap.data)); + (long)((char *)position - fmmap.data))); if ((tcharptr=malloc(sizeof(struct char_entry)))==NULL) Fatal("cannot allocate memory for TFM char entry"); tcharptr->data=NULL; - tcharptr->tfmw=width[*position]; + if (*position < nw) { + tcharptr->tfmw=width[*position]; + } else { + Fatal("TFM file %s lacks width for char %u", tfmname, *position); + } DEBUG_PRINT(DEBUG_TFM,("%d [%d] %d",c,*position,tcharptr->tfmw)); tcharptr->tfmw = (dviunits) ((int64_t) tcharptr->tfmw * tfontp->s / (1 << 20)); DEBUG_PRINT(DEBUG_TFM,(" (%d)",tcharptr->tfmw)); if (c >= NFNTCHARS) /* Only positive for now */ - Fatal("tfm file %s exceeds char numbering limit",tfmname); + Fatal("tfm file %s exceeds char numbering limit %u",tfmname,NFNTCHARS); tfontp->chr[c] = tcharptr; c++; position += 4; diff --git a/dviware/dvipng/vf.c b/dviware/dvipng/vf.c index c6470c6397..28e429eb26 100644 --- a/dviware/dvipng/vf.c +++ b/dviware/dvipng/vf.c @@ -80,7 +80,7 @@ void InitVF(struct font_entry * tfontp) position += 8; while(*position >= FNT_DEF1 && *position <= FNT_DEF4) { DEBUG_PRINT(DEBUG_VF,("\n @%ld VF:\t%s", - (long)position - (long)tfontp->fmmap.data, + (long)((char *)position - tfontp->fmmap.data), dvi_commands[*position])); FontDef(position,tfontp); length = dvi_commandlength[*position]; @@ -95,7 +95,7 @@ void InitVF(struct font_entry * tfontp) /* Read char definitions */ while(*position < FNT_DEF1) { DEBUG_PRINT(DEBUG_VF,("\n@%ld VF CHAR:\t", - (long)position - (long)tfontp->fmmap.data)); + (long)((char *)position - tfontp->fmmap.data))); if ((tcharptr=malloc(sizeof(struct char_entry)))==NULL) Fatal("cannot allocate memory for VF char entry"); switch (*position) { |