summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/src
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2013-06-26 10:10:01 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2013-06-26 10:10:01 +0000
commit4e17498848c230539b58d870938a77805039046d (patch)
tree9eac3775be9f2369a92665103a780d260f39afd4 /Build/source/texk/dvipdfm-x/src
parentd0c3117e5c8cea5fe0d1a44f1e71e52238eda87e (diff)
dvipdfm-x: Bug fix, Reduce dvipdfmx/xdvipdfmx diffs
git-svn-id: svn://tug.org/texlive/trunk@30951 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/src')
-rwxr-xr-xBuild/source/texk/dvipdfm-x/src/dvipdfmx.test2
-rw-r--r--Build/source/texk/dvipdfm-x/src/spc_dvips.c53
-rw-r--r--Build/source/texk/dvipdfm-x/src/spc_dvips.h5
-rw-r--r--Build/source/texk/dvipdfm-x/src/specials.c20
4 files changed, 79 insertions, 1 deletions
diff --git a/Build/source/texk/dvipdfm-x/src/dvipdfmx.test b/Build/source/texk/dvipdfm-x/src/dvipdfmx.test
index 56f7857e236..2a18fdf9be7 100755
--- a/Build/source/texk/dvipdfm-x/src/dvipdfmx.test
+++ b/Build/source/texk/dvipdfm-x/src/dvipdfmx.test
@@ -7,5 +7,5 @@
TEXMFCNF=${srcdir}/../../kpathsea \
DVIPDFMXINPUTS=${srcdir}/../data \
- dvipdfmx --help || exit 1
+ ./dvipdfmx --help || exit 1
diff --git a/Build/source/texk/dvipdfm-x/src/spc_dvips.c b/Build/source/texk/dvipdfm-x/src/spc_dvips.c
index bf5f4e5051c..07ea009172e 100644
--- a/Build/source/texk/dvipdfm-x/src/spc_dvips.c
+++ b/Build/source/texk/dvipdfm-x/src/spc_dvips.c
@@ -292,10 +292,63 @@ static struct spc_handler dvips_handlers[] = {
{"\" ", spc_handler_ps_default}
};
+#ifdef XETEX
+int
+spc_dvips_at_begin_document (void)
+{
+ FILE* fp;
+
+ /* This, together with \pscharpath support code, must be moved to xtex.pro header. */
+ global_defs = dpx_create_temp_file();
+ if (!global_defs) {
+ WARN("Failed to create temporary input file for PSTricks image conversion.");
+ return -1;
+ }
+
+ fp = fopen(global_defs, "wb");
+ fprintf(fp, "tx@Dict begin /STV {} def end\n");
+ fclose(fp);
+ return 0;
+}
+
+int
+spc_dvips_at_end_document (void)
+{
+ if (ps_headers) {
+ while (num_ps_headers > 0)
+ RELEASE(ps_headers[--num_ps_headers]);
+ free(ps_headers);
+ ps_headers = NULL;
+ }
+ dpx_delete_temp_file(global_defs, true);
+ dpx_delete_temp_file(page_defs, true);
+ return 0;
+}
+
+int
+spc_dvips_at_begin_page (void)
+{
+ if (page_defs) {
+ dpx_delete_temp_file(page_defs, true);
+ page_defs = 0;
+ }
+
+ put_stack_depth = -1;
+
+ return 0;
+}
+#endif
+
int
spc_dvips_at_end_page (void)
{
mps_eop_cleanup();
+#ifdef XETEX
+ if (!temporary_defs) {
+ dpx_delete_temp_file(temporary_defs, true);
+ temporary_defs = 0;
+ }
+#endif
return 0;
}
diff --git a/Build/source/texk/dvipdfm-x/src/spc_dvips.h b/Build/source/texk/dvipdfm-x/src/spc_dvips.h
index 85353786839..74b50ffa733 100644
--- a/Build/source/texk/dvipdfm-x/src/spc_dvips.h
+++ b/Build/source/texk/dvipdfm-x/src/spc_dvips.h
@@ -27,6 +27,11 @@
#include "specials.h"
+#ifdef XETEX
+extern int spc_dvips_at_begin_document (void);
+extern int spc_dvips_at_end_document (void);
+extern int spc_dvips_at_begin_page (void);
+#endif
extern int spc_dvips_at_end_page (void);
extern int spc_dvips_check_special (const char *buffer, long size);
diff --git a/Build/source/texk/dvipdfm-x/src/specials.c b/Build/source/texk/dvipdfm-x/src/specials.c
index d55860b25ed..dc5bf600028 100644
--- a/Build/source/texk/dvipdfm-x/src/specials.c
+++ b/Build/source/texk/dvipdfm-x/src/specials.c
@@ -49,6 +49,9 @@
#include "spc_misc.h"
#include "spc_color.h"
#include "spc_dvips.h"
+#ifdef XETEX
+#include "spc_xtx.h"
+#endif
#include "specials.h"
@@ -376,10 +379,27 @@ static struct {
spc_pdfm_setup_handler
},
+#ifdef XETEX
+ {"x:",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ spc_xtx_check_special,
+ spc_xtx_setup_handler
+ },
+#endif
+
{"ps:",
+#ifdef XETEX
+ spc_dvips_at_begin_document,
+ spc_dvips_at_end_document,
+ spc_dvips_at_begin_page,
+#else
NULL,
NULL,
NULL,
+#endif
spc_dvips_at_end_page,
spc_dvips_check_special,
spc_dvips_setup_handler