diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2014-05-05 15:20:05 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2014-05-05 15:20:05 +0000 |
commit | cadfe1d86c3647e87489c9b017b204bf81bf367c (patch) | |
tree | fc50cfbdd4d9c8c3adbca48071cfe0f6f9e9babb /Build/source/texk/web2c/euptexdir | |
parent | 4293a52a3030bd12a329509dec779b57e0323355 (diff) |
add a primitive pdffiledump for eptex and euptex
git-svn-id: svn://tug.org/texlive/trunk@33846 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/euptexdir')
-rw-r--r-- | Build/source/texk/web2c/euptexdir/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/texk/web2c/euptexdir/euptex.defines | 1 | ||||
-rw-r--r-- | Build/source/texk/web2c/euptexdir/euptexextra.c | 55 |
3 files changed, 61 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/euptexdir/ChangeLog b/Build/source/texk/web2c/euptexdir/ChangeLog index 420ad950715..0c1d747a896 100644 --- a/Build/source/texk/web2c/euptexdir/ChangeLog +++ b/Build/source/texk/web2c/euptexdir/ChangeLog @@ -1,3 +1,8 @@ +2014-05-05 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + * euptex.defines, and euptexextra.c: Add a primitive \pdffiledump + for euptex. + 2014-05-02 Peter Breitenlohner <peb@mppmu.mpg.de> * euptrip/euptrip.diffs: Updated for TL14. diff --git a/Build/source/texk/web2c/euptexdir/euptex.defines b/Build/source/texk/web2c/euptexdir/euptex.defines index 42d385120cc..3647f9c4f30 100644 --- a/Build/source/texk/web2c/euptexdir/euptex.defines +++ b/Build/source/texk/web2c/euptexdir/euptex.defines @@ -51,3 +51,4 @@ @define procedure getcreationdate; @define procedure getfilemoddate(); @define procedure getfilesize(); +@define procedure getfiledump(); diff --git a/Build/source/texk/web2c/euptexdir/euptexextra.c b/Build/source/texk/web2c/euptexdir/euptexextra.c index 1497c967625..d0c1b8d0af9 100644 --- a/Build/source/texk/web2c/euptexdir/euptexextra.c +++ b/Build/source/texk/web2c/euptexdir/euptexextra.c @@ -10,3 +10,58 @@ /* Hand-coded routines for TeX or Metafont in C. */ #include <lib/texmfmp.c> + +void getfiledump(int s, int offset, int length) +{ + FILE *f; + int read, i; + poolpointer data_ptr; + poolpointer data_end; + char *file_name; + + if (length == 0) { + /* empty result string */ + return; + } + + if (poolptr + 2 * length + 1 >= poolsize) { + /* no place for result */ + poolptr = poolsize; + /* error by str_toks that calls str_room(1) */ + return; + } + + file_name = kpse_find_tex(makecfilename(s)); + if (file_name == NULL) { + return; /* empty string */ + } + + /* read file data */ + f = fopen(file_name, FOPEN_RBIN_MODE); + if (f == NULL) { + free(file_name); + return; + } + recorder_record_input(file_name); + if (fseek(f, offset, SEEK_SET) != 0) { + free(file_name); + return; + } + /* there is enough space in the string pool, the read + data are put in the upper half of the result, thus + the conversion to hex can be done without overwriting + unconverted bytes. */ + data_ptr = poolptr + length; + read = fread(&strpool[data_ptr], sizeof(char), length, f); + fclose(f); + + /* convert to hex */ + data_end = data_ptr + read; + for (; data_ptr < data_end; data_ptr++) { + i = snprintf((char *) &strpool[poolptr], 3, + "%.2X", (unsigned int) strpool[data_ptr]); + check_nprintf(i, 3); + poolptr += i; + } + free(file_name); +} |