diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2015-07-09 09:58:58 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2015-07-09 09:58:58 +0000 |
commit | 6aa42e9542ae53019b0b01f7190cbf5e65968a98 (patch) | |
tree | 3b1c268ed6e999ecafa288d182fceaf419d8d4a6 /Build/source/texk/web2c/xetexdir/xetex.web | |
parent | df15ab91475b7cbb2c100dd94e990e5e85fea546 (diff) |
XeTeX: Added \pdfmdfivesum, Version 0.99993
git-svn-id: svn://tug.org/texlive/trunk@37818 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/xetexdir/xetex.web')
-rw-r--r-- | Build/source/texk/web2c/xetexdir/xetex.web | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/Build/source/texk/web2c/xetexdir/xetex.web b/Build/source/texk/web2c/xetexdir/xetex.web index e49d6495c9e..317aab23738 100644 --- a/Build/source/texk/web2c/xetexdir/xetex.web +++ b/Build/source/texk/web2c/xetexdir/xetex.web @@ -315,8 +315,8 @@ known as `\eTeX'. @d eTeX_version_string=='-2.6' {current \eTeX\ version} @# @d XeTeX_version=0 { \.{\\XeTeXversion} } -@d XeTeX_revision==".99992" { \.{\\XeTeXrevision} } -@d XeTeX_version_string=='-0.99992' {current \XeTeX\ version} +@d XeTeX_revision==".99993" { \.{\\XeTeXrevision} } +@d XeTeX_version_string=='-0.99993' {current \XeTeX\ version} @# @d XeTeX_banner=='This is XeTeX, Version 3.14159265',eTeX_version_string,XeTeX_version_string {printed when \XeTeX\ starts} @@ -6061,7 +6061,7 @@ A global boolean variable called |no_new_control_sequence| is set to @ Primitive support needs a few extra variables and definitions -@d prim_size=480 {maximum number of primitives } +@d prim_size=481 {maximum number of primitives } @d prim_prime=409 {about 85\pct! of |primitive_size|} @d prim_base=1 @d prim_next(#) == prim[#].lh {link for coalesced lists} @@ -9492,12 +9492,13 @@ the codes for its extensions: |eTeX_version_code|, \dots\ . @d pdf_last_x_pos_code = XeTeX_int+27 @d pdf_last_y_pos_code = XeTeX_int+28 @d pdf_strcmp_code = XeTeX_int+29 -@d pdf_shell_escape_code = XeTeX_int+30 +@d pdf_mdfive_sum_code = XeTeX_int+30 +@d pdf_shell_escape_code = XeTeX_int+31 -@d XeTeX_pdf_page_count_code = XeTeX_int+31 +@d XeTeX_pdf_page_count_code = XeTeX_int+32 @# -@d XeTeX_dim=XeTeX_int+32 {first of \XeTeX\ codes for dimensions} +@d XeTeX_dim=XeTeX_int+33 {first of \XeTeX\ codes for dimensions} @d XeTeX_glyph_bounds_code = XeTeX_dim @@ -10545,6 +10546,7 @@ convert: case chr_code of meaning_code: print_esc("meaning"); font_name_code: print_esc("fontname"); pdf_strcmp_code: print_esc("strcmp"); + pdf_mdfive_sum_code: print_esc("pdfmdfivesum"); left_margin_kern_code: print_esc("leftmarginkern"); right_margin_kern_code: print_esc("rightmarginkern"); @/@<Cases of |convert| for |print_cmd_chr|@>@/ @@ -10565,6 +10567,8 @@ we have to create a temporary string that is destroyed immediately after. @p procedure conv_toks; var old_setting:0..max_selector; {holds |selector| setting} @!save_warning_index, @!save_def_ref:pointer; +@!boolvar: boolean; {temp boolean} +@!s: str_number; @!u: str_number; @!c:small_number; {desired type of conversion} @!save_scanner_status:small_number; {|scanner_status| upon entry} @@ -28776,6 +28780,11 @@ begin tokens_to_string:=make_string; end; +procedure scan_pdf_ext_toks; +begin + call_func(scan_toks(false, true)); {like \.{\\special}} +end; + procedure compare_strings; {to implement \.{\\strcmp}} label done; var s1, s2: str_number; @@ -29745,6 +29754,7 @@ primitive("XeTeXlastfontchar", last_item, XeTeX_last_char_code); primitive("pdflastxpos",last_item,pdf_last_x_pos_code); primitive("pdflastypos",last_item,pdf_last_y_pos_code); primitive("strcmp",convert,pdf_strcmp_code); +primitive("pdfmdfivesum",convert,pdf_mdfive_sum_code); primitive("shellescape",last_item,pdf_shell_escape_code); primitive("XeTeXpdfpagecount",last_item,XeTeX_pdf_page_count_code); @@ -30081,6 +30091,39 @@ pdf_strcmp_code: scanner_status:=save_scanner_status; restore_cur_string; end; + +pdf_mdfive_sum_code: + begin + save_scanner_status := scanner_status; + save_warning_index := warning_index; + save_def_ref := def_ref; + save_cur_string; + boolvar := scan_keyword("file"); + scan_pdf_ext_toks; + + if selector = new_string then + pdf_error("tokens", "tokens_to_string() called while selector = new_string"); + old_setting:=selector; selector:=new_string; + show_token_list(link(def_ref),null,pool_size-pool_ptr); + selector:=old_setting; + s:=make_string; + + delete_token_ref(def_ref); + def_ref := save_def_ref; + warning_index := save_warning_index; + scanner_status := save_scanner_status; + b := pool_ptr; + getmd5sum(s, boolvar); + link(garbage) := str_toks(b); + + if flushable(s) then + flush_string; + + ins_list(link(temp_head)); + restore_cur_string; + return; + end; + XeTeX_revision_code: do_nothing; XeTeX_variation_name_code: |