| Commit | Line | Data |
|---|---|---|
| 4afad3d8 PA |
1 | # $OpenBSD: test.m4,v 1.2 1996/06/26 05:36:21 deraadt Exp $ |
| 2 | # $NetBSD: test.m4,v 1.4 1995/09/28 05:38:05 tls Exp $ | |
| 984263bc MD |
3 | # |
| 4 | # Copyright (c) 1989, 1993 | |
| 5 | # The Regents of the University of California. All rights reserved. | |
| 6 | # | |
| 7 | # This code is derived from software contributed to Berkeley by | |
| 8 | # Ozan Yigit. | |
| 9 | # | |
| 10 | # Redistribution and use in source and binary forms, with or without | |
| 11 | # modification, are permitted provided that the following conditions | |
| 12 | # are met: | |
| 13 | # 1. Redistributions of source code must retain the above copyright | |
| 14 | # notice, this list of conditions and the following disclaimer. | |
| 15 | # 2. Redistributions in binary form must reproduce the above copyright | |
| 16 | # notice, this list of conditions and the following disclaimer in the | |
| 17 | # documentation and/or other materials provided with the distribution. | |
| 984263bc MD |
18 | # 4. Neither the name of the University nor the names of its contributors |
| 19 | # may be used to endorse or promote products derived from this software | |
| 20 | # without specific prior written permission. | |
| 21 | # | |
| 22 | # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
| 23 | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 24 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 25 | # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
| 26 | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| 27 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| 28 | # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 29 | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| 31 | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 32 | # SUCH DAMAGE. | |
| 33 | # | |
| 4afad3d8 PA |
34 | # $FreeBSD: src/usr.bin/m4/TEST/test.m4,v 1.3 2012/11/17 01:54:24 svnexp Exp $ |
| 35 | # | |
| 984263bc MD |
36 | # @(#)test.m4 8.1 (Berkeley) 6/6/93 |
| 37 | # | |
| 38 | ||
| 39 | # test file for mp (not comprehensive) | |
| 40 | # | |
| 41 | # v7 m4 does not have `decr'. | |
| 42 | # | |
| 43 | define(DECR,`eval($1-1)') | |
| 44 | # | |
| 45 | # include string macros | |
| 46 | # | |
| 47 | include(string.m4) | |
| 48 | # | |
| 49 | # create some fortrash strings for an even uglier language | |
| 50 | # | |
| 51 | string(TEXT, "text") | |
| 52 | string(DATA, "data") | |
| 53 | string(BEGIN, "begin") | |
| 54 | string(END, "end") | |
| 55 | string(IF, "if") | |
| 56 | string(THEN, "then") | |
| 57 | string(ELSE, "else") | |
| 58 | string(CASE, "case") | |
| 59 | string(REPEAT, "repeat") | |
| 60 | string(WHILE, "while") | |
| 61 | string(DEFAULT, "default") | |
| 62 | string(UNTIL, "until") | |
| 63 | string(FUNCTION, "function") | |
| 64 | string(PROCEDURE, "procedure") | |
| 65 | string(EXTERNAL, "external") | |
| 66 | string(FORWARD, "forward") | |
| 67 | string(TYPE, "type") | |
| 68 | string(VAR, "var") | |
| 69 | string(CONST, "const") | |
| 70 | string(PROGRAM, "program") | |
| 71 | string(INPUT, "input") | |
| 72 | string(OUTPUT, "output") | |
| 73 | # | |
| 74 | divert(2) | |
| 75 | diversion #1 | |
| 76 | divert(3) | |
| 77 | diversion #2 | |
| 78 | divert(4) | |
| 79 | diversion #3 | |
| 80 | divert(5) | |
| 81 | diversion #4 | |
| 82 | divert(0) | |
| 83 | define(abc,xxx) | |
| 84 | ifdef(`abc',defined,undefined) | |
| 85 | # | |
| 86 | # v7 m4 does this wrong. The right output is | |
| 87 | # this is A vEry lon sEntEnCE | |
| 88 | # see m4 documentation for translit. | |
| 89 | # | |
| 90 | translit(`this is a very long sentence', abcdefg, ABCDEF) | |
| 91 | # | |
| 92 | # include towers-of-hanoi | |
| 93 | # | |
| 94 | include(hanoi.m4) | |
| 95 | # | |
| 96 | # some reasonable set of disks | |
| 97 | # | |
| 98 | hanoi(6) | |
| 99 | # | |
| 100 | # include ackermann's function | |
| 101 | # | |
| 102 | include(ack.m4) | |
| 103 | # | |
| 104 | # something like (3,3) will blow away un*x m4. | |
| 105 | # | |
| 106 | ack(2,3) | |
| 107 | # | |
| 108 | # include a square_root function for fixed nums | |
| 109 | # | |
| 110 | include(sqroot.m4) | |
| 111 | # | |
| 112 | # some square roots. | |
| 113 | # | |
| 114 | square_root(15) | |
| 115 | square_root(100) | |
| 116 | square_root(-4) | |
| 117 | square_root(21372) | |
| 118 | # | |
| 119 | # some textual material for enjoyment. | |
| 120 | # | |
| 121 | [taken from the 'Clemson University Computer Newsletter', | |
| 122 | September 1981, pp. 6-7] | |
| 123 | ||
| 124 | I am a wizard in the magical Kingdom of Transformation and I | |
| 125 | slay dragons for a living. Actually, I am a systems programmer. | |
| 126 | One of the problems with systems programming is explaining to | |
| 127 | non-computer enthusiasts what that is. All of the terms I use to | |
| 128 | describe my job are totally meaningless to them. Usually my response | |
| 129 | to questions about my work is to say as little as possible. For | |
| 130 | instance, if someone asks what happened at work this week, I say | |
| 131 | "Nothing much" and then I change the subject. | |
| 132 | ||
| 133 | With the assistance of my brother, a mechanical engineer, I have devised | |
| 134 | an analogy that everyone can understand. The analogy describes the | |
| 135 | "Kingdom of Transformation" where travelers wander and are magically | |
| 136 | transformed. This kingdom is the computer and the travelers are information. | |
| 137 | The purpose of the computer is to change information to a more meaningful | |
| 138 | forma. The law of conservation applies here: The computer never creates | |
| 139 | and never intentionally destroys data. With no further ado, let us travel | |
| 140 | to the Kingdom of Transformation: | |
| 141 | ||
| 142 | In a land far, far away, there is a magical kingdom called the Kingdom of | |
| 143 | Transformation. A king rules over this land and employs a Council of | |
| 144 | Wizardry. The main purpose of this kingdom is to provide a way for | |
| 145 | neighboring kingdoms to transform citizens into more useful citizens. This | |
| 146 | is done by allowing the citizens to enter the kingdom at one of its ports | |
| 147 | and to travel any of the many routes in the kingdom. They are magically | |
| 148 | transformed along the way. The income of the Kingdom of Transformation | |
| 149 | comes from the many toll roads within its boundaries. | |
| 150 | ||
| 151 | The Kingdom of Transformation was created when several kingdoms got | |
| 152 | together and discovered a mutual need for new talents and abilities for | |
| 153 | citizens. They employed CTK, Inc. (Creators of Transformation, Inc.) to | |
| 154 | create this kingdom. CTK designed the country, its transportation routes, | |
| 155 | and its laws of transformation, and created the major highway system. | |
| 156 | ||
| 157 | Hazards | |
| 158 | ======= | |
| 159 | ||
| 160 | Because magic is not truly controllable, CTK invariably, but unknowingly, | |
| 161 | creates dragons. Dragons are huge fire-breathing beasts which sometimes | |
| 162 | injure or kill travelers. Fortunately, they do not travel, but always | |
| 163 | remain near their den. | |
| 164 | ||
| 165 | Other hazards also exist which are potentially harmful. As the roads | |
| 166 | become older and more weatherbeaten, pot-holes will develop, trees will | |
| 167 | fall on travelers, etc. CTK maintenance men are called to fix these | |
| 168 | problems. | |
| 169 | ||
| 170 | Wizards | |
| 171 | ======= | |
| 172 | ||
| 173 | The wizards play a major role in creating and maintaining the kingdom but | |
| 174 | get little credit for their work because it is performed secretly. The | |
| 175 | wizards do not wan the workers or travelers to learn their incantations | |
| 176 | because many laws would be broken and chaos would result. | |
| 177 | ||
| 178 | CTK's grand design is always general enough to be applicable in many | |
| 179 | different situations. As a result, it is often difficult to use. The | |
| 180 | first duty of the wizards is to tailor the transformation laws so as to be | |
| 181 | more beneficial and easier to use in their particular environment. | |
| 182 | ||
| 183 | After creation of the kingdom, a major duty of the wizards is to search for | |
| 184 | and kill dragons. If travelers do not return on time or if they return | |
| 185 | injured, the ruler of the country contacts the wizards. If the wizards | |
| 186 | determine that the injury or death occurred due to the traveler's | |
| 187 | negligence, they provide the traveler's country with additional warnings. | |
| 188 | If not, they must determine if the cause was a road hazard or a dragon. If | |
| 189 | the suspect a road hazard, they call in a CTK maintenance man to locate the | |
| 190 | hazard and to eliminate it, as in repairing the pothole in the road. If | |
| 191 | they think that cause was a dragon, then they must find and slay it. | |
| 192 | ||
| 193 | The most difficult part of eliminating a dragon is finding it. Sometimes | |
| 194 | the wizard magically knows where the dragon's lair it, but often the wizard | |
| 195 | must send another traveler along the same route and watch to see where he | |
| 196 | disappears. This sounds like a failsafe method for finding dragons (and a | |
| 197 | suicide mission for thr traveler) but the second traveler does not always | |
| 198 | disappear. Some dragons eat any traveler who comes too close; others are | |
| 199 | very picky. | |
| 200 | ||
| 201 | The wizards may call in CTK who designed the highway system and | |
| 202 | transformation laws to help devise a way to locate the dragon. CTK also | |
| 203 | helps provide the right spell or incantation to slay the dragon. (There is | |
| 204 | no general spell to slay dragons; each dragon must be eliminated with a | |
| 205 | different spell.) | |
| 206 | ||
| 207 | Because neither CTK nor wizards are perfect, spells to not always work | |
| 208 | correctly. At best, nothing happens when the wrong spell is uttered. At | |
| 209 | worst, the dragon becomes a much larger dragon or multiplies into several | |
| 210 | smaller ones. In either case, new spells must be found. | |
| 211 | ||
| 212 | If all existing dragons are quiet (i.e. have eaten sufficiently), wizards | |
| 213 | have time to do other things. They hide in castles and practice spells and | |
| 214 | incatations. They also devise shortcuts for travelers and new laws of | |
| 215 | transformation. | |
| 216 | ||
| 217 | Changes in the Kingdom | |
| 218 | ====================== | |
| 219 | ||
| 220 | As new transformation kingdoms are created and old ones are maintained, | |
| 221 | CTK, Inc. is constantly learning new things. It learns ways to avoid | |
| 222 | creating some of the dragons that they have previously created. It also | |
| 223 | discovers new and better laws of transformation. As a result, CTK will | |
| 224 | periodically create a new grand design which is far better than the old. | |
| 225 | The wizards determine when is a good time to implement this new design. | |
| 226 | This is when the tourist season is slow or when no important travelers | |
| 227 | (VIPs) are to arrive. The kingdom must be closed for the actual | |
| 228 | implementation and is leter reopened as a new and better place to go. | |
| 229 | ||
| 230 | A final question you might ask is what happens when the number of tourists | |
| 231 | becomes too great for the kingdom to handle in a reasonable period of time | |
| 232 | (i.e., the tourist lines at the ports are too long). The Kingdom of | |
| 233 | Transformation has three options: (1) shorten the paths that a tourist must | |
| 234 | travel, or (2) convince CTK to develop a faster breed of horses so that the | |
| 235 | travelers can finish sooner, or (3) annex more territories so that the | |
| 236 | kingdom can handle more travelers. | |
| 237 | ||
| 238 | Thus ends the story of the Kingdom of Transformation. I hope this has | |
| 239 | explained my job to you: I slay dragons for a living. | |
| 240 | ||
| 241 | # | |
| 242 | #should do an automatic undivert.. | |
| 243 | # |