summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/dvicopy.ch
diff options
context:
space:
mode:
authorAndreas Scherer <andreas_tex@freenet.de>2020-08-01 12:01:34 +0000
committerAndreas Scherer <andreas_tex@freenet.de>2020-08-01 12:01:34 +0000
commit2b48c58a3269e00f95e2769500c0230b2b7f397a (patch)
treec318c9368cdcf720af8624d45c0579b23e0635cd /Build/source/texk/web2c/dvicopy.ch
parent33b2e31d6d3f08f67bad4a8a66b6c38eeea3ab02 (diff)
Purge non-local 'goto' labels in WEB programs.
If code and comment disagree, most likely they both are wrong. ;o) git-svn-id: svn://tug.org/texlive/trunk@56013 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/dvicopy.ch')
-rw-r--r--Build/source/texk/web2c/dvicopy.ch23
1 files changed, 23 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/dvicopy.ch b/Build/source/texk/web2c/dvicopy.ch
index 84639fb017d..838402b6400 100644
--- a/Build/source/texk/web2c/dvicopy.ch
+++ b/Build/source/texk/web2c/dvicopy.ch
@@ -29,6 +29,18 @@
@!random_reading:boolean; {should we skip around in the file?}
@z
+@x [3] Purge non-local 'goto'.
+calls the `|jump_out|' procedure, which goes to the label |final_end|.
+
+@d final_end = 9999 {go here to wrap it up}
+@y
+calls the `|jump_out|' procedure.
+@z
+@x
+label final_end;
+@y
+@z
+
@x [3] Set up kpathsea.
procedure initialize; {this procedure gets things started properly}
var @<Local variables for initialization@>@/
@@ -121,6 +133,17 @@ procedure initialize; {this procedure gets things started properly}
@z
@x [23] Remove non-local goto, declare jump_out as noreturn
+so a procedure called |jump_out| has been introduced. This procedure, which
+transfers control to the label |final_end| at the end of the program,
+contains the only non-local |@!goto| statement in \.{\title}.
+@^system dependencies@>
+Some \PASCAL\ compilers do not implement non-local |goto| statements. In
+such cases the |goto final_end| in |jump_out| should simply be replaced
+by a call on some system procedure that quietly terminates the program.
+@y
+so a procedure called |jump_out| has been introduced.
+@z
+@x
@d abort(#)==begin print_ln(' ',#,'.'); jump_out;
end