From 1f88188d33aa368bed61fd2195622cd0649659b4 Mon Sep 17 00:00:00 2001 From: Hironobu Yamashita Date: Sat, 9 Sep 2017 17:17:10 +0000 Subject: \epTeXinputencoding works also with the terminal (H. Kitagawa and N. Abe) git-svn-id: svn://tug.org/texlive/trunk@45249 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/eptexdir/eptex.ech | 55 ++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 11 deletions(-) (limited to 'Build/source/texk/web2c/eptexdir/eptex.ech') diff --git a/Build/source/texk/web2c/eptexdir/eptex.ech b/Build/source/texk/web2c/eptexdir/eptex.ech index 5702c3a4b95..af94d280aad 100644 --- a/Build/source/texk/web2c/eptexdir/eptex.ech +++ b/Build/source/texk/web2c/eptexdir/eptex.ech @@ -339,18 +339,51 @@ epTeX_input_encoding_code:@; @x @ @= @y -@ @= - begin - scan_file_name; - pack_cur_name; - if setinfileenc(input_file[in_open],stringcast(name_of_file+1)) = false then - begin - wlog_cr; - wlog('Unknown encoding `'); - fputs(stringcast(name_of_file + 1), log_file); - wlog(''''); +@ @= +procedure eptex_set_input_encoding; +var j,k:integer; +begin + scan_file_name; + pack_cur_name; + if state=token_list then + begin k:=input_ptr-1; j:=-1; + while k>=0 do + begin if input_stack[k].state_field=token_list then decr(k) + else if input_stack[k].name_field>19 then + begin j:=input_stack[k].index_field; k:=-1; end + else begin j:=-(name+1); k:=-1; end + end end - end + else if name>19 then j:=index else j:=-(name+1); + if (j>=0) or (j=-1) or (j=-18) then begin + k:=true; + if j>= 0 then k:=setinfileenc(input_file[j],stringcast(name_of_file+1)) + else k:=setstdinenc(stringcast(name_of_file+1)); + if k = false then + begin begin_diagnostic; + print_nl("Unknown encoding `"); + case selector of + term_and_log: begin wterm(stringcast(name_of_file + 1)); + wlog(stringcast(name_of_file + 1)); end; + log_only: wlog(stringcast(name_of_file + 1)); + term_only: wterm(stringcast(name_of_file + 1)); + endcases; + print("'"); end_diagnostic(false); + end + end + else + begin begin_diagnostic; j:=-j-1; + print_ln; + print_nl("Warning: \epTeXinputencoding is ignored, since I am current reading"); + print_nl("from "); + if j>=18 then print("a pseudo file created by \scantokens.") + else begin print("input stream "); print_int(j); print("."); end; + end_diagnostic(false); + end +end; + +@ @= +eptex_set_input_encoding @ @= @z -- cgit v1.2.3