summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/xetexdir/xetex.web
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2015-07-09 09:58:58 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2015-07-09 09:58:58 +0000
commit6aa42e9542ae53019b0b01f7190cbf5e65968a98 (patch)
tree3b1c268ed6e999ecafa288d182fceaf419d8d4a6 /Build/source/texk/web2c/xetexdir/xetex.web
parentdf15ab91475b7cbb2c100dd94e990e5e85fea546 (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.web55
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: