From ee438db5a4ca37c5c035722b514110388a0b5f23 Mon Sep 17 00:00:00 2001
From: Hironobu Yamashita <h.y.acetaminophen@gmail.com>
Date: Fri, 18 May 2018 16:27:41 +0000
Subject: [PATCH 03/20] eptexdir: new primitive \expanded from pdfTeX

git-svn-id: svn://tug.org/texlive/trunk/Build/source@47745 c570f23f-e606-0410-a88d-b1316a301751
---
 texk/web2c/eptexdir/ChangeLog       |  6 ++++
 texk/web2c/eptexdir/eptex-base.ch   |  3 +-
 texk/web2c/eptexdir/eptex.ech       |  4 +--
 texk/web2c/eptexdir/eptex_version.h |  2 +-
 texk/web2c/eptexdir/pdfutils.ch     | 48 +++++++++++++++++++++++------
 5 files changed, 49 insertions(+), 14 deletions(-)

diff --git a/texk/web2c/eptexdir/ChangeLog b/texk/web2c/eptexdir/ChangeLog
index 9545ce8dd..01656e245 100644
--- a/texk/web2c/eptexdir/ChangeLog
+++ b/texk/web2c/eptexdir/ChangeLog
@@ -1,3 +1,9 @@
+2018-05-18  Joseph Wright  <joseph.wright@morningstar2.co.uk>
+            Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
+
+	* eptex-base.ch, pdfutils.ch: New primitive \expanded
+	* eptex.ech, eptex_version.h: e-pTeX version 180518.
+
 2018-03-24  Hironori Kitagawa  <h_kitagawa2001@yahoo.co.jp>
             Hironobu Yamashita <h.y.acetaminophen@gmail.com>
 
diff --git a/texk/web2c/eptexdir/eptex-base.ch b/texk/web2c/eptexdir/eptex-base.ch
index 04aea3426..7f18c7b11 100644
--- a/texk/web2c/eptexdir/eptex-base.ch
+++ b/texk/web2c/eptexdir/eptex-base.ch
@@ -22,8 +22,7 @@
 %	+ eptexdir/eptex.ech		e-TeX+pTeX changes
 %	+ eptexdir/etex.ch1		glue
 %	+ eptexdir/fam256.ch		borrowed from Omega
-%	+ eptexdir/pdfstrcmp.ch		borrowed from pdfTeX
-%	+ eptexdir/pdfsavepos.ch	borrowed from pdfTeX
+%	+ eptexdir/pdfutils.ch		borrowed from pdfTeX
 %	+ tex-binpool.ch		compiled pool file
 %
 % where the three small files denoted as glue resolve incompatibilities
diff --git a/texk/web2c/eptexdir/eptex.ech b/texk/web2c/eptexdir/eptex.ech
index 5ab7d5da5..9bc07f804 100644
--- a/texk/web2c/eptexdir/eptex.ech
+++ b/texk/web2c/eptexdir/eptex.ech
@@ -22,8 +22,8 @@
 @y
 @d eTeX_version_string=='-2.6' {current \eTeX\ version}
 @#
-@d epTeX_version_string=='-180226'
-@d epTeX_version_number==180226
+@d epTeX_version_string=='-180518'
+@d epTeX_version_number==180518
 @z
 
 @x e-pTeX: banner
