summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaco Hoekwater <taco@elvenkind.com>2009-07-13 09:15:45 +0000
committerTaco Hoekwater <taco@elvenkind.com>2009-07-13 09:15:45 +0000
commitc19514888bb0a60bd09a5d583be185fa6304c524 (patch)
tree8d590adc4e761e00f422d855dd37fec99d173312
parentce020ad65649f6c6ad6721038fe63aa3cf8f34b2 (diff)
new metapost source
git-svn-id: svn://tug.org/texlive/trunk@14236 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Build/source/texk/web2c/mplibdir/ChangeLog4
-rw-r--r--Build/source/texk/web2c/mplibdir/mp.w40
2 files changed, 30 insertions, 14 deletions
diff --git a/Build/source/texk/web2c/mplibdir/ChangeLog b/Build/source/texk/web2c/mplibdir/ChangeLog
index 3ab33e74af4..1990d4d5c43 100644
--- a/Build/source/texk/web2c/mplibdir/ChangeLog
+++ b/Build/source/texk/web2c/mplibdir/ChangeLog
@@ -1,3 +1,7 @@
+2009-07-13 Taco Hoekwater <taco@elvenkind.com>
+
+ * Released version of MPLib 1.205
+
2009-06-25 Peter Breitenlohner <peb@mppmu.mpg.de>
* mpost.w: add KPSEDLL to declaration of
diff --git a/Build/source/texk/web2c/mplibdir/mp.w b/Build/source/texk/web2c/mplibdir/mp.w
index 711fa9a8ef9..fbfa0b027f1 100644
--- a/Build/source/texk/web2c/mplibdir/mp.w
+++ b/Build/source/texk/web2c/mplibdir/mp.w
@@ -1,4 +1,4 @@
- $Id: mp.w 1098 2009-06-25 08:23:21Z taco $
+ $Id: mp.w 1102 2009-07-13 08:43:17Z taco $
%
% Copyright 2008-2009 Taco Hoekwater.
%
@@ -89,13 +89,13 @@ undergoes any modifications, so that it will be clear which version of
@^extensions to \MP@>
@^system dependencies@>
-@d default_banner "This is MetaPost, Version 1.204" /* printed when \MP\ starts */
+@d default_banner "This is MetaPost, Version 1.205" /* printed when \MP\ starts */
@d true 1
@d false 0
@(mpmp.h@>=
-#define metapost_version "1.204"
-#define metapost_magic (('M'*256) + 'P')*65536 + 1204
+#define metapost_version "1.205"
+#define metapost_magic (('M'*256) + 'P')*65536 + 1205
#define metapost_old_magic (('M'*256) + 'P')*65536 + 1080
@ The external library header for \MP\ is |mplib.h|. It contains a
@@ -13199,6 +13199,7 @@ by analogy with |line_stack|.
@d terminal_input (name==is_term) /* are we reading from the terminal? */
@d cur_file mp->input_file[iindex] /* the current |void *| variable */
@d line mp->line_stack[iindex] /* current line number in the current source file */
+@d in_ext mp->inext_stack[iindex] /* a string used to construct \.{MPX} file names */
@d in_name mp->iname_stack[iindex] /* a string used to construct \.{MPX} file names */
@d in_area mp->iarea_stack[iindex] /* another string for naming \.{MPX} files */
@d absent 1 /* |name_field| value for unused |mpx_in_stack| entries */
@@ -13213,6 +13214,7 @@ integer in_open_max; /* highest value of |in_open| ever seen */
unsigned int open_parens; /* the number of open text files */
void * *input_file ;
integer *line_stack ; /* the line number for each file */
+char * *inext_stack; /* used for naming \.{MPX} files */
char * *iname_stack; /* used for naming \.{MPX} files */
char * *iarea_stack; /* used for naming \.{MPX} files */
halfword*mpx_name ;
@@ -13220,12 +13222,14 @@ halfword*mpx_name ;
@ @<Allocate or ...@>=
mp->input_file = xmalloc((mp->max_in_open+1),sizeof(void *));
mp->line_stack = xmalloc((mp->max_in_open+1),sizeof(integer));
+mp->inext_stack = xmalloc((mp->max_in_open+1),sizeof(char *));
mp->iname_stack = xmalloc((mp->max_in_open+1),sizeof(char *));
mp->iarea_stack = xmalloc((mp->max_in_open+1),sizeof(char *));
mp->mpx_name = xmalloc((mp->max_in_open+1),sizeof(halfword));
{
int k;
for (k=0;k<=mp->max_in_open;k++) {
+ mp->inext_stack[k] =NULL;
mp->iname_stack[k] =NULL;
mp->iarea_stack[k] =NULL;
}
@@ -13235,12 +13239,14 @@ mp->mpx_name = xmalloc((mp->max_in_open+1),sizeof(halfword));
{
int l;
for (l=0;l<=mp->max_in_open;l++) {
+ xfree(mp->inext_stack[l]);
xfree(mp->iname_stack[l]);
xfree(mp->iarea_stack[l]);
}
}
xfree(mp->input_file);
xfree(mp->line_stack);
+xfree(mp->inext_stack);
xfree(mp->iname_stack);
xfree(mp->iarea_stack);
xfree(mp->mpx_name);
@@ -13741,6 +13747,7 @@ off the file stack.
if ( name>max_spec_src ) {
(mp->close_file)(mp,cur_file);
delete_str_ref(name);
+ xfree(in_ext);
xfree(in_name);
xfree(in_area);
}
@@ -16471,6 +16478,15 @@ except of course for a short time just after |job_name| has become nonzero.
@<Allocate or ...@>=
mp->job_name=mp_xstrdup(mp, opt->job_name);
+{
+ char *s = mp->job_name+strlen(mp->job_name);
+ while (s>mp->job_name) {
+ if (*s == '.') {
+ *s = '\0';
+ }
+ s--;
+ }
+}
if (opt->noninteractive && opt->ini_version) {
if (mp->job_name == NULL)
mp->job_name=mp_xstrdup(mp,mp->mem_name);
@@ -16657,8 +16673,9 @@ can't find the file in |cur_area| or the appropriate system area.
@c
static boolean mp_try_extension (MP mp, const char *ext) {
mp_pack_file_name(mp, mp->cur_name,mp->cur_area, ext);
- in_name=xstrdup(mp->cur_name);
+ in_name=xstrdup(mp->cur_name);
in_area=xstrdup(mp->cur_area);
+ in_ext=xstrdup(ext);
if ( mp_a_open_in(mp, &cur_file, mp_filetype_program) ) {
return true;
} else {
@@ -16747,9 +16764,11 @@ with the current input file.
@c void mp_start_mpx_input (MP mp) {
char *origname = NULL; /* a copy of nameoffile */
+ mp_pack_file_name(mp, in_name, "", in_ext);
+ origname = xstrdup(mp->name_of_file);
mp_pack_file_name(mp, in_name, "", ".mpx");
- @<Try to make sure |name_of_file| refers to a valid \.{MPX} file and
- |goto not_found| if there is a problem@>;
+ if (!(mp->run_make_mpx)(mp, origname, mp->name_of_file))
+ goto NOT_FOUND;
mp_begin_file_reading(mp);
if ( ! mp_a_open_in(mp, &cur_file, mp_filetype_program) ) {
mp_end_file_reading(mp);
@@ -16794,13 +16813,6 @@ int mp_run_make_mpx (MP mp, char *origname, char *mtxname) {
return false;
}
-@ @<Try to make sure |name_of_file| refers to a valid \.{MPX} file and
- |goto not_found| if there is a problem@>=
-origname = mp_xstrdup(mp,mp->name_of_file);
-*(origname+strlen(origname)-1)=0; /* drop the x */
-if (!(mp->run_make_mpx)(mp, origname, mp->name_of_file))
- goto NOT_FOUND
-
@ @<Explain that the \.{MPX} file can't be read and |succumb|@>=
if ( mp->interaction==mp_error_stop_mode ) wake_up_terminal;
mp_print_nl(mp, ">> ");