summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-03-23 22:49:18 +0000
committerKarl Berry <karl@freefriends.org>2008-03-23 22:49:18 +0000
commit4ccbae5687ca633f7d544b40f038b7b0e63a1281 (patch)
tree31d1e8673baa9a5f03bf92f5655698f531103068 /Build/source/texk/web2c
parent6abf81abe48c7404b5d1d172c62886ea9fb212e8 (diff)
update omega and aleph to 3.1415926, and compile pool files into binaries; from Akira
git-svn-id: svn://tug.org/texlive/trunk@7106 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c')
-rw-r--r--Build/source/texk/web2c/alephdir/ChangeLog6
-rw-r--r--Build/source/texk/web2c/alephdir/aleph-pool.h9
-rw-r--r--Build/source/texk/web2c/alephdir/aleph.defines3
-rw-r--r--Build/source/texk/web2c/alephdir/aleph.mk10
-rw-r--r--Build/source/texk/web2c/alephdir/alephextra-rc2.h2
-rw-r--r--Build/source/texk/web2c/alephdir/com16bit-rc2.ch135
-rw-r--r--Build/source/texk/web2c/alephdir/eobase.ch8
-rw-r--r--Build/source/texk/web2c/alephdir/eover-rc2.ch6
-rw-r--r--Build/source/texk/web2c/alephdir/makecpool.c67
-rw-r--r--Build/source/texk/web2c/alephdir/om16bit.ch7
-rw-r--r--Build/source/texk/web2c/alephdir/omdir.ch1
-rw-r--r--Build/source/texk/web2c/alephdir/omfi.ch2
-rw-r--r--Build/source/texk/web2c/alephdir/omfont.ch10
-rw-r--r--Build/source/texk/web2c/mpdir/makecpool.c4
-rw-r--r--Build/source/texk/web2c/omegadir/ChangeLog4
-rw-r--r--Build/source/texk/web2c/omegadir/com16bit.ch136
-rw-r--r--Build/source/texk/web2c/omegadir/makecpool.c67
-rw-r--r--Build/source/texk/web2c/omegadir/om16bit.ch8
-rw-r--r--Build/source/texk/web2c/omegadir/omdir.ch2
-rw-r--r--Build/source/texk/web2c/omegadir/omega-pool.h9
-rw-r--r--Build/source/texk/web2c/omegadir/omega.defines3
-rw-r--r--Build/source/texk/web2c/omegadir/omega.mk15
-rw-r--r--Build/source/texk/web2c/omegadir/omegaextra.h2
-rw-r--r--Build/source/texk/web2c/omegadir/omfi.ch2
-rw-r--r--Build/source/texk/web2c/omegadir/omfont.ch10
25 files changed, 404 insertions, 124 deletions
diff --git a/Build/source/texk/web2c/alephdir/ChangeLog b/Build/source/texk/web2c/alephdir/ChangeLog
index 0c110cfd50f..f6ba3e512f3 100644
--- a/Build/source/texk/web2c/alephdir/ChangeLog
+++ b/Build/source/texk/web2c/alephdir/ChangeLog
@@ -1,4 +1,10 @@
+2008-03-23 Karl Berry <karl@freefriends.org>
+
+ * Update to TeX 3.1415926; compile in pool files.
+ From Akira.
+
2006-05-25 Roozbeh Pournader <roozbeh@farsiweb.info>
+
* omfilter.ch: fixed a bug in OCP processing, increased
active_mem_size from 2000 to 50000.
diff --git a/Build/source/texk/web2c/alephdir/aleph-pool.h b/Build/source/texk/web2c/alephdir/aleph-pool.h
new file mode 100644
index 00000000000..950a14d7b89
--- /dev/null
+++ b/Build/source/texk/web2c/alephdir/aleph-pool.h
@@ -0,0 +1,9 @@
+#ifndef ALEPH_POOL_H
+#define ALEPH_POOL_H
+typedef int integer;
+typedef integer strnumber;
+typedef unsigned short packedASCIIcode;
+typedef integer poolpointer;
+extern packedASCIIcode * strpool;
+extern poolpointer poolptr;
+#endif
diff --git a/Build/source/texk/web2c/alephdir/aleph.defines b/Build/source/texk/web2c/alephdir/aleph.defines
index 4da5858021c..dc9628e7ab9 100644
--- a/Build/source/texk/web2c/alephdir/aleph.defines
+++ b/Build/source/texk/web2c/alephdir/aleph.defines
@@ -4,7 +4,7 @@ This file is part of Aleph,
which is based on the web2c distribution of TeX,
Copyright (C) 1994--2000 John Plaice and Yannis Haralambous
-Copyright (C) 2002--2004 the Aleph task force
+Copyright (C) 2002--2004, 2008 the Aleph task force
Aleph is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -22,6 +22,7 @@ along with Aleph; if not, write to the Free Software Foundation, Inc.,
}
+@define function loadpoolstrings();
@define function newinputln ();
@define function getfilemode ();
@define function newinputline ();
diff --git a/Build/source/texk/web2c/alephdir/aleph.mk b/Build/source/texk/web2c/alephdir/aleph.mk
index b519e4b000b..386bb478e9e 100644
--- a/Build/source/texk/web2c/alephdir/aleph.mk
+++ b/Build/source/texk/web2c/alephdir/aleph.mk
@@ -17,7 +17,7 @@ alephbuild=rc2
aleph_c = alephini.c aleph0.c aleph1.c aleph2.c aleph3.c
aleph_o = alephini.o aleph0.o aleph1.o aleph2.o \
alephextra.o aleph.o alephbis.o \
- aleph3.o
+ aleph3.o aleph-pool.o
# Linking
aleph: $(aleph_o)
@@ -121,6 +121,14 @@ aleph.ch: $(calephdir)/ceostuff.ch
$(srcdir)/$(calephdir)/comdir.ch \
$(srcdir)/$(calephdir)/comsrcspec.ch \
$(srcdir)/$(calephdir)/ceostuff.ch
+
+aleph-pool.c: aleph.pool alephdir/makecpool
+ alephdir/makecpool aleph.pool alephdir/aleph-pool.h >aleph-pool.c
+alephdir/makecpool: alephdir/makecpool.o
+ $(CC) $(CFLAGS) -o $@ alephdir/makecpool.o
+alephdir/makecpool.o: $(srcdir)/alephdir/makecpool.c
+ $(CC) $(CFLAGS) -c -o $@ $(srcdir)/alephdir/makecpool.c
+
# Check: right now all we do is build the format.
check: @ALEPH@ aleph-check
aleph-check: aleph aleph.fmt
diff --git a/Build/source/texk/web2c/alephdir/alephextra-rc2.h b/Build/source/texk/web2c/alephdir/alephextra-rc2.h
index ad0139ac263..9303d5d3a73 100644
--- a/Build/source/texk/web2c/alephdir/alephextra-rc2.h
+++ b/Build/source/texk/web2c/alephdir/alephextra-rc2.h
@@ -23,7 +23,7 @@ along with Aleph; if not, write to the Free Software Foundation, Inc.,
*/
-#define BANNER "This is Aleph, Version 3.141592-1.15-2.1-rc4"
+#define BANNER "This is Aleph, Version 3.1415926-1.15-2.1-rc4"
#define COPYRIGHT_HOLDER "the Aleph task force"
#define AUTHOR NULL
#define PROGRAM_HELP ALEPHHELP
diff --git a/Build/source/texk/web2c/alephdir/com16bit-rc2.ch b/Build/source/texk/web2c/alephdir/com16bit-rc2.ch
index 223f72ffc7c..2b5c63d0923 100644
--- a/Build/source/texk/web2c/alephdir/com16bit-rc2.ch
+++ b/Build/source/texk/web2c/alephdir/com16bit-rc2.ch
@@ -40,16 +40,17 @@
@z
@x
-@d banner=='This is Aleph, Version 3.141592-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.1415926-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
@y
-@d banner=='This is Aleph, Version 3.141592-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
-@d banner_k=='This is Alephk, Version 3.141592-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.1415926-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
+@d banner_k=='This is Alephk, Version 3.1415926-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
@z
@x [1.4] l.233 - program header
Actually the heading shown here is not quite normal: The |program| line
does not mention any |output| file, because \ph\ would ask the \TeX\ user
to specify a file name if |output| were specified here.
+@:PASCAL H}{\ph@>
@^system dependencies@>
@y
@z
@@ -138,7 +139,7 @@ if ini_version then
@y
@d file_name_size == maxint
@d ssup_error_line = 255
-@d ssup_max_strings ==200000
+@d ssup_max_strings == 2097151
{Larger values may be used, but then the arrays consume much more memory.}
@d ssup_trie_opcode == 65535
@d ssup_trie_size == @"3FFFFF
@@ -188,7 +189,7 @@ if ini_version then
@!engine_name=TEXMF_ENGINE_NAME; {the name of this engine}
@#
@!inf_main_memory = 2000000;
-@!sup_main_memory = 32000000;
+@!sup_main_memory = 256000000;
@!inf_trie_size = 80000;
@!sup_trie_size = ssup_trie_size;
@@ -345,6 +346,7 @@ end;
@x [3.28] l.850 - Do file closing in C.
@ Files can be closed with the \ph\ routine `|close(f)|', which
+@:PASCAL H}{\ph@>
@^system dependencies@>
should be used when all input or output with respect to |f| has been completed.
This makes |f| available to be opened again, if desired; and if |f| was used for
@@ -468,6 +470,7 @@ tini@/
@x [3.33] l.964 - We don't need to open terminal files.
@ Here is how to open the terminal files
in \ph. The `\.{/I}' switch suppresses the first |get|.
+@:PASCAL H}{\ph@>
@^system dependencies@>
@d t_open_in==reset(term_in,'TTY:','/O/I') {open the terminal for text input}
@@ -482,6 +485,7 @@ any command line arguments the user has provided. It's defined in C.
@x [3.34] l.982 - Flushing output to terminal files.
these operations can be specified in \ph:
+@:PASCAL H}{\ph@>
@^system dependencies@>
@d update_terminal == break(term_out) {empty the terminal output buffer}
@@ -574,49 +578,74 @@ if last > first then
@!init function get_strings_started:boolean; {initializes the string pool,
@z
-% [4.51] Open the pool file using a path, and can't do string
-% assignments directly. (`strcpy' and `strlen' work here because
-% `pool_name' is a constant string, and thus ends in a null and doesn't
-% start with a space.)
-@x [4.51] l.1314 - Open the pool file.
+@x
+@ @d bad_pool(#)==begin wake_up_terminal; write_ln(term_out,#);
+ a_close(pool_file); get_strings_started:=false; return;
+ end
+@<Read the other strings...@>=
name_of_file:=pool_name; {we needn't set |name_length|}
if a_open_in(pool_file) then
-@y
-name_length := strlen (pool_name);
-name_of_file := xmalloc_array (char, name_length + 1);
-strcpy (name_of_file+1, pool_name); {copy the string}
-if a_open_in (pool_file, kpse_texpool_format) then
-@z
-
-@x [4.51] l.1322 - Make `OMEGA.POOL' lowercase, and change how it's read.
+ begin c:=false;
+ repeat @<Read one string, but return |false| if the
+ string memory space is getting too tight for comfort@>;
+ until c;
+ a_close(pool_file); get_strings_started:=true;
+ end
else bad_pool('! I can''t read ALEPH.POOL.')
-@y
-else bad_pool('! I can''t read ', pool_name, '; bad path?')
-@z
-@x [4.52] l.1326 - Make `OMEGA.POOL' lowercase, and change how it's read.
+@.I can't read ALEPH.POOL@>
+
+@ @<Read one string...@>=
begin if eof(pool_file) then bad_pool('! ALEPH.POOL has no check sum.');
@.ALEPH.POOL has no check sum@>
read(pool_file,m,n); {read two digits of string length}
-@y
-begin if eof(pool_file) then bad_pool('! ', pool_name, ' has no check sum.');
-@.ALEPH.POOL has no check sum@>
-read(pool_file,m); read(pool_file,n); {read two digits of string length}
-@z
-@x [4.52] l.1332 - Make `ALEPH.POOL' lowercase, and change how it's read.
+if m='*' then @<Check the pool check sum@>
+else begin if (m<"0")or(m>"9")or@|
+ (n<"0")or(n>"9") then
bad_pool('! ALEPH.POOL line doesn''t begin with two digits.');
-@y
- bad_pool('! ', pool_name, ' line doesn''t begin with two digits.');
-@z
-@x [4.53] l.1354 - Make `ALEPH.POOL' lowercase, and change how it's read.
+@.ALEPH.POOL line doesn't...@>
+ l:=m*10+n-"0"*11; {compute the length}
+ if pool_ptr+l+string_vacancies>pool_size then
+ bad_pool('! You have to increase POOLSIZE.');
+@.You have to increase POOLSIZE@>
+ for k:=1 to l do
+ begin if eoln(pool_file) then m:=' '@+else read(pool_file,m);
+ append_char(m);
+ end;
+ read_ln(pool_file); g:=make_string;
+ end;
+end
+
+@ The \.{WEB} operation \.{@@\$} denotes the value that should be at the
+end of this \.{OMEGA.POOL} file; any other value means that the wrong pool
+file has been loaded.
+@^check sum@>
+
+@<Check the pool check sum@>=
+begin a:=0; k:=1;
+loop@+ begin if (n<"0")or(n>"9") then
bad_pool('! ALEPH.POOL check sum doesn''t have nine digits.');
-@y
- bad_pool('! ', pool_name, ' check sum doesn''t have nine digits.');
-@z
-@x [4.53] l.1360 - Make `OMEGA.POOL' lowercase, and change how it's read.
+@.ALEPH.POOL check sum...@>
+ a:=10*a+n-"0";
+ if k=9 then goto done;
+ incr(k); read(pool_file,n);
+ end;
done: if a<>@$ then bad_pool('! ALEPH.POOL doesn''t match; OTANGLE me again.');
-@y
-done: if a<>@$ then
- bad_pool('! ', pool_name, ' doesn''t match; otangle me again (or fix the path).');
+@.ALEPH.POOL doesn't match@>
+c:=true;
+end
+@y
+@ @<Read the other strings...@>=
+ g := loadpoolstrings((pool_size-string_vacancies));
+ if g=0 then begin
+ wake_up_terminal; write_ln(term_out,'! You have to increase POOLSIZE.');
+ get_strings_started:=false;
+ return;
+ end;
+ get_strings_started:=true;
+
+@ Empty module
+
+@ Empty module
@z
@x [5.54] l.1422 - error_line
@@ -1316,22 +1345,39 @@ name_of_file[name_length+1]:=0;
@z
@x [29.525] l.10163 - make_name_string
+@p function make_name_string:str_number;
+var k:1..file_name_size; {index into |name_of_file|}
+begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or
+ (cur_length>0) then
+ make_name_string:="?"
+else begin for k:=1 to name_length do append_char(name_of_file[k]);
make_name_string:=make_string;
end;
@y
+@p function make_name_string:str_number;
+var k:1..file_name_size; {index into |name_of_file|}
+save_area_delimiter, save_ext_delimiter: pool_pointer;
+save_name_in_progress, save_stop_at_space: boolean;
+begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or
+ (cur_length>0) then
+ make_name_string:="?"
+else begin for k:=1 to name_length do append_char(name_of_file[k]);
make_name_string:=make_string;
- end;
{At this point we also set |cur_name|, |cur_ext|, and |cur_area| to
match the contents of |name_of_file|.}
- k:=1;
+ save_area_delimiter:=area_delimiter; save_ext_delimiter:=ext_delimiter;
+ save_name_in_progress:=name_in_progress; save_stop_at_space:=stop_at_space;
name_in_progress:=true;
begin_name;
stop_at_space:=false;
+ k:=1;
while (k<=name_length)and(more_name(name_of_file[k])) do
incr(k);
- stop_at_space:=true;
+ stop_at_space:=save_stop_at_space;
end_name;
- name_in_progress:=false;
+ name_in_progress:=save_name_in_progress;
+ area_delimiter:=save_area_delimiter; ext_delimiter:=save_ext_delimiter;
+ end;
@z
@x [29.526] l.10194 - stop scanning file name if we're at end-of-line.
@@ -1646,7 +1692,7 @@ arrays start at |0|.
%%%%%%%% dynamic hyph_size
@x 18137 m.926
@!hyph_word:array[hyph_pointer] of str_number; {exception words}
-@!hyph_list:array[hyph_pointer] of pointer; {list of hyphen positions}
+@!hyph_list:array[hyph_pointer] of pointer; {lists of hyphen positions}
@!hyph_count:hyph_pointer; {the number of words in the exception dictionary}
@y 18139
@!hyph_word: ^str_number; {exception words}
@@ -2455,6 +2501,7 @@ if (edit_name_start<>0) and (interaction>batch_mode) then
if sa_mark<>null then
if do_marks(destroy_marks,0,sa_mark) then sa_mark:=null;
for c:=last_box_code to vsplit_code do flush_node_list(disc_ptr[c]);
+ if last_glue<>max_halfword then delete_glue_ref(last_glue);
store_fmt_file; return;@+tini@/
@y
begin @!init if ini_version then
diff --git a/Build/source/texk/web2c/alephdir/eobase.ch b/Build/source/texk/web2c/alephdir/eobase.ch
index 4f39aeca005..fcab72363dc 100644
--- a/Build/source/texk/web2c/alephdir/eobase.ch
+++ b/Build/source/texk/web2c/alephdir/eobase.ch
@@ -182,11 +182,11 @@ to be known as `\Aleph'.
@z
%---------------------------------------
@x [1] m.2 l.187 - e-TeX basic
-@d banner=='This is Omega, Version 3.141592--1.15' {printed when \TeX\ starts}
+@d banner=='This is Omega, Version 3.1415926--1.15' {printed when \TeX\ starts}
@y
-@d banner=='This is Aleph, Version 3.141592--1.15--2.1' {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.1415926--1.15--2.1' {printed when \TeX\ starts}
@#
-@d eTeX_version_string=='3.141592--1.15--2.1' {current \eTeX\ version}
+@d eTeX_version_string=='3.1415926--1.15--2.1' {current \eTeX\ version}
@d eTeX_version=2 { \.{\\eTeXversion} }
@d eTeX_revision==".1" { \.{\\eTeXrevision} }
@#
@@ -1759,7 +1759,7 @@ The |nucleus| of such noads is
@z
%---------------------------------------
@x [34] m.696 l.13670 - e-TeX middle
-right_noad: begin print_esc("right"); print_delimiter(nucleus(p));
+right_noad: begin print_esc("right"); print_delimiter(delimiter(p));
end;
end;
if subtype(p)<>normal then
diff --git a/Build/source/texk/web2c/alephdir/eover-rc2.ch b/Build/source/texk/web2c/alephdir/eover-rc2.ch
index 71209c78e83..ff70c7e3158 100644
--- a/Build/source/texk/web2c/alephdir/eover-rc2.ch
+++ b/Build/source/texk/web2c/alephdir/eover-rc2.ch
@@ -5,9 +5,9 @@
% * we add both \eTeX-like and \OMEGA-like
% commands to display the version
@x
-@d banner=='This is Aleph, Version 3.141592--1.15--2.1' {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.1415926--1.15--2.1' {printed when \TeX\ starts}
@#
-@d eTeX_version_string=='3.141592--1.15--2.1' {current \eTeX\ version}
+@d eTeX_version_string=='3.1415926--1.15--2.1' {current \eTeX\ version}
@d eTeX_version=2 { \.{\\eTeXversion} }
@d eTeX_revision==".1" { \.{\\eTeXrevision} }
@#
@@ -30,7 +30,7 @@
@d Omega_revision==".15" { \.{\\Omegarevision} }
@d Aleph_revision==".0" { \.{\\Alephrevision} }
@#
-@d banner=='This is Aleph, Version 3.141592-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.1415926-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
@d eTeX_banner==banner
{printed when \eTeX\ starts}
@z
diff --git a/Build/source/texk/web2c/alephdir/makecpool.c b/Build/source/texk/web2c/alephdir/makecpool.c
new file mode 100644
index 00000000000..4a928068208
--- /dev/null
+++ b/Build/source/texk/web2c/alephdir/makecpool.c
@@ -0,0 +1,67 @@
+/* Copyright 2007, 2008 Taco Hoekwater.
+ You may freely use, modify and/or distribute this file. */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+ char *filename;
+ char *headername;
+ FILE *fh;
+ char data[1024];
+ if (argc!=3) {
+ puts("Need exactly two arguments: pool_name and header_name");
+ exit(1);
+ }
+ filename = argv[1];
+ headername = argv[2];
+ fh = fopen(filename,"r");
+ printf(
+ "/* This file is auto-generated by makecpool */\n"
+ "\n"
+ "#include <stdio.h>\n"
+ "#include <string.h>\n"
+ "#include \"%s\"\n"
+ "\n"
+ "static char *poolfilearr[] = {\n",headername);
+ while (fgets(data,1024,fh)) {
+ int len = strlen(data);
+ int o = 0; /* skip first o characters*/
+ int i;
+ if (data[len-1]=='\n') { /* chomp;*/
+ data[len-1] = 0;
+ len--;
+ }
+ if (data[0]=='*') break; /* last if !^\*!; */
+ if (data[0]>='0' && data[0]<='9' && data[1]>='0' && data[1]<='9') {
+ o=2; /* $data =~ s/^\d\d//; */
+ }
+ printf(" \"");
+ for (i=o; i<len; i++) {
+ if (data[i]=='"' || data[i]=='\\') putchar('\\');
+ if (data[i]=='?') printf("\" \""); /* suppress trigraphs */
+ putchar(data[i]);
+ } /* $data =~ s/(["\\])/\\$1/g; */
+ printf("\",\n");
+ }
+ fclose(fh);
+ printf(" NULL };\n"
+ "int loadpoolstrings (integer spare_size) {\n"
+ " strnumber g=0;\n"
+ " int i=0,j=0;\n"
+ " char *s;\n"
+ " while ((s = poolfilearr[j++])) {\n"
+ " int l = strlen (s);\n"
+ " i += l;\n"
+ " if (i>=spare_size) return 0;\n"
+ " while (l-- > 0) strpool[poolptr++] = *s++;\n"
+ /* " while (l-- > 0) str_pool[pool_ptr++] = *s++;\n" */
+ " g = makestring();\n"
+ /* " g = make_string();\n" */
+ /* " strref[g]= 127;\n"*/
+ " }\n"
+ " return g;\n"
+ "}\n");
+ return 0;
+}
diff --git a/Build/source/texk/web2c/alephdir/om16bit.ch b/Build/source/texk/web2c/alephdir/om16bit.ch
index 12d8b49d023..dad270fdb0a 100644
--- a/Build/source/texk/web2c/alephdir/om16bit.ch
+++ b/Build/source/texk/web2c/alephdir/om16bit.ch
@@ -74,9 +74,9 @@ author' in the documentation are to D. E. Knuth.
@z
%---------------------------------------
@x [1] m.2 l.187 - Omega
-@d banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.1415926' {printed when \TeX\ starts}
@y
-@d banner=='This is Omega, Version 3.141592--1.15' {printed when \TeX\ starts}
+@d banner=='This is Omega, Version 3.1415926--1.15' {printed when \TeX\ starts}
@z
%---------------------------------------
@x [1] m.4 l.243
@@ -1078,7 +1078,7 @@ procedure print_cmd_chr(@!cmd:quarterword;@!chr_code:halfword);
@z
%---------------------------------------
@x [24] m.334 l.7110 - Omega
-primitive("par",par_end,256); {cf. |scan_file_name|}
+primitive("par",par_end,256); {cf.\ |scan_file_name|}
@y
primitive("par",par_end,too_big_char); {cf. |scan_file_name|}
@z
@@ -1195,7 +1195,6 @@ end;
@!cur_val:integer; {value returned by numeric scanners}
@y
@!cur_val:integer; {value returned by numeric scanners}
-@!cur_val1:integer; {delcodes are now 51 digits}
@z
%---------------------------------------
@x [26] m.413 l.8335 - Omega
diff --git a/Build/source/texk/web2c/alephdir/omdir.ch b/Build/source/texk/web2c/alephdir/omdir.ch
index b4afb7f68f6..d1977e420b4 100644
--- a/Build/source/texk/web2c/alephdir/omdir.ch
+++ b/Build/source/texk/web2c/alephdir/omdir.ch
@@ -300,7 +300,6 @@ set_new_eqtb_int(int_base+level_local_dir_code,level_one);
@<Glob...@>=
@!cur_val:integer; {value returned by numeric scanners}
-@!cur_val1:integer; {delcodes are now 51 digits}
@!cur_val_level:int_val..tok_val; {the ``level'' of this value}
@y
@d int_val=0 {integer values}
diff --git a/Build/source/texk/web2c/alephdir/omfi.ch b/Build/source/texk/web2c/alephdir/omfi.ch
index 3c61add97b7..9417b2a8dfd 100644
--- a/Build/source/texk/web2c/alephdir/omfi.ch
+++ b/Build/source/texk/web2c/alephdir/omfi.ch
@@ -142,7 +142,7 @@ macro makes such six-tuples convenient.
@d do_all_six(#)==#(1);#(2);#(3);#(4);#(5);#(6)
-@<Glo...@>=
+@<Glob...@>=
@!active_width:array[1..6] of scaled;
{distance from first active node to~|cur_p|}
@!cur_active_width:array[1..6] of scaled; {distance from current active node}
diff --git a/Build/source/texk/web2c/alephdir/omfont.ch b/Build/source/texk/web2c/alephdir/omfont.ch
index a176f346ccd..eb718688508 100644
--- a/Build/source/texk/web2c/alephdir/omfont.ch
+++ b/Build/source/texk/web2c/alephdir/omfont.ch
@@ -716,6 +716,7 @@ fget; read_sixteen(nk);
fget; read_sixteen(ne);
fget; read_sixteen(np);
if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort;
+if (nw=0)or(nh=0)or(nd=0)or(ni=0) then abort;
end
@y
nco:=0; ncw:=0; npc:=0;
@@ -1863,9 +1864,11 @@ if not new_right_ghost then
@z
%---------------------------------------
@x [46] m.1035 l.20122 - Omega
- begin if character(tail)=qi(hyphen_char[main_f]) then if link(cur_q)>null then
+ begin if link(cur_q)>null then
+ if character(tail)=qi(hyphen_char[main_f]) then ins_disc:=true;
@y
- begin if character(tail)=qi(hyphen_char(main_f)) then if link(cur_q)>null then
+ begin if link(cur_q)>null then
+ if character(tail)=qi(hyphen_char(main_f)) then ins_disc:=true;
@z
%---------------------------------------
@x [46] m.1036 l.20135 - Omega
@@ -1879,7 +1882,7 @@ main_i:=char_info(main_f)(cur_l);
if not char_exists(main_i) then
begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
end;
-tail_append(lig_stack) {|main_loop_lookahead| is next}
+link(tail):=lig_stack; tail:=lig_stack {|main_loop_lookahead| is next}
@y
if lig_stack=null then goto reswitch;
cur_q:=tail; cur_l:=character(lig_stack);
@@ -1916,6 +1919,7 @@ if cur_cmd=no_boundary then bchar:=non_char;
@x [46] m.1039 l.20193 - Omega
@<If there's a ligature/kern command...@>=
if char_tag(main_i)<>lig_tag then goto main_loop_wrapup;
+if cur_r=non_char then goto main_loop_wrapup;
main_k:=lig_kern_start(main_f)(main_i); main_j:=font_info[main_k].qqqq;
if skip_byte(main_j)<=stop_flag then goto main_lig_loop+2;
main_k:=lig_kern_restart(main_f)(main_j);
diff --git a/Build/source/texk/web2c/mpdir/makecpool.c b/Build/source/texk/web2c/mpdir/makecpool.c
index 9130f3cb924..7d37035b9fd 100644
--- a/Build/source/texk/web2c/mpdir/makecpool.c
+++ b/Build/source/texk/web2c/mpdir/makecpool.c
@@ -1,3 +1,6 @@
+/* Copyright 2007, 2008 Taco Hoekwater.
+ You may freely use, modify and/or distribute this file. */
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -16,6 +19,7 @@ int main(int argc, char *argv[]) {
"/* This file is auto-generated by makecpool */\n"
"\n"
"#include <stdio.h>\n"
+ "#include <strings.h>\n"
"#include \"%s\"\n"
"\n"
"static char *poolfilearr[] = {\n",headername);
diff --git a/Build/source/texk/web2c/omegadir/ChangeLog b/Build/source/texk/web2c/omegadir/ChangeLog
new file mode 100644
index 00000000000..af13187d847
--- /dev/null
+++ b/Build/source/texk/web2c/omegadir/ChangeLog
@@ -0,0 +1,4 @@
+2008-03-23 Karl Berry <karl@freefriends.org>
+
+ * Update to TeX 3.1415926; compile in pool files.
+ From Akira.
diff --git a/Build/source/texk/web2c/omegadir/com16bit.ch b/Build/source/texk/web2c/omegadir/com16bit.ch
index a498312f766..94ce8220d62 100644
--- a/Build/source/texk/web2c/omegadir/com16bit.ch
+++ b/Build/source/texk/web2c/omegadir/com16bit.ch
@@ -40,16 +40,17 @@
@z
@x
-@d banner=='This is Omega, Version 3.141592-1.23.2.3' {printed when \TeX\ starts}
+@d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts}
@y
-@d banner=='This is Omega, Version 3.141592-1.23.2.3' {printed when \TeX\ starts}
-@d banner_k=='This is Omegak, Version 3.141592-1.23.2.3' {printed when \TeX\ starts}
+@d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts}
+@d banner_k=='This is Omegak, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts}
@z
@x [1.4] l.233 - program header
Actually the heading shown here is not quite normal: The |program| line
does not mention any |output| file, because \ph\ would ask the \TeX\ user
to specify a file name if |output| were specified here.
+@:PASCAL H}{\ph@>
@^system dependencies@>
@y
@z
@@ -138,7 +139,7 @@ if ini_version then
@y
@d file_name_size == maxint
@d ssup_error_line = 255
-@d ssup_max_strings ==200000
+@d ssup_max_strings == 2097151
{Larger values may be used, but then the arrays consume much more memory.}
@d ssup_trie_opcode == 65535
@d ssup_trie_size == @"3FFFFF
@@ -188,7 +189,7 @@ if ini_version then
@!engine_name=TEXMF_ENGINE_NAME; {the name of this engine}
@#
@!inf_main_memory = 2000000;
-@!sup_main_memory = 32000000;
+@!sup_main_memory = 256000000;
@!inf_trie_size = 80000;
@!sup_trie_size = ssup_trie_size;
@@ -345,6 +346,7 @@ end;
@x [3.28] l.850 - Do file closing in C.
@ Files can be closed with the \ph\ routine `|close(f)|', which
+@:PASCAL H}{\ph@>
@^system dependencies@>
should be used when all input or output with respect to |f| has been completed.
This makes |f| available to be opened again, if desired; and if |f| was used for
@@ -468,6 +470,7 @@ tini@/
@x [3.33] l.964 - We don't need to open terminal files.
@ Here is how to open the terminal files
in \ph. The `\.{/I}' switch suppresses the first |get|.
+@:PASCAL H}{\ph@>
@^system dependencies@>
@d t_open_in==reset(term_in,'TTY:','/O/I') {open the terminal for text input}
@@ -482,6 +485,7 @@ any command line arguments the user has provided. It's defined in C.
@x [3.34] l.982 - Flushing output to terminal files.
these operations can be specified in \ph:
+@:PASCAL H}{\ph@>
@^system dependencies@>
@d update_terminal == break(term_out) {empty the terminal output buffer}
@@ -568,50 +572,74 @@ if last > first then
@!init function get_strings_started:boolean; {initializes the string pool,
@z
-% [4.51] Open the pool file using a path, and can't do string
-% assignments directly. (`strcpy' and `strlen' work here because
-% `pool_name' is a constant string, and thus ends in a null and doesn't
-% start with a space.)
-@x [4.51] l.1314 - Open the pool file.
+@x
+@ @d bad_pool(#)==begin wake_up_terminal; write_ln(term_out,#);
+ a_close(pool_file); get_strings_started:=false; return;
+ end
+@<Read the other strings...@>=
name_of_file:=pool_name; {we needn't set |name_length|}
if a_open_in(pool_file) then
-@y
-name_length := strlen (pool_name);
-
-name_of_file := xmalloc_array (char, 1 + name_length);
-strcpy (name_of_file+1, pool_name); {copy the string}
-if a_open_in (pool_file, kpse_texpool_format) then
-@z
-
-@x [4.51] l.1322 - Make `OMEGA.POOL' lowercase, and change how it's read.
+ begin c:=false;
+ repeat @<Read one string, but return |false| if the
+ string memory space is getting too tight for comfort@>;
+ until c;
+ a_close(pool_file); get_strings_started:=true;
+ end
else bad_pool('! I can''t read OMEGA.POOL.')
-@y
-else bad_pool('! I can''t read omega.pool; bad path?')
-@z
-@x [4.52] l.1326 - Make `OMEGA.POOL' lowercase, and change how it's read.
+@.I can't read OMEGA.POOL@>
+
+@ @<Read one string...@>=
begin if eof(pool_file) then bad_pool('! OMEGA.POOL has no check sum.');
@.OMEGA.POOL has no check sum@>
read(pool_file,m,n); {read two digits of string length}
-@y
-begin if eof(pool_file) then bad_pool('! omega.pool has no check sum.');
-@.OMEGA.POOL has no check sum@>
-read(pool_file,m); read(pool_file,n); {read two digits of string length}
-@z
-@x [4.52] l.1332 - Make `OMEGA.POOL' lowercase, and change how it's read.
+if m='*' then @<Check the pool check sum@>
+else begin if (m<"0")or(m>"9")or@|
+ (n<"0")or(n>"9") then
bad_pool('! OMEGA.POOL line doesn''t begin with two digits.');
-@y
- bad_pool('! omega.pool line doesn''t begin with two digits.');
-@z
-@x [4.53] l.1354 - Make `OMEGA.POOL' lowercase, and change how it's read.
+@.OMEGA.POOL line doesn't...@>
+ l:=m*10+n-"0"*11; {compute the length}
+ if pool_ptr+l+string_vacancies>pool_size then
+ bad_pool('! You have to increase POOLSIZE.');
+@.You have to increase POOLSIZE@>
+ for k:=1 to l do
+ begin if eoln(pool_file) then m:=' '@+else read(pool_file,m);
+ append_char(m);
+ end;
+ read_ln(pool_file); g:=make_string;
+ end;
+end
+
+@ The \.{WEB} operation \.{@@\$} denotes the value that should be at the
+end of this \.{OMEGA.POOL} file; any other value means that the wrong pool
+file has been loaded.
+@^check sum@>
+
+@<Check the pool check sum@>=
+begin a:=0; k:=1;
+loop@+ begin if (n<"0")or(n>"9") then
bad_pool('! OMEGA.POOL check sum doesn''t have nine digits.');
-@y
- bad_pool('! omega.pool check sum doesn''t have nine digits.');
-@z
-@x [4.53] l.1360 - Make `OMEGA.POOL' lowercase, and change how it's read.
+@.OMEGA.POOL check sum...@>
+ a:=10*a+n-"0";
+ if k=9 then goto done;
+ incr(k); read(pool_file,n);
+ end;
done: if a<>@$ then bad_pool('! OMEGA.POOL doesn''t match; OTANGLE me again.');
-@y
-done: if a<>@$ then
- bad_pool('! omega.pool doesn''t match; otangle me again (or fix the path).');
+@.OMEGA.POOL doesn't match@>
+c:=true;
+end
+@y
+@ @<Read the other strings...@>=
+ g := loadpoolstrings((pool_size-string_vacancies));
+ if g=0 then begin
+ wake_up_terminal; write_ln(term_out,'! You have to increase POOLSIZE.');
+ get_strings_started:=false;
+ return;
+ end;
+ get_strings_started:=true;
+
+@ Empty module
+
+@ Empty module
@z
@x [5.54] l.1422 - error_line
@@ -1315,22 +1343,39 @@ name_of_file[name_length+1]:=0;
@z
@x [29.525] l.10163 - make_name_string
+@p function make_name_string:str_number;
+var k:1..file_name_size; {index into |name_of_file|}
+begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or
+ (cur_length>0) then
+ make_name_string:="?"
+else begin for k:=1 to name_length do append_char(name_of_file[k]);
make_name_string:=make_string;
end;
@y
+@p function make_name_string:str_number;
+var k:1..file_name_size; {index into |name_of_file|}
+save_area_delimiter, save_ext_delimiter: pool_pointer;
+save_name_in_progress, save_stop_at_space: boolean;
+begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or
+ (cur_length>0) then
+ make_name_string:="?"
+else begin for k:=1 to name_length do append_char(name_of_file[k]);
make_name_string:=make_string;
- end;
{At this point we also set |cur_name|, |cur_ext|, and |cur_area| to
match the contents of |name_of_file|.}
- k:=1;
+ save_area_delimiter:=area_delimiter; save_ext_delimiter:=ext_delimiter;
+ save_name_in_progress:=name_in_progress; save_stop_at_space:=stop_at_space;
name_in_progress:=true;
begin_name;
stop_at_space:=false;
+ k:=1;
while (k<=name_length)and(more_name(name_of_file[k])) do
incr(k);
- stop_at_space:=true;
+ stop_at_space:=save_stop_at_space;
end_name;
- name_in_progress:=false;
+ name_in_progress:=save_name_in_progress;
+ area_delimiter:=save_area_delimiter; ext_delimiter:=save_ext_delimiter;
+ end;
@z
@x [29.526] l.10194 - stop scanning file name if we're at end-of-line.
@@ -1646,7 +1691,7 @@ arrays start at |0|.
%%%%%%%% dynamic hyph_size
@x 18137 m.926
@!hyph_word:array[hyph_pointer] of str_number; {exception words}
-@!hyph_list:array[hyph_pointer] of pointer; {list of hyphen positions}
+@!hyph_list:array[hyph_pointer] of pointer; {lists of hyphen positions}
@!hyph_count:hyph_pointer; {the number of words in the exception dictionary}
@y 18139
@!hyph_word: ^str_number; {exception words}
@@ -2451,6 +2496,7 @@ if (edit_name_start<>0) and (interaction>batch_mode) then
@x [51.1335] l.24335 - Only do dump if ini.
begin @!init for c:=top_mark_code to split_bot_mark_code do
if cur_mark[c]<>null then delete_token_ref(cur_mark[c]);
+ if last_glue<>max_halfword then delete_glue_ref(last_glue);
store_fmt_file; return;@+tini@/
@y
begin @!init if ini_version then
diff --git a/Build/source/texk/web2c/omegadir/makecpool.c b/Build/source/texk/web2c/omegadir/makecpool.c
new file mode 100644
index 00000000000..4a928068208
--- /dev/null
+++ b/Build/source/texk/web2c/omegadir/makecpool.c
@@ -0,0 +1,67 @@
+/* Copyright 2007, 2008 Taco Hoekwater.
+ You may freely use, modify and/or distribute this file. */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+ char *filename;
+ char *headername;
+ FILE *fh;
+ char data[1024];
+ if (argc!=3) {
+ puts("Need exactly two arguments: pool_name and header_name");
+ exit(1);
+ }
+ filename = argv[1];
+ headername = argv[2];
+ fh = fopen(filename,"r");
+ printf(
+ "/* This file is auto-generated by makecpool */\n"
+ "\n"
+ "#include <stdio.h>\n"
+ "#include <string.h>\n"
+ "#include \"%s\"\n"
+ "\n"
+ "static char *poolfilearr[] = {\n",headername);
+ while (fgets(data,1024,fh)) {
+ int len = strlen(data);
+ int o = 0; /* skip first o characters*/
+ int i;
+ if (data[len-1]=='\n') { /* chomp;*/
+ data[len-1] = 0;
+ len--;
+ }
+ if (data[0]=='*') break; /* last if !^\*!; */
+ if (data[0]>='0' && data[0]<='9' && data[1]>='0' && data[1]<='9') {
+ o=2; /* $data =~ s/^\d\d//; */
+ }
+ printf(" \"");
+ for (i=o; i<len; i++) {
+ if (data[i]=='"' || data[i]=='\\') putchar('\\');
+ if (data[i]=='?') printf("\" \""); /* suppress trigraphs */
+ putchar(data[i]);
+ } /* $data =~ s/(["\\])/\\$1/g; */
+ printf("\",\n");
+ }
+ fclose(fh);
+ printf(" NULL };\n"
+ "int loadpoolstrings (integer spare_size) {\n"
+ " strnumber g=0;\n"
+ " int i=0,j=0;\n"
+ " char *s;\n"
+ " while ((s = poolfilearr[j++])) {\n"
+ " int l = strlen (s);\n"
+ " i += l;\n"
+ " if (i>=spare_size) return 0;\n"
+ " while (l-- > 0) strpool[poolptr++] = *s++;\n"
+ /* " while (l-- > 0) str_pool[pool_ptr++] = *s++;\n" */
+ " g = makestring();\n"
+ /* " g = make_string();\n" */
+ /* " strref[g]= 127;\n"*/
+ " }\n"
+ " return g;\n"
+ "}\n");
+ return 0;
+}
diff --git a/Build/source/texk/web2c/omegadir/om16bit.ch b/Build/source/texk/web2c/omegadir/om16bit.ch
index 7a1035185f7..570619fd317 100644
--- a/Build/source/texk/web2c/omegadir/om16bit.ch
+++ b/Build/source/texk/web2c/omegadir/om16bit.ch
@@ -74,9 +74,9 @@ author' in the documentation are to D. E. Knuth.
@z
%---------------------------------------
@x [1] m.2 l.187 - Omega
-@d banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.1415926' {printed when \TeX\ starts}
@y
-@d banner=='This is Omega, Version 3.141592-1.23.2.3' {printed when \TeX\ starts}
+@d banner=='This is Omega, Version 3.1415926-1.23.2.3' {printed when \TeX\ starts}
@z
%---------------------------------------
@x [1] m.4 l.243
@@ -1270,7 +1270,7 @@ procedure print_cmd_chr(@!cmd:quarterword;@!chr_code:halfword);
@z
%---------------------------------------
@x [24] m.334 l.7110 - Omega
-primitive("par",par_end,256); {cf. |scan_file_name|}
+primitive("par",par_end,256); {cf.\ |scan_file_name|}
@y
primitive("par",par_end,too_big_char); {cf. |scan_file_name|}
@z
@@ -1387,8 +1387,6 @@ end;
@!cur_val:integer; {value returned by numeric scanners}
@y
@!cur_val:integer; {value returned by numeric scanners}
-@!cur_val1:integer; {delcodes are now 51 digits}
-@!cur_val2:integer; {will be used in omxml.ch; this is cheating}
@z
%---------------------------------------
@x [26] m.413 l.8335 - Omega
diff --git a/Build/source/texk/web2c/omegadir/omdir.ch b/Build/source/texk/web2c/omegadir/omdir.ch
index 4e94b79e68b..23e2c8f4602 100644
--- a/Build/source/texk/web2c/omegadir/omdir.ch
+++ b/Build/source/texk/web2c/omegadir/omdir.ch
@@ -375,8 +375,6 @@ hlist_node,vlist_node,unset_node: begin r:=get_node(box_node_size);
@<Glob...@>=
@!cur_val:integer; {value returned by numeric scanners}
-@!cur_val1:integer; {delcodes are now 51 digits}
-@!cur_val2:integer; {will be used in omxml.ch; this is cheating}
@!cur_val_level:int_val..tok_val; {the ``level'' of this value}
@y
@d int_val=0 {integer values}
diff --git a/Build/source/texk/web2c/omegadir/omega-pool.h b/Build/source/texk/web2c/omegadir/omega-pool.h
new file mode 100644
index 00000000000..22824eb2682
--- /dev/null
+++ b/Build/source/texk/web2c/omegadir/omega-pool.h
@@ -0,0 +1,9 @@
+#ifndef OMEGA_POOL_H
+#define OMEGA_POOL_H
+typedef int integer;
+typedef integer strnumber;
+typedef unsigned short packedASCIIcode;
+typedef integer poolpointer;
+extern packedASCIIcode * strpool;
+extern poolpointer poolptr;
+#endif
diff --git a/Build/source/texk/web2c/omegadir/omega.defines b/Build/source/texk/web2c/omegadir/omega.defines
index e8cf7f8fdc2..13987fa124e 100644
--- a/Build/source/texk/web2c/omegadir/omega.defines
+++ b/Build/source/texk/web2c/omegadir/omega.defines
@@ -3,7 +3,7 @@
This file is part of Omega,
which is based on the web2c distribution of TeX,
-Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
+Copyright (c) 1994--2001, 2008 John Plaice and Yannis Haralambous
Omega is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,6 +21,7 @@ along with Omega; if not, write to the Free Software Foundation, Inc.,
}
+@define function loadpoolstrings();
@define function newinputln ();
@define function getfilemode ();
@define function newinputline ();
diff --git a/Build/source/texk/web2c/omegadir/omega.mk b/Build/source/texk/web2c/omegadir/omega.mk
index 781564337c3..72775719c93 100644
--- a/Build/source/texk/web2c/omegadir/omega.mk
+++ b/Build/source/texk/web2c/omegadir/omega.mk
@@ -4,9 +4,9 @@
Makefile: omegadir/omega.mk
-omegafonts_programs = omegafonts/omfonts
+omegafonts_programs = @OMEGA@ omegafonts/omfonts
otps_programs = otps/otp2ocp otps/outocp
-omegafonts = omegafonts
+omegafonts = @OMEGA@ omegafonts
otps = otps
odvicopy = odvicopy
@@ -82,7 +82,7 @@ omega = @OMEGA@ omega
omega_c = omegaini.c omega0.c omega1.c omega2.c omega3.c
omega_o = omegaini.o omega0.o omega1.o omega2.o \
omegaextra.o omega.o omegabis.o \
- omega3.o
+ omega3.o omega-pool.o
# Linking
omega: $(omega_o)
@@ -163,6 +163,15 @@ omega.ch: omegadir/comsrcspec.ch
$(srcdir)/omegadir/comdir.ch \
$(srcdir)/omegadir/comxml.ch \
$(srcdir)/omegadir/comsrcspec.ch
+
+omega-pool.c: omega.pool omegadir/makecpool
+ omegadir/makecpool omega.pool omegadir/omega-pool.h >omega-pool.c
+omegadir/makecpool: omegadir/makecpool.o
+ $(CC) $(CFLAGS) -o $@ omegadir/makecpool.o
+omegadir/makecpool.o: $(srcdir)/omegadir/makecpool.c
+ test -d omegadir || mkdir omegadir
+ $(CC) $(CFLAGS) -c -o $@ $(srcdir)/omegadir/makecpool.c
+
# Check: right now all we do is build the format.
check: @OMEGA@ omega-check
omega-check: omega omega.fmt
diff --git a/Build/source/texk/web2c/omegadir/omegaextra.h b/Build/source/texk/web2c/omegadir/omegaextra.h
index 5ed66b83978..9d6c693e5a1 100644
--- a/Build/source/texk/web2c/omegadir/omegaextra.h
+++ b/Build/source/texk/web2c/omegadir/omegaextra.h
@@ -24,7 +24,7 @@ along with Omega; if not, write to the Free Software Foundation, Inc.,
*/
-#define BANNER "This is Omega, Version 3.141592-1.23.2.3"
+#define BANNER "This is Omega, Version 3.1415926-1.23.2.3"
#define COPYRIGHT_HOLDER "J. Plaice and Y. Haralambous"
#define AUTHOR NULL
#define PROGRAM_HELP OMEGAHELP
diff --git a/Build/source/texk/web2c/omegadir/omfi.ch b/Build/source/texk/web2c/omegadir/omfi.ch
index 9efd518937c..d7f4bbe959f 100644
--- a/Build/source/texk/web2c/omegadir/omfi.ch
+++ b/Build/source/texk/web2c/omegadir/omfi.ch
@@ -142,7 +142,7 @@ macro makes such six-tuples convenient.
@d do_all_six(#)==#(1);#(2);#(3);#(4);#(5);#(6)
-@<Glo...@>=
+@<Glob...@>=
@!active_width:array[1..6] of scaled;
{distance from first active node to~|cur_p|}
@!cur_active_width:array[1..6] of scaled; {distance from current active node}
diff --git a/Build/source/texk/web2c/omegadir/omfont.ch b/Build/source/texk/web2c/omegadir/omfont.ch
index 997bc21e5da..e70d4c47dcd 100644
--- a/Build/source/texk/web2c/omegadir/omfont.ch
+++ b/Build/source/texk/web2c/omegadir/omfont.ch
@@ -716,6 +716,7 @@ fget; read_sixteen(nk);
fget; read_sixteen(ne);
fget; read_sixteen(np);
if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort;
+if (nw=0)or(nh=0)or(nd=0)or(ni=0) then abort;
end
@y
nco:=0; ncw:=0; npc:=0;
@@ -1863,9 +1864,11 @@ if not new_right_ghost then
@z
%---------------------------------------
@x [46] m.1035 l.20122 - Omega
- begin if character(tail)=qi(hyphen_char[main_f]) then if link(cur_q)>null then
+ begin if link(cur_q)>null then
+ if character(tail)=qi(hyphen_char[main_f]) then ins_disc:=true;
@y
- begin if character(tail)=qi(hyphen_char(main_f)) then if link(cur_q)>null then
+ begin if link(cur_q)>null then
+ if character(tail)=qi(hyphen_char(main_f)) then ins_disc:=true;
@z
%---------------------------------------
@x [46] m.1036 l.20135 - Omega
@@ -1879,7 +1882,7 @@ main_i:=char_info(main_f)(cur_l);
if not char_exists(main_i) then
begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
end;
-tail_append(lig_stack) {|main_loop_lookahead| is next}
+link(tail):=lig_stack; tail:=lig_stack {|main_loop_lookahead| is next}
@y
if lig_stack=null then goto reswitch;
cur_q:=tail; cur_l:=character(lig_stack);
@@ -1916,6 +1919,7 @@ if cur_cmd=no_boundary then bchar:=non_char;
@x [46] m.1039 l.20193 - Omega
@<If there's a ligature/kern command...@>=
if char_tag(main_i)<>lig_tag then goto main_loop_wrapup;
+if cur_r=non_char then goto main_loop_wrapup;
main_k:=lig_kern_start(main_f)(main_i); main_j:=font_info[main_k].qqqq;
if skip_byte(main_j)<=stop_flag then goto main_lig_loop+2;
main_k:=lig_kern_restart(main_f)(main_j);