diff --git a/texk/web2c/eptexdir/eptex_version.h b/texk/web2c/eptexdir/eptex_version.h
index 6a3e4c6ed..c69432abf 100644
--- a/texk/web2c/eptexdir/eptex_version.h
+++ b/texk/web2c/eptexdir/eptex_version.h
@@ -1 +1 @@
-#define EPTEX_VERSION "180226"
+#define EPTEX_VERSION "180518"
diff --git a/texk/web2c/eptexdir/pdfutils.ch b/texk/web2c/eptexdir/pdfutils.ch
index 14e095ce6..6c92d3568 100644
--- a/texk/web2c/eptexdir/pdfutils.ch
+++ b/texk/web2c/eptexdir/pdfutils.ch
@@ -793,22 +793,38 @@ else if cur_tok=cs_token_flag+frozen_primitive then
 
 @x
 @d etex_convert_codes=etex_convert_base+1 {end of \eTeX's command codes}
+@d job_name_code=etex_convert_codes {command code for \.{\\jobname}}
 @y
-@d pdf_strcmp_code          = etex_convert_base+1 {command code for \.{\\pdfstrcmp}}
-@d pdf_creation_date_code   = etex_convert_base+2 {command code for \.{\\pdfcreationdate}}
-@d pdf_file_mod_date_code   = etex_convert_base+3 {command code for \.{\\pdffilemoddate}}
-@d pdf_file_size_code       = etex_convert_base+4 {command code for \.{\\pdffilesize}}
-@d pdf_mdfive_sum_code      = etex_convert_base+5 {command code for \.{\\pdfmdfivesum}}
-@d pdf_file_dump_code       = etex_convert_base+6 {command code for \.{\\pdffiledump}}
-@d uniform_deviate_code     = etex_convert_base+7 {command code for \.{\\pdfuniformdeviate}}
-@d normal_deviate_code      = etex_convert_base+8 {command code for \.{\\pdfnormaldeviate}}
-@d etex_convert_codes=etex_convert_base+9 {end of \eTeX's command codes}
+@d etex_convert_codes=etex_convert_base+1 {end of \eTeX's command codes}
+@d expanded_code            = etex_convert_codes {command code for \.{\\expanded}}
+@d pdf_first_expand_code    = expanded_code + 1 {base for \pdfTeX-like command codes}
+@d pdf_strcmp_code          = pdf_first_expand_code+0 {command code for \.{\\pdfstrcmp}}
+@d pdf_creation_date_code   = pdf_first_expand_code+1 {command code for \.{\\pdfcreationdate}}
+@d pdf_file_mod_date_code   = pdf_first_expand_code+2 {command code for \.{\\pdffilemoddate}}
+@d pdf_file_size_code       = pdf_first_expand_code+3 {command code for \.{\\pdffilesize}}
+@d pdf_mdfive_sum_code      = pdf_first_expand_code+4 {command code for \.{\\pdfmdfivesum}}
+@d pdf_file_dump_code       = pdf_first_expand_code+5 {command code for \.{\\pdffiledump}}
+@d uniform_deviate_code     = pdf_first_expand_code+6 {command code for \.{\\pdfuniformdeviate}}
+@d normal_deviate_code      = pdf_first_expand_code+7 {command code for \.{\\pdfnormaldeviate}}
+@d pdf_convert_codes        = pdf_first_expand_code+8 {end of \pdfTeX-like command codes}
+@d job_name_code=pdf_convert_codes {command code for \.{\\jobname}}
+@z
+
+@x
+primitive("jobname",convert,job_name_code);@/
+@y
+@#
+primitive("expanded",convert,expanded_code);@/ 
+@!@:expanded_}{\.{\\expanded} primitive@> 
+@#
+primitive("jobname",convert,job_name_code);@/
 @z
 
 @x
   eTeX_revision_code: print_esc("eTeXrevision");
 @y
   eTeX_revision_code: print_esc("eTeXrevision");
+  expanded_code:      print_esc("expanded");
   pdf_strcmp_code:        print_esc("pdfstrcmp");
   pdf_creation_date_code: print_esc("pdfcreationdate");
   pdf_file_mod_date_code: print_esc("pdffilemoddate");
@@ -857,6 +873,20 @@ u:=0; { will become non-nil if a string is already being built}
 eTeX_revision_code: do_nothing;
 @y
 eTeX_revision_code: do_nothing;
+expanded_code:
+  begin
+    save_scanner_status := scanner_status;
+    save_warning_index := warning_index;
+    save_def_ref := def_ref;
+    save_cur_string;
+    scan_pdf_ext_toks;
+    warning_index := save_warning_index;
+    scanner_status := save_scanner_status;
+    ins_list(link(def_ref));
+    def_ref := save_def_ref;
+    restore_cur_string;
+    return;
+  end;
 pdf_strcmp_code:
   begin
     save_scanner_status := scanner_status;
-- 
2.17.0

