diff options
author | Norbert Preining <preining@logic.at> | 2019-12-10 06:22:32 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2019-12-10 06:22:32 +0000 |
commit | 2bc8de74125743b8e3fb84e02f33c65bf9959e82 (patch) | |
tree | cb9ec3e069054ad5a2463a83e7013ae97c9701ef | |
parent | 7f85e4a77221267523ef1738a61320991bdbc000 (diff) |
dvisvgm 2.8.2 (from Martin Gieseking)
git-svn-id: svn://tug.org/texlive/trunk@53077 c570f23f-e606-0410-a88d-b1316a301751
58 files changed, 471 insertions, 338 deletions
diff --git a/Build/source/texk/dvisvgm/Makefile.in b/Build/source/texk/dvisvgm/Makefile.in index 1ba128a99f6..c53fb026a71 100644 --- a/Build/source/texk/dvisvgm/Makefile.in +++ b/Build/source/texk/dvisvgm/Makefile.in @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 49882 2019-01-31 18:21:25Z karl $ +# $Id$ # Makefile.am for the TeX Live subdirectory texk/dvisvgm/ # # Copyright 2015-2017 Karl Berry <tex-live@tug.org> diff --git a/Build/source/texk/dvisvgm/TLpatches/ChangeLog b/Build/source/texk/dvisvgm/TLpatches/ChangeLog index 5da373df2f7..2442901a315 100644 --- a/Build/source/texk/dvisvgm/TLpatches/ChangeLog +++ b/Build/source/texk/dvisvgm/TLpatches/ChangeLog @@ -1,3 +1,7 @@ +2019-12-09 Martin Gieseking <martin.gieseking@uos.de> + + * Import 2.8.2. + 2019-11-19 Martin Gieseking <martin.gieseking@uos.de> * patch-04-configure-upstream, patch-08-makefiles, patch-09-woff-zlib: diff --git a/Build/source/texk/dvisvgm/TLpatches/patch-04-configure-upstream b/Build/source/texk/dvisvgm/TLpatches/patch-04-configure-upstream index 17909214244..f431355070f 100644 --- a/Build/source/texk/dvisvgm/TLpatches/patch-04-configure-upstream +++ b/Build/source/texk/dvisvgm/TLpatches/patch-04-configure-upstream @@ -1,4 +1,4 @@ ---- dvisvgm-2.8.1/configure.ac +--- dvisvgm-2.8.2/configure.ac +++ configure.ac @@ -1,78 +1,63 @@ -# This file is part of dvisvgm @@ -7,7 +7,7 @@ -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.59) --AC_INIT([dvisvgm],[2.8.1],[martin.gieseking@uos.de]) +-AC_INIT([dvisvgm],[2.8.2],[martin.gieseking@uos.de]) +# $Id: configure.ac 49819 2019-01-25 23:20:32Z karl $ +dnl Process this file with autoconf to produce a configure script +dnl for dvisvgm in TeX Live. @@ -25,7 +25,7 @@ +AC_PREREQ([2.65]) +m4_include([version.ac])[] dnl define dvisvgm_version +AC_INIT([dvisvgm (TeX Live)], dvisvgm_version, [tex-k@tug.org]) - DATE="November 2019" + DATE="December 2019" -AC_CONFIG_SRCDIR(src) +AC_CONFIG_SRCDIR([dvisvgm-src/src/dvisvgm.cpp]) AC_CONFIG_HEADERS([config.h]) diff --git a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles index 343678d2ac7..3901a1b4592 100644 --- a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles +++ b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles @@ -1,6 +1,6 @@ See ./TL-Changes. ---- dvisvgm-2.8.1/Makefile.am 2019-07-08 17:24:34.000000000 +0200 +--- dvisvgm-2.8.2/Makefile.am 2019-07-08 17:24:34.000000000 +0200 +++ dvisvgm-src/Makefile.am 2019-11-16 13:57:04.091210187 +0100 @@ -5,7 +5,7 @@ @@ -11,7 +11,7 @@ ACLOCAL_AMFLAGS = -I m4 if USE_BUNDLED_LIBS ---- dvisvgm-2.8.1/src/Makefile.am 2019-09-12 14:43:35.000000000 +0200 +--- dvisvgm-2.8.2/src/Makefile.am 2019-09-12 14:43:35.000000000 +0200 +++ dvisvgm-src/src/Makefile.am 2019-11-16 15:54:55.820450555 +0100 @@ -4,7 +4,7 @@ ## Process this file with automake. @@ -140,7 +140,7 @@ +@FREETYPE2_RULE@ +# Rebuild libz: +@ZLIB_RULE@ ---- dvisvgm-2.8.1/src/optimizer/Makefile.am 2019-11-08 15:26:11.000000000 +0100 +--- dvisvgm-2.8.2/src/optimizer/Makefile.am 2019-11-08 15:26:11.000000000 +0100 +++ dvisvgm-src/src/optimizer/Makefile.am 2019-11-16 15:15:54.151760519 +0100 @@ -1,6 +1,6 @@ -noinst_LTLIBRARIES = liboptimizer.la diff --git a/Build/source/texk/dvisvgm/configure b/Build/source/texk/dvisvgm/configure index 4a2238b63a7..297cd5145ba 100755 --- a/Build/source/texk/dvisvgm/configure +++ b/Build/source/texk/dvisvgm/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.8.1. +# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.8.2. # # Report bugs to <tex-k@tug.org>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='dvisvgm (TeX Live)' PACKAGE_TARNAME='dvisvgm--tex-live-' -PACKAGE_VERSION='2.8.1' -PACKAGE_STRING='dvisvgm (TeX Live) 2.8.1' +PACKAGE_VERSION='2.8.2' +PACKAGE_STRING='dvisvgm (TeX Live) 2.8.2' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1391,7 +1391,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 dvisvgm (TeX Live) 2.8.1 to adapt to many kinds of systems. +\`configure' configures dvisvgm (TeX Live) 2.8.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1462,7 +1462,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.8.1:";; + short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.8.2:";; esac cat <<\_ACEOF @@ -1594,7 +1594,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dvisvgm (TeX Live) configure 2.8.1 +dvisvgm (TeX Live) configure 2.8.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2462,7 +2462,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 dvisvgm (TeX Live) $as_me 2.8.1, which was +It was created by dvisvgm (TeX Live) $as_me 2.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -8214,7 +8214,7 @@ fi # Define the identity of the package. PACKAGE='dvisvgm--tex-live-' - VERSION='2.8.1' + VERSION='2.8.2' cat >>confdefs.h <<_ACEOF @@ -20212,7 +20212,7 @@ Usage: $0 [OPTIONS] Report bugs to <bug-libtool@gnu.org>." lt_cl_version="\ -dvisvgm (TeX Live) config.lt 2.8.1 +dvisvgm (TeX Live) config.lt 2.8.2 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -23517,7 +23517,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 dvisvgm (TeX Live) $as_me 2.8.1, which was +This file was extended by dvisvgm (TeX Live) $as_me 2.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23583,7 +23583,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="\\ -dvisvgm (TeX Live) config.status 2.8.1 +dvisvgm (TeX Live) config.status 2.8.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/texk/dvisvgm/configure.ac b/Build/source/texk/dvisvgm/configure.ac index 26cdef4ae9f..10b39e830f6 100644 --- a/Build/source/texk/dvisvgm/configure.ac +++ b/Build/source/texk/dvisvgm/configure.ac @@ -15,7 +15,7 @@ dnl AC_PREREQ([2.65]) m4_include([version.ac])[] dnl define dvisvgm_version AC_INIT([dvisvgm (TeX Live)], dvisvgm_version, [tex-k@tug.org]) -DATE="November 2019" +DATE="December 2019" AC_CONFIG_SRCDIR([dvisvgm-src/src/dvisvgm.cpp]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIRS([../../m4])dnl not just _DIR diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog b/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog index e7761560f4b..c540a278c96 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog +++ b/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog @@ -1,3 +1,67 @@ +2019-12-07 Martin Gieseking <martin.gieseking@uos.de> + + * NEWS: + updated NEWS + +2019-12-06 Martin Gieseking <martin.gieseking@uos.de> + + * .appveyor.yml, .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: + set version to 2.8.2 + +2019-12-05 Martin Gieseking <martin.gieseking@uos.de> + + * src/FileSystem.cpp: + convert path separators only in Windows binaries + + * src/Process.cpp: + Subprocess: handle absolute path to executable correctly + + * src/FileFinder.cpp, src/FileFinder.hpp: + added FileFinder::lookupExecutable() + + * src/MetafontWrapper.cpp: + call 'mf-nowin' instead of 'mf' if available (closes #121) + +2019-12-04 Martin Gieseking <martin.gieseking@uos.de> + + * src/PSInterpreter.cpp: + adapt path separators before passing them to Ghostscript +closes #123 + + * src/FilePath.cpp, src/FileSystem.cpp, src/FileSystem.hpp, + src/PSInterpreter.cpp, src/PsSpecialHandler.cpp, src/dvisvgm.cpp: + renamed adaptPathSeperators() to ensureForwardSlashes() + + * src/Calculator.hpp, src/CharMapID.hpp, src/Color.hpp, src/Directory.cpp, + src/Directory.hpp, src/FixWord.hpp, src/FontStyle.hpp, + src/GFGlyphTracer.cpp, src/GFGlyphTracer.hpp, src/GFReader.cpp, + src/GFReader.hpp, src/GFTracer.cpp, src/GFTracer.hpp, + src/GlyphTracerMessages.hpp, src/HtmlSpecialHandler.hpp, + src/HyperlinkManager.hpp, src/Length.hpp, src/NoPsSpecialHandler.hpp, + src/PSPreviewFilter.cpp, src/PSPreviewFilter.hpp, src/PathClipper.hpp, + src/PreScanDVIReader.cpp, src/PreScanDVIReader.hpp, src/Process.cpp, + src/PsSpecialHandler.hpp, src/RangeMap.hpp, src/SVGOutput.cpp, + src/SVGOutput.hpp, src/SignalHandler.cpp, src/SignalHandler.hpp, + src/TFM.hpp, src/VFReader.cpp, src/VFReader.hpp, src/VectorStream.hpp: + simplified constructors, avoid constant initializers + + * src/FileSystem.cpp, src/FileSystem.hpp: + removed redundant class variable + + * src/MiKTeXCom.cpp: + fixed type mismatch of FindFile expression + +2019-12-03 Martin Gieseking <martin.gieseking@uos.de> + + * src/psdefs.cpp: + fixed handling of 'nulldevice' in PS operator 'restore' +closes #122 + +2019-11-23 Martin Gieseking <martin.gieseking@uos.de> + + * src/GraphicsPath.hpp: + added missing namespace prefix to pow() + 2019-11-14 Martin Gieseking <martin.gieseking@uos.de> * NEWS, README.md: diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in index b92cc984869..447627d9fa7 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in +++ b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in @@ -166,7 +166,8 @@ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \ - INSTALL NEWS README + INSTALL NEWS README ar-lib compile config.guess config.sub \ + depcomp install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS index 301a2de7a65..3efe71b2d33 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS +++ b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS @@ -1,3 +1,11 @@ +dvisvgm-2.8.2 (2019-12-07) +- if available, call 'mf-nowin' instead of 'mf' to process Metafont files + (GH #121) +- fixed handling of null device in PS operator 'restore' (GH #122) +- fixed PS error triggered by backslashes in file paths (GH #123) +- fixed build issue related to GCC on Solaris 11 +- some code cleanup + dvisvgm-2.8.1 (2019-11-14) - added SVG optimizer module 'simplify-text' - added support for PS operator 'nulldevice' diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 index e6d6b8743f1..5c7cb95e5a2 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 +++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 @@ -4,10 +4,10 @@ .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Date: 2019-11-12 .\" Manual: dvisvgm Manual -.\" Source: dvisvgm 2.8.1 +.\" Source: dvisvgm 2.8.2 .\" Language: English .\" -.TH "DVISVGM" "1" "2019\-11\-12" "dvisvgm 2\&.8\&.1" "dvisvgm Manual" +.TH "DVISVGM" "1" "2019\-11\-12" "dvisvgm 2\&.8\&.2" "dvisvgm Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.hpp index f498365e544..cc3b2feb6bb 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.hpp @@ -33,7 +33,6 @@ struct CalculatorException : public MessageException { class Calculator { public: - Calculator () : _numValue(0) {} double eval (std::istream &is); double eval (const std::string &expr); void setVariable (const std::string &name, double value) {_variables[name] = value;} @@ -48,7 +47,7 @@ class Calculator { private: std::map<std::string,double> _variables; - double _numValue; + double _numValue=0; std::string _strValue; }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.hpp index e79c64b24fc..cdc39ca94dc 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.hpp @@ -25,7 +25,7 @@ /** Represents a character map of a font. */ struct CharMapID { - CharMapID () noexcept : platform_id(0), encoding_id(0) {} + CharMapID () noexcept =default; CharMapID (uint8_t plf_id, uint8_t enc_id) noexcept : platform_id(plf_id), encoding_id(enc_id) {} bool operator == (const CharMapID &ids) const { @@ -52,8 +52,8 @@ struct CharMapID { static const CharMapID MAC_SIMPLCHINESE; static const CharMapID MAC_KOREAN; - uint8_t platform_id; - uint8_t encoding_id; + uint8_t platform_id=0; + uint8_t encoding_id=0; }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.hpp index f522bded55e..c58a97f0bba 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.hpp @@ -40,7 +40,7 @@ class Color { enum class ColorSpace {GRAY, RGB, CMYK, LAB}; public: - Color () noexcept : _rgb(0) {} + Color () noexcept =default; explicit Color (uint32_t rgb) noexcept : _rgb(rgb) {} Color (uint8_t r, uint8_t g, uint8_t b) noexcept {setRGB(r,g,b);} Color (double r, double g, double b) noexcept {setRGB(r,g,b);} @@ -90,7 +90,7 @@ class Color { static int numComponents (ColorSpace colorSpace); private: - uint32_t _rgb; + uint32_t _rgb=0; }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp index ccc05a2e92c..748d1bc0705 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp @@ -22,35 +22,20 @@ using namespace std; -#ifdef _WIN32 - #include "windows.hpp" -#else +#ifndef _WIN32 #include <cerrno> #include <sys/stat.h> #endif Directory::Directory () { -#if _WIN32 - _handle = INVALID_HANDLE_VALUE; - _firstread = true; +#ifdef _WIN32 memset(&_fileData, 0, sizeof(WIN32_FIND_DATA)); -#else - _dir = nullptr; - _dirent = nullptr; #endif } -Directory::Directory (const string &dirname) { -#if _WIN32 - _handle = INVALID_HANDLE_VALUE; - _firstread = true; - memset(&_fileData, 0, sizeof(WIN32_FIND_DATA)); -#else - _dir = nullptr; - _dirent = nullptr; -#endif +Directory::Directory (const string &dirname) : Directory() { open(dirname); } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.hpp index a703c18977c..f6ec7a96022 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.hpp @@ -43,12 +43,12 @@ class Directory { private: std::string _dirname; #ifdef _WIN32 - bool _firstread; - HANDLE _handle; + bool _firstread=true; + HANDLE _handle=INVALID_HANDLE_VALUE; WIN32_FIND_DATA _fileData; #else - DIR *_dir; - struct dirent *_dirent; + DIR *_dir=nullptr; + struct dirent *_dirent=nullptr; #endif }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp index dfd60412cb8..e867f648a76 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp @@ -46,6 +46,7 @@ std::string FileFinder::_argv0; std::string FileFinder::_progname; +std::string FileFinder::_pathbuf; bool FileFinder::_enableMktex = false; @@ -109,12 +110,11 @@ const char* FileFinder::findFile (const std::string &fname, const char *ftype) c if (fname.empty()) return nullptr; - static std::string buf; // try to lookup the file in the additionally specified directories for (const std::string &dir : _additionalDirs) { - buf = dir + "/" + fname; - if (FileSystem::exists(buf)) - return buf.c_str(); + _pathbuf = dir+"/"+fname; + if (FileSystem::exists(_pathbuf)) + return _pathbuf.c_str(); } std::string ext; if (ftype) @@ -126,21 +126,18 @@ const char* FileFinder::findFile (const std::string &fname, const char *ftype) c ext = fname.substr(pos+1); } +#ifdef _WIN32 + if (ext == "dll" || ext == "exe") + return lookupExecutable(fname); #ifdef MIKTEX - if (ext == "dll" || ext == "exe") { - // lookup dll and exe files in the MiKTeX bin directory first - buf = _miktex->getBinDir() + "/" + fname; - if (FileSystem::exists(buf)) - return buf.c_str(); - } else if (ext == "cmap") { // The MiKTeX SDK doesn't support the lookup of files without suffix (yet), thus // it's not possible to find cmap files which usually don't have a suffix. In order // to work around this, we try to lookup the files by calling kpsewhich. Process process("kpsewhich", "-format=cmap "+fname); - process.run(&buf); - buf = util::trim(buf); - return buf.empty() ? nullptr : buf.c_str(); + process.run(&_pathbuf); + _pathbuf = util::trim(_pathbuf); + return _pathbuf.empty() ? nullptr : _pathbuf.c_str(); } try { return _miktex->findFile(fname.c_str()); @@ -148,17 +145,9 @@ const char* FileFinder::findFile (const std::string &fname, const char *ftype) c catch (const MessageException &e) { return nullptr; } -#else -#ifdef TEXLIVEWIN32 - if (ext == "exe") { - // lookup exe files in directory where dvisvgm is located - if (const char *path = kpse_var_value("SELFAUTOLOC")) { - buf = std::string(path) + "/" + fname; - return FileSystem::exists(buf) ? buf.c_str() : nullptr; - } - return nullptr; - } -#endif +#endif // MIKTEX +#endif // _WIN32 +#ifndef MIKTEX static std::map<std::string, kpse_file_format_type> types = { {"tfm", kpse_tfm_format}, {"pfb", kpse_type1_format}, @@ -188,12 +177,12 @@ const char* FileFinder::findFile (const std::string &fname, const char *ftype) c // In the current version of libkpathsea, each call of kpse_find_file produces // a memory leak since the path buffer is not freed. I don't think we can do // anything against it here... - buf = path; + _pathbuf = path; std::free(path); - return buf.c_str(); + return _pathbuf.c_str(); } return nullptr; -#endif +#endif // !MIKTEX } @@ -264,3 +253,35 @@ const char* FileFinder::lookup (const std::string &fname, const char *ftype, boo return path; return nullptr; } + + +/** Looks up the location of an executable file. + * @param[in] fname name of file to look up + * @param[in] addSuffix if true, ".exe" is appended to the given filename (Windows only) + * @return absolute path of file or nullptr if not found */ +const char* FileFinder::lookupExecutable (const std::string &fname, bool addSuffix) const { +#ifdef MIKTEX + _pathbuf = _miktex->getBinDir() + "/" + fname; + if (addSuffix) + _pathbuf += ".exe"; + if (FileSystem::exists(_pathbuf)) + return _pathbuf.c_str(); + try { + return _miktex->findFile(fname.c_str()); + } + catch (...) { + } +#else + // lookup executables in directory where dvisvgm is located + if (const char *path = kpse_var_value("SELFAUTOLOC")) { + _pathbuf = std::string(path) + "/" + fname; +#ifdef _WIN32 + if (addSuffix) + _pathbuf += ".exe"; +#endif + if (FileSystem::exists(_pathbuf)) + return _pathbuf.c_str(); + } +#endif // !MIKTEX + return nullptr; +} diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp index b01c26b10c0..08c59a3372e 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp @@ -35,6 +35,7 @@ class FileFinder { void addLookupDir (const std::string &path); const char* lookup (const std::string &fname, const char *ftype, bool extended=true) const; const char* lookup (const std::string &fname, bool extended=true) const {return lookup(fname, nullptr, extended);} + const char* lookupExecutable (const std::string &fname, bool addSuffix=false) const; protected: FileFinder (); @@ -45,6 +46,7 @@ class FileFinder { private: static std::string _argv0; static std::string _progname; + static std::string _pathbuf; ///< buffer holding the path of the last search static bool _enableMktex; std::set<std::string> _additionalDirs; #ifdef MIKTEX diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp index c859d30469d..6f162bfab94 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp @@ -122,7 +122,7 @@ void FilePath::init (string path, bool isfile, string current_dir) { single_slashes(path); single_slashes(current_dir); #ifdef _WIN32 - path = FileSystem::adaptPathSeperators(path); + path = FileSystem::ensureForwardSlashes(path); _drive = strip_drive_letter(path); #endif if (isfile) { @@ -303,7 +303,7 @@ bool FilePath::exists () const { bool FilePath::isAbsolute (string path) { path = util::trim(path); #ifdef _WIN32 - path = FileSystem::adaptPathSeperators(path); + path = FileSystem::ensureForwardSlashes(path); if (path.length() >= 2 && path[1] == ':' && isalpha(path[0])) path.erase(0, 2); // remove drive letter and colon #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp index 35621465a53..6a081ee24f7 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp @@ -50,7 +50,6 @@ using namespace std; #endif -FileSystem FileSystem::_fs; string FileSystem::TMPDIR; const char *FileSystem::TMPSUBDIR = nullptr; @@ -133,8 +132,10 @@ uint64_t FileSystem::filesize (const string &fname) { } -string FileSystem::adaptPathSeperators (string path) { +string FileSystem::ensureForwardSlashes (string path) { +#ifdef _WIN32 std::replace(path.begin(), path.end(), PATHSEP, '/'); +#endif return path; } @@ -142,7 +143,7 @@ string FileSystem::adaptPathSeperators (string path) { string FileSystem::getcwd () { char buf[1024]; #ifdef _WIN32 - return adaptPathSeperators(_getcwd(buf, 1024)); + return ensureForwardSlashes(_getcwd(buf, 1024)); #else return ::getcwd(buf, 1024); #endif @@ -198,7 +199,7 @@ string FileSystem::tmpdir () { #ifdef _WIN32 char buf[MAX_PATH]; if (GetTempPath(MAX_PATH, buf)) - ret = adaptPathSeperators(buf); + ret = ensureForwardSlashes(buf); else ret = "."; #else @@ -232,7 +233,7 @@ bool FileSystem::mkdir (const string &dirname) { bool success = false; if (const char *cdirname = dirname.c_str()) { success = true; - const string dirstr = adaptPathSeperators(util::trim(cdirname)); + const string dirstr = ensureForwardSlashes(util::trim(cdirname)); for (size_t pos=1; success && (pos = dirstr.find('/', pos)) != string::npos; pos++) success &= s_mkdir(dirstr.substr(0, pos)); success &= s_mkdir(dirstr); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp index 9a1b80067d8..b882caa9fa2 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp @@ -24,15 +24,14 @@ #include <string> #include <vector> -class FileSystem -{ +class FileSystem { public: ~FileSystem (); static bool remove (const std::string &fname); static bool rename (const std::string &oldname, const std::string &newname); static bool copy (const std::string &src, const std::string &dest, bool remove_src=false); static uint64_t filesize (const std::string &fname); - static std::string adaptPathSeperators (std::string path); + static std::string ensureForwardSlashes (std::string path); static std::string getcwd (); static std::string tmpdir (); static bool chdir (const std::string &dir); @@ -51,9 +50,6 @@ class FileSystem FileSystem () =default; bool system_tmpdir_available (); static const char* TMPSUBDIR; ///< subdirectory of the system's temporary folder - - private: - static FileSystem _fs; }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp index 41a09f11205..94166b232c3 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp @@ -25,14 +25,14 @@ class FixWord { public: - FixWord () : _value(0) {} + FixWord () =default; FixWord (int32_t fw) : _value(fw) {} explicit operator double () const {return double(_value)/(1 << 20);} bool operator < (FixWord fw) const {return _value < fw._value;} bool operator == (FixWord fw) const {return _value == fw._value;} private: - int32_t _value; + int32_t _value=0; }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.hpp index 40c5d3e45ee..1088df3c4e2 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.hpp @@ -22,11 +22,11 @@ #define FONTSTYLE struct FontStyle { - FontStyle () : bold(0), extend(1), slant(0) {} + FontStyle () =default; FontStyle (float b, float e, float s) : bold(b), extend(e), slant(s) {} - double bold; ///< stroke width in pt used to draw the glyph outlines - double extend; ///< factor to strech/shrink the glyphs horizontally - double slant; ///< horizontal slanting/skewing value (= tan(phi)) + double bold=0; ///< stroke width in pt used to draw the glyph outlines + double extend=1; ///< factor to strech/shrink the glyphs horizontally + double slant=0; ///< horizontal slanting/skewing value (= tan(phi)) }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp index 85f7c2cab56..1b55afc593d 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp @@ -22,10 +22,6 @@ using namespace std; -GFGlyphTracer::GFGlyphTracer () : GFTracer(_ifs, 0) -{ -} - /** Constructs a new glyph tracer. * @param[in] is GF input stream * @param[in] upp target units per PS point */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.hpp index 49f69b69ec7..afe1b95253e 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.hpp @@ -26,8 +26,7 @@ #include "GFTracer.hpp" #include "Glyph.hpp" -class GFGlyphTracer : public GFTracer -{ +class GFGlyphTracer : public GFTracer { public: struct Callback { virtual ~Callback () =default; @@ -38,7 +37,7 @@ class GFGlyphTracer : public GFTracer }; public: - GFGlyphTracer (); + GFGlyphTracer () : GFTracer(_ifs, 0) {} GFGlyphTracer (std::string &fname, double upp, Callback *cb=nullptr); void reset (std::string &fname, double upp); void setCallback (Callback *cb) {_callback = cb;} diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp index 32ba354443f..a7d314d3de8 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp @@ -40,16 +40,6 @@ static inline double scaled2double (int32_t scaled) { } -GFReader::GFReader (istream &is) : _in(is), _insideCharDef(false), _penDown(false) -{ - _minX = _maxX = _minY = _maxY = _x = _y = 0; - _currentChar = 0; - _designSize = 0; - _hppp = _vppp = 0; - _checksum = 0; -} - - uint32_t GFReader::readUnsigned (int bytes) { uint32_t ret = 0; for (int i=bytes-1; i >= 0 && !_in.eof(); i--) { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.hpp index 3dfceb98cd6..ad1e8b22204 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.hpp @@ -47,7 +47,7 @@ class GFReader { }; public: - explicit GFReader (std::istream &is); + explicit GFReader (std::istream &is) : _in(is) {} virtual ~GFReader () =default; virtual bool executeChar (uint8_t c); virtual bool executeAllChars (); @@ -91,16 +91,16 @@ class GFReader { private: std::istream &_in; - int32_t _minX, _maxX, _minY, _maxY; - int32_t _x, _y; ///< current pen location (pixel units) - int32_t _currentChar; - Bitmap _bitmap; ///< bitmap of current char - double _designSize; ///< designSize in PS points - double _hppp, _vppp; ///< horizontal and vertical pixel per point - uint32_t _checksum; + int32_t _minX=0, _maxX=0, _minY=0, _maxY=0; + int32_t _x=0, _y=0; ///< current pen location (pixel units) + int32_t _currentChar=0; + Bitmap _bitmap; ///< bitmap of current char + double _designSize=0; ///< designSize in PS points + double _hppp=0, _vppp=0; ///< horizontal and vertical pixel per point + uint32_t _checksum=0; std::unordered_map<uint8_t,CharInfo> _charInfoMap; - bool _insideCharDef; ///< true if inside a character definition (between BOC and EOC) - bool _penDown; + bool _insideCharDef=false; ///< true if inside a character definition (between BOC and EOC) + bool _penDown=false; }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp index 61d297d9825..e73aab12fd9 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp @@ -27,12 +27,6 @@ using namespace std; -GFTracer::GFTracer (istream &is) - : GFReader(is), _unitsPerPoint(0.0) -{ -} - - /** Constructs a new GFTracer. * @param[in] is GF file is read from this stream * @param[in] upp target units per PS point */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.hpp index 8fe746cc05d..efe9476a8fc 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.hpp @@ -26,7 +26,7 @@ class GFTracer : public GFReader { public: - explicit GFTracer (std::istream &is); + explicit GFTracer (std::istream &is) : GFReader(is) {} GFTracer (std::istream &is, double upp); virtual void moveTo (double x, double y) =0; virtual void lineTo (double x, double y) =0; @@ -39,7 +39,7 @@ class GFTracer : public GFReader { void unitsPerPoint(double upp) {_unitsPerPoint = upp;} private: - double _unitsPerPoint; ///< target units per PS point + double _unitsPerPoint=0; ///< target units per PS point }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.hpp index 8a41b811d99..d48fe6f1b46 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.hpp @@ -27,7 +27,8 @@ class GlyphTracerMessages : public GFGlyphTracer::Callback { public: - explicit GlyphTracerMessages (bool sfmsg=true, bool autonl=true) : _sfmsg(sfmsg), _autonl(autonl), _traced(false) {} + GlyphTracerMessages () =default; + explicit GlyphTracerMessages (bool sfmsg, bool autonl) : _sfmsg(sfmsg), _autonl(autonl) {} ~GlyphTracerMessages () override { if (_autonl) @@ -71,8 +72,8 @@ class GlyphTracerMessages : public GFGlyphTracer::Callback { private: std::string _fname; - bool _sfmsg, _autonl; - bool _traced; ///< true if a glyph of the current font has already been traced? + bool _sfmsg=true, _autonl=true; + bool _traced=false; ///< true if a glyph of the current font has already been traced? }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp index 0d4e3e4e11f..bb85b2ad2c7 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp @@ -29,7 +29,6 @@ class SpecialActions; class HtmlSpecialHandler : public SpecialHandler { public: - HtmlSpecialHandler () : _active(false) {} void preprocess (const std::string &prefix, std::istream &is, SpecialActions &actions) override; bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override; const char* name () const override {return "html";} @@ -41,7 +40,7 @@ class HtmlSpecialHandler : public SpecialHandler { void dviMovedTo (double x, double y, SpecialActions &actions) override; private: - bool _active; + bool _active=false; }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/HyperlinkManager.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/HyperlinkManager.hpp index 7f5a460bdb1..762b4a4ccab 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/HyperlinkManager.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/HyperlinkManager.hpp @@ -59,7 +59,7 @@ class HyperlinkManager { static void setDefaultLinkColor (Color color); protected: - HyperlinkManager () : _anchorType(AnchorType::NONE), _depthThreshold(0), _linewidth(-1) {} + HyperlinkManager () =default; void markLinkedBox (SpecialActions &actions); enum class MarkerType {NONE, LINE, BOX, BGCOLOR}; @@ -69,9 +69,9 @@ class HyperlinkManager { static ColorSource COLORSOURCE; ///< if true, LINK_LINECOLOR is applied private: - AnchorType _anchorType; ///< type of active anchor - int _depthThreshold; ///< break anchor box if the DVI stack depth underruns this threshold - double _linewidth; ///< line width of link marker (-1 => compute individual value per link) + AnchorType _anchorType=AnchorType::NONE; ///< type of active anchor + int _depthThreshold=0; ///< break anchor box if the DVI stack depth underruns this threshold + double _linewidth=-1; ///< line width of link marker (-1 => compute individual value per link) std::string _base; ///< base URL that is prepended to all relative targets NamedAnchors _namedAnchors; ///< information about all named anchors processed }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.hpp index 4454eec168e..3c4de91fae7 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.hpp @@ -39,7 +39,7 @@ class Length { enum class Unit {PT, BP, CM, MM, IN, PC, DD, CC, SP}; public: - constexpr Length () : _pt(0) {} + constexpr Length () =default; explicit constexpr Length (long double pt) : _pt(static_cast<double>(pt)) {} Length (double val, Unit unit) {set(val, unit);} Length (double val, const std::string &unitstr) {set(val, unitstr);} @@ -76,7 +76,7 @@ class Length { static constexpr double pt2sp = 65536.0; private: - double _pt; // length in TeX point units (72.27pt = 1in) + double _pt=0; // length in TeX point units (72.27pt = 1in) }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp index 5807d7254ef..202b65d6ecb 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp @@ -53,19 +53,19 @@ bool MetafontWrapper::call (const string &mode, double mag) { return false; // mf file not available => no need to call the "slow" Metafont FileSystem::remove(_fontname+".gf"); -#ifdef _WIN32 -#ifdef TEXLIVEWIN32 - const char *mfname = "mf-nowin.exe"; -#else - const char *mfname = "mf.exe"; + string mfName = "mf"; // file name of Metafont executable +#ifndef MIKTEX + if (const char *mfnowinPath = FileFinder::instance().lookupExecutable("mf-nowin", true)) + mfName = mfnowinPath; + else #endif - const char *cmd = FileFinder::instance().lookup(mfname, false); - if (!cmd) { - Message::estream(true) << "can't run Metafont (" << mfname << " not found)\n"; - return false; - } -#else - const char *cmd = "mf"; + if (const char *mfPath = FileFinder::instance().lookupExecutable(mfName, true)) + mfName = mfPath; +#ifdef _WIN32 + else { + Message::estream(true) << "can't run Metafont (mf.exe and mf-nowin.exe not found)\n"; + return false; + } #endif ostringstream oss; oss << "\"\\mode=" << mode << ";" // set MF mode, e.g. 'proof', 'ljfour' or 'localfont' @@ -75,7 +75,7 @@ bool MetafontWrapper::call (const string &mode, double mag) { "batchmode;" // don't halt on errors and don't print informational messages "input " << _fontname << "\""; // load font description Message::mstream(false, Message::MC_STATE) << "\nrunning Metafont for " << _fontname << '\n'; - Process mf_process(cmd, oss.str()); + Process mf_process(mfName, oss.str()); string mf_messages; mf_process.run(_dir, &mf_messages); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp index 72c2af7f0e7..957173f1263 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp @@ -92,8 +92,7 @@ const char* MiKTeXCom::findFile (const char *fname) { _bstr_t path; static string ret; #ifdef _MSC_VER - HRESULT hres = _session->FindFile(fname, path.GetAddress()); - bool found = (hres != 0); + bool found = (_session->FindFile(fname, path.GetAddress()) == VARIANT_TRUE); #else VARIANT_BOOL found_var; _session->FindFile(_bstr_t(fname), path.GetAddress(), &found_var); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp index f4f04218856..027ea3fb622 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp @@ -25,7 +25,6 @@ class NoPsSpecialHandler : public SpecialHandler { public: - NoPsSpecialHandler () : _count(0) {} bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override; const char* name () const override {return nullptr;} const char* info () const override {return nullptr;} @@ -35,7 +34,7 @@ class NoPsSpecialHandler : public SpecialHandler { void dviEndPage (unsigned pageno, SpecialActions &actions) override; private: - unsigned _count; // number of PS specials skipped + size_t _count=0; // number of PS specials skipped }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp index aa9cab21077..4b1d1fbc152 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp @@ -24,6 +24,7 @@ #include <sstream> #include <unordered_map> #include "FileFinder.hpp" +#include "FileSystem.hpp" #include "InputReader.hpp" #include "Message.hpp" #include "PSFilter.hpp" @@ -352,7 +353,7 @@ int GSDLLCALL PSInterpreter::error (void *inst, const char *buf, int len) { /** Returns the total number of pages of a PDF file. * @param[in] fname name/path of the PDF file */ int PSInterpreter::pdfPageCount (const string &fname) { - executeRaw("\n("+fname+")@pdfpagecount ", 1); + executeRaw("\n("+FileSystem::ensureForwardSlashes(fname)+")@pdfpagecount ", 1); if (!_rawData.empty()) { size_t index; int ret = stoi(_rawData[0], &index, 10); @@ -370,7 +371,7 @@ int PSInterpreter::pdfPageCount (const string &fname) { * @return the bounding box of the given page */ BoundingBox PSInterpreter::pdfPageBox (const string &fname, int pageno) { BoundingBox pagebox; - executeRaw("\n"+to_string(pageno)+"("+fname+")@pdfpagebox ", 4); + executeRaw("\n"+to_string(pageno)+"("+FileSystem::ensureForwardSlashes(fname)+")@pdfpagebox ", 4); if (_rawData.size() < 4) pagebox.invalidate(); else diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp index 36f0303e0fa..6dac4945a8c 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp @@ -28,12 +28,6 @@ using namespace std; -PSPreviewFilter::PSPreviewFilter (PSInterpreter &psi) - : PSFilter(psi), _active(false), _tightpage(false), _dvi2bp(1.0/65536.0) -{ -} - - /** Activates this filter so that the PS code will be redirected through it if * it's hooked into the PSInterpreter. */ void PSPreviewFilter::activate () { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.hpp index 7de5a2e2a8b..630a277b163 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.hpp @@ -30,7 +30,7 @@ class SpecialActions; class PSPreviewFilter : public PSFilter { public: - explicit PSPreviewFilter (PSInterpreter &psi); + explicit PSPreviewFilter (PSInterpreter &psi) : PSFilter(psi) {} void activate (); void execute (const char *code, size_t len) override; bool active () const override {return _active;} @@ -44,11 +44,11 @@ class PSPreviewFilter : public PSFilter { double width () const; private: - std::string _version; ///< version string of preview package - bool _active; ///< true if filter is active - bool _tightpage; ///< true if tightpage option was given - double _dvi2bp; ///< factor to convert dvi units to PS points - std::vector<int> _boxExtents; ///< bounding box data set by the preview package (in DVI units) + std::string _version; ///< version string of preview package + bool _active=false; ///< true if filter is active + bool _tightpage=false; ///< true if tightpage option was given + double _dvi2bp=1.0/65536.0; ///< factor to convert dvi units to PS points + std::vector<int> _boxExtents; ///< bounding box data set by the preview package (in DVI units) }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.hpp index 09c904bfd49..fb375db35fa 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.hpp @@ -31,25 +31,22 @@ using ClipperLib::IntPoint; -class PathClipper -{ +class PathClipper { public: using CurvedPath = GraphicsPath<double>; public: - PathClipper () : _numLines(0) {} void intersect (const CurvedPath &p1, const CurvedPath &p2, CurvedPath &result); protected: void flatten (const CurvedPath &gp, ClipperLib::Paths &polygons); -// void divide (IntPoint &p1, IntPoint &p2, IntPoint &ip); void reconstruct (const ClipperLib::Path &polygon, CurvedPath &path); void reconstruct (const ClipperLib::Paths &polygons, CurvedPath &path); static void callback (IntPoint &e1bot, IntPoint &e1top, IntPoint &e2bot, IntPoint &e2top, IntPoint &ip); private: std::vector<Bezier> _curves; - int _numLines; ///< negative number of straight line segments in path been processed + int _numLines=0; ///< negative number of straight line segments in path been processed }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp index 415eadbb73c..7c964fae86e 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp @@ -25,7 +25,7 @@ using namespace std; PreScanDVIReader::PreScanDVIReader (std::istream &is, DVIActions *actions) - : BasicDVIReader(is), _actions(actions), _currentPageNumber(0) + : BasicDVIReader(is), _actions(actions) { } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.hpp index 614beac66ea..5176f5a1f3f 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.hpp @@ -25,8 +25,7 @@ struct DVIActions; -class PreScanDVIReader : public BasicDVIReader -{ +class PreScanDVIReader : public BasicDVIReader { public: PreScanDVIReader (std::istream &is, DVIActions *actions); unsigned currentPageNumber () const override {return _currentPageNumber;} @@ -37,7 +36,7 @@ class PreScanDVIReader : public BasicDVIReader private: DVIActions *_actions; - unsigned _currentPageNumber; + unsigned _currentPageNumber=0; }; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp index ff73cb53366..de5394f1fd4 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp @@ -22,6 +22,7 @@ #include "windows.hpp" #else #include <csignal> + #include <cstring> #include <fcntl.h> #include <sys/wait.h> #include <unistd.h> @@ -42,7 +43,7 @@ class Subprocess { enum class State {RUNNING, FINISHED, FAILED}; public: - Subprocess (); + Subprocess () =default; Subprocess (const Subprocess&) =delete; Subprocess (Subprocess&&) =delete; ~Subprocess (); @@ -52,11 +53,11 @@ class Subprocess { private: #ifdef _WIN32 - HANDLE _pipeReadHandle; ///< handle of read end of pipe - HANDLE _childProcHandle; ///< handle of child process + HANDLE _pipeReadHandle=NULL; ///< handle of read end of pipe + HANDLE _childProcHandle=NULL; ///< handle of child process #else - int _readfd; ///< file descriptor of read end of pipe - pid_t _pid; ///< PID of the subprocess + int _readfd=-1; ///< file descriptor of read end of pipe + pid_t _pid=-1; ///< PID of the subprocess #endif }; @@ -113,10 +114,6 @@ static inline void close_and_zero_handle (HANDLE &handle) { } -Subprocess::Subprocess() : _pipeReadHandle(NULL), _childProcHandle(NULL) { -} - - Subprocess::~Subprocess () { if (_pipeReadHandle != NULL) CloseHandle(_pipeReadHandle); @@ -214,10 +211,6 @@ Subprocess::State Subprocess::state () { #else // !_WIN32 -Subprocess::Subprocess () : _readfd(-1), _pid(-1) { -} - - Subprocess::~Subprocess () { if (_readfd >= 0) close(_readfd); @@ -276,12 +269,12 @@ static void split_paramstr (string ¶mstr, vector<const char*> ¶ms) { /** Starts a child process. - * @param[in] cmd name of command to execute - * @param[in] paramstr parameters required by command + * @param[in] cmd name of command to execute or absolute path to executable + * @param[in] paramstr parameters required by the command * @returns true if child process started properly */ bool Subprocess::run (const string &cmd, string paramstr) { int pipefd[2]; - if (pipe(pipefd) < 0) + if (cmd.empty() || pipe(pipefd) < 0) return false; _pid = fork(); @@ -299,9 +292,11 @@ bool Subprocess::run (const string &cmd, string paramstr) { vector<const char*> params; params.push_back(cmd.c_str()); split_paramstr(paramstr, params); - params.push_back(nullptr); // trailing null pointer marks end of parameter list - signal(SIGINT, SIG_IGN); // child process is supposed to ignore ctrl-c events - execvp(cmd.c_str(), const_cast<char* const*>(¶ms[0])); + params.push_back(nullptr); // trailing null pointer marks end of parameter list + signal(SIGINT, SIG_IGN); // child process is supposed to ignore ctrl-c events + if (params[0][0] == '/') // absolute path to executable? + params[0] = strrchr(params[0], '/')+1; // filename of executable + execvp(cmd.c_str(), const_cast<char* const*>(params.data())); exit(1); } _readfd = pipefd[0]; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp index 405da48434b..31f8aa55e74 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp @@ -214,7 +214,7 @@ bool PsSpecialHandler::process (const string &prefix, istream &is, SpecialAction if (_actions) { StreamInputReader in(is); string fname = in.getQuotedString(in.peek() == '"' ? "\"" : nullptr); - fname = FileSystem::adaptPathSeperators(fname); + fname = FileSystem::ensureForwardSlashes(fname); FileType fileType = FileType::EPS; if (prefix == "pdffile") fileType = FileType::PDF; @@ -392,7 +392,7 @@ unique_ptr<XMLElement> PsSpecialHandler::createImageNode (FileType type, const s unique_ptr<XMLElement> node; string pathstr; if (const char *path = FileFinder::instance().lookup(fname, false)) - pathstr = FileSystem::adaptPathSeperators(path); + pathstr = FileSystem::ensureForwardSlashes(path); if ((pathstr.empty() || !FileSystem::exists(pathstr)) && FileSystem::exists(fname)) pathstr = fname; if (pathstr.empty()) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp index c7a8a978150..6251e20a47f 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp @@ -46,7 +46,6 @@ class PsSpecialHandler : public SpecialHandler, protected PSActions { * clipping paths and compute their intersections locally if necessary. */ class ClippingStack { public: - ClippingStack () : _maxID(0) {} void pushEmptyPath (); void push (const Path &path, int saveID=-1); bool replace (const Path &path); @@ -72,7 +71,7 @@ class PsSpecialHandler : public SpecialHandler, protected PSActions { Entry (const Entry &entry) =default; Entry (Entry &&entry) =default; }; - size_t _maxID; + size_t _maxID=0; std::stack<Entry> _stack; ///< stack holding the clipping information of the current graphics context }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.hpp index 128d37c038e..9d3f2c2d955 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.hpp @@ -30,7 +30,7 @@ class RangeMap { class Range { friend class RangeMap; public: - Range () : _min(0), _max(0), _minval(0) {} + Range () =default; Range (uint32_t min, uint32_t max, uint32_t minval) : _min(min), _max(max), _minval(minval) { if (_min > _max) @@ -53,8 +53,8 @@ class RangeMap { bool join (const Range &r); private: - uint32_t _min, _max; - uint32_t _minval; + uint32_t _min=0, _max=0; + uint32_t _minval=0; }; using Ranges = std::vector<Range>; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp index 7c4108c8769..1f9e2448835 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp @@ -35,7 +35,7 @@ using namespace std; SVGOutput::SVGOutput (const string &base, string pattern, int zipLevel) - : _path(base), _pattern(std::move(pattern)), _stdout(base.empty()), _zipLevel(zipLevel), _page(-1) + : _path(base), _pattern(std::move(pattern)), _stdout(base.empty()), _zipLevel(zipLevel) { } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp index 3c382f0b7fe..1f4da20ee88 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp @@ -53,7 +53,7 @@ struct SVGOutputBase { class SVGOutput : public SVGOutputBase { public: - SVGOutput () : SVGOutput("", "", 0) {} + SVGOutput () =default; explicit SVGOutput (const std::string &base) : SVGOutput(base, "", 0) {} SVGOutput (const std::string &base, const std::string &pattern) : SVGOutput(base, pattern, 0) {} SVGOutput (const std::string &base, std::string pattern, int zipLevel); @@ -67,9 +67,9 @@ class SVGOutput : public SVGOutputBase { private: FilePath _path; std::string _pattern; - bool _stdout; ///< write to STDOUT? - int _zipLevel; ///< compression level - mutable int _page; ///< number of current page being written + bool _stdout=true; ///< write to STDOUT? + int _zipLevel=0; ///< compression level + mutable int _page=-1; ///< number of current page being written mutable std::unique_ptr<std::ostream> _osptr; }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp index 886c9281bbc..5af70be2e40 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp @@ -49,7 +49,7 @@ class SignalHandler::Impl { SignalHandler::SignalHandler () - : _active(false), _impl(util::make_unique<SignalHandler::Impl>()) + : _impl(util::make_unique<SignalHandler::Impl>()) { } @@ -89,7 +89,7 @@ void SignalHandler::stop () { /** Checks for incoming signals and throws an exception if CTRL-C was caught. * @throw SignalException */ -void SignalHandler::check() { +void SignalHandler::check () { if (_break) throw SignalException(); } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.hpp index 827f9e09623..b97449399ed 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.hpp @@ -45,7 +45,7 @@ class SignalHandler { static void callback (int signal); private: - bool _active; ///< true if listening for signals + bool _active=false; ///< true if listening for signals static volatile bool _break; ///< true if signal has been caught class Impl; std::unique_ptr<Impl> _impl; ///< system-specific data/functions diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.hpp index 668ff390833..f2fd3027eb2 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.hpp @@ -30,8 +30,7 @@ class StreamReader; -class TFM : public FontMetrics -{ +class TFM : public FontMetrics { public: explicit TFM (std::istream &is); double getCharWidth (int c) const override; @@ -51,7 +50,7 @@ class TFM : public FontMetrics uint16_t lastChar () const override {return _lastChar;} protected: - TFM () : _checksum(0), _firstChar(0), _lastChar(0), _designSize(0), _params(7) {} + TFM () : _params(7) {} void readHeader (StreamReader &reader); void readTables (StreamReader &reader, int nw, int nh, int nd, int ni); void readParameters (StreamReader &reader, int np); @@ -59,9 +58,9 @@ class TFM : public FontMetrics void setCharRange (int firstchar, int lastchar) {_firstChar=firstchar; _lastChar=lastchar;} private: - uint32_t _checksum; - uint16_t _firstChar, _lastChar; - double _designSize; ///< design size of the font in PS points (72bp = 1in) + uint32_t _checksum=0; + uint16_t _firstChar=0, _lastChar=0; + double _designSize=0; ///< design size of the font in PS points (72bp = 1in) std::vector<uint32_t> _charInfoTable; std::vector<FixWord> _widthTable; ///< character widths in design size units std::vector<FixWord> _heightTable; ///< character height in design size units diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp index cff67c919c1..47f5e3f7b6a 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp @@ -28,11 +28,6 @@ using namespace std; -VFReader::VFReader (istream &is) : StreamReader(is) -{ -} - - VFActions* VFReader::replaceActions (VFActions *a) { VFActions *ret = _actions; _actions = a; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.hpp index 8ddba805e8f..bd42289039b 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.hpp @@ -31,10 +31,10 @@ struct VFException : public MessageException { struct VFActions; -class VFReader : public StreamReader{ +class VFReader : public StreamReader { using ApproveAction = bool (*)(int); public: - explicit VFReader (std::istream &is); + explicit VFReader (std::istream &is) : StreamReader(is) {} VFActions* replaceActions (VFActions *a); bool executeAll (); bool executePreambleAndFontDefs (); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp index c74388e076b..9672e67435b 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp @@ -28,9 +28,7 @@ template <typename T> class VectorStreamBuffer : public std::streambuf { public: explicit VectorStreamBuffer (const std::vector<T> &v) { - if (v.empty()) - _begin = _end = _curr = nullptr; - else { + if (!v.empty()) { _begin = _curr = &v[0]; _end = &v[0]+v.size(); } @@ -68,9 +66,9 @@ class VectorStreamBuffer : public std::streambuf { } private: - const T *_begin; - const T *_end; - const T *_curr; + const T *_begin=nullptr; + const T *_end=nullptr; + const T *_curr=nullptr; }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp index 37584d5ddbd..5828299fcee 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp @@ -64,7 +64,7 @@ using namespace std; //////////////////////////////////////////////////////////////////////////////// static string remove_path (string fname) { - fname = FileSystem::adaptPathSeperators(fname); + fname = FileSystem::ensureForwardSlashes(fname); size_t slashpos = fname.rfind('/'); if (slashpos == string::npos) return fname; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp index d38e2354e0a..04abb6227dd 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp @@ -22,103 +22,104 @@ const char *PSInterpreter::PSDEFS = "<</Install{matrix setmatrix}/HWResolution[72 72]/PageSize[10000 10000]/Imaging" -"BBox null>>setpagedevice/@dodraw true store/@nulldev false store/@patcnt 0 sto" -"re/@SD systemdict def/@UD userdict def true setglobal @SD/:save @SD/save get p" -"ut @SD/:restore @SD/restore get put @SD/:gsave @SD/gsave get put @SD/:grestore" -" @SD/grestore get put @SD/:grestoreall @SD/grestoreall get put @SD/:newpath @S" -"D/newpath get put @SD/:stroke @SD/stroke get put @SD/:fill @SD/fill get put @S" -"D/:eofill @SD/eofill get put @SD/:clip @SD/clip get put @SD/:eoclip @SD/eoclip" -" get put @SD/:charpath @SD/charpath get put @SD/:show @SD/show get put @SD/:st" -"ringwidth @SD/stringwidth get put @SD/:nulldevice @SD/nulldevice get put @SD/." -"setopacityalpha known not{@SD/.setopacityalpha{pop}put}if @SD/.setshapealpha k" -"nown not{@SD/.setshapealpha{pop}put}if @SD/.setblendmode known not{@SD/.setble" -"ndmode{pop}put}if @SD/prseq{-1 1{-1 roll =only( )print}for(\\n)print}put @SD/p" -"rcmd{( )exch(\\ndvi.)3{print}repeat prseq}put @SD/cvxall{{cvx}forall}put @SD/d" -"efpr{[exch[/copy @SD]cvxall 5 -1 roll dup 6 1 roll[/get/exec]cvxall 6 -1 roll " -"dup 7 1 roll 4 -1 roll dup 5 1 roll dup length string cvs/prcmd cvx]cvx def}pu" -"t @SD/querypos{{currentpoint}stopped{$error/newerror false put}{2(querypos)prc" -"md}ifelse}put @SD/applyscalevals{1 0 dtransform exch dup mul exch dup mul add " -"sqrt 0 1 dtransform exch dup mul exch dup mul add sqrt 1 0 dtransform dup mul " -"exch dup dup mul 3 -1 roll add dup 0 eq{pop}{sqrt div}ifelse 3(applyscalevals)" -"prcmd}put @SD/prpath{{2(moveto)prcmd}{2(lineto)prcmd}{6(curveto)prcmd}{0(close" -"path)prcmd}pathforall}put @SD/nulldevice{/@nulldev true store :nulldevice 1 1(" -"setnulldevice)prcmd}put @SD/charpath{/@dodraw false store :charpath/@dodraw tr" -"ue store}put @SD/stringwidth{/@dodraw false store :stringwidth/@dodraw true st" -"ore}put @SD/show{@dodraw @nulldev not and{dup :gsave currentpoint 2{50 mul exc" -"h}repeat :newpath moveto 50 50/scale sysexec true charpath fill :grestore/@dod" -"raw false store :show/@dodraw true store}{:show}ifelse}put @SD/varxyshow{exch " -"dup type/arraytype eq{<</arr 3 -1 roll/prc 5 -1 roll/chr 1 string/idx 0>>begin" -"{chr 0 3 -1 roll put :gsave chr show :grestore currentpoint prc moveto/idx idx" -" 1 add store}forall end}{pop show}ifelse}put @SD/xyshow{{exch arr idx 2 mul ge" -"t add exch arr idx 2 mul 1 add get add}varxyshow}put @SD/xshow{{exch arr idx g" -"et add exch}varxyshow}put @SD/yshow{{arr idx get add}varxyshow}put @SD/awidths" -"how{{1 string dup 0 5 index put :gsave show :grestore pop 0 rmoveto 3 index eq" -"{4 index 4 index rmoveto}if 1 index 1 index rmoveto}exch cshow 5{pop}repeat}pu" -"t @SD/widthshow{0 0 3 -1 roll pstack awidthshow}put @SD/ashow{0 0 0 6 3 roll a" -"widthshow}put @SD/newpath{:newpath 1 1(newpath)prcmd}put @SD/stroke{@dodraw @n" -"ulldev not and{prcolor 0 1(newpath)prcmd prpath 0(stroke)prcmd :newpath}{:stro" -"ke}ifelse}put @SD/fill{@dodraw @nulldev not and{prcolor 0 1(newpath)prcmd prpa" -"th 0(fill)prcmd :newpath}{:fill}ifelse}put @SD/eofill{@dodraw @nulldev not and" -"{prcolor 0 1(newpath)prcmd prpath 0(eofill)prcmd :newpath}{:eofill}ifelse}put " -"@SD/clip{:clip @nulldev not{0 1(newpath)prcmd prpath 0(clip)prcmd}if}put @SD/e" -"oclip{:eoclip @nulldev not{0 1(newpath)prcmd prpath 0(eoclip)prcmd}}put @SD/sh" -"fill{begin currentdict/ShadingType known currentdict/ColorSpace known and curr" -"entdict/DataSource known and currentdict/Function known not and ShadingType 4 " -"ge and DataSource type/arraytype eq and{<</DeviceGray 1/DeviceRGB 3/DeviceCMYK" -" 4/bgknown currentdict/Background known/bbknown currentdict/BBox known>>begin " -"currentdict ColorSpace known{ShadingType ColorSpace load bgknown{1 Background " -"aload pop}{0}ifelse bbknown{1 BBox aload pop}{0}ifelse ShadingType 5 eq{Vertic" -"esPerRow}if DataSource aload length 4 add bgknown{ColorSpace load add}if bbkno" -"wn{4 add}if ShadingType 5 eq{1 add}if(shfill)prcmd}if end}if end}put/@rect{4 -" -"2 roll moveto exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto closepath}b" -"ind def/@rectcc{4 -2 roll moveto 2 copy 0 lt exch 0 lt xor{dup 0 exch rlineto " -"exch 0 rlineto neg 0 exch rlineto}{exch dup 0 rlineto exch 0 exch rlineto neg " -"0 rlineto}ifelse closepath}bind def @SD/rectclip{:newpath dup type/arraytype e" -"q{aload length 4 idiv{@rectcc}repeat}{@rectcc}ifelse clip :newpath}put @SD/rec" -"tfill{gsave :newpath dup type/arraytype eq{aload length 4 idiv{@rectcc}repeat}" -"{@rectcc}ifelse fill grestore}put @SD/rectstroke{gsave :newpath dup type/array" -"type eq{aload length 4 idiv{@rect}repeat}{@rect}ifelse stroke grestore}put fal" -"se setglobal @SD readonly pop/initclip 0 defpr/clippath 0 defpr/sysexec{@SD ex" -"ch get exec}def/adddot{dup length 1 add string dup 0 46 put dup 3 -1 roll 1 ex" -"ch putinterval}def/setlinewidth{dup/setlinewidth sysexec 1(setlinewidth)prcmd}" -"def/setlinecap 1 defpr/setlinejoin 1 defpr/setmiterlimit 1 defpr/setdash{mark " -"3 1 roll 2 copy/setdash sysexec exch aload length 1 add -1 roll counttomark(se" -"tdash)prcmd pop}def/@setpagedevice{pop<<>>/setpagedevice sysexec matrix setmat" -"rix newpath 0(setpagedevice)prcmd}def/@checknulldev{@nulldev{currentpagedevice" -" maxlength 0 ne{/@nulldev false store 0 1(setnulldevice)prcmd}if}if}def/prcolo" -"r{currentrgbcolor 3(setrgbcolor)prcmd}def/printgstate{@dodraw @nulldev not and" -"{matrix currentmatrix aload pop 6(setmatrix)prcmd applyscalevals currentlinewi" -"dth 1(setlinewidth)prcmd currentlinecap 1(setlinecap)prcmd currentlinejoin 1(s" -"etlinejoin)prcmd currentmiterlimit 1(setmiterlimit)prcmd currentrgbcolor 3(set" -"rgbcolor)prcmd currentdash mark 3 1 roll exch aload length 1 add -1 roll count" -"tomark(setdash)prcmd pop}if}def/setgstate{/setgstate sysexec printgstate}def/s" -"ave{@UD begin/@saveID vmstatus pop pop def end :save @saveID 1(save)prcmd}def/" -"restore{:restore @checknulldev printgstate @UD/@saveID known{@UD begin @saveID" -" end}{0}ifelse 1(restore)prcmd}def/gsave 0 defpr/grestore{:grestore @checknull" -"dev printgstate 0(grestore)prcmd}def/grestoreall{:grestoreall @checknulldev se" -"tstate 0(grestoreall)prcmd}def/rotate{dup type/arraytype ne @dodraw and{dup 1(" -"rotate)prcmd}if/rotate sysexec applyscalevals}def/scale{dup type/arraytype ne " -"@dodraw and{2 copy 2(scale)prcmd}if/scale sysexec applyscalevals}def/translate" -"{dup type/arraytype ne @dodraw and{2 copy 2(translate)prcmd}if/translate sysex" -"ec}def/setmatrix{dup/setmatrix sysexec @dodraw{aload pop 6(setmatrix)prcmd app" -"lyscalevals}{pop}ifelse}def/initmatrix{matrix setmatrix}def/concat{matrix curr" -"entmatrix matrix concatmatrix setmatrix}def/makepattern{gsave<</mx 3 -1 roll>>" -"begin dup/XUID[1000000 @patcnt]put mx/makepattern sysexec dup dup begin Patter" -"nType @patcnt BBox aload pop XStep YStep PaintType mx aload pop 15(makepattern" -")prcmd :newpath matrix setmatrix PaintProc 0 1(makepattern)prcmd end/@patcnt @" -"patcnt 1 add store end grestore}def/setpattern{begin PatternType 1 eq{PaintTyp" -"e 1 eq{XUID aload pop exch pop 1}{:gsave[currentcolorspace aload length -1 rol" -"l pop]setcolorspace/setcolor sysexec XUID aload pop exch pop currentrgbcolor :" -"grestore 4}ifelse(setpattern)prcmd}{/setpattern sysexec}ifelse end}def/setcolo" -"r{dup type/dicttype eq{setpattern}{/setcolor sysexec/currentrgbcolor sysexec s" -"etrgbcolor}ifelse}def/setgray 1 defpr/setcmykcolor 4 defpr/sethsbcolor 3 defpr" -"/setrgbcolor 3 defpr/.setopacityalpha{dup/.setopacityalpha sysexec 1(setopacit" -"yalpha)prcmd}def/.setshapealpha{dup/.setshapealpha sysexec 1(setshapealpha)prc" -"md}def/.setblendmode{dup/.setblendmode sysexec<</Normal 0/Compatible 0/Multipl" -"y 1/Screen 2/Overlay 3/SoftLight 4/HardLight 5/ColorDodge 6/ColorBurn 7/Darken" -" 8/Lighten 9/Difference 10/Exclusion 11/Hue 12/Saturation 13/Color 14/Luminosi" -"ty 15/CompatibleOverprint 16>>exch get 1(setblendmode)prcmd}def/@pdfpagecount{" -"(r)file runpdfbegin pdfpagecount runpdfend}def/@pdfpagebox{(r)file runpdfbegin" -" dup dup 1 lt exch pdfpagecount gt or{pop}{pdfgetpage/MediaBox pget pop aload " -"pop}ifelse runpdfend}def DELAYBIND{.bindnow}if "; +"BBox null>>setpagedevice/@dodraw true store/@patcnt 0 store/@GD globaldict def" +"/@SD systemdict def/@UD userdict def @GD/@nulldev false put true setglobal @SD" +"/:save @SD/save get put @SD/:restore @SD/restore get put @SD/:gsave @SD/gsave " +"get put @SD/:grestore @SD/grestore get put @SD/:grestoreall @SD/grestoreall ge" +"t put @SD/:newpath @SD/newpath get put @SD/:stroke @SD/stroke get put @SD/:fil" +"l @SD/fill get put @SD/:eofill @SD/eofill get put @SD/:clip @SD/clip get put @" +"SD/:eoclip @SD/eoclip get put @SD/:charpath @SD/charpath get put @SD/:show @SD" +"/show get put @SD/:stringwidth @SD/stringwidth get put @SD/:nulldevice @SD/nul" +"ldevice get put @SD/.setopacityalpha known not{@SD/.setopacityalpha{pop}put}if" +" @SD/.setshapealpha known not{@SD/.setshapealpha{pop}put}if @SD/.setblendmode " +"known not{@SD/.setblendmode{pop}put}if @SD/prseq{-1 1{-1 roll =only( )print}fo" +"r(\\n)print}put @SD/prcmd{( )exch(\\ndvi.)3{print}repeat prseq}put @SD/cvxall{" +"{cvx}forall}put @SD/defpr{[exch[/copy @SD]cvxall 5 -1 roll dup 6 1 roll[/get/e" +"xec]cvxall 6 -1 roll dup 7 1 roll 4 -1 roll dup 5 1 roll dup length string cvs" +"/prcmd cvx]cvx def}put @SD/querypos{{currentpoint}stopped{$error/newerror fals" +"e put}{2(querypos)prcmd}ifelse}put @SD/applyscalevals{1 0 dtransform exch dup " +"mul exch dup mul add sqrt 0 1 dtransform exch dup mul exch dup mul add sqrt 1 " +"0 dtransform dup mul exch dup dup mul 3 -1 roll add dup 0 eq{pop}{sqrt div}ife" +"lse 3(applyscalevals)prcmd}put @SD/prpath{{2(moveto)prcmd}{2(lineto)prcmd}{6(c" +"urveto)prcmd}{0(closepath)prcmd}pathforall}put @SD/nulldevice{@GD/@nulldev tru" +"e put :nulldevice 1 1(setnulldevice)prcmd}put @SD/charpath{/@dodraw false stor" +"e :charpath/@dodraw true store}put @SD/stringwidth{/@dodraw false store :strin" +"gwidth/@dodraw true store}put @SD/show{@dodraw @GD/@nulldev get not and{dup :g" +"save currentpoint 2{50 mul exch}repeat :newpath moveto 50 50/scale sysexec tru" +"e charpath fill :grestore/@dodraw false store :show/@dodraw true store}{:show}" +"ifelse}put @SD/varxyshow{exch dup type/arraytype eq{<</arr 3 -1 roll/prc 5 -1 " +"roll/chr 1 string/idx 0>>begin{chr 0 3 -1 roll put :gsave chr show :grestore c" +"urrentpoint prc moveto/idx idx 1 add store}forall end}{pop show}ifelse}put @SD" +"/xyshow{{exch arr idx 2 mul get add exch arr idx 2 mul 1 add get add}varxyshow" +"}put @SD/xshow{{exch arr idx get add exch}varxyshow}put @SD/yshow{{arr idx get" +" add}varxyshow}put @SD/awidthshow{{1 string dup 0 5 index put :gsave show :gre" +"store pop 0 rmoveto 3 index eq{4 index 4 index rmoveto}if 1 index 1 index rmov" +"eto}exch cshow 5{pop}repeat}put @SD/widthshow{0 0 3 -1 roll pstack awidthshow}" +"put @SD/ashow{0 0 0 6 3 roll awidthshow}put @SD/newpath{:newpath 1 1(newpath)p" +"rcmd}put @SD/stroke{@dodraw @GD/@nulldev get not and{prcolor 0 1(newpath)prcmd" +" prpath 0(stroke)prcmd :newpath}{:stroke}ifelse}put @SD/fill{@dodraw @GD/@null" +"dev get not and{prcolor 0 1(newpath)prcmd prpath 0(fill)prcmd :newpath}{:fill}" +"ifelse}put @SD/eofill{@dodraw @GD/@nulldev get not and{prcolor 0 1(newpath)prc" +"md prpath 0(eofill)prcmd :newpath}{:eofill}ifelse}put @SD/clip{:clip @GD/@null" +"dev get not{0 1(newpath)prcmd prpath 0(clip)prcmd}if}put @SD/eoclip{:eoclip @G" +"D/@nulldev get not{0 1(newpath)prcmd prpath 0(eoclip)prcmd}}put @SD/shfill{beg" +"in currentdict/ShadingType known currentdict/ColorSpace known and currentdict/" +"DataSource known and currentdict/Function known not and ShadingType 4 ge and D" +"ataSource type/arraytype eq and{<</DeviceGray 1/DeviceRGB 3/DeviceCMYK 4/bgkno" +"wn currentdict/Background known/bbknown currentdict/BBox known>>begin currentd" +"ict ColorSpace known{ShadingType ColorSpace load bgknown{1 Background aload po" +"p}{0}ifelse bbknown{1 BBox aload pop}{0}ifelse ShadingType 5 eq{VerticesPerRow" +"}if DataSource aload length 4 add bgknown{ColorSpace load add}if bbknown{4 add" +"}if ShadingType 5 eq{1 add}if(shfill)prcmd}if end}if end}put/@rect{4 -2 roll m" +"oveto exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto closepath}bind def/" +"@rectcc{4 -2 roll moveto 2 copy 0 lt exch 0 lt xor{dup 0 exch rlineto exch 0 r" +"lineto neg 0 exch rlineto}{exch dup 0 rlineto exch 0 exch rlineto neg 0 rlinet" +"o}ifelse closepath}bind def @SD/rectclip{:newpath dup type/arraytype eq{aload " +"length 4 idiv{@rectcc}repeat}{@rectcc}ifelse clip :newpath}put @SD/rectfill{gs" +"ave :newpath dup type/arraytype eq{aload length 4 idiv{@rectcc}repeat}{@rectcc" +"}ifelse fill grestore}put @SD/rectstroke{gsave :newpath dup type/arraytype eq{" +"aload length 4 idiv{@rect}repeat}{@rect}ifelse stroke grestore}put false setgl" +"obal @SD readonly pop/initclip 0 defpr/clippath 0 defpr/sysexec{@SD exch get e" +"xec}def/adddot{dup length 1 add string dup 0 46 put dup 3 -1 roll 1 exch putin" +"terval}def/setlinewidth{dup/setlinewidth sysexec 1(setlinewidth)prcmd}def/setl" +"inecap 1 defpr/setlinejoin 1 defpr/setmiterlimit 1 defpr/setdash{mark 3 1 roll" +" 2 copy/setdash sysexec exch aload length 1 add -1 roll counttomark(setdash)pr" +"cmd pop}def/@setpagedevice{pop<<>>/setpagedevice sysexec matrix setmatrix newp" +"ath 0(setpagedevice)prcmd}def/@checknulldev{@GD/@nulldev get{currentpagedevice" +" maxlength 0 ne{@GD/@nulldev false put 0 1(setnulldevice)prcmd}if}if}def/prcol" +"or{currentrgbcolor 3(setrgbcolor)prcmd}def/printgstate{@dodraw @GD/@nulldev ge" +"t not and{matrix currentmatrix aload pop 6(setmatrix)prcmd applyscalevals curr" +"entlinewidth 1(setlinewidth)prcmd currentlinecap 1(setlinecap)prcmd currentlin" +"ejoin 1(setlinejoin)prcmd currentmiterlimit 1(setmiterlimit)prcmd currentrgbco" +"lor 3(setrgbcolor)prcmd currentdash mark 3 1 roll exch aload length 1 add -1 r" +"oll counttomark(setdash)prcmd pop}if}def/setgstate{/setgstate sysexec printgst" +"ate}def/save{@UD begin/@saveID vmstatus pop pop def end :save @saveID 1(save)p" +"rcmd}def/restore{:restore @checknulldev printgstate @UD/@saveID known{@UD begi" +"n @saveID end}{0}ifelse 1(restore)prcmd}def/gsave 0 defpr/grestore{:grestore @" +"checknulldev printgstate 0(grestore)prcmd}def/grestoreall{:grestoreall @checkn" +"ulldev setstate 0(grestoreall)prcmd}def/rotate{dup type/arraytype ne @dodraw a" +"nd{dup 1(rotate)prcmd}if/rotate sysexec applyscalevals}def/scale{dup type/arra" +"ytype ne @dodraw and{2 copy 2(scale)prcmd}if/scale sysexec applyscalevals}def/" +"translate{dup type/arraytype ne @dodraw and{2 copy 2(translate)prcmd}if/transl" +"ate sysexec}def/setmatrix{dup/setmatrix sysexec @dodraw{aload pop 6(setmatrix)" +"prcmd applyscalevals}{pop}ifelse}def/initmatrix{matrix setmatrix}def/concat{ma" +"trix currentmatrix matrix concatmatrix setmatrix}def/makepattern{gsave<</mx 3 " +"-1 roll>>begin dup/XUID[1000000 @patcnt]put mx/makepattern sysexec dup dup beg" +"in PatternType @patcnt BBox aload pop XStep YStep PaintType mx aload pop 15(ma" +"kepattern)prcmd :newpath matrix setmatrix PaintProc 0 1(makepattern)prcmd end/" +"@patcnt @patcnt 1 add store end grestore}def/setpattern{begin PatternType 1 eq" +"{PaintType 1 eq{XUID aload pop exch pop 1}{:gsave[currentcolorspace aload leng" +"th -1 roll pop]setcolorspace/setcolor sysexec XUID aload pop exch pop currentr" +"gbcolor :grestore 4}ifelse(setpattern)prcmd}{/setpattern sysexec}ifelse end}de" +"f/setcolor{dup type/dicttype eq{setpattern}{/setcolor sysexec/currentrgbcolor " +"sysexec setrgbcolor}ifelse}def/setgray 1 defpr/setcmykcolor 4 defpr/sethsbcolo" +"r 3 defpr/setrgbcolor 3 defpr/.setopacityalpha{dup/.setopacityalpha sysexec 1(" +"setopacityalpha)prcmd}def/.setshapealpha{dup/.setshapealpha sysexec 1(setshape" +"alpha)prcmd}def/.setblendmode{dup/.setblendmode sysexec<</Normal 0/Compatible " +"0/Multiply 1/Screen 2/Overlay 3/SoftLight 4/HardLight 5/ColorDodge 6/ColorBurn" +" 7/Darken 8/Lighten 9/Difference 10/Exclusion 11/Hue 12/Saturation 13/Color 14" +"/Luminosity 15/CompatibleOverprint 16>>exch get 1(setblendmode)prcmd}def/@pdfp" +"agecount{(r)file runpdfbegin pdfpagecount runpdfend}def/@pdfpagebox{(r)file ru" +"npdfbegin dup dup 1 lt exch pdfpagecount gt or{pop}{pdfgetpage/MediaBox pget p" +"op aload pop}ifelse runpdfend}def DELAYBIND{.bindnow}if "; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp index 59320fa6d2d..77a11ff769a 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp @@ -22,7 +22,7 @@ #define VERSION_HPP constexpr const char *PROGRAM_NAME = "dvisvgm"; -constexpr const char *PROGRAM_VERSION = "2.8.1"; +constexpr const char *PROGRAM_VERSION = "2.8.2"; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-matchers.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-matchers.cc new file mode 100644 index 00000000000..7d2fb6851ec --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-matchers.cc @@ -0,0 +1,97 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// The Google C++ Testing and Mocking Framework (Google Test) +// +// This file implements just enough of the matcher interface to allow +// EXPECT_DEATH and friends to accept a matcher argument. + +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-port.h" +#include "gtest/gtest-matchers.h" + +#include <string> + +namespace testing { + +// Constructs a matcher that matches a const std::string& whose value is +// equal to s. +Matcher<const std::string&>::Matcher(const std::string& s) { *this = Eq(s); } + +// Constructs a matcher that matches a const std::string& whose value is +// equal to s. +Matcher<const std::string&>::Matcher(const char* s) { + *this = Eq(std::string(s)); +} + +// Constructs a matcher that matches a std::string whose value is equal to +// s. +Matcher<std::string>::Matcher(const std::string& s) { *this = Eq(s); } + +// Constructs a matcher that matches a std::string whose value is equal to +// s. +Matcher<std::string>::Matcher(const char* s) { *this = Eq(std::string(s)); } + +#if GTEST_HAS_ABSL +// Constructs a matcher that matches a const absl::string_view& whose value is +// equal to s. +Matcher<const absl::string_view&>::Matcher(const std::string& s) { + *this = Eq(s); +} + +// Constructs a matcher that matches a const absl::string_view& whose value is +// equal to s. +Matcher<const absl::string_view&>::Matcher(const char* s) { + *this = Eq(std::string(s)); +} + +// Constructs a matcher that matches a const absl::string_view& whose value is +// equal to s. +Matcher<const absl::string_view&>::Matcher(absl::string_view s) { + *this = Eq(std::string(s)); +} + +// Constructs a matcher that matches a absl::string_view whose value is equal to +// s. +Matcher<absl::string_view>::Matcher(const std::string& s) { *this = Eq(s); } + +// Constructs a matcher that matches a absl::string_view whose value is equal to +// s. +Matcher<absl::string_view>::Matcher(const char* s) { + *this = Eq(std::string(s)); +} + +// Constructs a matcher that matches a absl::string_view whose value is equal to +// s. +Matcher<absl::string_view>::Matcher(absl::string_view s) { + *this = Eq(std::string(s)); +} +#endif // GTEST_HAS_ABSL + +} // namespace testing diff --git a/Build/source/texk/dvisvgm/version.ac b/Build/source/texk/dvisvgm/version.ac index 9a9881d8053..69f07a5c681 100644 --- a/Build/source/texk/dvisvgm/version.ac +++ b/Build/source/texk/dvisvgm/version.ac @@ -9,4 +9,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current dvisvgm version -m4_define([dvisvgm_version], [2.8.1]) +m4_define([dvisvgm_version], [2.8.2]) |