diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-05-06 07:34:34 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-05-06 07:34:34 +0000 |
commit | 526582da8c8fabccfebea407a9da54822daa4f88 (patch) | |
tree | 6a43246601863a43f773d3ac3f3228223f52958a /Build/source/texk/web2c/lib | |
parent | dab66ac6e4a0df1662c67937c13535fcbd1148b3 (diff) |
pdfTeX, e-(u)pTeX: Slightly reorganize to avoid duplicat code
git-svn-id: svn://tug.org/texlive/trunk@33876 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/lib')
-rw-r--r-- | Build/source/texk/web2c/lib/ChangeLog | 6 | ||||
-rw-r--r-- | Build/source/texk/web2c/lib/texmfmp.c | 55 |
2 files changed, 61 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/lib/ChangeLog b/Build/source/texk/web2c/lib/ChangeLog index 26ff9fcb5d7..6b208404b3e 100644 --- a/Build/source/texk/web2c/lib/ChangeLog +++ b/Build/source/texk/web2c/lib/ChangeLog @@ -1,3 +1,9 @@ +2014-05-06 Peter Breitenlohner <peb@mppmu.mpg.de> + + Update to e-pTeX and e-upTeX from Akira Kakuto. + * texmfmp.c (getfiledump): Move definition of this function + also used by e-(u)pTeX from ../pdftexdir/utils.c to here. + 2014-01-20 Akira Kakuto <kakuto@fuk.kinidai.ac.jp> * printversion.c: 2013 ---> 2014. diff --git a/Build/source/texk/web2c/lib/texmfmp.c b/Build/source/texk/web2c/lib/texmfmp.c index e45e8446d01..d6cdb401136 100644 --- a/Build/source/texk/web2c/lib/texmfmp.c +++ b/Build/source/texk/web2c/lib/texmfmp.c @@ -2990,6 +2990,61 @@ void getfilesize(integer s) xfree(file_name); } + +void getfiledump(integer 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) { + xfree(file_name); + return; + } + recorder_record_input(file_name); + if (fseek(f, offset, SEEK_SET) != 0) { + xfree(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; + } + xfree(file_name); +} #endif /* e-pTeX or e-upTeX */ #endif /* TeX */ |