diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-02-25 23:42:50 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-02-25 23:42:50 +0000 |
commit | 41e276fb01fea9657679a3af5b80672c1ca38576 (patch) | |
tree | d22fb7cccd9f1eb10dcd3e87c11cc01c8dfc2a87 /Build/source/texk | |
parent | 3a3f4c713291f6128a880e1e34a79a3c461acb67 (diff) |
web2c/mplibdir: sync with the upstream
git-svn-id: svn://tug.org/texlive/trunk@39870 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk')
-rw-r--r-- | Build/source/texk/web2c/mplibdir/ChangeLog | 13 | ||||
-rw-r--r-- | Build/source/texk/web2c/mplibdir/mpost.w | 54 |
2 files changed, 57 insertions, 10 deletions
diff --git a/Build/source/texk/web2c/mplibdir/ChangeLog b/Build/source/texk/web2c/mplibdir/ChangeLog index ab427c9c227..2aeb31bedab 100644 --- a/Build/source/texk/web2c/mplibdir/ChangeLog +++ b/Build/source/texk/web2c/mplibdir/ChangeLog @@ -1,3 +1,7 @@ +2015-12-16 Luigi Scarso <luigi.scarso@gmail.com> + Updated to cairo-1.14.6, gmp-6.1.0 and libpng-1.6.20. + Fixed some issues with tfm files. + 2015-11-11 Akira Kakuto <kakuto@fuk.kindai.ac.jp> * mp.w: Sync with the upstream. @@ -25,26 +29,25 @@ * mptraptest.test (new): ... into this. * am/mplib.am: Better dependencies for 'make check'. -2015-03-21 Luigi Scarso <luigi.scarso@gmail.com> +2015-03-21 Luigi Scarso <luigi.scarso@gmail.com> make_text for mplib only. -2015-03-19 Luigi Scarso <luigi.scarso@gmail.com> +2015-03-19 Luigi Scarso <luigi.scarso@gmail.com> Fixed normal rand. generator for double/decimal/binary systems. 2015-01-20 Luigi Scarso <luigi.scarso@gmail.com> - Added cur_sym_mod() == mp_normal_sym to the cur_sym==0 condition mp_cur_tok -2015-01-19 Luigi Scarso <luigi.scarso@gmail.com> +2015-01-19 Luigi Scarso <luigi.scarso@gmail.com> fixed a bug in mp_recycle_value with NULL node -2015-01-15 Luigi Scarso <luigi.scarso@gmail.com> +2015-01-15 Luigi Scarso <luigi.scarso@gmail.com> mpmathdecimal.w: better management for static data in mpmathdecimal.w (thanks to Philipp Gesang <phg@phi-gamma.net>) diff --git a/Build/source/texk/web2c/mplibdir/mpost.w b/Build/source/texk/web2c/mplibdir/mpost.w index cf87cceab7f..c419cdc25a2 100644 --- a/Build/source/texk/web2c/mplibdir/mpost.w +++ b/Build/source/texk/web2c/mplibdir/mpost.w @@ -47,6 +47,8 @@ static char *job_name = NULL; static char *job_area = NULL; static int dvitomp_only = 0; static int ini_version_test = false; +string output_directory; /* Defaults to NULL. */ + @<getopt structures@>; @<Declarations@>; @@ -538,15 +540,49 @@ static int get_random_seed (void) { @ @<Register the callback routines@>= options->random_seed = get_random_seed(); + +@ Handle -output-directory. + +@c +static char *mpost_find_in_output_directory(const char *s,const char *fmode) +{ + if (output_directory && !kpse_absolute_p(s, false)) { + char *ftemp = concat3(output_directory, DIR_SEP_STRING, s); + return ftemp; + } + return NULL; +} + + + @ @c static char *mpost_find_file(MP mp, const char *fname, const char *fmode, int ftype) { size_t l ; char *s; + char *ofname; (void)mp; s = NULL; - if (fname == NULL || (fmode[0]=='r' && !kpse_in_name_ok(fname)) || - (fmode[0]=='w' && !kpse_out_name_ok(fname))) + ofname = NULL ; + + + if (fname == NULL || (fmode[0]=='r' && !kpse_in_name_ok(fname)) ) return NULL; /* disallowed filename */ + + + if (fmode[0]=='w') { + if (output_directory) { + ofname = mpost_find_in_output_directory(fname,fmode); + if (ofname == NULL || (fmode[0]=='w' && !kpse_out_name_ok(ofname))) { + mpost_xfree(ofname); + return NULL; /* disallowed filename */ + } + } else { + if (!kpse_out_name_ok(fname)) + return NULL; /* disallowed filename */ + } + } + + if (fmode[0]=='r') { if ((job_area != NULL) && (ftype>=mp_filetype_text || ftype==mp_filetype_program )) { @@ -618,8 +654,14 @@ static char *mpost_find_file(MP mp, const char *fname, const char *fmode, int ft } } } else { - if (fname!=NULL) - s = mpost_xstrdup(fname); /* when writing */ + /* when writing */ + if (ofname) { + s = mpost_xstrdup(ofname); + mpost_xfree(ofname); + } else { + s = mpost_xstrdup(fname); + } + } return s; } @@ -715,6 +757,7 @@ void run_set_list (MP mp) { } + @ @c static void *mpost_open_file(MP mp, const char *fname, const char *fmode, int ftype) { char realmode[3]; @@ -879,11 +922,12 @@ static struct option mpost_options[] } } else if (ARGUMENT_IS("halt-on-error")) { options->halt_on_error = true; + } else if (ARGUMENT_IS("output-directory")) { + output_directory = optarg ; } else if (ARGUMENT_IS("8bit") || ARGUMENT_IS("parse-first-line")) { /* do nothing, these are always on */ } else if (ARGUMENT_IS("translate-file") || - ARGUMENT_IS("output-directory") || ARGUMENT_IS("no-parse-first-line")) { fprintf(stdout,"warning: %s: unimplemented option %s\n", argv[0], argv[optind]); } |