[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[texlive-bin] 01/03: pick several fixes for (e)ptex, mendex, and tex4ht



This is an automated email from the git hooks/post-receive script.

preining pushed a commit to branch master
in repository texlive-bin.

commit 96f5b788af5b24dfe0277878db816d264ed69ba1
Author: Norbert Preining <preining@debian.org>
Date:   Sat Oct 1 14:55:43 2016 +0900

    pick several fixes for (e)ptex, mendex, and tex4ht
---
 debian/changelog                                   |  14 +-
 debian/patches/series                              |   6 +
 .../upstream-svn41762-ptex-savepos-improved        |  54 +++
 ...eam-svn41998-ptex-eptex-allow-only-8bit-catcode | 207 ++++++++++
 debian/patches/upstream-svn42040-ptex-add-ifmbox   | 435 +++++++++++++++++++++
 debian/patches/upstream-svn42041-eptex-fix         |  86 ++++
 .../upstream-svn42110-tex4ht-xetex-compatibility   |  29 ++
 debian/patches/upstream-svn42167-mendex-fix        |  25 ++
 8 files changed, 852 insertions(+), 4 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 2b5334c..34b0259 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,16 @@
-texlive-bin (2016.20160513.41080-7) UNRELEASED; urgency=medium
+texlive-bin (2016.20160513.41080-7) unstable; urgency=medium
 
-  * UNRELEASED
   * do not install tex4ht dangling symlinks, leave that to tl-htmlxml
     (Closes: #835803)
-
- -- Norbert Preining <preining@debian.org>  Mon, 29 Aug 2016 11:18:10 +0900
+  * cherrypick several upstream fixes:
+    - svn41762 improve (e)ptex savepos
+    - svn41998 (e)ptex: allow only 8bit catcode
+    - svn42040 add ifmbox primitive to ptex
+    - svn42041 adapt eptex for ifmbox
+    - svn42110 fix tex4ht's compatibility with xetex
+    - svn42167 fix for mendex
+
+ -- Norbert Preining <preining@debian.org>  Sat, 01 Oct 2016 14:53:05 +0900
 
 texlive-bin (2016.20160513.41080-6) unstable; urgency=medium
 
diff --git a/debian/patches/series b/debian/patches/series
index 8f4133a..1c9d04c 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -21,3 +21,9 @@ upstream-svn41417-rename-sdetp
 upstream-svn41418-pdftex-match-fix
 upstream-svn41497-svn41498-fix-upmendex
 upstream-svn41713-fix-pdftex-non-int-stemv
+upstream-svn41762-ptex-savepos-improved
+upstream-svn41998-ptex-eptex-allow-only-8bit-catcode
+upstream-svn42040-ptex-add-ifmbox
+upstream-svn42041-eptex-fix
+upstream-svn42110-tex4ht-xetex-compatibility
+upstream-svn42167-mendex-fix
diff --git a/debian/patches/upstream-svn41762-ptex-savepos-improved b/debian/patches/upstream-svn41762-ptex-savepos-improved
new file mode 100644
index 0000000..f1a8efe
--- /dev/null
+++ b/debian/patches/upstream-svn41762-ptex-savepos-improved
@@ -0,0 +1,54 @@
+diff --git a/texk/web2c/eptexdir/ChangeLog b/Build/source/texk/web2c/eptexdir/ChangeLog
+index 20c37df..d7807ae 100644
+--- a/texk/web2c/eptexdir/ChangeLog
++++ b/texk/web2c/eptexdir/ChangeLog
+@@ -1,3 +1,7 @@
++2016-07-29  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
++
++	* pdfutils.ch: Improve \pdfsavepos as pointed out by N. Abe.
++
+ 2016-03-04  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
+ 
+ 	* etex.ch1: Adapt to changes in ptexdir/ptex-base.ch.
+diff --git a/texk/web2c/eptexdir/pdfutils.ch b/Build/source/texk/web2c/eptexdir/pdfutils.ch
+index b5380c8..d800531 100644
+--- a/texk/web2c/eptexdir/pdfutils.ch
++++ b/texk/web2c/eptexdir/pdfutils.ch
+@@ -945,7 +945,7 @@ begin
+   pdf_last_x_pos := pdf_last_x_pos + 4736286;
+   case dvi_dir of
+   dir_tate,dir_dtou:
+-    pdf_last_y_pos := cur_page_width - pdf_last_y_pos - 4736286;
++    pdf_last_y_pos := cur_page_height - pdf_last_y_pos - 4736286;
+   dir_yoko:
+     pdf_last_y_pos := cur_page_height - pdf_last_y_pos - 4736286;
+   endcases;
+@@ -955,16 +955,24 @@ end
+ @ @<Calculate DVI page dimensions and margins@>=
+   if pdf_page_height <> 0 then
+     cur_page_height := pdf_page_height
++  else if (type(p)=dir_node) then begin
++    if (box_dir(list_ptr(p))=dir_tate)or(box_dir(list_ptr(p))=dir_dtou) then
++        cur_page_height := width(p) + 2*v_offset + 2*4736286
++    else
++      cur_page_height := height(p) + depth(p) + 2*v_offset + 2*4736286;
++    end
+   else
+     cur_page_height := height(p) + depth(p) + 2*v_offset + 2*4736286;
+   if pdf_page_width <> 0 then
+     cur_page_width := pdf_page_width
++  else if (type(p)=dir_node) then begin
++    if (box_dir(list_ptr(p))=dir_tate)or(box_dir(list_ptr(p))=dir_dtou) then
++      cur_page_width := height(p) + depth(p) + 2*h_offset + 2*4736286
++    else
++      cur_page_width := width(p) + 2*h_offset + 2*4736286;
++    end
+   else
+     cur_page_width := width(p) + 2*h_offset + 2*4736286;
+-  if (type(p)=dir_node) then
+-    if (box_dir(list_ptr(p))=dir_tate)or(box_dir(list_ptr(p))=dir_dtou) then begin
+-      t:=cur_page_height; cur_page_height:=cur_page_width;
+-      cur_page_width:=t; end;
+ 
+ 
+ @ Of course \epTeX\ can produce a \.{DVI} file only, not a PDF file.
diff --git a/debian/patches/upstream-svn41998-ptex-eptex-allow-only-8bit-catcode b/debian/patches/upstream-svn41998-ptex-eptex-allow-only-8bit-catcode
new file mode 100644
index 0000000..ad4ce2b
--- /dev/null
+++ b/debian/patches/upstream-svn41998-ptex-eptex-allow-only-8bit-catcode
@@ -0,0 +1,207 @@
+diff --git a/texk/web2c/eptexdir/ChangeLog b/Build/source/texk/web2c/eptexdir/ChangeLog
+index d7807ae..bff411c 100644
+--- a/texk/web2c/eptexdir/ChangeLog
++++ b/texk/web2c/eptexdir/ChangeLog
+@@ -1,3 +1,7 @@
++2016-09-06  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
++
++	* fam256.ch: Allow only 8bit arguments for \catcode etc.
++
+ 2016-07-29  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
+ 
+ 	* pdfutils.ch: Improve \pdfsavepos as pointed out by N. Abe.
+diff --git a/texk/web2c/eptexdir/fam256.ch b/Build/source/texk/web2c/eptexdir/fam256.ch
+index f0e3c34..257cfdb 100644
+--- a/texk/web2c/eptexdir/fam256.ch
++++ b/texk/web2c/eptexdir/fam256.ch
+@@ -270,13 +270,15 @@ char_given,math_given: scanned_result(cur_chr)(int_val);
+ %-----------------------------------------------
+ @x
+ @ @<Fetch a character code from some table@>=
+-begin scan_char_num;
+-if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val)
++begin
++if m=math_code_base then
++  begin scan_ascii_num;
++  scanned_result(ho(math_code(cur_val)))(int_val); end
+ @y
+ @ @<Fetch a character code from some table@>=
+-begin scan_char_num;
++begin
+ if m=math_code_base then begin
+-  cur_val1:=ho(math_code(cur_val));
++  scan_ascii_num; cur_val1:=ho(math_code(cur_val));
+   if ((cur_val1 div @"10000)>8) or
+      (((cur_val1 mod @"10000) div @"100)>15) then
+     begin print_err("Extended mathchar used as mathchar");
+@@ -289,14 +291,14 @@ if m=math_code_base then begin
+   scanned_result(cur_val1)(int_val);
+   end
+ else if m=(math_code_base+128) then begin
+-  cur_val1:=ho(math_code(cur_val));
++  scan_ascii_num; cur_val1:=ho(math_code(cur_val));
+   cur_val:=(cur_val1 div @"10000) * @"1000000 
+            +((cur_val1 div @"100) mod @"100) * @"10000
+            +(cur_val1 mod @"100);
+   scanned_result(cur_val)(int_val);
+   end
+ else if m=del_code_base then begin
+-  cur_val1:=del_code(cur_val); cur_val:=del_code1(cur_val);
++  scan_ascii_num; cur_val1:=del_code(cur_val); cur_val:=del_code1(cur_val);
+   if ((cur_val1 div @"100) mod @"100 >= 16) or (cur_val>=@"1000) then
+   begin print_err("Extended delimiter code used as delcode");
+ @.Bad delimiter code@>
+@@ -308,7 +310,7 @@ else if m=del_code_base then begin
+   end
+ else if m=(del_code_base+128) then begin
+   { Aleph seems \.{\\odelcode} always returns $-1$.}
+-  scanned_result(-1)(int_val);
++  scan_ascii_num; scanned_result(-1)(int_val);
+   end
+ @z
+ %-----------------------------------------------
+@@ -1176,11 +1178,10 @@ primitive("odelcode",def_code,del_code_base+128);
+ def_code: begin
+   @<Let |m| be the minimal legal code value, based on |cur_chr|@>;
+   @<Let |n| be the largest legal code value, based on |cur_chr|@>;
+-  p:=cur_chr; scan_char_num;
+-  if p=kcat_code_base then p:=p+kcatcodekey(cur_val) 
+-  else if not is_char_ascii(cur_val) then p:=p+Hi(cur_val) 
+-    { If |cur_val| is a KANJI code, we use its upper half, as the case of retrieving. }
+-  else p:=p+cur_val;
++  p:=cur_chr;
++  if p=kcat_code_base then
++    begin scan_char_num; p:=p+kcatcodekey(cur_val) end
++  else begin scan_ascii_num; p:=p+cur_val; end;
+   scan_optional_equals; scan_int;
+   if ((cur_val<m)and(p<del_code_base))or(cur_val>n) then
+   begin print_err("Invalid code ("); print_int(cur_val);
+@@ -1207,28 +1208,26 @@ def_code: begin
+ @y
+ @<Assignments@>=
+ def_code: begin
+- if cur_chr=(del_code_base+128) then begin
+-   p:=cur_chr-128; scan_char_num; p:=p+cur_val; scan_optional_equals;
+-   scan_int; cur_val1:=cur_val; scan_int; {backwards}
+-   if (cur_val1>@"FFFFFF) or (cur_val>@"FFFFFF) then
+-     begin print_err("Invalid code ("); print_int(cur_val1); print(" ");
+-     print_int(cur_val);
+-     print("), should be at most ""FFFFFF ""FFFFFF");
+-     help1("I'm going to use 0 instead of that illegal code value.");@/
+-     error; cur_val1:=0; cur_val:=0;
+-     end;
+-   cur_val1:=(cur_val1 div @"10000)*@"100+(cur_val1 mod @"100);
+-   cur_val:=(cur_val div @"10000)*@"100+(cur_val mod @"100);
+-   del_word_define(p,cur_val1,cur_val);
+-   end
++  if cur_chr=(del_code_base+128) then begin
++    p:=cur_chr-128; scan_ascii_num; p:=p+cur_val; scan_optional_equals;
++    scan_int; cur_val1:=cur_val; scan_int; {backwards}
++    if (cur_val1>@"FFFFFF) or (cur_val>@"FFFFFF) then
++      begin print_err("Invalid code ("); print_int(cur_val1); print(" ");
++      print_int(cur_val);
++      print("), should be at most ""FFFFFF ""FFFFFF");
++      help1("I'm going to use 0 instead of that illegal code value.");@/
++      error; cur_val1:=0; cur_val:=0;
++      end;
++    cur_val1:=(cur_val1 div @"10000)*@"100+(cur_val1 mod @"100);
++    cur_val:=(cur_val div @"10000)*@"100+(cur_val mod @"100);
++    del_word_define(p,cur_val1,cur_val);
++    end
+   else begin
+     @<Let |m| be the minimal legal code value, based on |cur_chr|@>;
+     @<Let |n| be the largest legal code value, based on |cur_chr|@>;
+-    p:=cur_chr; cur_val1:=p; scan_char_num;
+-    if p=kcat_code_base then p:=p+kcatcodekey(cur_val) 
+-    else if not is_char_ascii(cur_val) then p:=p+Hi(cur_val) 
+-      { If |cur_val| is a KANJI code, we use its upper half, as the case of retrieving. }
+-    else p:=p+cur_val;
++    p:=cur_chr; cur_val1:=p;
++    if p=kcat_code_base then begin scan_char_num; p:=p+kcatcodekey(cur_val) end
++    else begin scan_ascii_num; p:=p+cur_val; end;
+     scan_optional_equals; scan_int;
+     if ((cur_val<m)and(p<del_code_base))or(cur_val>n) then
+     begin print_err("Invalid code ("); print_int(cur_val);
+diff --git a/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog
+index 32ea821..f0e1e4e 100644
+--- a/texk/web2c/ptexdir/ChangeLog
++++ b/texk/web2c/ptexdir/ChangeLog
+@@ -1,3 +1,7 @@
++2016-09-06  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
++
++	* ptex-base.ch: Allow only 8bit arguments for \catcode etc.
++
+ 2016-06-06  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
+ 
+ 	* ptex-base.ch: Fix a bug in check_box().
+diff --git a/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch
+index f8ebc5d..a40aa7a 100644
+--- a/texk/web2c/ptexdir/ptex-base.ch
++++ b/texk/web2c/ptexdir/ptex-base.ch
+@@ -2008,22 +2008,24 @@ toks_register,assign_toks,def_family,set_font,def_font,def_jfont,def_tfont:
+ @z
+ 
+ @x [26.414] l.8373 - pTeX:
++begin scan_char_num;
+ if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val)
+ else if m<math_code_base then scanned_result(equiv(m+cur_val))(int_val)
+ else scanned_result(eqtb[m+cur_val].int)(int_val);
+ @y
+-if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val)
+-else if m=kcat_code_base then scanned_result(equiv(m+kcatcodekey(cur_val)))(int_val)
++begin
++if m=math_code_base then
++  begin scan_ascii_num;
++  scanned_result(ho(math_code(cur_val)))(int_val); end
++else if m=kcat_code_base then
++  begin scan_char_num;
++  scanned_result(equiv(m+kcatcodekey(cur_val)))(int_val); end
+ else if m<math_code_base then { \.{\\lccode}, \.{\\uccode}, \.{\\sfcode}, \.{\\catcode} }
+-  begin if not is_char_ascii(cur_val) then
+-  scanned_result(equiv(m+Hi(cur_val)))(int_val)
+-  else scanned_result(equiv(m+cur_val))(int_val)
+-  end
++  begin scan_ascii_num;
++  scanned_result(equiv(m+cur_val))(int_val) end
+ else { \.{\\delcode} }
+-  begin if not is_char_ascii(cur_val) then
+-  scanned_result(eqtb[m+Hi(cur_val)].int)(int_val)
+-  else scanned_result(eqtb[m+cur_val].int)(int_val)
+-  end;
++  begin scan_ascii_num;
++  scanned_result(eqtb[m+cur_val].int)(int_val) end;
+ @z
+ 
+ @x [26.420] l.8474 - pTeX: Fetch a box dimension: dir_node
+@@ -2120,6 +2122,15 @@ if (cur_val<0)or(cur_val>255) then
+   end;
+ end;
+ @y
++procedure scan_ascii_num;
++begin scan_int;
++if (cur_val<0)or(cur_val>255) then
++  begin print_err("Bad character code");
++@.Bad character code@>
++  help2("A character number must be between 0 and 255.")@/
++    ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
++  end;
++end;
+ procedure scan_char_num;
+ begin scan_int;
+ if not is_char_ascii(cur_val) and not is_char_kanji(cur_val) then
+@@ -5819,11 +5830,10 @@ def_code: begin @<Let |n| be the largest legal code value, based on |cur_chr|@>;
+ def_code: begin
+   @<Let |m| be the minimal legal code value, based on |cur_chr|@>;
+   @<Let |n| be the largest legal code value, based on |cur_chr|@>;
+-  p:=cur_chr; scan_char_num;
+-  if p=kcat_code_base then p:=p+kcatcodekey(cur_val) 
+-  else if not is_char_ascii(cur_val) then p:=p+Hi(cur_val) 
+-    { If |cur_val| is a KANJI code, we use its upper half, as the case of retrieving. }
+-  else p:=p+cur_val;
++  p:=cur_chr;
++  if p=kcat_code_base then
++    begin scan_char_num; p:=p+kcatcodekey(cur_val) end
++  else begin scan_ascii_num; p:=p+cur_val; end;
+   scan_optional_equals; scan_int;
+   if ((cur_val<m)and(p<del_code_base))or(cur_val>n) then
+   begin print_err("Invalid code ("); print_int(cur_val);
diff --git a/debian/patches/upstream-svn42040-ptex-add-ifmbox b/debian/patches/upstream-svn42040-ptex-add-ifmbox
new file mode 100644
index 0000000..339a5fe
--- /dev/null
+++ b/debian/patches/upstream-svn42040-ptex-add-ifmbox
@@ -0,0 +1,435 @@
+diff --git a/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog
+index f0e1e4e..bd88b7e 100644
+--- a/texk/web2c/ptexdir/ChangeLog
++++ b/texk/web2c/ptexdir/ChangeLog
+@@ -1,3 +1,7 @@
++2016-09-12  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
++
++	* ptex-base.ch: New primitive \ifmbox to realize better box in math mode.
++
+ 2016-09-06  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
+ 
+ 	* ptex-base.ch: Allow only 8bit arguments for \catcode etc.
+diff --git a/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch
+index a40aa7a..3f31f30 100644
+--- a/texk/web2c/ptexdir/ptex-base.ch
++++ b/texk/web2c/ptexdir/ptex-base.ch
+@@ -363,9 +363,10 @@ In p\TeX\ the |subtype| field records the box direction |box_dir|.
+ @d hlist_node=0 {|type| of hlist nodes}
+ @d box_node_size=8 {number of words to allocate for a box node}
+ @#
+-@d box_dir(#) == (qo(subtype(#))) {direction of a box}
++@d dir_max = 5 {the maximal absolute value of direction}
++@d box_dir(#) == (qo(subtype(#))-dir_max) {direction of a box}
+ @d set_box_dir(#) == subtype(#):=set_box_dir_end
+-@d set_box_dir_end(#) == qi(#)
++@d set_box_dir_end(#) == qi(#)+dir_max
+ @#
+ @d dir_default = 0 {direction of the box, default Left to Right}
+ @d dir_dtou = 1 {direction of the box, Bottom to Top}
+@@ -401,7 +402,7 @@ glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
+ @y
+ width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null;
+ glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
+-space_ptr(p):=zero_glue; xspace_ptr(p):=zero_glue;
++space_ptr(p):=zero_glue; xspace_ptr(p):=zero_glue; set_box_dir(p)(dir_default);
+ add_glue_ref(zero_glue); add_glue_ref(zero_glue);
+ @z
+ 
+@@ -418,7 +419,7 @@ add_glue_ref(zero_glue); add_glue_ref(zero_glue);
+ var p:pointer; {the new node}
+ begin if type(b)>vlist_node then confusion("new_dir_node:not box");
+ p:=new_null_box; type(p):=dir_node; set_box_dir(p)(dir);
+-case box_dir(b) of
++case abs(box_dir(b)) of
+   dir_yoko: @<Yoko to other direction@>;
+   dir_tate: @<Tate to other direction@>;
+   dir_dtou: @<DtoU to other direction@>;
+@@ -468,7 +469,7 @@ end;
+ @d rule_node=3 {|type| of rule nodes}
+ @z
+ 
+-@x [10.140] l.3083 - pTeX: renumber ins_node, add ins_dir field
++@x [10.140] l.3083 - pTeX: renumber ins_node, add ins_dirh field
+ @d ins_node=3 {|type| of insertion nodes}
+ @d ins_node_size=5 {number of words to allocate for an insertion}
+ @d float_cost(#)==mem[#+1].int {the |floating_penalty| to be used}
+@@ -480,7 +481,8 @@ end;
+ @d float_cost(#)==mem[#+1].int {the |floating_penalty| to be used}
+ @d ins_ptr(#)==info(#+4) {the vertical list to be inserted}
+ @d split_top_ptr(#)==link(#+4) {the |split_top_skip| to be used}
+-@d ins_dir(#)==subtype(#+5) {direction of |ins_node|}
++@d ins_dir(#)==(subtype(#+5)-dir_max) {direction of |ins_node|}
++@d set_ins_dir(#) == subtype(#+5):=set_box_dir_end
+ @z
+ 
+ @x [10.141] l.3089 - pTeX: disp_node
+@@ -659,7 +661,7 @@ print(", natural size "); print_scaled(height(p));
+ @y
+ @ @<Display insertion |p|@>=
+ begin print_esc("insert"); print_int(qo(subtype(p)));
+-print_dir(ins_dir(p));
++print_dir(abs(ins_dir(p)));
+ print(", natural size "); print_scaled(height(p));
+ @z
+ 
+@@ -2035,7 +2037,7 @@ if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc;
+ begin scan_eight_bit_int; q:=box(cur_val);
+ if q=null then cur_val:=0
+ else  begin qx:=q;
+-  while (q<>null)and(box_dir(q)<>abs(direction)) do q:=link(q);
++  while (q<>null)and(abs(box_dir(q))<>abs(direction)) do q:=link(q);
+   if q=null then
+     begin r:=link(qx); link(qx):=null;
+     q:=new_dir_node(qx,abs(direction)); link(qx):=r;
+@@ -2346,6 +2348,7 @@ string_code:if cur_cs<>0 then sprint_cs(cur_cs)
+ @d if_tbox_code=if_mdir_code+1 { `\.{\\iftbox}' }
+ @d if_ybox_code=if_tbox_code+1 { `\.{\\ifybox}' }
+ @d if_dbox_code=if_ybox_code+1 { `\.{\\ifdbox}' }
++@d if_mbox_code=if_dbox_code+1 { `\.{\\ifmbox}' }
+ @z
+ 
+ @x [28.487] l.9887 - pTeX: iftdir, ifydir, ifddir, iftbox, ifybox, ifdbox
+@@ -2368,6 +2371,8 @@ primitive("ifybox",if_test,if_ybox_code);
+ @!@:if_ybox_}{\.{\\ifybox} primitive@>
+ primitive("ifdbox",if_test,if_dbox_code);
+ @!@:if_dbox_}{\.{\\ifdbox} primitive@>
++primitive("ifmbox",if_test,if_mbox_code);
++@!@:if_mbox_}{\.{\\ifmbox} primitive@>
+ @z
+ 
+ @x [28.488] l.9907 - pTeX: iftdir, ifydir, ifddir, iftbox, ifybox, ifdbox
+@@ -2381,6 +2386,7 @@ primitive("ifdbox",if_test,if_dbox_code);
+   if_tbox_code:print_esc("iftbox");
+   if_ybox_code:print_esc("ifybox");
+   if_dbox_code:print_esc("ifdbox");
++  if_mbox_code:print_esc("ifmbox");
+ @z
+ 
+ @x [28.501] l.10073 - pTeX: iftdir, ifydir, ifddir, iftbox, ifybox, ifdbox
+@@ -2390,7 +2396,7 @@ if_tdir_code: b:=(abs(direction)=dir_tate);
+ if_ydir_code: b:=(abs(direction)=dir_yoko);
+ if_ddir_code: b:=(abs(direction)=dir_dtou);
+ if_mdir_code: b:=(direction<0);
+-if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code, if_dbox_code:
++if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code, if_dbox_code, if_mbox_code:
+   @<Test box register status@>;
+ @z
+ 
+@@ -2406,9 +2412,10 @@ else begin
+   if type(p)=dir_node then p:=list_ptr(p);
+   if this_if=if_hbox_code then b:=(type(p)=hlist_node)
+   else if this_if=if_vbox_code then b:=(type(p)=vlist_node)
+-  else if this_if=if_tbox_code then b:=(box_dir(p)=dir_tate)
+-  else if this_if=if_ybox_code then b:=(box_dir(p)=dir_yoko)
+-  else b:=(box_dir(p)=dir_dtou);
++  else if this_if=if_tbox_code then b:=(abs(box_dir(p))=dir_tate)
++  else if this_if=if_ybox_code then b:=(abs(box_dir(p))=dir_yoko)
++  else if this_if=if_dbox_code then b:=(abs(box_dir(p))=dir_dtou)
++  else b:=(box_dir(p)<0);
+   end
+ @z
+ 
+@@ -3169,7 +3176,7 @@ if type(p)=dir_node then
+   free_node(del_node,box_node_size);
+   end;
+ flush_node_list(link(p)); link(p):=null;
+-if box_dir(p)<>dir_yoko then p:=new_dir_node(p,dir_yoko);
++if abs(box_dir(p))<>dir_yoko then p:=new_dir_node(p,dir_yoko);
+ @<Ship box |p| out@>;
+ @z
+ 
+@@ -3230,6 +3237,7 @@ var r:pointer; {the box node that will be returned}
+ q:=r+list_offset; link(q):=p;@/
+ h:=0; @<Clear dimensions to zero@>;
+ @y
++set_box_dir(r)(dir_default);
+ space_ptr(r):=cur_kanji_skip; xspace_ptr(r):=cur_xkanji_skip;
+ add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+ k:=cur_kanji_skip;
+@@ -3344,7 +3352,7 @@ begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node;
+ subtype(r):=min_quarterword; shift_amount(r):=0;
+ @y
+ begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node;
+-subtype(r):=min_quarterword; shift_amount(r):=0;
++subtype(r):=min_quarterword; shift_amount(r):=0; set_box_dir(r)(dir_default);
+ space_ptr(r):=zero_glue; xspace_ptr(r):=zero_glue;
+ add_glue_ref(zero_glue); add_glue_ref(zero_glue);
+ @z
+@@ -3526,15 +3534,19 @@ function shift_sub_exp_box(@!q:pointer):pointer;
+   { We assume that |math_type(q)=sub_exp_box| }
+   var d: halfword; {displacement}
+   begin
+-    if direction=dir_tate then d:=t_baseline_shift
+-    else d:=y_baseline_shift;
+-    if cur_style<script_style then 
+-      d:=xn_over_d(d,text_baseline_shift_factor, 1000)
+-    else if cur_style<script_script_style then 
+-      d:=xn_over_d(d,script_baseline_shift_factor, 1000)
+-    else
+-      d:=xn_over_d(d,scriptscript_baseline_shift_factor, 1000);
+-    shift_amount(info(q)):=shift_amount(info(q))-d;
++    if abs(direction)=abs(box_dir(info(q))) then begin
++      if abs(direction)=dir_tate then begin
++        if box_dir(info(q))=dir_tate then d:=t_baseline_shift
++        else d:=y_baseline_shift end
++      else d:=y_baseline_shift;
++      if cur_style<script_style then 
++        d:=xn_over_d(d,text_baseline_shift_factor, 1000)
++      else if cur_style<script_script_style then 
++        d:=xn_over_d(d,script_baseline_shift_factor, 1000)
++      else
++        d:=xn_over_d(d,scriptscript_baseline_shift_factor, 1000);
++      shift_amount(info(q)):=shift_amount(info(q))-d;
++    end;
+     math_type(q):=sub_box;
+     shift_sub_exp_box:=info(q);
+   end;
+@@ -3948,7 +3960,7 @@ glue_order(q):=glue_order(p); glue_sign(q):=glue_sign(p);
+ glue_set(q):=glue_set(p); shift_amount(q):=o;
+ r:=link(list_ptr(q)); s:=link(list_ptr(p));
+ @y
+-set_box_dir(q)(abs(direction));
++set_box_dir(q)(direction);
+ glue_order(q):=glue_order(p); glue_sign(q):=glue_sign(p);
+ glue_set(q):=glue_set(p); shift_amount(q):=o;
+ r:=link(list_ptr(q)); s:=link(list_ptr(p));
+@@ -3964,7 +3976,7 @@ s:=link(s); link(u):=new_null_box; u:=link(u); t:=t+width(s);
+ if mode=-vmode then width(u):=width(s)@+else
+   begin type(u):=vlist_node; height(u):=width(s);
+   end;
+-set_box_dir(u)(abs(direction))
++set_box_dir(u)(direction)
+ @z
+ 
+ @x [37.810] l.16564 - pTeX: unset box -> BOX
+@@ -3972,7 +3984,7 @@ width(r):=w; type(r):=hlist_node;
+ end
+ @y
+ width(r):=w; type(r):=hlist_node;
+-set_box_dir(r)(abs(direction));
++set_box_dir(r)(direction);
+ end
+ @z
+ 
+@@ -3980,7 +3992,7 @@ end
+ height(r):=w; type(r):=vlist_node;
+ @y
+ height(r):=w; type(r):=vlist_node;
+-set_box_dir(r)(abs(direction));
++set_box_dir(r)(direction);
+ @z
+ 
+ @x [38.816] l.16687 - pTeX: init chain, delete disp_node
+@@ -4451,7 +4463,7 @@ else height(r):=height(box(n))+depth(box(n));
+ @y
+ if box(n)=null then height(r):=0
+ else
+-  begin if ins_dir(p)<>box_dir(box(n)) then
++  begin if abs(ins_dir(p))<>abs(box_dir(box(n))) then
+     begin print_err("Insertions can only be added to a same direction vbox");
+ @.Insertions can only...@>
+     help3("Tut tut: You're trying to \insert into a")@/
+@@ -4478,9 +4490,9 @@ else  begin wait:=false; s:=last_ins_ptr(r); link(s):=ins_ptr(p);
+ if best_ins_ptr(r)=null then wait:=true
+ else  begin wait:=false;
+   n:=qo(subtype(p));
+-  case box_dir(box(n)) of
++  case abs(box_dir(box(n))) of
+     any_dir:
+-      if ins_dir(p)<>box_dir(box(n)) then begin
++      if abs(ins_dir(p))<>abs(box_dir(box(n))) then begin
+         print_err("Insertions can only be added to a same direction vbox");
+ @.Insertions can only...@>
+         help3("Tut tut: You're trying to \insert into a")@/
+@@ -4490,7 +4502,7 @@ else  begin wait:=false;
+         box(n):=new_null_box; last_ins_ptr(r):=box(n)+list_offset;
+       end;
+     othercases
+-      set_box_dir(box(n))(ins_dir(p));
++      set_box_dir(box(n))(abs(ins_dir(p)));
+   endcases;
+   s:=last_ins_ptr(r); link(s):=ins_ptr(p);
+ @z
+@@ -4511,7 +4523,7 @@ delete_glue_ref(space_ptr(box(n)));
+ delete_glue_ref(xspace_ptr(box(n)));
+ flush_node_list(link(box(n)));
+ free_node(box(n),box_node_size);
+-box(n):=vpack(temp_ptr,natural); set_box_dir(box(n))(ins_dir(p));
++box(n):=vpack(temp_ptr,natural); set_box_dir(box(n))(abs(ins_dir(p)));
+ @z
+ 
+ @x [46.1030] l.20687 -  pTeX:main_control
+@@ -4807,7 +4819,7 @@ q:pointer;
+   begin p:=link(cur_box); link(cur_box):=null;
+   while p<>null do begin
+     q:=p; p:=link(p);
+-    if box_dir(q)=abs(direction) then
++    if abs(box_dir(q))=abs(direction) then
+       begin list_ptr(q):=cur_box; cur_box:=q; link(cur_box):=null;
+       end
+     else begin
+@@ -4816,7 +4828,7 @@ q:pointer;
+       free_node(q,box_node_size);
+       end;
+   end;
+-  if box_dir(cur_box)<>abs(direction) then
++  if abs(box_dir(cur_box))<>abs(direction) then
+     cur_box:=new_dir_node(cur_box,abs(direction));
+   shift_amount(cur_box):=box_context;
+ @z
+@@ -4839,7 +4851,7 @@ q:pointer;
+     begin p:=link(cur_box); link(cur_box):=null;
+     while p<>null do
+       begin q:=p; p:=link(p);
+-      if box_dir(q)=abs(direction) then
++      if abs(box_dir(q))=abs(direction) then
+         begin list_ptr(q):=cur_box; cur_box:=q; link(cur_box):=null;
+         end
+       else begin
+@@ -4848,7 +4860,7 @@ q:pointer;
+         free_node(q,box_node_size);
+         end;
+       end;
+-    if box_dir(cur_box)<>abs(direction) then
++    if abs(box_dir(cur_box))<>abs(direction) then
+       cur_box:=new_dir_node(cur_box,abs(direction));
+     end;
+   leader_ptr(tail):=cur_box;
+@@ -4947,7 +4959,7 @@ if type(cur_box)=dir_node then
+   list_ptr(link(cur_box)):=null;
+   end
+ else
+-  if box_dir(cur_box)=dir_default then set_box_dir(cur_box)(abs(direction));
++  if box_dir(cur_box)=dir_default then set_box_dir(cur_box)(direction);
+ end
+ @z
+ 
+@@ -5009,10 +5021,10 @@ begin d:=box_max_depth;
+   unsave; save_ptr:=save_ptr-3;
+   if mode=-hmode then begin
+     cur_box:=hpack(link(head),saved(2),saved(1));
+-    set_box_dir(cur_box)(abs(direction)); pop_nest;
++    set_box_dir(cur_box)(direction); pop_nest;
+   end else begin
+     cur_box:=vpackage(link(head),saved(2),saved(1),d);
+-    set_box_dir(cur_box)(abs(direction)); pop_nest;
++    set_box_dir(cur_box)(direction); pop_nest;
+     if c=vtop_code then
+       @<Readjust the height and depth of |cur_box|, for \.{\\vtop}@>;
+   end;
+@@ -5041,7 +5053,7 @@ vmode+letter,vmode+other_char,vmode+char_num,vmode+char_given,
+ push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+ @y
+ inhibit_glue_flag := false;
+-push_nest; adjust_dir:=abs(direction);
++push_nest; adjust_dir:=direction;
+ mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+ @z
+ 
+@@ -5085,19 +5097,19 @@ insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q);
+ insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q);
+   d:=split_max_depth; f:=floating_penalty; unsave; decr(save_ptr);
+   {now |saved(0)| is the insertion number, or 255 for |vadjust|}
+-  p:=vpack(link(head),natural); set_box_dir(p)(abs(direction)); pop_nest;
++  p:=vpack(link(head),natural); set_box_dir(p)(direction); pop_nest;
+   if saved(0)<255 then
+     begin r:=get_node(ins_node_size);
+     type(r):=ins_node; subtype(r):=qi(saved(0));
+     height(r):=height(p)+depth(p); ins_ptr(r):=list_ptr(p);
+     split_top_ptr(r):=q; depth(r):=d; float_cost(r):=f;
+-    ins_dir(r):=box_dir(p);
++    set_ins_dir(r)(box_dir(p));
+     if not is_char_node(tail)and(type(tail)=disp_node) then
+       prev_append(r)
+     else tail_append(r);
+     end
+   else  begin
+-    if box_dir(p)<>adjust_dir then
++    if abs(box_dir(p))<>abs(adjust_dir) then
+       begin print_err("Direction Incompatible.");
+       help1("\vadjust's argument and outer vlist must have same direction.");
+       error; flush_node_list(list_ptr(p));
+@@ -5203,9 +5215,9 @@ if (abs(mode)=mmode)or((abs(mode)=vmode)and(type(p)<>vlist_node))or@|
+   ("And I can't open any boxes in math mode.");@/
+   error; return;
+ end;
+-case box_dir(p) of
++case abs(box_dir(p)) of
+   any_dir:
+-    if abs(direction)<>box_dir(p) then begin
++    if abs(direction)<>abs(box_dir(p)) then begin
+       print_err("Incompatible direction list can't be unboxed");
+       help2("Sorry, Pandora. (You sneaky devil.)")@/
+       ("I refuse to unbox a box in differrent direction.");@/
+@@ -5602,8 +5614,8 @@ vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2;
+ @y
+ vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2;
+   p:=vpack(link(head),saved(1),saved(0));
+-  set_box_dir(p)(abs(direction)); pop_nest;
+-  if box_dir(p)<>abs(direction) then p:=new_dir_node(p,abs(direction));
++  set_box_dir(p)(direction); pop_nest;
++  if abs(box_dir(p))<>abs(direction) then p:=new_dir_node(p,abs(direction));
+   tail_append(new_noad); type(tail):=vcenter_noad;
+   math_type(nucleus(tail)):=sub_box; info(nucleus(tail)):=p;
+   end;
+@@ -5692,7 +5704,7 @@ end
+ @x [48.1200] l.23203 - pTeX: adjust direction
+ push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+ @y
+-push_nest; adjust_dir:=abs(direction);
++push_nest; adjust_dir:=direction;
+ mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+ @z
+ 
+@@ -5888,10 +5900,10 @@ scan_normal_dimen;
+ if box(b)<>null then
+   begin q:=box(b); p:=link(q);
+   while p<>null do
+-    begin if abs(direction)=box_dir(p) then q:=p;
++    begin if abs(direction)=abs(box_dir(p)) then q:=p;
+     p:=link(p);
+     end;
+-  if box_dir(q)<>abs(direction) then
++  if abs(box_dir(q))<>abs(direction) then
+     begin p:=link(box(b)); link(box(b)):=null;
+     q:=new_dir_node(q,abs(direction)); list_ptr(q):=null;
+     link(q):=p; link(box(b)):=q;
+@@ -6838,16 +6850,16 @@ begin this_box:=temp_ptr;
+   temp_ptr:=list_ptr(this_box);
+   if (type(temp_ptr)<>hlist_node)and(type(temp_ptr)<>vlist_node) then
+     confusion("dir_out");
+-  case box_dir(this_box) of
++  case abs(box_dir(this_box)) of
+   dir_yoko:
+-    case box_dir(temp_ptr) of
++    case abs(box_dir(temp_ptr)) of
+     dir_tate: {Tate in Yoko}
+       begin cur_v:=cur_v-height(this_box); cur_h:=cur_h+depth(temp_ptr) end;
+     dir_dtou: {DtoU in Yoko}
+       begin cur_v:=cur_v+depth(this_box); cur_h:=cur_h+height(temp_ptr) end;
+     endcases;
+   dir_tate:
+-    case box_dir(temp_ptr) of
++    case abs(box_dir(temp_ptr)) of
+     dir_yoko: {Yoko in Tate}
+       begin cur_v:=cur_v+depth(this_box); cur_h:=cur_h+height(temp_ptr) end;
+     dir_dtou: {DtoU in Tate}
+@@ -6857,7 +6869,7 @@ begin this_box:=temp_ptr;
+       end;
+     endcases;
+   dir_dtou:
+-    case box_dir(temp_ptr) of
++    case abs(box_dir(temp_ptr)) of
+     dir_yoko: {Yoko in DtoU}
+       begin cur_v:=cur_v-height(this_box); cur_h:=cur_h+depth(temp_ptr) end;
+     dir_tate: {Tate in DtoU}
+@@ -6867,7 +6879,7 @@ begin this_box:=temp_ptr;
+       end;
+     endcases;
+   endcases;
+-  cur_dir_hv:=box_dir(temp_ptr);
++  cur_dir_hv:=abs(box_dir(temp_ptr));
+   if type(temp_ptr)=vlist_node then vlist_out@+else hlist_out;
+ end;
+ 
diff --git a/debian/patches/upstream-svn42041-eptex-fix b/debian/patches/upstream-svn42041-eptex-fix
new file mode 100644
index 0000000..939a8e9
--- /dev/null
+++ b/debian/patches/upstream-svn42041-eptex-fix
@@ -0,0 +1,86 @@
+diff --git a/texk/web2c/eptexdir/ChangeLog b/Build/source/texk/web2c/eptexdir/ChangeLog
+index bff411c..4d46f7a 100644
+--- a/texk/web2c/eptexdir/ChangeLog
++++ b/texk/web2c/eptexdir/ChangeLog
+@@ -1,3 +1,7 @@
++2016-09-12  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
++
++	* eptex.ech, pdfutils.ch: Realize better box in math mode.
++
+ 2016-09-06  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
+ 
+ 	* fam256.ch: Allow only 8bit arguments for \catcode etc.
+diff --git a/texk/web2c/eptexdir/eptex.ech b/Build/source/texk/web2c/eptexdir/eptex.ech
+index c2e41e7..767915e 100644
+--- a/texk/web2c/eptexdir/eptex.ech
++++ b/texk/web2c/eptexdir/eptex.ech
+@@ -51,15 +51,15 @@
+ In \eTeX\ the |subtype| field records the box direction mode |box_lr|.
+ @y
+ In \eTeX\ the |subtype| field records the box direction mode |box_lr|.
+-In \epTeX\ the |subtype| field is |qi(8*box_lr+box_dir)|.
++In \epTeX\ the |subtype| field is |qi(16*box_lr+box_dir)|.
+ @z
+ 
+ @x
+-@d box_dir(#) == (qo(subtype(#))) {direction of a box}
++@d box_dir(#) == (qo(subtype(#))-dir_max) {direction of a box}
+ @d set_box_dir(#) == subtype(#):=set_box_dir_end
+ @y
+-@d box_dir(#) == ((qo(subtype(#)))mod 8) {direction of a box}
+-@d set_box_dir(#) == subtype(#):=box_lr(#)*8+set_box_dir_end
++@d box_dir(#) == ((qo(subtype(#)))mod 16 - dir_max) {direction of a box}
++@d set_box_dir(#) == subtype(#):=box_lr(#)*16+set_box_dir_end
+ @z
+ 
+ @x [26.413] l.8343 - e-pTeX: scan_something_internal
+@@ -188,9 +188,9 @@ end
+ @d set_box_lr(#) ==  subtype(#):=set_box_lr_end
+ @d set_box_lr_end(#) == qi(#)
+ @y
+-@d box_lr(#) == ((qo(subtype(#)))div 8) {direction mode of a box}
+-@d set_box_lr(#) == subtype(#):=box_dir(#)+set_box_lr_end
+-@d set_box_lr_end(#) == qi(8*(#))
++@d box_lr(#) == ((qo(subtype(#)))div 16) {direction mode of a box}
++@d set_box_lr(#) == subtype(#):=box_dir(#)+dir_max+set_box_lr_end
++@d set_box_lr_end(#) == qi(16*(#))
+ @z
+ 
+ @x [45.996] l.19420
+diff --git a/texk/web2c/eptexdir/pdfutils.ch b/Build/source/texk/web2c/eptexdir/pdfutils.ch
+index d800531..9640f01 100644
+--- a/texk/web2c/eptexdir/pdfutils.ch
++++ b/texk/web2c/eptexdir/pdfutils.ch
+@@ -588,25 +588,25 @@ pdf_strcmp_code: print_int(cur_val);
+ @z
+ 
+ @x \[if]pdfprimitive
+-@d if_dbox_code=if_ybox_code+1 { `\.{\\ifdbox}' }
++@d if_mbox_code=if_dbox_code+1 { `\.{\\ifmbox}' }
+ @y
+-@d if_dbox_code=if_ybox_code+1 { `\.{\\ifdbox}' }
++@d if_mbox_code=if_dbox_code+1 { `\.{\\ifmbox}' }
+ @#
+-@d if_pdfprimitive_code=if_dbox_code+1 { `\.{\\ifpdfprimitive}' }
++@d if_pdfprimitive_code=if_mbox_code+1 { `\.{\\ifpdfprimitive}' }
+ @z
+ 
+ @x \[if]pdfprimitive
+-  if_dbox_code:print_esc("ifdbox");
++  if_mbox_code:print_esc("ifmbox");
+ @y
+-  if_dbox_code:print_esc("ifdbox");
++  if_mbox_code:print_esc("ifmbox");
+   if_pdfprimitive_code:print_esc("ifpdfprimitive");
+ @z
+ 
+ @x \[if]pdfprimitive
+-if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code, if_dbox_code:
++if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code, if_dbox_code, if_mbox_code:
+   @<Test box register status@>;
+ @y
+-if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code, if_dbox_code:
++if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code, if_dbox_code, if_mbox_code:
+   @<Test box register status@>;
+ if_pdfprimitive_code: begin
+   save_scanner_status:=scanner_status;
diff --git a/debian/patches/upstream-svn42110-tex4ht-xetex-compatibility b/debian/patches/upstream-svn42110-tex4ht-xetex-compatibility
new file mode 100644
index 0000000..184879b
--- /dev/null
+++ b/debian/patches/upstream-svn42110-tex4ht-xetex-compatibility
@@ -0,0 +1,29 @@
+---
+ texk/tex4htk/ChangeLog |    5 +++++
+ texk/tex4htk/tex4ht.c  |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+--- texlive-bin.orig/texk/tex4htk/ChangeLog
++++ texlive-bin/texk/tex4htk/ChangeLog
+@@ -1,3 +1,8 @@
++2016-09-21  Karl Berry  <karl@tug.org>
++
++	* tex4ht.c (main): allow any id byte <= 10, for xetex.
++	It was updated to 7 in XeTeX for TL 2016.
++
+ 2015-02-16  Peter Breitenlohner  <peb@mppmu.mpg.de>
+ 
+ 	* Makefile.am: Use the fragment ../../am/dist_hook.am.
+--- texlive-bin.orig/texk/tex4htk/tex4ht.c
++++ texlive-bin/texk/tex4htk/tex4ht.c
+@@ -6809,8 +6809,8 @@
+     ||
+     ((ch != 
+ 2 
+-) && (ch != 
+-5
++) && (ch >
++10
+ 
+ ))
+   )  bad_dvi;
diff --git a/debian/patches/upstream-svn42167-mendex-fix b/debian/patches/upstream-svn42167-mendex-fix
new file mode 100644
index 0000000..a55b3e1
--- /dev/null
+++ b/debian/patches/upstream-svn42167-mendex-fix
@@ -0,0 +1,25 @@
+diff --git a/texk/mendexk/ChangeLog b/Build/source/texk/mendexk/ChangeLog
+index f762c5d..d1a9abb 100644
+--- a/texk/mendexk/ChangeLog
++++ b/texk/mendexk/ChangeLog
+@@ -1,3 +1,7 @@
++2016-09-28  Hironobu Yamashita  <h.y.acetaminophen@gmail.com>
++
++	* styfile.c: Use mfgets() instead of fgets() in bfgets().
++
+ 2016-02-02  TANAKA Takuji  <ttk@t-lab.opal.ne.jp>
+ 
+ 	* mendex.1, mendex.doc: Convert encoding
+diff --git a/texk/mendexk/styfile.c b/Build/source/texk/mendexk/styfile.c
+index 0418966..e35256c 100644
+--- a/texk/mendexk/styfile.c
++++ b/texk/mendexk/styfile.c
+@@ -21,7 +21,7 @@ static char *
+ bfgets (char *buf, int size, FILE *fp)
+ {
+ 	char *p, *q;
+-	p = fgets (buf, size, fp);
++	p = mfgets (buf, size, fp);
+ 	for (q = buf; *q; q++) {
+ 		if(*q == '\r') {
+ 			*q++ = '\n';

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-tex/texlive-bin.git


Reply to: