summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xBuild/source/texk/dvisvgm/configure57
-rw-r--r--Build/source/texk/dvisvgm/configure.ac2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/ChangeLog23
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-02-libdvisvgm-warnings59
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-03-libdvisvgm-uninitialized14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-04-libdvisvgm-virtual26
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CmdLineParserBase.h1
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/Color.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/ColorSpecialHandler.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CommandLine.h1
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/FontManager.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/InputReader.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/TpicSpecialHandler.cpp2
-rw-r--r--Build/source/texk/kpathsea/ChangeLog5
-rw-r--r--Build/source/texk/kpathsea/tex-file.c11
-rw-r--r--Build/source/utils/README7
16 files changed, 198 insertions, 20 deletions
diff --git a/Build/source/texk/dvisvgm/configure b/Build/source/texk/dvisvgm/configure
index d4b2bf9788e..dad5aefa40d 100755
--- a/Build/source/texk/dvisvgm/configure
+++ b/Build/source/texk/dvisvgm/configure
@@ -15648,6 +15648,63 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sqrt" >&5
+$as_echo_n "checking for library containing sqrt... " >&6; }
+if test "${ac_cv_search_sqrt+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sqrt ();
+int
+main ()
+{
+return sqrt ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' m; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_sqrt=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if test "${ac_cv_search_sqrt+set}" = set; then :
+ break
+fi
+done
+if test "${ac_cv_search_sqrt+set}" = set; then :
+
+else
+ ac_cv_search_sqrt=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sqrt" >&5
+$as_echo "$ac_cv_search_sqrt" >&6; }
+ac_res=$ac_cv_search_sqrt
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
## _KPSE_INIT: Initialize TL infrastructure
kpse_BLD=`(cd "./../../." && pwd)`
kpse_SRC=`(cd "$srcdir/../../." && pwd)`
diff --git a/Build/source/texk/dvisvgm/configure.ac b/Build/source/texk/dvisvgm/configure.ac
index a8aa3b2d5da..8cc8319d0ea 100644
--- a/Build/source/texk/dvisvgm/configure.ac
+++ b/Build/source/texk/dvisvgm/configure.ac
@@ -36,6 +36,8 @@ AC_DEFINE([DISABLE_GS], 1,
AC_DEFINE_UNQUOTED([TARGET_SYSTEM], ["$target"],
[The machine triplet of the target system])
+AC_SEARCH_LIBS([sqrt], [m])
+
KPSE_KPATHSEA_FLAGS
KPSE_ZLIB_FLAGS
KPSE_FREETYPE2_FLAGS
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/ChangeLog b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/ChangeLog
index 8a8e63385bb..addbb55bb6c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/ChangeLog
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/ChangeLog
@@ -1,3 +1,17 @@
+2009-11-14 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Added patch-03-libdvisvgm-uninitialized.
+ * src/InputReader.cpp (skipUntil): Avoid uninitialized variable.
+
+ Added patch-04-libdvisvgm-virtual.
+ * src/CmdLineParserBase.h, src/CommandLine.h: Added virtual
+ destructors because there are virtual functions.
+
+ Added patch-10-TL-help.
+ * src/dvisvgm.cpp (show_help): With our proxy configure.ac
+ PACKAGE_BUGREPORT is "tex-k@tug.org" and can't be used as email
+ for the copyright.
+
2009-11-13 Peter Breitenlohner <peb@mppmu.mpg.de>
Added patch-01-potracelib-warning.
@@ -5,8 +19,13 @@
potrace_version() from 'char *' to 'const char *'.
Added patch-02-libdvisvgm-warnings.
- * src/PsSpecialHandler.cpp (PsSpecialHandler::setdash): Casts
- from double to int.
+ * src/Color.cpp (float_to_byte): Cast from double to UInt8.
+ * src/Color.cpp (HSB2RGB),
+ src/ColorSpecialHandler.cpp (hsb_to_rgb),
+ src/PsSpecialHandler.cpp (setdash),
+ src/TpicSpecialHandler.cpp (drawArc): Casts from double to int.
* src/PsSpecialHandler.h (setlinecap, setlinejoin): Casts from
double to unsigned int.
+ * src/FontManager.cpp (vfFirstFontNum): Cast from unsigned int
+ to int.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-02-libdvisvgm-warnings b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-02-libdvisvgm-warnings
index 5dbaaf8e16f..63544c87c7e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-02-libdvisvgm-warnings
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-02-libdvisvgm-warnings
@@ -1,5 +1,50 @@
- Avoid compiler warnings.
+ Various casts to avoid compiler warnings.
+diff -ur dvisvgm-0.8.7.orig/src/Color.cpp dvisvgm-0.8.7/src/Color.cpp
+--- dvisvgm-0.8.7.orig/src/Color.cpp 2009-11-09 17:36:55.000000000 +0100
++++ dvisvgm-0.8.7/src/Color.cpp 2009-11-13 18:21:01.000000000 +0100
+@@ -32,7 +32,7 @@
+
+
+ static inline UInt8 float_to_byte (float v) {
+- return floor(255*v+0.5);
++ return (UInt8) (floor(255*v+0.5));
+ }
+
+
+@@ -101,7 +101,7 @@
+ rgb[0] = rgb[1] = rgb[2] = hsb[2];
+ else {
+ float h = hsb[0]-floor(hsb[0]);
+- int i = 6*h;
++ int i = (int) (6*h);
+ float f = 6*h-i;
+ float p = hsb[2]*(1-hsb[1]);
+ float q = hsb[2]*(1-hsb[1]*f);
+diff -ur dvisvgm-0.8.7.orig/src/ColorSpecialHandler.cpp dvisvgm-0.8.7/src/ColorSpecialHandler.cpp
+--- dvisvgm-0.8.7.orig/src/ColorSpecialHandler.cpp 2009-11-06 22:17:58.000000000 +0100
++++ dvisvgm-0.8.7/src/ColorSpecialHandler.cpp 2009-11-13 18:21:56.000000000 +0100
+@@ -49,7 +49,7 @@
+ rgb[0] = rgb[1] = rgb[2] = hsb[2];
+ else {
+ float h = hsb[0]-floor(hsb[0]);
+- int i = 6*h;
++ int i = (int) (6*h);
+ float f = 6*h-i;
+ float p = hsb[2]*(1-hsb[1]);
+ float q = hsb[2]*(1-hsb[1]*f);
+diff -ur dvisvgm-0.8.7.orig/src/FontManager.cpp dvisvgm-0.8.7/src/FontManager.cpp
+--- dvisvgm-0.8.7.orig/src/FontManager.cpp 2009-11-06 22:17:58.000000000 +0100
++++ dvisvgm-0.8.7/src/FontManager.cpp 2009-11-13 18:42:59.000000000 +0100
+@@ -100,7 +100,7 @@
+
+ int FontManager::vfFirstFontNum (VirtualFont *vf) const {
+ VfFirstFontMap::const_iterator it = _vfFirstFontMap.find(vf);
+- return (it == _vfFirstFontMap.end()) ? -1 : it->second;
++ return (it == _vfFirstFontMap.end()) ? -1 : (int) it->second;
+ }
+
+
diff -ur dvisvgm-0.8.7.orig/src/PsSpecialHandler.cpp dvisvgm-0.8.7/src/PsSpecialHandler.cpp
--- dvisvgm-0.8.7.orig/src/PsSpecialHandler.cpp 2009-11-09 17:36:55.000000000 +0100
+++ dvisvgm-0.8.7/src/PsSpecialHandler.cpp 2009-11-13 14:12:39.000000000 +0100
@@ -28,3 +73,15 @@ diff -ur dvisvgm-0.8.7.orig/src/PsSpecialHandler.h dvisvgm-0.8.7/src/PsSpecialHa
void setlinewidth (std::vector<double> &p) {_linewidth = p[0] ? p[0]*1.00375 : 0.5;}
void setmatrix (std::vector<double> &p);
void setmiterlimit (std::vector<double> &p) {_miterlimit = p[0]*1.00375;}
+diff -ur dvisvgm-0.8.7.orig/src/TpicSpecialHandler.cpp dvisvgm-0.8.7/src/TpicSpecialHandler.cpp
+--- dvisvgm-0.8.7.orig/src/TpicSpecialHandler.cpp 2009-11-06 22:17:58.000000000 +0100
++++ dvisvgm-0.8.7/src/TpicSpecialHandler.cpp 2009-11-13 18:20:12.000000000 +0100
+@@ -172,7 +172,7 @@
+ angle1 *= -1;
+ angle2 *= -1;
+ if (fabs(angle1) > PI2) {
+- int n = angle1/PI2;
++ int n = (int) (angle1/PI2);
+ angle1 = angle1 - n*PI2;
+ angle2 = angle2 - n*PI2;
+ }
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-03-libdvisvgm-uninitialized b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-03-libdvisvgm-uninitialized
new file mode 100644
index 00000000000..4b69380bc6e
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-03-libdvisvgm-uninitialized
@@ -0,0 +1,14 @@
+ Avoid uninitialized variable.
+
+diff -ur dvisvgm-0.8.7.orig/src/InputReader.cpp dvisvgm-0.8.7/src/InputReader.cpp
+--- dvisvgm-0.8.7.orig/src/InputReader.cpp 2009-11-06 22:17:58.000000000 +0100
++++ dvisvgm-0.8.7/src/InputReader.cpp 2009-11-13 18:26:47.000000000 +0100
+@@ -45,7 +45,7 @@
+ * @param[in] consume if true, the buffer pointer is moved to the first charater following string s
+ * @return true if s was found */
+ bool InputReader::skipUntil (const char *s, bool consume) {
+- bool found;
++ bool found = false;
+ while (!eof() && !(found = check(s, consume)))
+ get();
+ return found;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-04-libdvisvgm-virtual b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-04-libdvisvgm-virtual
new file mode 100644
index 00000000000..2a24096e311
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7-PATCHES/patch-04-libdvisvgm-virtual
@@ -0,0 +1,26 @@
+ Add virtual destructors to avoid compiler warning.
+
+ May actually be required, or just be a warning?
+
+diff -ur dvisvgm-0.8.7.orig/src/CmdLineParserBase.h dvisvgm-0.8.7/src/CmdLineParserBase.h
+--- dvisvgm-0.8.7.orig/src/CmdLineParserBase.h 2009-11-06 22:17:58.000000000 +0100
++++ dvisvgm-0.8.7/src/CmdLineParserBase.h 2009-11-13 18:55:12.000000000 +0100
+@@ -72,6 +72,7 @@
+ protected:
+ CmdLineParserBase () : _error(false) {}
+ CmdLineParserBase (const CmdLineParserBase &cmd) {}
++ virtual ~CmdLineParserBase () {}
+ virtual void init ();
+ virtual void error (const Option &opt, bool longopt, const char *msg) const;
+ bool checkArgPrefix (InputReader &ir, const Option &opt, bool longopt) const;
+diff -ur dvisvgm-0.8.7.orig/src/CommandLine.h dvisvgm-0.8.7/src/CommandLine.h
+--- dvisvgm-0.8.7.orig/src/CommandLine.h 2009-11-06 22:22:55.000000000 +0100
++++ dvisvgm-0.8.7/src/CommandLine.h 2009-11-13 18:55:09.000000000 +0100
+@@ -14,6 +14,7 @@
+ public:
+ CommandLine () {init();}
+ CommandLine (int argc, char **argv, bool printErrors) {parse(argc, argv, printErrors);}
++ virtual ~CommandLine () {}
+ void help () const;
+ void status () const;
+ int numOptions () const {return 22;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CmdLineParserBase.h b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CmdLineParserBase.h
index 24aaffbc132..2b76fb9dc94 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CmdLineParserBase.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CmdLineParserBase.h
@@ -72,6 +72,7 @@ class CmdLineParserBase
protected:
CmdLineParserBase () : _error(false) {}
CmdLineParserBase (const CmdLineParserBase &cmd) {}
+ virtual ~CmdLineParserBase () {}
virtual void init ();
virtual void error (const Option &opt, bool longopt, const char *msg) const;
bool checkArgPrefix (InputReader &ir, const Option &opt, bool longopt) const;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/Color.cpp b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/Color.cpp
index 7a85eadd79b..3424ee7c17c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/Color.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/Color.cpp
@@ -32,7 +32,7 @@ const Color Color::WHITE(UInt8(255), UInt8(255), UInt8(255));
static inline UInt8 float_to_byte (float v) {
- return floor(255*v+0.5);
+ return (UInt8) (floor(255*v+0.5));
}
@@ -101,7 +101,7 @@ void Color::HSB2RGB (const vector<float> &hsb, vector<float> &rgb) {
rgb[0] = rgb[1] = rgb[2] = hsb[2];
else {
float h = hsb[0]-floor(hsb[0]);
- int i = 6*h;
+ int i = (int) (6*h);
float f = 6*h-i;
float p = hsb[2]*(1-hsb[1]);
float q = hsb[2]*(1-hsb[1]*f);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/ColorSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/ColorSpecialHandler.cpp
index 99a25820092..77349ef51b1 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/ColorSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/ColorSpecialHandler.cpp
@@ -49,7 +49,7 @@ static void hsb_to_rgb (const vector<float> &hsb, vector<float> &rgb) {
rgb[0] = rgb[1] = rgb[2] = hsb[2];
else {
float h = hsb[0]-floor(hsb[0]);
- int i = 6*h;
+ int i = (int) (6*h);
float f = 6*h-i;
float p = hsb[2]*(1-hsb[1]);
float q = hsb[2]*(1-hsb[1]*f);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CommandLine.h b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CommandLine.h
index 91874d97bf9..f97f3dd71e0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CommandLine.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/CommandLine.h
@@ -14,6 +14,7 @@ class CommandLine : public CmdLineParserBase
public:
CommandLine () {init();}
CommandLine (int argc, char **argv, bool printErrors) {parse(argc, argv, printErrors);}
+ virtual ~CommandLine () {}
void help () const;
void status () const;
int numOptions () const {return 22;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/FontManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/FontManager.cpp
index 6d8fb154a3d..b87981badc8 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/FontManager.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/FontManager.cpp
@@ -100,7 +100,7 @@ int FontManager::fontnum (int id) const {
int FontManager::vfFirstFontNum (VirtualFont *vf) const {
VfFirstFontMap::const_iterator it = _vfFirstFontMap.find(vf);
- return (it == _vfFirstFontMap.end()) ? -1 : it->second;
+ return (it == _vfFirstFontMap.end()) ? -1 : (int) it->second;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/InputReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/InputReader.cpp
index 4ab8d4a12bb..9700a03c367 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/InputReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/InputReader.cpp
@@ -45,7 +45,7 @@ void InputReader::skipSpace () {
* @param[in] consume if true, the buffer pointer is moved to the first charater following string s
* @return true if s was found */
bool InputReader::skipUntil (const char *s, bool consume) {
- bool found;
+ bool found = false;
while (!eof() && !(found = check(s, consume)))
get();
return found;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/TpicSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/TpicSpecialHandler.cpp
index 9418215f39f..2e89c5643f2 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/TpicSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-0.8.7/src/TpicSpecialHandler.cpp
@@ -172,7 +172,7 @@ void TpicSpecialHandler::drawArc (double cx, double cy, double rx, double ry, do
angle1 *= -1;
angle2 *= -1;
if (fabs(angle1) > PI2) {
- int n = angle1/PI2;
+ int n = (int) (angle1/PI2);
angle1 = angle1 - n*PI2;
angle2 = angle2 - n*PI2;
}
diff --git a/Build/source/texk/kpathsea/ChangeLog b/Build/source/texk/kpathsea/ChangeLog
index c3267be31c0..86f0b66a105 100644
--- a/Build/source/texk/kpathsea/ChangeLog
+++ b/Build/source/texk/kpathsea/ChangeLog
@@ -1,3 +1,8 @@
+2009-11-14 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * tex-file.c (kpathsea_out_name_ok): Allow writing of .pl files.
+ From Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
+
2009-11-13 Peter Breitenlohner <peb@mppmu.mpg.de>
* tex-file.c (kpathsea_out_name_ok): On Windows disallow writing
diff --git a/Build/source/texk/kpathsea/tex-file.c b/Build/source/texk/kpathsea/tex-file.c
index bd29b7504b2..f34f58924e8 100644
--- a/Build/source/texk/kpathsea/tex-file.c
+++ b/Build/source/texk/kpathsea/tex-file.c
@@ -1182,6 +1182,9 @@ Isspace (char c)
return (c == ' ' || c == '\t');
}
+/* Create a list of executable suffixes of files not to be written. */
+#define EXE_SUFFIXES ".com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.ws;.tcl;.py;.pyw"
+
static void
mk_suffixlist (char ***ext)
{
@@ -1190,15 +1193,15 @@ mk_suffixlist (char ***ext)
int n;
#if defined(__CYGWIN__)
- v = (char *) xmalloc (71);
- strcpy (v, ".com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.ws;.tcl;.py;.pyw;.pl");
+ v = (char *) xmalloc (strlen (EXE_SUFFIXES) + 1);
+ strcpy (v, EXE_SUFFIXES);
#else
v = (char *) getenv ("PATHEXT");
if (v) /* strlwr() exists also in MingW */
(void) strlwr (v);
else {
- v = (char *) xmalloc (71);
- strcpy (v, ".com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.ws;.tcl;.py;.pyw;.pl");
+ v = (char *) xmalloc (strlen (EXE_SUFFIXES) + 1);
+ strcpy (v, EXE_SUFFIXES);
}
#endif
diff --git a/Build/source/utils/README b/Build/source/utils/README
index 6c8264c123c..e80a5d38e46 100644
--- a/Build/source/utils/README
+++ b/Build/source/utils/README
@@ -33,13 +33,6 @@ tpic2pdftex
vlna 1.2 - checked 26jun08
ftp://math.feld.cvut.cz/pub/olsak/vlna
-xz 4.999.9beta - checked 28aug09
- http://tukaani.org/xz/
- not done as part of normal build, here to provide sources for the
- binaries we distribute. Also so we can provide exactly the same
- version on all platforms; even if a newer version has been released,
- it should not be used without discussion.
-
xindy 2.3 - checked 24mar08
(with numerous adaptations for TL by Vladimir)