r80756 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r80755‎ | r80756 | r80757 >
Date:17:20, 22 January 2011
Author:aj
Status:deferred
Tags:
Comment:
handling of garbage contents
Modified paths:
  • /trunk/parsers/libmwparser/Makefile.am (modified) (history)
  • /trunk/parsers/libmwparser/Makefile.in (modified) (history)
  • /trunk/parsers/libmwparser/include/mwgarbage.h (added) (history)
  • /trunk/parsers/libmwparser/include/mwlistener.h (modified) (history)
  • /trunk/parsers/libmwparser/include/mwparsercontext.h (modified) (history)
  • /trunk/parsers/libmwparser/src/mwWikitextParser.g (modified) (history)
  • /trunk/parsers/libmwparser/src/mwbasicevents.c (modified) (history)
  • /trunk/parsers/libmwparser/src/mwformats.c (modified) (history)
  • /trunk/parsers/libmwparser/src/mwgarbage.c (added) (history)
  • /trunk/parsers/libmwparser/src/mwheadings.c (modified) (history)
  • /trunk/parsers/libmwparser/src/mwhtml.c (modified) (history)
  • /trunk/parsers/libmwparser/src/mwlexerpredicatetable.php (modified) (history)
  • /trunk/parsers/libmwparser/src/mwlistener.template (modified) (history)
  • /trunk/parsers/libmwparser/src/mwparsercontext.c (modified) (history)
  • /trunk/parsers/libmwparser/src/mwtables.c (modified) (history)
  • /trunk/parsers/libmwparser/src/tracingcontext.c (modified) (history)
  • /trunk/parsers/libmwparser/tests/format/heading1.out (modified) (history)
  • /trunk/parsers/libmwparser/tests/hr/hr1.out (modified) (history)
  • /trunk/parsers/libmwparser/tests/html/garbage.in (added) (history)
  • /trunk/parsers/libmwparser/tests/html/garbage.out (added) (history)
  • /trunk/parsers/libmwparser/tests/link/link5.out (modified) (history)
  • /trunk/parsers/libmwparser/tests/list/list2.out (modified) (history)
  • /trunk/parsers/libmwparser/tests/table/table3.out (modified) (history)
  • /trunk/parsers/libmwparser/tests/table/table6.out (modified) (history)
  • /trunk/parsers/libmwparser/tests/table/table7.in (added) (history)
  • /trunk/parsers/libmwparser/tests/table/table7.out (added) (history)
  • /trunk/parsers/libmwparser/tests/testsuite (modified) (history)
  • /trunk/parsers/libmwparser/tests/testsuite.at (modified) (history)
  • /trunk/parsers/libmwparser/wrapper/src/mwscriptbufferlistener.c (modified) (history)

Diff [purge]

Index: trunk/parsers/libmwparser/wrapper/src/mwscriptbufferlistener.c
@@ -122,6 +122,8 @@
123123 static void SBBeginHtmlAbbr(MWLISTENER *listener, pANTLR3_VECTOR attr);
124124 static void SBEndHtmlAbbr(MWLISTENER *listener);
125125 static void SBOnHtmlPre(MWLISTENER *listener, pANTLR3_STRING body, pANTLR3_VECTOR attr);
 126+static void SBBeginGarbage(MWLISTENER *listener);
 127+static void SBEndGarbage(MWLISTENER *listener);
126128 static void * SBNew(void);
127129 static void SBReset(void *data);
128130 static void SBFree(void *data);
@@ -267,7 +269,8 @@
268270 .beginHtmlAbbr = SBBeginHtmlAbbr,
269271 .endHtmlAbbr = SBEndHtmlAbbr,
270272 .onHtmlPre = SBOnHtmlPre,
271 -
 273+ .beginGarbage = SBBeginGarbage,
 274+ .endGarbage = SBEndGarbage,
272275 };
273276
274277
@@ -872,7 +875,7 @@
873876 DATA->width = width;
874877 DATA->url = linkResolution->url;
875878 DATA->imageUrl = linkResolution->imageUrl;
876 - DATA->alt = mlOption == NULL ? NULL : mlOption->alt;
 879+ DATA->alt = (char *) (mlOption == NULL ? NULL : mlOption->alt);
877880 DATA->renderMarkup = false;
878881 DATA->startCaption = getIndex(&DATA->buf);
879882 }
@@ -1877,3 +1880,14 @@
18781881 SBOnSpecial(listener, body);
18791882 HTML_END("pre");
18801883 }
 1884+
 1885+
 1886+static void
 1887+SBBeginGarbage(MWLISTENER *listener)
 1888+{
 1889+}
 1890+
 1891+static void
 1892+SBEndGarbage(MWLISTENER *listener)
 1893+{
 1894+}
Index: trunk/parsers/libmwparser/Makefile.in
@@ -83,7 +83,7 @@
8484 libmwparser_la-mwbasicevents.lo libmwparser_la-mwformats.lo \
8585 libmwparser_la-mwheadings.lo libmwparser_la-mwhtml.lo \
8686 libmwparser_la-mwlexercontext.lo libmwparser_la-mwlinks.lo \
87 - libmwparser_la-mwlinkresolution.lo \
 87+ libmwparser_la-mwgarbage.lo libmwparser_la-mwlinkresolution.lo \
8888 libmwparser_la-mwlinkcollection.lo \
8989 libmwparser_la-mwmedialinkoption.lo libmwparser_la-mwparser.lo \
9090 libmwparser_la-mwparsercontext.lo libmwparser_la-mwtagext.lo \
@@ -313,6 +313,7 @@
314314 include/mwformats.h \
315315 include/mwheadings.h \
316316 include/mwhtml.h \
 317+ include/mwgarbage.h \
317318 include/mwkeyvalue.h \
318319 include/mwlexercontext.h \
319320 include/mwlinkcollection.h \
@@ -333,6 +334,7 @@
334335 src/mwhtml.c \
335336 src/mwlexercontext.c \
336337 src/mwlinks.c \
 338+ src/mwgarbage.c \
337339 src/mwlinkresolution.c \
338340 src/mwlinkcollection.c \
339341 src/mwmedialinkoption.c \
@@ -457,6 +459,7 @@
458460 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmwparser_la-mwattributes.Plo@am__quote@
459461 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmwparser_la-mwbasicevents.Plo@am__quote@
460462 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmwparser_la-mwformats.Plo@am__quote@
 463+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmwparser_la-mwgarbage.Plo@am__quote@
461464 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmwparser_la-mwheadings.Plo@am__quote@
462465 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmwparser_la-mwhtml.Plo@am__quote@
463466 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmwparser_la-mwlexercontext.Plo@am__quote@
@@ -540,6 +543,13 @@
541544 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
542545 @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmwparser_la_CFLAGS) $(CFLAGS) -c -o libmwparser_la-mwlinks.lo `test -f 'src/mwlinks.c' || echo '$(srcdir)/'`src/mwlinks.c
543546
 547+libmwparser_la-mwgarbage.lo: src/mwgarbage.c
 548+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmwparser_la_CFLAGS) $(CFLAGS) -MT libmwparser_la-mwgarbage.lo -MD -MP -MF $(DEPDIR)/libmwparser_la-mwgarbage.Tpo -c -o libmwparser_la-mwgarbage.lo `test -f 'src/mwgarbage.c' || echo '$(srcdir)/'`src/mwgarbage.c
 549+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmwparser_la-mwgarbage.Tpo $(DEPDIR)/libmwparser_la-mwgarbage.Plo
 550+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mwgarbage.c' object='libmwparser_la-mwgarbage.lo' libtool=yes @AMDEPBACKSLASH@
 551+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 552+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmwparser_la_CFLAGS) $(CFLAGS) -c -o libmwparser_la-mwgarbage.lo `test -f 'src/mwgarbage.c' || echo '$(srcdir)/'`src/mwgarbage.c
 553+
544554 libmwparser_la-mwlinkresolution.lo: src/mwlinkresolution.c
545555 @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmwparser_la_CFLAGS) $(CFLAGS) -MT libmwparser_la-mwlinkresolution.lo -MD -MP -MF $(DEPDIR)/libmwparser_la-mwlinkresolution.Tpo -c -o libmwparser_la-mwlinkresolution.lo `test -f 'src/mwlinkresolution.c' || echo '$(srcdir)/'`src/mwlinkresolution.c
546556 @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmwparser_la-mwlinkresolution.Tpo $(DEPDIR)/libmwparser_la-mwlinkresolution.Plo
Index: trunk/parsers/libmwparser/include/mwlistener.h
@@ -153,6 +153,8 @@
154154 void (*beginHtmlAbbr)(struct MWLISTENER_struct * listener, pANTLR3_VECTOR attr);
155155 void (*endHtmlAbbr)(struct MWLISTENER_struct * listener);
156156 void (*onHtmlPre)(struct MWLISTENER_struct * listener, pANTLR3_STRING nowiki, pANTLR3_VECTOR attr);
 157+ void (*beginGarbage)(struct MWLISTENER_struct * listener);
 158+ void (*endGarbage)(struct MWLISTENER_struct * listener);
157159 }
158160 MWLISTENER;
159161
Index: trunk/parsers/libmwparser/include/mwgarbage.h
@@ -0,0 +1,6 @@
 2+#ifndef MWGARBAGE_H_
 3+#define MWGARBAGE_H_
 4+
 5+void mwGarbageInit(MWPARSERCONTEXT *context);
 6+
 7+#endif
Index: trunk/parsers/libmwparser/include/mwparsercontext.h
@@ -59,7 +59,7 @@
6060 void (*endItalic)(struct MWPARSERCONTEXT_struct * context);
6161 void (*beginBold)(struct MWPARSERCONTEXT_struct * context, pANTLR3_VECTOR attr);
6262 void (*endBold)(struct MWPARSERCONTEXT_struct * context);
63 - void (*beginPre)(struct MWPARSERCONTEXT_struct * context);
 63+ void (*beginPre)(struct MWPARSERCONTEXT_struct * context, pANTLR3_VECTOR attr);
6464 void (*endPre)(struct MWPARSERCONTEXT_struct * context);
6565 void (*beginArticle)(struct MWPARSERCONTEXT_struct * context);
6666 void (*endArticle)(struct MWPARSERCONTEXT_struct * context);
@@ -151,6 +151,8 @@
152152 void (*beginHtmlAbbr)(struct MWPARSERCONTEXT_struct * context, pANTLR3_VECTOR attr);
153153 void (*endHtmlAbbr)(struct MWPARSERCONTEXT_struct * context);
154154 void (*onHtmlPre)(struct MWPARSERCONTEXT_struct * context, pANTLR3_STRING body, pANTLR3_VECTOR attr);
 155+ void (*beginGarbage)(struct MWPARSERCONTEXT_struct * context, pANTLR3_VECTOR attr);
 156+ void (*endGarbage)(struct MWPARSERCONTEXT_struct * context);
155157 /*
156158 * The listener API.
157159 */
@@ -231,9 +233,9 @@
232234 * @param context
233235 * @param beginmethod The name of the begin method.
234236 * @param endmethod The name of the corresponding end method.
 237+ * @param parameter Parameter to pass as last argument
235238 * @param delayFirst If also the first occurence should be delayed, i.e.,
236239 * if even explicitly inputted empty instances should be removed.
237 - * @param identifier Unique identifier in case of multiple active instances are allowed.
238240 */
239241 #define MW_DELAYED_CALL(context, beginmethod, endmethod, parameter, delayFirst) \
240242 do { \
Index: trunk/parsers/libmwparser/src/mwparsercontext.c
@@ -24,6 +24,7 @@
2525 #include <mwparser.h>
2626 #include <mwtables.h>
2727 #include <mwheadings.h>
 28+#include <mwgarbage.h>
2829 #include <mwhtml.h>
2930 #include <mwlinks.h>
3031 #include <mwlexercontext.h>
@@ -177,6 +178,7 @@
178179 mwHeadingsInit(context);
179180 mwLinksInit(context);
180181 mwHtmlInit(context);
 182+ mwGarbageInit(context);
181183
182184 context->closeFormats = closeFormats;
183185 context->openFormats = openFormats;
Index: trunk/parsers/libmwparser/src/mwhtml.c
@@ -43,6 +43,7 @@
4444 static void
4545 beginHtmlDiv(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr)
4646 {
 47+ MW_TRIGGER_DELAYED_CALLS(context);
4748 MWLISTENER *l = &context->listener;
4849 l->beginHtmlDiv(l, attr);
4950 }
@@ -57,6 +58,7 @@
5859 static void
5960 beginHtmlBlockquote(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr)
6061 {
 62+ MW_TRIGGER_DELAYED_CALLS(context);
6163 MWLISTENER *l = &context->listener;
6264 l->beginHtmlBlockquote(l, attr);
6365 }
@@ -71,6 +73,7 @@
7274 static void
7375 beginHtmlCenter(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr)
7476 {
 77+ MW_TRIGGER_DELAYED_CALLS(context);
7578 MWLISTENER *l = &context->listener;
7679 l->beginHtmlCenter(l, attr);
7780 }
Index: trunk/parsers/libmwparser/src/mwbasicevents.c
@@ -34,7 +34,6 @@
3535 onSpace(MWPARSERCONTEXT *context, pANTLR3_STRING space)
3636 {
3737 MW_TRIGGER_DELAYED_CALLS(context);
38 -
3938 MWLISTENER *l = &context->listener;
4039 l->onSpace(l, space);
4140 }
@@ -42,6 +41,7 @@
4342 static void
4443 onNewline(MWPARSERCONTEXT *context)
4544 {
 45+ MW_TRIGGER_DELAYED_CALLS(context);
4646 MWLISTENER *l = &context->listener;
4747 l->onNewline(l);
4848 }
@@ -49,6 +49,7 @@
5050 static void
5151 onBr(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr)
5252 {
 53+ MW_TRIGGER_DELAYED_CALLS(context);
5354 MWLISTENER *l = &context->listener;
5455 l->onBr(l, attr);
5556 }
@@ -56,6 +57,7 @@
5758 static void
5859 beginParagraph(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr)
5960 {
 61+ MW_TRIGGER_DELAYED_CALLS(context);
6062 MWLISTENER *l = &context->listener;
6163 l->beginParagraph(l, attr);
6264 }
Index: trunk/parsers/libmwparser/src/mwtables.c
@@ -18,6 +18,7 @@
1919 static void
2020 beginTable(MWPARSERCONTEXT *context, pANTLR3_VECTOR attributes)
2121 {
 22+ MW_TRIGGER_DELAYED_CALLS(context);
2223 MWLISTENER *l = &context->listener;
2324 l->beginTable(l, attributes);
2425 }
@@ -32,6 +33,7 @@
3334 static void
3435 beginTableRow(MWPARSERCONTEXT *context, pANTLR3_VECTOR attributes)
3536 {
 37+ MW_TRIGGER_DELAYED_CALLS(context);
3638 MWLISTENER *l = &context->listener;
3739 l->beginTableRow(l, attributes);
3840 }
@@ -46,6 +48,7 @@
4749 static void
4850 beginTableCell(MWPARSERCONTEXT *context, pANTLR3_VECTOR attributes)
4951 {
 52+ MW_TRIGGER_DELAYED_CALLS(context);
5053 MWLISTENER *l = &context->listener;
5154 l->beginTableCell(l, attributes);
5255 }
@@ -60,6 +63,7 @@
6164 static void
6265 beginTableHeading(MWPARSERCONTEXT *context, pANTLR3_VECTOR attributes)
6366 {
 67+ MW_TRIGGER_DELAYED_CALLS(context);
6468 MWLISTENER *l = &context->listener;
6569 l->beginTableHeading(l, attributes);
6670 }
@@ -74,6 +78,7 @@
7579 static void
7680 beginTableCaption(MWPARSERCONTEXT *context, pANTLR3_VECTOR attributes)
7781 {
 82+ MW_TRIGGER_DELAYED_CALLS(context);
7883 MWLISTENER *l = &context->listener;
7984 l->beginTableCaption(l, attributes);
8085 }
@@ -85,10 +90,10 @@
8691 l->endTableCaption(l);
8792 }
8893
89 -
9094 static void
9195 beginTableBody(MWPARSERCONTEXT *context, pANTLR3_VECTOR attributes)
9296 {
 97+ MW_TRIGGER_DELAYED_CALLS(context);
9398 MWLISTENER *l = &context->listener;
9499 l->beginTableBody(l, attributes);
95100 }
Index: trunk/parsers/libmwparser/src/mwformats.c
@@ -6,6 +6,8 @@
77 static void endItalic(MWPARSERCONTEXT *context);
88 static void beginBold(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr);
99 static void endBold(MWPARSERCONTEXT *context);
 10+static void beginPre(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr);
 11+static void endPre(MWPARSERCONTEXT *context);
1012
1113 static void
1214 beginItalic(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr)
@@ -72,8 +74,9 @@
7375 }
7476
7577 static void
76 -beginPre(MWPARSERCONTEXT *context)
 78+beginPre(MWPARSERCONTEXT *context, pANTLR3_VECTOR attr)
7779 {
 80+ MW_DELAYED_CALL( context, beginPre, endPre, attr, true);
7881 MWLISTENER *l = &context->listener;
7982 l->beginPre(l);
8083 }
@@ -81,6 +84,7 @@
8285 static void
8386 endPre(MWPARSERCONTEXT *context)
8487 {
 88+ MW_SKIP_IF_EMPTY( context, beginPre, endPre);
8589 MWLISTENER *l = &context->listener;
8690 l->endPre(l);
8791 }
Index: trunk/parsers/libmwparser/src/mwlexerpredicatetable.php
@@ -224,7 +224,7 @@
225225 'close' => 'htmlDtClose',
226226 'initiallyDisabled' => array('BLOCK_CONTEXT'),
227227 'affects' => array(new TypeDisable('block', 'BLOCK')),
228 - 'mayNest' => true,
 228+ 'mayNest' => false,
229229 'types' => array('block', 'html'),
230230 ),
231231 array(
Index: trunk/parsers/libmwparser/src/mwlistener.template
@@ -117,6 +117,8 @@
118118 static void PREFIX`BeginHtmlAbbr'(MWLISTENER *listener, pANTLR3_VECTOR attributes);
119119 static void PREFIX`EndHtmlAbbr'(MWLISTENER *listener);
120120 static void PREFIX`OnHtmlPre'(MWLISTENER *listener, pANTLR3_STRING body, pANTLR3_VECTOR attr);
 121+static void PREFIX`BeginGarbage'(MWLISTENER *listener);
 122+static void PREFIX`EndGarbage'(MWLISTENER *listener);
121123 static void * PREFIX`New'(void);
122124 static void PREFIX`Reset'(void *data);
123125 static void PREFIX`Free'(void *data);
@@ -256,6 +258,8 @@
257259 .beginHtmlAbbr = PREFIX`BeginHtmlAbbr',
258260 .endHtmlAbbr = PREFIX`EndHtmlAbbr',
259261 .onHtmlPre = PREFIX`OnHtmlPre',
 262+ .beginGarbage = PREFIX`BeginGarbage',
 263+ .endGarbage = PREFIX`EndGarbage',
260264
261265 };
262266
@@ -1463,3 +1467,27 @@
14641468 PREFIX`OnHtmlPre'(MWLISTENER *listener, pANTLR3_STRING body, pANTLR3_VECTOR attr)
14651469 {
14661470 }
 1471+
 1472+
 1473+/**
 1474+ * Indicates beginning of garbage.
 1475+ *
 1476+ * The listener could ignore any generated event untli end of garbage,
 1477+ * or it could render the contents in a special error box.
 1478+ *
 1479+ * @param listener
 1480+ * @param attr
 1481+ */
 1482+static void
 1483+PREFIX`BeginGarbage'(MWLISTENER *listener)
 1484+{
 1485+}
 1486+
 1487+/**
 1488+ * Indicates end of garbage.
 1489+ *
 1490+ * @param listener
 1491+ */
 1492+static void
 1493+PREFIX`EndGarbage'(MWLISTENER *listener)
 1494+{
Index: trunk/parsers/libmwparser/src/mwheadings.c
@@ -12,6 +12,7 @@
1313 static void
1414 beginHeading(MWPARSERCONTEXT *context, int level, pANTLR3_STRING anchor, pANTLR3_VECTOR attr)
1515 {
 16+ MW_TRIGGER_DELAYED_CALLS(context);
1617 MWLISTENER *l = &context->listener;
1718 l->beginHeading(l, level, anchor, attr);
1819 }
@@ -26,6 +27,7 @@
2728 static void
2829 beginTableOfContents(MWPARSERCONTEXT *context)
2930 {
 31+ MW_TRIGGER_DELAYED_CALLS(context);
3032 MWLISTENER *l = &context->listener;
3133 l->beginTableOfContents(l);
3234 }
Index: trunk/parsers/libmwparser/src/mwgarbage.c
@@ -0,0 +1,28 @@
 2+#include <antlr3defs.h>
 3+#include <mwparsercontext.h>
 4+#include <mwgarbage.h>
 5+
 6+static void beginGarbage(MWPARSERCONTEXT * context, pANTLR3_VECTOR attr);
 7+static void endGarbage(MWPARSERCONTEXT * context);
 8+
 9+static void
 10+beginGarbage(MWPARSERCONTEXT * context, pANTLR3_VECTOR attr)
 11+{
 12+ MW_DELAYED_CALL( context, beginGarbage, endGarbage, attr, true);
 13+ MWLISTENER *l = &context->listener;
 14+ l->beginGarbage(l);
 15+}
 16+
 17+static void
 18+endGarbage(MWPARSERCONTEXT * context)
 19+{
 20+ MW_SKIP_IF_EMPTY( context, beginGarbage, endGarbage);
 21+ MWLISTENER *l = &context->listener;
 22+ l->endGarbage(l);
 23+}
 24+
 25+void mwGarbageInit(MWPARSERCONTEXT *context)
 26+{
 27+ context->beginGarbage = beginGarbage;
 28+ context->endGarbage = endGarbage;
 29+}
Index: trunk/parsers/libmwparser/src/tracingcontext.c
@@ -126,6 +126,8 @@
127127 static void TCBeginHtmlAbbr(MWLISTENER *listener, pANTLR3_VECTOR attributes);
128128 static void TCEndHtmlAbbr(MWLISTENER *listener);
129129 static void TCOnHtmlPre(MWLISTENER *listener, pANTLR3_STRING nowiki, pANTLR3_VECTOR attr);
 130+static void TCBeginGarbage(MWLISTENER *listener);
 131+static void TCEndGarbage(MWLISTENER *listener);
130132
131133 static void * TCNew(void);
132134 static void TCFree(void *tcontext);
@@ -257,6 +259,8 @@
258260 .beginHtmlAbbr = TCBeginHtmlAbbr,
259261 .endHtmlAbbr = TCEndHtmlAbbr,
260262 .onHtmlPre = TCOnHtmlPre,
 263+ .beginGarbage = TCBeginGarbage,
 264+ .endGarbage = TCEndGarbage,
261265 };
262266
263267
@@ -1322,3 +1326,16 @@
13231327 TC(listener)->indent -= INDENT_SPACES;
13241328 }
13251329
 1330+static void
 1331+TCBeginGarbage(MWLISTENER *listener) {
 1332+ TCPrintIndent(listener);
 1333+ printf("BEGIN GARBAGE\n");
 1334+ TCIncreaseIndent(listener);
 1335+}
 1336+
 1337+static void
 1338+TCEndGarbage(MWLISTENER *listener) {
 1339+ TCDecreaseIndent(listener);
 1340+ TCPrintIndent(listener);
 1341+ printf("END GARBAGE\n");
 1342+}
Index: trunk/parsers/libmwparser/src/mwWikitextParser.g
@@ -70,7 +70,7 @@
7171 (()=> NEWLINE)+
7272 ;
7373
74 -block_element: paragraph | table | wikitext_list | heading | pre | horizontal_rule | html_div | html_list | html_pre | html_blockquote | html_center | block_tag_extension
 74+block_element: paragraph | table | html_table | wikitext_list | heading | pre | horizontal_rule | html_div | html_list | html_pre | html_blockquote | html_center | block_tag_extension
7575 ;
7676
7777 html_div:
@@ -121,13 +121,12 @@
122122 ;
123123
124124 html_ul:
125 - token = HTML_UL_OPEN
 125+ token = HTML_UL_OPEN html_garbage
126126 {
 127+ MW_TRIGGER_DELAYED_CALLS(CX);
127128 LISTENER->beginBulletList(LISTENER, $token->custom);
128129 }
129 - ((~(EOF|HTML_UL_CLOSE))=>
130 - (()=> html_ul_li
131 - | block_element_contents))*
 130+ ((~(EOF|HTML_UL_CLOSE))=> html_ul_li)*
132131 (HTML_UL_CLOSE|EOF)
133132 {
134133 LISTENER->endBulletList(LISTENER);
@@ -135,13 +134,12 @@
136135 ;
137136
138137 html_ol:
139 - token = HTML_OL_OPEN
 138+ token = HTML_OL_OPEN html_garbage
140139 {
 140+ MW_TRIGGER_DELAYED_CALLS(CX);
141141 LISTENER->beginEnumerationList(LISTENER, $token->custom);
142142 }
143 - ((~(EOF|HTML_OL_CLOSE))=>
144 - (()=> html_ol_li
145 - | block_element_contents))*
 143+ ((~(EOF|HTML_OL_CLOSE))=> html_ol_li)*
146144 (HTML_OL_CLOSE|EOF)
147145 {
148146 LISTENER->endEnumerationList(LISTENER);
@@ -149,14 +147,12 @@
150148 ;
151149
152150 html_dl:
153 - token = HTML_DL_OPEN
 151+ token = HTML_DL_OPEN html_garbage
154152 {
 153+ MW_TRIGGER_DELAYED_CALLS(CX);
155154 LISTENER->beginDefinitionList(LISTENER, $token->custom);
156155 }
157 - ((~(HTML_DL_CLOSE|EOF))=>
158 - (()=> html_dd
159 - | ()=> html_dt
160 - | block_element_contents))*
 156+ ((~(HTML_DL_CLOSE|EOF))=> (html_dd | html_dt))*
161157 (HTML_DL_CLOSE|EOF)
162158 {
163159 LISTENER->endDefinitionList(LISTENER);
@@ -166,6 +162,7 @@
167163 html_ul_li:
168164 token = HTML_UL_LI_OPEN
169165 {
 166+ MW_TRIGGER_DELAYED_CALLS(CX);
170167 LISTENER->beginBulletListItem(LISTENER, $token->custom);
171168 }
172169 block_element_contents
@@ -173,11 +170,13 @@
174171 {
175172 LISTENER->endBulletListItem(LISTENER);
176173 }
 174+ html_garbage
177175 ;
178176
179177 html_ol_li:
180178 token = HTML_OL_LI_OPEN
181179 {
 180+ MW_TRIGGER_DELAYED_CALLS(CX);
182181 LISTENER->beginEnumerationItem(LISTENER, $token->custom);
183182 }
184183 block_element_contents
@@ -185,11 +184,13 @@
186185 {
187186 LISTENER->endEnumerationItem(LISTENER);
188187 }
 188+ html_garbage
189189 ;
190190
191191 html_dt:
192192 token = HTML_DT_OPEN
193193 {
 194+ MW_TRIGGER_DELAYED_CALLS(CX);
194195 LISTENER->beginDefinedTermItem(LISTENER, $token->custom);
195196 }
196197 block_element_contents
@@ -197,11 +198,13 @@
198199 {
199200 LISTENER->endDefinedTermItem(LISTENER);
200201 }
 202+ html_garbage
201203 ;
202204
203205 html_dd:
204206 token = HTML_DD_OPEN
205207 {
 208+ MW_TRIGGER_DELAYED_CALLS(CX);
206209 LISTENER->beginDefinitionItem(LISTENER, $token->custom);
207210 }
208211 block_element_contents
@@ -209,10 +212,18 @@
210213 {
211214 LISTENER->endDefinitionItem(LISTENER);
212215 }
 216+ html_garbage
213217 ;
214218
215219
216 -wikitext_list: (()=> list_element (()=>NEWLINE)?)+ {CX->onNonListBlockElement(CX);}
 220+wikitext_list:
 221+ {
 222+ MW_TRIGGER_DELAYED_CALLS(CX);
 223+ }
 224+ (()=> list_element (()=>NEWLINE)?)+
 225+ {
 226+ CX->onNonListBlockElement(CX);
 227+ }
217228 ;
218229
219230 list_element:
@@ -348,7 +359,7 @@
349360
350361 pre:
351362 {
352 - CX->beginPre(CX);
 363+ CX->beginPre(CX, NULL);
353364 }
354365 (()=> INDENT (inline_text_line)? (NEWLINE|EOF))+
355366 {
@@ -359,23 +370,42 @@
360371 table:
361372 begin_table
362373 ((TABLE_CAPTION|TABLE_ROW_SEPARATOR|TABLE_CELL|
363 - TABLE_HEADING|HTML_CAPTION_OPEN|HTML_TR_OPEN|
364 - HTML_TD_OPEN|HTML_TH_OPEN|HTML_TBODY_OPEN)=> table_body)*
 374+ TABLE_HEADING)=> table_body)*
365375 end_table
366376 (()=> garbage_inline_text_line)?
367377 ;
368378
 379+html_table:
 380+ html_begin_table
 381+ ((HTML_CAPTION_OPEN|HTML_TR_OPEN|
 382+ HTML_TD_OPEN|HTML_TH_OPEN|HTML_TBODY_OPEN)=> html_table_body)*
 383+ html_end_table
 384+ ;
 385+
369386 table_body:
370 - ((TABLE_CAPTION|HTML_CAPTION_OPEN)=> table_captions)?
371 - ((~(END_TABLE|HTML_TABLE_CLOSE))=>
 387+ ((TABLE_CAPTION)=> table_captions)?
 388+ ((~(END_TABLE))=>
372389 {
373390 CX->beginTableBody(CX, NULL);
374391 }
 392+ table_rows
 393+ {
 394+ CX->endTableBody(CX);
 395+ }
 396+ )?
 397+ ;
 398+
 399+html_table_body:
 400+ ((HTML_CAPTION_OPEN)=> html_table_captions)?
 401+ ((~(HTML_TABLE_CLOSE))=>
 402+ {
 403+ CX->beginTableBody(CX, NULL);
 404+ }
375405 (
376 - (()=> HTML_TBODY_OPEN table_rows HTML_TBODY_CLOSE?)
377 - |
378 - table_rows
379 - )
 406+ (()=> HTML_TBODY_OPEN html_garbage html_table_rows (HTML_TBODY_CLOSE html_garbage)?)
 407+ |
 408+ html_table_rows
 409+ )
380410 {
381411 CX->endTableBody(CX);
382412 }
@@ -383,15 +413,13 @@
384414 ;
385415
386416 table_captions:
387 - (
388 - caption = TABLE_CAPTION table_caption_contents[$caption->custom] ((TABLE_CELL_INLINE)=> inline_table_caption)*
389 - )
390 - |
391 - (
392 - caption = HTML_CAPTION_OPEN table_caption_contents[$caption->custom] HTML_CAPTION_CLOSE?
393 - )
 417+ caption = TABLE_CAPTION table_caption_contents[$caption->custom] ((TABLE_CELL_INLINE)=> inline_table_caption)*
394418 ;
395419
 420+html_table_captions:
 421+ caption = HTML_CAPTION_OPEN table_caption_contents[$caption->custom] HTML_CAPTION_CLOSE?
 422+ ;
 423+
396424 inline_table_caption: TABLE_CELL_INLINE table_caption_contents[NULL]
397425 ;
398426
@@ -406,63 +434,86 @@
407435 ;
408436
409437 begin_table:
410 - begin = (BEGIN_TABLE|HTML_TABLE_OPEN) (()=> NEWLINE)*
411 - (()=> garbage_inline_text_line (()=>NEWLINE)*)*
412 - block_element_contents
 438+ begin = BEGIN_TABLE table_garbage
413439 {CX->beginTable(CX, $begin->custom);}
414440 ;
415441
416 -garbage_inline_text_line: inline_text_line
 442+html_begin_table:
 443+ begin = HTML_TABLE_OPEN html_garbage
 444+ {CX->beginTable(CX, $begin->custom);}
417445 ;
418446
419 -end_table: (END_TABLE | HTML_TABLE_CLOSE | EOF) {CX->endTable(CX);}
 447+end_table: (END_TABLE | EOF) {CX->endTable(CX);}
420448 ;
421449
422 -table_rows: ((~(TABLE_ROW_SEPARATOR|HTML_TR_OPEN))=> table_first_row)? ((TABLE_ROW_SEPARATOR|HTML_TR_OPEN)=> table_row)*
 450+html_end_table: (HTML_TABLE_CLOSE | EOF) {CX->endTable(CX);}
423451 ;
424452
 453+table_rows: ((~(TABLE_ROW_SEPARATOR))=> table_first_row)? ((TABLE_ROW_SEPARATOR)=> table_row)*
 454+ ;
 455+
425456 table_first_row: table_row_content[NULL]
426457 ;
427458
428 -table_row:
429 - (row = TABLE_ROW_SEPARATOR table_row_content[$row->custom])
430 - |
431 - (row = HTML_TR_OPEN table_row_content[$row->custom] HTML_TR_CLOSE?)
 459+html_table_rows: ((HTML_TR_OPEN|HTML_TD_OPEN|HTML_TH_OPEN)=> html_table_row)*
432460 ;
433461
 462+table_row:
 463+ row = TABLE_ROW_SEPARATOR table_garbage table_row_content[$row->custom]
 464+ ;
 465+
 466+html_table_row:
 467+ ((HTML_TR_OPEN)=>
 468+ (row = HTML_TR_OPEN html_garbage html_table_row_content[$row->custom] ((HTML_TR_CLOSE)=> HTML_TR_CLOSE html_garbage)?)
 469+ |
 470+ html_table_row_content[NULL]
 471+ )
 472+ ;
 473+
 474+
434475 table_row_content[pANTLR3_VECTOR attrs]:
435 - {
436 - CX->beginTableRow(CX, attrs);
437 - }
438 - table_cells
439 - {
440 - CX->endTableRow(CX);
441 - }
 476+ {
 477+ CX->beginTableRow(CX, attrs);
 478+ }
 479+ table_cells
 480+ {
 481+ CX->endTableRow(CX);
 482+ }
442483 ;
443484
444 -table_cells: ((TABLE_CELL|TABLE_CELL_INLINE|TABLE_HEADING|TABLE_HEADING_INLINE|HTML_TD_OPEN|HTML_TH_OPEN)=> (table_cell|table_heading))*
 485+html_table_row_content[pANTLR3_VECTOR attrs]:
 486+ {
 487+ CX->beginTableRow(CX, attrs);
 488+ }
 489+ html_table_cells
 490+ {
 491+ CX->endTableRow(CX);
 492+ }
445493 ;
446494
447 -table_cell:
448 - (
449 - cell = (TABLE_CELL|TABLE_CELL_INLINE) table_cell_common[$cell->custom]
450 - )
451 - |
452 - (
453 - cell = HTML_TD_OPEN table_cell_common[$cell->custom] HTML_TD_CLOSE?
454 - )
 495+table_cells: ((TABLE_CELL|TABLE_CELL_INLINE|TABLE_HEADING|TABLE_HEADING_INLINE)=> (table_cell|table_heading))*
455496 ;
456497
 498+html_table_cells: ((HTML_TD_OPEN|HTML_TH_OPEN)=> (html_table_cell|html_table_heading))*
 499+ ;
 500+
 501+table_cell:
 502+ cell = (TABLE_CELL|TABLE_CELL_INLINE) table_cell_common[$cell->custom]
 503+ ;
 504+
 505+html_table_cell:
 506+ cell = HTML_TD_OPEN table_cell_common[$cell->custom] (HTML_TD_CLOSE html_garbage)?
 507+ ;
 508+
 509+
457510 table_heading:
458 - (
459 - h= (TABLE_HEADING|TABLE_HEADING_INLINE) table_heading_common[$h->custom]
460 - )
461 - |
462 - (
463 - h = HTML_TH_OPEN table_heading_common[$h->custom] HTML_TH_CLOSE?
464 - )
 511+ h= (TABLE_HEADING|TABLE_HEADING_INLINE) table_heading_common[$h->custom]
465512 ;
466513
 514+html_table_heading:
 515+ h = HTML_TH_OPEN table_heading_common[$h->custom] (HTML_TH_CLOSE html_garbage)?
 516+ ;
 517+
467518 table_cell_common[pANTLR3_VECTOR attrs]:
468519 {
469520 CX->beginTableCell(CX, attrs);
@@ -483,6 +534,38 @@
484535 }
485536 ;
486537
 538+table_garbage:
 539+ {
 540+ CX->beginGarbage(CX, NULL);
 541+ }
 542+ (()=> NEWLINE)*
 543+ (()=> garbage_inline_text_line (()=>NEWLINE)*)*
 544+ block_element_contents
 545+ {
 546+ CX->endGarbage(CX);
 547+ }
 548+ ;
 549+
 550+html_garbage:
 551+ {
 552+ CX->beginGarbage(CX, NULL);
 553+ }
 554+ block_element_contents
 555+ {
 556+ CX->endGarbage(CX);
 557+ }
 558+ ;
 559+
 560+garbage_inline_text_line:
 561+ {
 562+ CX->beginGarbage(CX, NULL);
 563+ }
 564+ inline_text_line
 565+ {
 566+ CX->endGarbage(CX);
 567+ }
 568+ ;
 569+
487570 block_element_contents:
488571 (
489572 /*
@@ -657,6 +740,7 @@
658741 attr->remove(attr, attr->count - 1);
659742 const char * name = attr->get(attr, attr->count - 1);
660743 attr->remove(attr, attr->count - 1);
 744+ MW_TRIGGER_DELAYED_CALLS(CX);
661745 LISTENER->onTagExtension(LISTENER, name, body, attr);
662746 }
663747 ;
Index: trunk/parsers/libmwparser/tests/table/table3.out
@@ -1,11 +1,19 @@
22 BEGIN ARTICLE
3 - WORD[garbage]
4 - WORD[inline]
5 - SPACE[ ]
6 - BEGIN ITALIC
7 - WORD[formatted]
8 - END ITALIC
9 - WORD[text]
 3+ BEGIN GARBAGE
 4+ BEGIN GARBAGE
 5+ WORD[garbage]
 6+ END GARBAGE
 7+ BEGIN GARBAGE
 8+ WORD[inline]
 9+ SPACE[ ]
 10+ BEGIN ITALIC
 11+ WORD[formatted]
 12+ END ITALIC
 13+ END GARBAGE
 14+ BEGIN GARBAGE
 15+ WORD[text]
 16+ END GARBAGE
 17+ END GARBAGE
1018 BEGIN TABLE key1="value" key2="value"
1119 BEGIN TABLE BODY
1220 BEGIN ROW
@@ -74,12 +82,14 @@
7583 END ROW
7684 END TABLE BODY
7785 END TABLE
78 - SPACE[ ]
79 - WORD[garbage]
80 - SPACE[ ]
81 - BEGIN ITALIC
82 - WORD[formatted]
83 - END ITALIC
84 - SPACE[ ]
85 - WORD[text]
 86+ BEGIN GARBAGE
 87+ SPACE[ ]
 88+ WORD[garbage]
 89+ SPACE[ ]
 90+ BEGIN ITALIC
 91+ WORD[formatted]
 92+ END ITALIC
 93+ SPACE[ ]
 94+ WORD[text]
 95+ END GARBAGE
8696 END ARTICLE
Index: trunk/parsers/libmwparser/tests/table/table6.out
@@ -1,5 +1,7 @@
22 BEGIN ARTICLE
3 - SPACE[ ]
 3+ BEGIN GARBAGE
 4+ SPACE[ ]
 5+ END GARBAGE
46 BEGIN TABLE
57 BEGIN TABLE BODY
68 BEGIN ROW
@@ -30,7 +32,9 @@
3133 SPECIAL[|]
3234 SPECIAL[}]
3335 END PARAGRAPH
34 - SPACE[ ]
 36+ BEGIN GARBAGE
 37+ SPACE[ ]
 38+ END GARBAGE
3539 BEGIN TABLE
3640 BEGIN TABLE BODY
3741 BEGIN ROW
@@ -48,7 +52,9 @@
4953 WORD[table]
5054 SPECIAL[>]
5155 END PARAGRAPH
52 - SPACE[ ]
 56+ BEGIN GARBAGE
 57+ SPACE[ ]
 58+ END GARBAGE
5359 BEGIN TABLE
5460 BEGIN TABLE BODY
5561 BEGIN ROW
@@ -77,7 +83,9 @@
7884 WORD[table]
7985 WORD[6]
8086 NEWLINE
81 - SPACE[ ]
 87+ BEGIN GARBAGE
 88+ SPACE[ ]
 89+ END GARBAGE
8290 BEGIN TABLE
8391 BEGIN TABLE BODY
8492 BEGIN ROW
Index: trunk/parsers/libmwparser/tests/table/table7.in
@@ -0,0 +1,10 @@
 2+
 3+{|
 4+* list item
 5+!t
 6+
 7+|-
 8+* list item
 9+| z
 10+
 11+|}
Index: trunk/parsers/libmwparser/tests/table/table7.out
@@ -0,0 +1,39 @@
 2+BEGIN ARTICLE
 3+ BEGIN GARBAGE
 4+ BEGIN BULLET LIST
 5+ BEGIN BULLET LIST ITEM
 6+ WORD[list]
 7+ SPACE[ ]
 8+ WORD[item]
 9+ SPACE[ ]
 10+ END BULLET LIST ITEM
 11+ END BULLET LIST
 12+ END GARBAGE
 13+ BEGIN TABLE
 14+ BEGIN TABLE BODY
 15+ BEGIN ROW
 16+ BEGIN TABLE HEADING
 17+ WORD[t]
 18+ NEWLINE
 19+ END TABLE HEADING
 20+ END ROW
 21+ BEGIN GARBAGE
 22+ BEGIN BULLET LIST
 23+ BEGIN BULLET LIST ITEM
 24+ WORD[list]
 25+ SPACE[ ]
 26+ WORD[item]
 27+ SPACE[ ]
 28+ END BULLET LIST ITEM
 29+ END BULLET LIST
 30+ END GARBAGE
 31+ BEGIN ROW
 32+ BEGIN CELL
 33+ SPACE[ ]
 34+ WORD[z]
 35+ NEWLINE
 36+ END CELL
 37+ END ROW
 38+ END TABLE BODY
 39+ END TABLE
 40+END ARTICLE
Index: trunk/parsers/libmwparser/tests/format/heading1.out
@@ -29,7 +29,9 @@
3030 WORD[text]
3131 SPACE[ ]
3232 END PARAGRAPH
33 - SPACE[ ]
 33+ BEGIN GARBAGE
 34+ SPACE[ ]
 35+ END GARBAGE
3436 BEGIN TABLE
3537 BEGIN TABLE BODY
3638 BEGIN ROW
Index: trunk/parsers/libmwparser/tests/testsuite
@@ -579,7 +579,7 @@
580580 # List of the tested programs.
581581 at_tested=''
582582 # List of the all the test groups.
583 -at_groups_all=' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35'
 583+at_groups_all=' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37'
584584 # As many question marks as there are digits in the last test group number.
585585 # Used to normalize the test group numbers so that `ls' lists them in
586586 # numerical order.
@@ -592,34 +592,36 @@
593593 5;testsuite.at:35;entity1;;
594594 6;testsuite.at:42;block1;;
595595 7;testsuite.at:49;inline1;;
596 -8;testsuite.at:56;italic1;;
597 -9;testsuite.at:63;italic2;;
598 -10;testsuite.at:70;italic3;;
599 -11;testsuite.at:77;italic4;;
600 -12;testsuite.at:84;italic5;;
601 -13;testsuite.at:91;bold1;;
602 -14;testsuite.at:98;bold2;;
603 -15;testsuite.at:105;bolditalic1;;
604 -16;testsuite.at:112;bolditalic2;;
605 -17;testsuite.at:119;pre1;;
606 -18;testsuite.at:126;heading1;;
607 -19;testsuite.at:133;heading2;;
608 -20;testsuite.at:140;table1;;
609 -21;testsuite.at:147;table2;;
610 -22;testsuite.at:154;table3;;
611 -23;testsuite.at:161;table4;;
612 -24;testsuite.at:168;table5;;
613 -25;testsuite.at:175;table6;;
614 -26;testsuite.at:182;list1;;
615 -27;testsuite.at:189;list2;;
616 -28;testsuite.at:196;list3;;
617 -29;testsuite.at:203;list4;;
618 -30;testsuite.at:210;hr;;
619 -31;testsuite.at:217;link1;;
620 -32;testsuite.at:225;link2;;
621 -33;testsuite.at:232;link3;;
622 -34;testsuite.at:239;link4;;
623 -35;testsuite.at:246;link5;;
 596+8;testsuite.at:56;garbage;;
 597+9;testsuite.at:63;italic1;;
 598+10;testsuite.at:70;italic2;;
 599+11;testsuite.at:77;italic3;;
 600+12;testsuite.at:84;italic4;;
 601+13;testsuite.at:91;italic5;;
 602+14;testsuite.at:98;bold1;;
 603+15;testsuite.at:105;bold2;;
 604+16;testsuite.at:112;bolditalic1;;
 605+17;testsuite.at:119;bolditalic2;;
 606+18;testsuite.at:126;pre1;;
 607+19;testsuite.at:133;heading1;;
 608+20;testsuite.at:140;heading2;;
 609+21;testsuite.at:147;table1;;
 610+22;testsuite.at:154;table2;;
 611+23;testsuite.at:161;table3;;
 612+24;testsuite.at:168;table4;;
 613+25;testsuite.at:175;table5;;
 614+26;testsuite.at:182;table6;;
 615+27;testsuite.at:189;table7;;
 616+28;testsuite.at:196;list1;;
 617+29;testsuite.at:203;list2;;
 618+30;testsuite.at:210;list3;;
 619+31;testsuite.at:217;list4;;
 620+32;testsuite.at:224;hr;;
 621+33;testsuite.at:231;link1;;
 622+34;testsuite.at:239;link2;;
 623+35;testsuite.at:246;link3;;
 624+36;testsuite.at:253;link4;;
 625+37;testsuite.at:260;link5;;
624626 "
625627
626628 # at_fn_validate_ranges NAME...
@@ -631,7 +633,7 @@
632634 for at_grp
633635 do
634636 eval at_value=\$$at_grp
635 - if test $at_value -lt 1 || test $at_value -gt 35; then
 637+ if test $at_value -lt 1 || test $at_value -gt 37; then
636638 $as_echo "invalid test group: $at_value" >&2
637639 exit 1
638640 fi
@@ -2227,10 +2229,10 @@
22282230 read at_status <"$at_status_file"
22292231 #AT_STOP_7
22302232 #AT_START_8
2231 -# 8. testsuite.at:56: italic1
 2233+# 8. testsuite.at:56: garbage
22322234 at_setup_line='testsuite.at:56'
22332235 at_fn_banner 1
2234 -at_desc="italic1"
 2236+at_desc="garbage"
22352237 at_desc_line=" 8: $at_desc "
22362238 $at_quiet $as_echo_n "$at_desc_line"
22372239 at_xfail=no
@@ -2244,9 +2246,9 @@
22452247 _ATEOF
22462248
22472249 { set +x
2248 -$as_echo "$at_srcdir/testsuite.at:59: testtext \${srcdir}/format/italic1.in > tempoutput && diff \${srcdir}/format/italic1.out tempoutput"
 2250+$as_echo "$at_srcdir/testsuite.at:59: testtext \${srcdir}/html/garbage.in > tempoutput && diff \${srcdir}/html/garbage.out tempoutput"
22492251 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:59"
2250 -( $at_check_trace; testtext ${srcdir}/format/italic1.in > tempoutput && diff ${srcdir}/format/italic1.out tempoutput
 2252+( $at_check_trace; testtext ${srcdir}/html/garbage.in > tempoutput && diff ${srcdir}/html/garbage.out tempoutput
22512253 ) >>"$at_stdout" 2>>"$at_stderr"
22522254 at_status=$? at_failed=false
22532255 $at_check_filter
@@ -2263,10 +2265,10 @@
22642266 read at_status <"$at_status_file"
22652267 #AT_STOP_8
22662268 #AT_START_9
2267 -# 9. testsuite.at:63: italic2
 2269+# 9. testsuite.at:63: italic1
22682270 at_setup_line='testsuite.at:63'
22692271 at_fn_banner 1
2270 -at_desc="italic2"
 2272+at_desc="italic1"
22712273 at_desc_line=" 9: $at_desc "
22722274 $at_quiet $as_echo_n "$at_desc_line"
22732275 at_xfail=no
@@ -2280,9 +2282,9 @@
22812283 _ATEOF
22822284
22832285 { set +x
2284 -$as_echo "$at_srcdir/testsuite.at:66: testtext \${srcdir}/format/italic2.in > tempoutput && diff \${srcdir}/format/italic2.out tempoutput"
 2286+$as_echo "$at_srcdir/testsuite.at:66: testtext \${srcdir}/format/italic1.in > tempoutput && diff \${srcdir}/format/italic1.out tempoutput"
22852287 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:66"
2286 -( $at_check_trace; testtext ${srcdir}/format/italic2.in > tempoutput && diff ${srcdir}/format/italic2.out tempoutput
 2288+( $at_check_trace; testtext ${srcdir}/format/italic1.in > tempoutput && diff ${srcdir}/format/italic1.out tempoutput
22872289 ) >>"$at_stdout" 2>>"$at_stderr"
22882290 at_status=$? at_failed=false
22892291 $at_check_filter
@@ -2299,10 +2301,10 @@
23002302 read at_status <"$at_status_file"
23012303 #AT_STOP_9
23022304 #AT_START_10
2303 -# 10. testsuite.at:70: italic3
 2305+# 10. testsuite.at:70: italic2
23042306 at_setup_line='testsuite.at:70'
23052307 at_fn_banner 1
2306 -at_desc="italic3"
 2308+at_desc="italic2"
23072309 at_desc_line=" 10: $at_desc "
23082310 $at_quiet $as_echo_n "$at_desc_line"
23092311 at_xfail=no
@@ -2316,9 +2318,9 @@
23172319 _ATEOF
23182320
23192321 { set +x
2320 -$as_echo "$at_srcdir/testsuite.at:73: testtext \${srcdir}/format/italic3.in > tempoutput && diff \${srcdir}/format/italic3.out tempoutput"
 2322+$as_echo "$at_srcdir/testsuite.at:73: testtext \${srcdir}/format/italic2.in > tempoutput && diff \${srcdir}/format/italic2.out tempoutput"
23212323 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:73"
2322 -( $at_check_trace; testtext ${srcdir}/format/italic3.in > tempoutput && diff ${srcdir}/format/italic3.out tempoutput
 2324+( $at_check_trace; testtext ${srcdir}/format/italic2.in > tempoutput && diff ${srcdir}/format/italic2.out tempoutput
23232325 ) >>"$at_stdout" 2>>"$at_stderr"
23242326 at_status=$? at_failed=false
23252327 $at_check_filter
@@ -2335,10 +2337,10 @@
23362338 read at_status <"$at_status_file"
23372339 #AT_STOP_10
23382340 #AT_START_11
2339 -# 11. testsuite.at:77: italic4
 2341+# 11. testsuite.at:77: italic3
23402342 at_setup_line='testsuite.at:77'
23412343 at_fn_banner 1
2342 -at_desc="italic4"
 2344+at_desc="italic3"
23432345 at_desc_line=" 11: $at_desc "
23442346 $at_quiet $as_echo_n "$at_desc_line"
23452347 at_xfail=no
@@ -2352,9 +2354,9 @@
23532355 _ATEOF
23542356
23552357 { set +x
2356 -$as_echo "$at_srcdir/testsuite.at:80: testtext \${srcdir}/format/italic4.in > tempoutput && diff \${srcdir}/format/italic4.out tempoutput"
 2358+$as_echo "$at_srcdir/testsuite.at:80: testtext \${srcdir}/format/italic3.in > tempoutput && diff \${srcdir}/format/italic3.out tempoutput"
23572359 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:80"
2358 -( $at_check_trace; testtext ${srcdir}/format/italic4.in > tempoutput && diff ${srcdir}/format/italic4.out tempoutput
 2360+( $at_check_trace; testtext ${srcdir}/format/italic3.in > tempoutput && diff ${srcdir}/format/italic3.out tempoutput
23592361 ) >>"$at_stdout" 2>>"$at_stderr"
23602362 at_status=$? at_failed=false
23612363 $at_check_filter
@@ -2371,10 +2373,10 @@
23722374 read at_status <"$at_status_file"
23732375 #AT_STOP_11
23742376 #AT_START_12
2375 -# 12. testsuite.at:84: italic5
 2377+# 12. testsuite.at:84: italic4
23762378 at_setup_line='testsuite.at:84'
23772379 at_fn_banner 1
2378 -at_desc="italic5"
 2380+at_desc="italic4"
23792381 at_desc_line=" 12: $at_desc "
23802382 $at_quiet $as_echo_n "$at_desc_line"
23812383 at_xfail=no
@@ -2388,9 +2390,9 @@
23892391 _ATEOF
23902392
23912393 { set +x
2392 -$as_echo "$at_srcdir/testsuite.at:87: testtext \${srcdir}/format/italic5.in > tempoutput && diff \${srcdir}/format/italic5.out tempoutput"
 2394+$as_echo "$at_srcdir/testsuite.at:87: testtext \${srcdir}/format/italic4.in > tempoutput && diff \${srcdir}/format/italic4.out tempoutput"
23932395 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:87"
2394 -( $at_check_trace; testtext ${srcdir}/format/italic5.in > tempoutput && diff ${srcdir}/format/italic5.out tempoutput
 2396+( $at_check_trace; testtext ${srcdir}/format/italic4.in > tempoutput && diff ${srcdir}/format/italic4.out tempoutput
23952397 ) >>"$at_stdout" 2>>"$at_stderr"
23962398 at_status=$? at_failed=false
23972399 $at_check_filter
@@ -2407,11 +2409,11 @@
24082410 read at_status <"$at_status_file"
24092411 #AT_STOP_12
24102412 #AT_START_13
2411 -# 13. testsuite.at:91: bold1
 2413+# 13. testsuite.at:91: italic5
24122414 at_setup_line='testsuite.at:91'
24132415 at_fn_banner 1
2414 -at_desc="bold1"
2415 -at_desc_line=" 13: $at_desc "
 2416+at_desc="italic5"
 2417+at_desc_line=" 13: $at_desc "
24162418 $at_quiet $as_echo_n "$at_desc_line"
24172419 at_xfail=no
24182420 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -2424,9 +2426,9 @@
24252427 _ATEOF
24262428
24272429 { set +x
2428 -$as_echo "$at_srcdir/testsuite.at:94: testtext \${srcdir}/format/bold1.in > tempoutput && diff \${srcdir}/format/bold1.out tempoutput"
 2430+$as_echo "$at_srcdir/testsuite.at:94: testtext \${srcdir}/format/italic5.in > tempoutput && diff \${srcdir}/format/italic5.out tempoutput"
24292431 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:94"
2430 -( $at_check_trace; testtext ${srcdir}/format/bold1.in > tempoutput && diff ${srcdir}/format/bold1.out tempoutput
 2432+( $at_check_trace; testtext ${srcdir}/format/italic5.in > tempoutput && diff ${srcdir}/format/italic5.out tempoutput
24312433 ) >>"$at_stdout" 2>>"$at_stderr"
24322434 at_status=$? at_failed=false
24332435 $at_check_filter
@@ -2443,10 +2445,10 @@
24442446 read at_status <"$at_status_file"
24452447 #AT_STOP_13
24462448 #AT_START_14
2447 -# 14. testsuite.at:98: bold2
 2449+# 14. testsuite.at:98: bold1
24482450 at_setup_line='testsuite.at:98'
24492451 at_fn_banner 1
2450 -at_desc="bold2"
 2452+at_desc="bold1"
24512453 at_desc_line=" 14: $at_desc "
24522454 $at_quiet $as_echo_n "$at_desc_line"
24532455 at_xfail=no
@@ -2460,9 +2462,9 @@
24612463 _ATEOF
24622464
24632465 { set +x
2464 -$as_echo "$at_srcdir/testsuite.at:101: testtext \${srcdir}/format/bold2.in > tempoutput && diff \${srcdir}/format/bold2.out tempoutput"
 2466+$as_echo "$at_srcdir/testsuite.at:101: testtext \${srcdir}/format/bold1.in > tempoutput && diff \${srcdir}/format/bold1.out tempoutput"
24652467 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:101"
2466 -( $at_check_trace; testtext ${srcdir}/format/bold2.in > tempoutput && diff ${srcdir}/format/bold2.out tempoutput
 2468+( $at_check_trace; testtext ${srcdir}/format/bold1.in > tempoutput && diff ${srcdir}/format/bold1.out tempoutput
24672469 ) >>"$at_stdout" 2>>"$at_stderr"
24682470 at_status=$? at_failed=false
24692471 $at_check_filter
@@ -2479,11 +2481,11 @@
24802482 read at_status <"$at_status_file"
24812483 #AT_STOP_14
24822484 #AT_START_15
2483 -# 15. testsuite.at:105: bolditalic1
 2485+# 15. testsuite.at:105: bold2
24842486 at_setup_line='testsuite.at:105'
24852487 at_fn_banner 1
2486 -at_desc="bolditalic1"
2487 -at_desc_line=" 15: $at_desc "
 2488+at_desc="bold2"
 2489+at_desc_line=" 15: $at_desc "
24882490 $at_quiet $as_echo_n "$at_desc_line"
24892491 at_xfail=no
24902492 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -2496,9 +2498,9 @@
24972499 _ATEOF
24982500
24992501 { set +x
2500 -$as_echo "$at_srcdir/testsuite.at:108: testtext \${srcdir}/format/bolditalic1.in > tempoutput && diff \${srcdir}/format/bolditalic1.out tempoutput"
 2502+$as_echo "$at_srcdir/testsuite.at:108: testtext \${srcdir}/format/bold2.in > tempoutput && diff \${srcdir}/format/bold2.out tempoutput"
25012503 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:108"
2502 -( $at_check_trace; testtext ${srcdir}/format/bolditalic1.in > tempoutput && diff ${srcdir}/format/bolditalic1.out tempoutput
 2504+( $at_check_trace; testtext ${srcdir}/format/bold2.in > tempoutput && diff ${srcdir}/format/bold2.out tempoutput
25032505 ) >>"$at_stdout" 2>>"$at_stderr"
25042506 at_status=$? at_failed=false
25052507 $at_check_filter
@@ -2515,10 +2517,10 @@
25162518 read at_status <"$at_status_file"
25172519 #AT_STOP_15
25182520 #AT_START_16
2519 -# 16. testsuite.at:112: bolditalic2
 2521+# 16. testsuite.at:112: bolditalic1
25202522 at_setup_line='testsuite.at:112'
25212523 at_fn_banner 1
2522 -at_desc="bolditalic2"
 2524+at_desc="bolditalic1"
25232525 at_desc_line=" 16: $at_desc "
25242526 $at_quiet $as_echo_n "$at_desc_line"
25252527 at_xfail=no
@@ -2532,9 +2534,9 @@
25332535 _ATEOF
25342536
25352537 { set +x
2536 -$as_echo "$at_srcdir/testsuite.at:115: testtext \${srcdir}/format/bolditalic2.in > tempoutput && diff \${srcdir}/format/bolditalic2.out tempoutput"
 2538+$as_echo "$at_srcdir/testsuite.at:115: testtext \${srcdir}/format/bolditalic1.in > tempoutput && diff \${srcdir}/format/bolditalic1.out tempoutput"
25372539 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:115"
2538 -( $at_check_trace; testtext ${srcdir}/format/bolditalic2.in > tempoutput && diff ${srcdir}/format/bolditalic2.out tempoutput
 2540+( $at_check_trace; testtext ${srcdir}/format/bolditalic1.in > tempoutput && diff ${srcdir}/format/bolditalic1.out tempoutput
25392541 ) >>"$at_stdout" 2>>"$at_stderr"
25402542 at_status=$? at_failed=false
25412543 $at_check_filter
@@ -2551,11 +2553,11 @@
25522554 read at_status <"$at_status_file"
25532555 #AT_STOP_16
25542556 #AT_START_17
2555 -# 17. testsuite.at:119: pre1
 2557+# 17. testsuite.at:119: bolditalic2
25562558 at_setup_line='testsuite.at:119'
25572559 at_fn_banner 1
2558 -at_desc="pre1"
2559 -at_desc_line=" 17: $at_desc "
 2560+at_desc="bolditalic2"
 2561+at_desc_line=" 17: $at_desc "
25602562 $at_quiet $as_echo_n "$at_desc_line"
25612563 at_xfail=no
25622564 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -2568,9 +2570,9 @@
25692571 _ATEOF
25702572
25712573 { set +x
2572 -$as_echo "$at_srcdir/testsuite.at:122: testtext \${srcdir}/format/pre1.in > tempoutput && diff \${srcdir}/format/pre1.out tempoutput"
 2574+$as_echo "$at_srcdir/testsuite.at:122: testtext \${srcdir}/format/bolditalic2.in > tempoutput && diff \${srcdir}/format/bolditalic2.out tempoutput"
25732575 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:122"
2574 -( $at_check_trace; testtext ${srcdir}/format/pre1.in > tempoutput && diff ${srcdir}/format/pre1.out tempoutput
 2576+( $at_check_trace; testtext ${srcdir}/format/bolditalic2.in > tempoutput && diff ${srcdir}/format/bolditalic2.out tempoutput
25752577 ) >>"$at_stdout" 2>>"$at_stderr"
25762578 at_status=$? at_failed=false
25772579 $at_check_filter
@@ -2587,11 +2589,11 @@
25882590 read at_status <"$at_status_file"
25892591 #AT_STOP_17
25902592 #AT_START_18
2591 -# 18. testsuite.at:126: heading1
 2593+# 18. testsuite.at:126: pre1
25922594 at_setup_line='testsuite.at:126'
25932595 at_fn_banner 1
2594 -at_desc="heading1"
2595 -at_desc_line=" 18: $at_desc "
 2596+at_desc="pre1"
 2597+at_desc_line=" 18: $at_desc "
25962598 $at_quiet $as_echo_n "$at_desc_line"
25972599 at_xfail=no
25982600 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -2604,9 +2606,9 @@
26052607 _ATEOF
26062608
26072609 { set +x
2608 -$as_echo "$at_srcdir/testsuite.at:129: testtext \${srcdir}/format/heading1.in > tempoutput && diff \${srcdir}/format/heading1.out tempoutput"
 2610+$as_echo "$at_srcdir/testsuite.at:129: testtext \${srcdir}/format/pre1.in > tempoutput && diff \${srcdir}/format/pre1.out tempoutput"
26092611 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:129"
2610 -( $at_check_trace; testtext ${srcdir}/format/heading1.in > tempoutput && diff ${srcdir}/format/heading1.out tempoutput
 2612+( $at_check_trace; testtext ${srcdir}/format/pre1.in > tempoutput && diff ${srcdir}/format/pre1.out tempoutput
26112613 ) >>"$at_stdout" 2>>"$at_stderr"
26122614 at_status=$? at_failed=false
26132615 $at_check_filter
@@ -2623,10 +2625,10 @@
26242626 read at_status <"$at_status_file"
26252627 #AT_STOP_18
26262628 #AT_START_19
2627 -# 19. testsuite.at:133: heading2
 2629+# 19. testsuite.at:133: heading1
26282630 at_setup_line='testsuite.at:133'
26292631 at_fn_banner 1
2630 -at_desc="heading2"
 2632+at_desc="heading1"
26312633 at_desc_line=" 19: $at_desc "
26322634 $at_quiet $as_echo_n "$at_desc_line"
26332635 at_xfail=no
@@ -2640,9 +2642,9 @@
26412643 _ATEOF
26422644
26432645 { set +x
2644 -$as_echo "$at_srcdir/testsuite.at:136: testtext \${srcdir}/format/heading2.in > tempoutput && diff \${srcdir}/format/heading2.out tempoutput"
 2646+$as_echo "$at_srcdir/testsuite.at:136: testtext \${srcdir}/format/heading1.in > tempoutput && diff \${srcdir}/format/heading1.out tempoutput"
26452647 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:136"
2646 -( $at_check_trace; testtext ${srcdir}/format/heading2.in > tempoutput && diff ${srcdir}/format/heading2.out tempoutput
 2648+( $at_check_trace; testtext ${srcdir}/format/heading1.in > tempoutput && diff ${srcdir}/format/heading1.out tempoutput
26472649 ) >>"$at_stdout" 2>>"$at_stderr"
26482650 at_status=$? at_failed=false
26492651 $at_check_filter
@@ -2659,11 +2661,11 @@
26602662 read at_status <"$at_status_file"
26612663 #AT_STOP_19
26622664 #AT_START_20
2663 -# 20. testsuite.at:140: table1
 2665+# 20. testsuite.at:140: heading2
26642666 at_setup_line='testsuite.at:140'
26652667 at_fn_banner 1
2666 -at_desc="table1"
2667 -at_desc_line=" 20: $at_desc "
 2668+at_desc="heading2"
 2669+at_desc_line=" 20: $at_desc "
26682670 $at_quiet $as_echo_n "$at_desc_line"
26692671 at_xfail=no
26702672 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -2676,9 +2678,9 @@
26772679 _ATEOF
26782680
26792681 { set +x
2680 -$as_echo "$at_srcdir/testsuite.at:143: testtext \${srcdir}/table/table1.in > tempoutput && diff \${srcdir}/table/table1.out tempoutput"
 2682+$as_echo "$at_srcdir/testsuite.at:143: testtext \${srcdir}/format/heading2.in > tempoutput && diff \${srcdir}/format/heading2.out tempoutput"
26812683 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:143"
2682 -( $at_check_trace; testtext ${srcdir}/table/table1.in > tempoutput && diff ${srcdir}/table/table1.out tempoutput
 2684+( $at_check_trace; testtext ${srcdir}/format/heading2.in > tempoutput && diff ${srcdir}/format/heading2.out tempoutput
26832685 ) >>"$at_stdout" 2>>"$at_stderr"
26842686 at_status=$? at_failed=false
26852687 $at_check_filter
@@ -2695,10 +2697,10 @@
26962698 read at_status <"$at_status_file"
26972699 #AT_STOP_20
26982700 #AT_START_21
2699 -# 21. testsuite.at:147: table2
 2701+# 21. testsuite.at:147: table1
27002702 at_setup_line='testsuite.at:147'
27012703 at_fn_banner 1
2702 -at_desc="table2"
 2704+at_desc="table1"
27032705 at_desc_line=" 21: $at_desc "
27042706 $at_quiet $as_echo_n "$at_desc_line"
27052707 at_xfail=no
@@ -2712,9 +2714,9 @@
27132715 _ATEOF
27142716
27152717 { set +x
2716 -$as_echo "$at_srcdir/testsuite.at:150: testtext \${srcdir}/table/table2.in > tempoutput && diff \${srcdir}/table/table2.out tempoutput"
 2718+$as_echo "$at_srcdir/testsuite.at:150: testtext \${srcdir}/table/table1.in > tempoutput && diff \${srcdir}/table/table1.out tempoutput"
27172719 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:150"
2718 -( $at_check_trace; testtext ${srcdir}/table/table2.in > tempoutput && diff ${srcdir}/table/table2.out tempoutput
 2720+( $at_check_trace; testtext ${srcdir}/table/table1.in > tempoutput && diff ${srcdir}/table/table1.out tempoutput
27192721 ) >>"$at_stdout" 2>>"$at_stderr"
27202722 at_status=$? at_failed=false
27212723 $at_check_filter
@@ -2731,10 +2733,10 @@
27322734 read at_status <"$at_status_file"
27332735 #AT_STOP_21
27342736 #AT_START_22
2735 -# 22. testsuite.at:154: table3
 2737+# 22. testsuite.at:154: table2
27362738 at_setup_line='testsuite.at:154'
27372739 at_fn_banner 1
2738 -at_desc="table3"
 2740+at_desc="table2"
27392741 at_desc_line=" 22: $at_desc "
27402742 $at_quiet $as_echo_n "$at_desc_line"
27412743 at_xfail=no
@@ -2748,9 +2750,9 @@
27492751 _ATEOF
27502752
27512753 { set +x
2752 -$as_echo "$at_srcdir/testsuite.at:157: testtext \${srcdir}/table/table3.in > tempoutput && diff \${srcdir}/table/table3.out tempoutput"
 2754+$as_echo "$at_srcdir/testsuite.at:157: testtext \${srcdir}/table/table2.in > tempoutput && diff \${srcdir}/table/table2.out tempoutput"
27532755 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:157"
2754 -( $at_check_trace; testtext ${srcdir}/table/table3.in > tempoutput && diff ${srcdir}/table/table3.out tempoutput
 2756+( $at_check_trace; testtext ${srcdir}/table/table2.in > tempoutput && diff ${srcdir}/table/table2.out tempoutput
27552757 ) >>"$at_stdout" 2>>"$at_stderr"
27562758 at_status=$? at_failed=false
27572759 $at_check_filter
@@ -2767,10 +2769,10 @@
27682770 read at_status <"$at_status_file"
27692771 #AT_STOP_22
27702772 #AT_START_23
2771 -# 23. testsuite.at:161: table4
 2773+# 23. testsuite.at:161: table3
27722774 at_setup_line='testsuite.at:161'
27732775 at_fn_banner 1
2774 -at_desc="table4"
 2776+at_desc="table3"
27752777 at_desc_line=" 23: $at_desc "
27762778 $at_quiet $as_echo_n "$at_desc_line"
27772779 at_xfail=no
@@ -2784,9 +2786,9 @@
27852787 _ATEOF
27862788
27872789 { set +x
2788 -$as_echo "$at_srcdir/testsuite.at:164: testtext \${srcdir}/table/table4.in > tempoutput && diff \${srcdir}/table/table4.out tempoutput"
 2790+$as_echo "$at_srcdir/testsuite.at:164: testtext \${srcdir}/table/table3.in > tempoutput && diff \${srcdir}/table/table3.out tempoutput"
27892791 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:164"
2790 -( $at_check_trace; testtext ${srcdir}/table/table4.in > tempoutput && diff ${srcdir}/table/table4.out tempoutput
 2792+( $at_check_trace; testtext ${srcdir}/table/table3.in > tempoutput && diff ${srcdir}/table/table3.out tempoutput
27912793 ) >>"$at_stdout" 2>>"$at_stderr"
27922794 at_status=$? at_failed=false
27932795 $at_check_filter
@@ -2803,10 +2805,10 @@
28042806 read at_status <"$at_status_file"
28052807 #AT_STOP_23
28062808 #AT_START_24
2807 -# 24. testsuite.at:168: table5
 2809+# 24. testsuite.at:168: table4
28082810 at_setup_line='testsuite.at:168'
28092811 at_fn_banner 1
2810 -at_desc="table5"
 2812+at_desc="table4"
28112813 at_desc_line=" 24: $at_desc "
28122814 $at_quiet $as_echo_n "$at_desc_line"
28132815 at_xfail=no
@@ -2820,9 +2822,9 @@
28212823 _ATEOF
28222824
28232825 { set +x
2824 -$as_echo "$at_srcdir/testsuite.at:171: testtext \${srcdir}/table/table5.in > tempoutput && diff \${srcdir}/table/table5.out tempoutput"
 2826+$as_echo "$at_srcdir/testsuite.at:171: testtext \${srcdir}/table/table4.in > tempoutput && diff \${srcdir}/table/table4.out tempoutput"
28252827 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:171"
2826 -( $at_check_trace; testtext ${srcdir}/table/table5.in > tempoutput && diff ${srcdir}/table/table5.out tempoutput
 2828+( $at_check_trace; testtext ${srcdir}/table/table4.in > tempoutput && diff ${srcdir}/table/table4.out tempoutput
28272829 ) >>"$at_stdout" 2>>"$at_stderr"
28282830 at_status=$? at_failed=false
28292831 $at_check_filter
@@ -2839,10 +2841,10 @@
28402842 read at_status <"$at_status_file"
28412843 #AT_STOP_24
28422844 #AT_START_25
2843 -# 25. testsuite.at:175: table6
 2845+# 25. testsuite.at:175: table5
28442846 at_setup_line='testsuite.at:175'
28452847 at_fn_banner 1
2846 -at_desc="table6"
 2848+at_desc="table5"
28472849 at_desc_line=" 25: $at_desc "
28482850 $at_quiet $as_echo_n "$at_desc_line"
28492851 at_xfail=no
@@ -2856,9 +2858,9 @@
28572859 _ATEOF
28582860
28592861 { set +x
2860 -$as_echo "$at_srcdir/testsuite.at:178: testtext \${srcdir}/table/table6.in > tempoutput && diff \${srcdir}/table/table6.out tempoutput"
 2862+$as_echo "$at_srcdir/testsuite.at:178: testtext \${srcdir}/table/table5.in > tempoutput && diff \${srcdir}/table/table5.out tempoutput"
28612863 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:178"
2862 -( $at_check_trace; testtext ${srcdir}/table/table6.in > tempoutput && diff ${srcdir}/table/table6.out tempoutput
 2864+( $at_check_trace; testtext ${srcdir}/table/table5.in > tempoutput && diff ${srcdir}/table/table5.out tempoutput
28632865 ) >>"$at_stdout" 2>>"$at_stderr"
28642866 at_status=$? at_failed=false
28652867 $at_check_filter
@@ -2875,11 +2877,11 @@
28762878 read at_status <"$at_status_file"
28772879 #AT_STOP_25
28782880 #AT_START_26
2879 -# 26. testsuite.at:182: list1
 2881+# 26. testsuite.at:182: table6
28802882 at_setup_line='testsuite.at:182'
28812883 at_fn_banner 1
2882 -at_desc="list1"
2883 -at_desc_line=" 26: $at_desc "
 2884+at_desc="table6"
 2885+at_desc_line=" 26: $at_desc "
28842886 $at_quiet $as_echo_n "$at_desc_line"
28852887 at_xfail=no
28862888 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -2892,9 +2894,9 @@
28932895 _ATEOF
28942896
28952897 { set +x
2896 -$as_echo "$at_srcdir/testsuite.at:185: testtext \${srcdir}/list/list1.in > tempoutput && diff \${srcdir}/list/list1.out tempoutput"
 2898+$as_echo "$at_srcdir/testsuite.at:185: testtext \${srcdir}/table/table6.in > tempoutput && diff \${srcdir}/table/table6.out tempoutput"
28972899 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:185"
2898 -( $at_check_trace; testtext ${srcdir}/list/list1.in > tempoutput && diff ${srcdir}/list/list1.out tempoutput
 2900+( $at_check_trace; testtext ${srcdir}/table/table6.in > tempoutput && diff ${srcdir}/table/table6.out tempoutput
28992901 ) >>"$at_stdout" 2>>"$at_stderr"
29002902 at_status=$? at_failed=false
29012903 $at_check_filter
@@ -2911,11 +2913,11 @@
29122914 read at_status <"$at_status_file"
29132915 #AT_STOP_26
29142916 #AT_START_27
2915 -# 27. testsuite.at:189: list2
 2917+# 27. testsuite.at:189: table7
29162918 at_setup_line='testsuite.at:189'
29172919 at_fn_banner 1
2918 -at_desc="list2"
2919 -at_desc_line=" 27: $at_desc "
 2920+at_desc="table7"
 2921+at_desc_line=" 27: $at_desc "
29202922 $at_quiet $as_echo_n "$at_desc_line"
29212923 at_xfail=no
29222924 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -2928,9 +2930,9 @@
29292931 _ATEOF
29302932
29312933 { set +x
2932 -$as_echo "$at_srcdir/testsuite.at:192: testtext \${srcdir}/list/list2.in > tempoutput && diff \${srcdir}/list/list2.out tempoutput"
 2934+$as_echo "$at_srcdir/testsuite.at:192: testtext \${srcdir}/table/table7.in > tempoutput && diff \${srcdir}/table/table7.out tempoutput"
29332935 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:192"
2934 -( $at_check_trace; testtext ${srcdir}/list/list2.in > tempoutput && diff ${srcdir}/list/list2.out tempoutput
 2936+( $at_check_trace; testtext ${srcdir}/table/table7.in > tempoutput && diff ${srcdir}/table/table7.out tempoutput
29352937 ) >>"$at_stdout" 2>>"$at_stderr"
29362938 at_status=$? at_failed=false
29372939 $at_check_filter
@@ -2947,10 +2949,10 @@
29482950 read at_status <"$at_status_file"
29492951 #AT_STOP_27
29502952 #AT_START_28
2951 -# 28. testsuite.at:196: list3
 2953+# 28. testsuite.at:196: list1
29522954 at_setup_line='testsuite.at:196'
29532955 at_fn_banner 1
2954 -at_desc="list3"
 2956+at_desc="list1"
29552957 at_desc_line=" 28: $at_desc "
29562958 $at_quiet $as_echo_n "$at_desc_line"
29572959 at_xfail=no
@@ -2964,9 +2966,9 @@
29652967 _ATEOF
29662968
29672969 { set +x
2968 -$as_echo "$at_srcdir/testsuite.at:199: testtext \${srcdir}/list/list3.in > tempoutput && diff \${srcdir}/list/list3.out tempoutput"
 2970+$as_echo "$at_srcdir/testsuite.at:199: testtext \${srcdir}/list/list1.in > tempoutput && diff \${srcdir}/list/list1.out tempoutput"
29692971 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:199"
2970 -( $at_check_trace; testtext ${srcdir}/list/list3.in > tempoutput && diff ${srcdir}/list/list3.out tempoutput
 2972+( $at_check_trace; testtext ${srcdir}/list/list1.in > tempoutput && diff ${srcdir}/list/list1.out tempoutput
29712973 ) >>"$at_stdout" 2>>"$at_stderr"
29722974 at_status=$? at_failed=false
29732975 $at_check_filter
@@ -2983,10 +2985,10 @@
29842986 read at_status <"$at_status_file"
29852987 #AT_STOP_28
29862988 #AT_START_29
2987 -# 29. testsuite.at:203: list4
 2989+# 29. testsuite.at:203: list2
29882990 at_setup_line='testsuite.at:203'
29892991 at_fn_banner 1
2990 -at_desc="list4"
 2992+at_desc="list2"
29912993 at_desc_line=" 29: $at_desc "
29922994 $at_quiet $as_echo_n "$at_desc_line"
29932995 at_xfail=no
@@ -3000,9 +3002,9 @@
30013003 _ATEOF
30023004
30033005 { set +x
3004 -$as_echo "$at_srcdir/testsuite.at:206: testtext \${srcdir}/list/list4.in > tempoutput && diff \${srcdir}/list/list4.out tempoutput"
 3006+$as_echo "$at_srcdir/testsuite.at:206: testtext \${srcdir}/list/list2.in > tempoutput && diff \${srcdir}/list/list2.out tempoutput"
30053007 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:206"
3006 -( $at_check_trace; testtext ${srcdir}/list/list4.in > tempoutput && diff ${srcdir}/list/list4.out tempoutput
 3008+( $at_check_trace; testtext ${srcdir}/list/list2.in > tempoutput && diff ${srcdir}/list/list2.out tempoutput
30073009 ) >>"$at_stdout" 2>>"$at_stderr"
30083010 at_status=$? at_failed=false
30093011 $at_check_filter
@@ -3019,11 +3021,11 @@
30203022 read at_status <"$at_status_file"
30213023 #AT_STOP_29
30223024 #AT_START_30
3023 -# 30. testsuite.at:210: hr
 3025+# 30. testsuite.at:210: list3
30243026 at_setup_line='testsuite.at:210'
30253027 at_fn_banner 1
3026 -at_desc="hr"
3027 -at_desc_line=" 30: $at_desc "
 3028+at_desc="list3"
 3029+at_desc_line=" 30: $at_desc "
30283030 $at_quiet $as_echo_n "$at_desc_line"
30293031 at_xfail=no
30303032 echo "# -*- compilation -*-" >> "$at_group_log"
@@ -3036,9 +3038,9 @@
30373039 _ATEOF
30383040
30393041 { set +x
3040 -$as_echo "$at_srcdir/testsuite.at:213: testtext \${srcdir}/hr/hr1.in > tempoutput && diff \${srcdir}/hr/hr1.out tempoutput"
 3042+$as_echo "$at_srcdir/testsuite.at:213: testtext \${srcdir}/list/list3.in > tempoutput && diff \${srcdir}/list/list3.out tempoutput"
30413043 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:213"
3042 -( $at_check_trace; testtext ${srcdir}/hr/hr1.in > tempoutput && diff ${srcdir}/hr/hr1.out tempoutput
 3044+( $at_check_trace; testtext ${srcdir}/list/list3.in > tempoutput && diff ${srcdir}/list/list3.out tempoutput
30433045 ) >>"$at_stdout" 2>>"$at_stderr"
30443046 at_status=$? at_failed=false
30453047 $at_check_filter
@@ -3055,10 +3057,10 @@
30563058 read at_status <"$at_status_file"
30573059 #AT_STOP_30
30583060 #AT_START_31
3059 -# 31. testsuite.at:217: link1
 3061+# 31. testsuite.at:217: list4
30603062 at_setup_line='testsuite.at:217'
30613063 at_fn_banner 1
3062 -at_desc="link1"
 3064+at_desc="list4"
30633065 at_desc_line=" 31: $at_desc "
30643066 $at_quiet $as_echo_n "$at_desc_line"
30653067 at_xfail=no
@@ -3072,9 +3074,9 @@
30733075 _ATEOF
30743076
30753077 { set +x
3076 -$as_echo "$at_srcdir/testsuite.at:220: testtext \${srcdir}/link/link1.in > tempoutput && diff \${srcdir}/link/link1.out tempoutput"
 3078+$as_echo "$at_srcdir/testsuite.at:220: testtext \${srcdir}/list/list4.in > tempoutput && diff \${srcdir}/list/list4.out tempoutput"
30773079 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:220"
3078 -( $at_check_trace; testtext ${srcdir}/link/link1.in > tempoutput && diff ${srcdir}/link/link1.out tempoutput
 3080+( $at_check_trace; testtext ${srcdir}/list/list4.in > tempoutput && diff ${srcdir}/list/list4.out tempoutput
30793081 ) >>"$at_stdout" 2>>"$at_stderr"
30803082 at_status=$? at_failed=false
30813083 $at_check_filter
@@ -3091,16 +3093,16 @@
30923094 read at_status <"$at_status_file"
30933095 #AT_STOP_31
30943096 #AT_START_32
3095 -# 32. testsuite.at:225: link2
3096 -at_setup_line='testsuite.at:225'
 3097+# 32. testsuite.at:224: hr
 3098+at_setup_line='testsuite.at:224'
30973099 at_fn_banner 1
3098 -at_desc="link2"
3099 -at_desc_line=" 32: $at_desc "
 3100+at_desc="hr"
 3101+at_desc_line=" 32: $at_desc "
31003102 $at_quiet $as_echo_n "$at_desc_line"
31013103 at_xfail=no
31023104 echo "# -*- compilation -*-" >> "$at_group_log"
31033105 (
3104 - $as_echo "32. testsuite.at:225: testing ..."
 3106+ $as_echo "32. testsuite.at:224: testing ..."
31053107 $at_traceon
31063108
31073109
@@ -3108,15 +3110,15 @@
31093111 _ATEOF
31103112
31113113 { set +x
3112 -$as_echo "$at_srcdir/testsuite.at:228: testtext \${srcdir}/link/link2.in > tempoutput && diff \${srcdir}/link/link2.out tempoutput"
3113 -at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:228"
3114 -( $at_check_trace; testtext ${srcdir}/link/link2.in > tempoutput && diff ${srcdir}/link/link2.out tempoutput
 3114+$as_echo "$at_srcdir/testsuite.at:227: testtext \${srcdir}/hr/hr1.in > tempoutput && diff \${srcdir}/hr/hr1.out tempoutput"
 3115+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:227"
 3116+( $at_check_trace; testtext ${srcdir}/hr/hr1.in > tempoutput && diff ${srcdir}/hr/hr1.out tempoutput
31153117 ) >>"$at_stdout" 2>>"$at_stderr"
31163118 at_status=$? at_failed=false
31173119 $at_check_filter
31183120 at_fn_diff_devnull "$at_stderr" || at_failed=:
31193121 at_fn_diff_devnull "$at_stdout" || at_failed=:
3120 -at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:228"
 3122+at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:227"
31213123 $at_failed && at_fn_log_failure
31223124 $at_traceon; }
31233125
@@ -3127,16 +3129,16 @@
31283130 read at_status <"$at_status_file"
31293131 #AT_STOP_32
31303132 #AT_START_33
3131 -# 33. testsuite.at:232: link3
3132 -at_setup_line='testsuite.at:232'
 3133+# 33. testsuite.at:231: link1
 3134+at_setup_line='testsuite.at:231'
31333135 at_fn_banner 1
3134 -at_desc="link3"
 3136+at_desc="link1"
31353137 at_desc_line=" 33: $at_desc "
31363138 $at_quiet $as_echo_n "$at_desc_line"
31373139 at_xfail=no
31383140 echo "# -*- compilation -*-" >> "$at_group_log"
31393141 (
3140 - $as_echo "33. testsuite.at:232: testing ..."
 3142+ $as_echo "33. testsuite.at:231: testing ..."
31413143 $at_traceon
31423144
31433145
@@ -3144,15 +3146,15 @@
31453147 _ATEOF
31463148
31473149 { set +x
3148 -$as_echo "$at_srcdir/testsuite.at:235: testtext \${srcdir}/link/link3.in > tempoutput && diff \${srcdir}/link/link3.out tempoutput"
3149 -at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:235"
3150 -( $at_check_trace; testtext ${srcdir}/link/link3.in > tempoutput && diff ${srcdir}/link/link3.out tempoutput
 3150+$as_echo "$at_srcdir/testsuite.at:234: testtext \${srcdir}/link/link1.in > tempoutput && diff \${srcdir}/link/link1.out tempoutput"
 3151+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:234"
 3152+( $at_check_trace; testtext ${srcdir}/link/link1.in > tempoutput && diff ${srcdir}/link/link1.out tempoutput
31513153 ) >>"$at_stdout" 2>>"$at_stderr"
31523154 at_status=$? at_failed=false
31533155 $at_check_filter
31543156 at_fn_diff_devnull "$at_stderr" || at_failed=:
31553157 at_fn_diff_devnull "$at_stdout" || at_failed=:
3156 -at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:235"
 3158+at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:234"
31573159 $at_failed && at_fn_log_failure
31583160 $at_traceon; }
31593161
@@ -3163,10 +3165,10 @@
31643166 read at_status <"$at_status_file"
31653167 #AT_STOP_33
31663168 #AT_START_34
3167 -# 34. testsuite.at:239: link4
 3169+# 34. testsuite.at:239: link2
31683170 at_setup_line='testsuite.at:239'
31693171 at_fn_banner 1
3170 -at_desc="link4"
 3172+at_desc="link2"
31713173 at_desc_line=" 34: $at_desc "
31723174 $at_quiet $as_echo_n "$at_desc_line"
31733175 at_xfail=no
@@ -3180,9 +3182,9 @@
31813183 _ATEOF
31823184
31833185 { set +x
3184 -$as_echo "$at_srcdir/testsuite.at:242: testtext \${srcdir}/link/link4.in > tempoutput && diff \${srcdir}/link/link4.out tempoutput"
 3186+$as_echo "$at_srcdir/testsuite.at:242: testtext \${srcdir}/link/link2.in > tempoutput && diff \${srcdir}/link/link2.out tempoutput"
31853187 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:242"
3186 -( $at_check_trace; testtext ${srcdir}/link/link4.in > tempoutput && diff ${srcdir}/link/link4.out tempoutput
 3188+( $at_check_trace; testtext ${srcdir}/link/link2.in > tempoutput && diff ${srcdir}/link/link2.out tempoutput
31873189 ) >>"$at_stdout" 2>>"$at_stderr"
31883190 at_status=$? at_failed=false
31893191 $at_check_filter
@@ -3199,10 +3201,10 @@
32003202 read at_status <"$at_status_file"
32013203 #AT_STOP_34
32023204 #AT_START_35
3203 -# 35. testsuite.at:246: link5
 3205+# 35. testsuite.at:246: link3
32043206 at_setup_line='testsuite.at:246'
32053207 at_fn_banner 1
3206 -at_desc="link5"
 3208+at_desc="link3"
32073209 at_desc_line=" 35: $at_desc "
32083210 $at_quiet $as_echo_n "$at_desc_line"
32093211 at_xfail=no
@@ -3216,9 +3218,9 @@
32173219 _ATEOF
32183220
32193221 { set +x
3220 -$as_echo "$at_srcdir/testsuite.at:249: testtext \${srcdir}/link/link5.in > tempoutput && diff \${srcdir}/link/link5.out tempoutput"
 3222+$as_echo "$at_srcdir/testsuite.at:249: testtext \${srcdir}/link/link3.in > tempoutput && diff \${srcdir}/link/link3.out tempoutput"
32213223 at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:249"
3222 -( $at_check_trace; testtext ${srcdir}/link/link5.in > tempoutput && diff ${srcdir}/link/link5.out tempoutput
 3224+( $at_check_trace; testtext ${srcdir}/link/link3.in > tempoutput && diff ${srcdir}/link/link3.out tempoutput
32233225 ) >>"$at_stdout" 2>>"$at_stderr"
32243226 at_status=$? at_failed=false
32253227 $at_check_filter
@@ -3234,3 +3236,75 @@
32353237 ) 5>&1 2>&1 | eval $at_tee_pipe
32363238 read at_status <"$at_status_file"
32373239 #AT_STOP_35
 3240+#AT_START_36
 3241+# 36. testsuite.at:253: link4
 3242+at_setup_line='testsuite.at:253'
 3243+at_fn_banner 1
 3244+at_desc="link4"
 3245+at_desc_line=" 36: $at_desc "
 3246+$at_quiet $as_echo_n "$at_desc_line"
 3247+at_xfail=no
 3248+echo "# -*- compilation -*-" >> "$at_group_log"
 3249+(
 3250+ $as_echo "36. testsuite.at:253: testing ..."
 3251+ $at_traceon
 3252+
 3253+
 3254+cat >tempoutput <<'_ATEOF'
 3255+_ATEOF
 3256+
 3257+{ set +x
 3258+$as_echo "$at_srcdir/testsuite.at:256: testtext \${srcdir}/link/link4.in > tempoutput && diff \${srcdir}/link/link4.out tempoutput"
 3259+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:256"
 3260+( $at_check_trace; testtext ${srcdir}/link/link4.in > tempoutput && diff ${srcdir}/link/link4.out tempoutput
 3261+) >>"$at_stdout" 2>>"$at_stderr"
 3262+at_status=$? at_failed=false
 3263+$at_check_filter
 3264+at_fn_diff_devnull "$at_stderr" || at_failed=:
 3265+at_fn_diff_devnull "$at_stdout" || at_failed=:
 3266+at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:256"
 3267+$at_failed && at_fn_log_failure
 3268+$at_traceon; }
 3269+
 3270+
 3271+ set +x
 3272+ $at_times_p && times >"$at_times_file"
 3273+) 5>&1 2>&1 | eval $at_tee_pipe
 3274+read at_status <"$at_status_file"
 3275+#AT_STOP_36
 3276+#AT_START_37
 3277+# 37. testsuite.at:260: link5
 3278+at_setup_line='testsuite.at:260'
 3279+at_fn_banner 1
 3280+at_desc="link5"
 3281+at_desc_line=" 37: $at_desc "
 3282+$at_quiet $as_echo_n "$at_desc_line"
 3283+at_xfail=no
 3284+echo "# -*- compilation -*-" >> "$at_group_log"
 3285+(
 3286+ $as_echo "37. testsuite.at:260: testing ..."
 3287+ $at_traceon
 3288+
 3289+
 3290+cat >tempoutput <<'_ATEOF'
 3291+_ATEOF
 3292+
 3293+{ set +x
 3294+$as_echo "$at_srcdir/testsuite.at:263: testtext \${srcdir}/link/link5.in > tempoutput && diff \${srcdir}/link/link5.out tempoutput"
 3295+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:263"
 3296+( $at_check_trace; testtext ${srcdir}/link/link5.in > tempoutput && diff ${srcdir}/link/link5.out tempoutput
 3297+) >>"$at_stdout" 2>>"$at_stderr"
 3298+at_status=$? at_failed=false
 3299+$at_check_filter
 3300+at_fn_diff_devnull "$at_stderr" || at_failed=:
 3301+at_fn_diff_devnull "$at_stdout" || at_failed=:
 3302+at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:263"
 3303+$at_failed && at_fn_log_failure
 3304+$at_traceon; }
 3305+
 3306+
 3307+ set +x
 3308+ $at_times_p && times >"$at_times_file"
 3309+) 5>&1 2>&1 | eval $at_tee_pipe
 3310+read at_status <"$at_status_file"
 3311+#AT_STOP_37
Index: trunk/parsers/libmwparser/tests/testsuite.at
@@ -53,6 +53,13 @@
5454
5555 AT_CLEANUP
5656
 57+AT_SETUP([garbage])
 58+
 59+AT_DATA([tempoutput], [])
 60+AT_CHECK([testtext ${srcdir}/html/garbage.in > tempoutput && diff ${srcdir}/html/garbage.out tempoutput])
 61+
 62+AT_CLEANUP
 63+
5764 AT_SETUP([italic1])
5865
5966 AT_DATA([tempoutput], [])
@@ -179,6 +186,13 @@
180187
181188 AT_CLEANUP
182189
 190+AT_SETUP([table7])
 191+
 192+AT_DATA([tempoutput], [])
 193+AT_CHECK([testtext ${srcdir}/table/table7.in > tempoutput && diff ${srcdir}/table/table7.out tempoutput])
 194+
 195+AT_CLEANUP
 196+
183197 AT_SETUP([list1])
184198
185199 AT_DATA([tempoutput], [])
Index: trunk/parsers/libmwparser/tests/link/link5.out
@@ -22,9 +22,11 @@
2323 END ROW
2424 END TABLE BODY
2525 END TABLE
26 - SPACE[ ]
27 - WORD[foo]
28 - SPACE[ ]
 26+ BEGIN PARAGRAPH
 27+ SPACE[ ]
 28+ WORD[foo]
 29+ SPACE[ ]
 30+ END PARAGRAPH
2931 END MEDIA LINK
3032 SPACE[ ]
3133 WORD[bar]
Index: trunk/parsers/libmwparser/tests/html/garbage.in
@@ -0,0 +1,4 @@
 2+<table>garbage<tbody>garbage<tr>garbage<td>cell</td>garbage</tr>garbage<tr>garbage<td>cell</td>garbage</tr>garbage</tbody>garbage</table>
 3+
 4+<dl>garbage<dd>dd</dd>garbage<dt>dd</dt>garbage<dd>dd</dd>garbage</dl>
 5+
Index: trunk/parsers/libmwparser/tests/html/garbage.out
@@ -0,0 +1,66 @@
 2+BEGIN ARTICLE
 3+ BEGIN GARBAGE
 4+ WORD[garbage]
 5+ END GARBAGE
 6+ BEGIN TABLE
 7+ BEGIN TABLE BODY
 8+ BEGIN GARBAGE
 9+ WORD[garbage]
 10+ END GARBAGE
 11+ BEGIN GARBAGE
 12+ WORD[garbage]
 13+ END GARBAGE
 14+ BEGIN ROW
 15+ BEGIN CELL
 16+ WORD[cell]
 17+ END CELL
 18+ BEGIN GARBAGE
 19+ WORD[garbage]
 20+ END GARBAGE
 21+ END ROW
 22+ BEGIN GARBAGE
 23+ WORD[garbage]
 24+ END GARBAGE
 25+ BEGIN GARBAGE
 26+ WORD[garbage]
 27+ END GARBAGE
 28+ BEGIN ROW
 29+ BEGIN CELL
 30+ WORD[cell]
 31+ END CELL
 32+ BEGIN GARBAGE
 33+ WORD[garbage]
 34+ END GARBAGE
 35+ END ROW
 36+ BEGIN GARBAGE
 37+ WORD[garbage]
 38+ END GARBAGE
 39+ BEGIN GARBAGE
 40+ WORD[garbage]
 41+ END GARBAGE
 42+ END TABLE BODY
 43+ END TABLE
 44+ BEGIN GARBAGE
 45+ WORD[garbage]
 46+ END GARBAGE
 47+ BEGIN DEFINITION LIST
 48+ BEGIN DEFINITION ITEM
 49+ WORD[dd]
 50+ END DEFINITION ITEM
 51+ BEGIN GARBAGE
 52+ WORD[garbage]
 53+ END GARBAGE
 54+ BEGIN DEFINED TERM ITEM
 55+ WORD[dd]
 56+ END DEFINED TERM ITEM
 57+ BEGIN GARBAGE
 58+ WORD[garbage]
 59+ END GARBAGE
 60+ BEGIN DEFINITION ITEM
 61+ WORD[dd]
 62+ END DEFINITION ITEM
 63+ BEGIN GARBAGE
 64+ WORD[garbage]
 65+ END GARBAGE
 66+ END DEFINITION LIST
 67+END ARTICLE
Index: trunk/parsers/libmwparser/tests/hr/hr1.out
@@ -1,6 +1,8 @@
22 BEGIN ARTICLE
33 HORIZONTAL_RULE
4 - WORD[text]
 4+ BEGIN GARBAGE
 5+ WORD[text]
 6+ END GARBAGE
57 BEGIN PARAGRAPH
68 WORD[text]
79 END PARAGRAPH
@@ -9,7 +11,9 @@
1012 WORD[text]
1113 END PARAGRAPH
1214 HORIZONTAL_RULE
13 - WORD[text]
 15+ BEGIN GARBAGE
 16+ WORD[text]
 17+ END GARBAGE
1418 BEGIN PARAGRAPH
1519 WORD[text]
1620 END PARAGRAPH
Index: trunk/parsers/libmwparser/tests/list/list2.out
@@ -60,57 +60,50 @@
6161 WORD[ul]
6262 SPECIAL[>]
6363 END DEFINED TERM ITEM
64 - BEGIN PARAGRAPH
65 - SPECIAL[<]
66 - WORD[dd]
67 - SPECIAL[>]
68 - SPECIAL[<]
69 - WORD[ul]
70 - SPECIAL[>]
71 - SPECIAL[<]
72 - WORD[li]
73 - SPECIAL[>]
74 - WORD[definition]
75 - SPECIAL[</]
76 - WORD[dd]
77 - SPECIAL[>]
78 - NEWLINE
79 - SPECIAL[</]
80 - WORD[dd]
81 - SPECIAL[>]
82 - END PARAGRAPH
83 - BEGIN BULLET LIST
84 - BEGIN BULLET LIST ITEM
85 - BEGIN BULLET LIST
86 - BEGIN BULLET LIST ITEM
87 - WORD[wikitext]
88 - SPACE[ ]
89 - WORD[list]
90 - SPACE[ ]
91 - WORD[item]
92 - END BULLET LIST ITEM
93 - END BULLET LIST
94 - END BULLET LIST ITEM
95 - END BULLET LIST
96 - BEGIN PARAGRAPH
97 - SPECIAL[</]
98 - WORD[ol]
99 - SPECIAL[>]
100 - NEWLINE
101 - SPECIAL[</]
102 - WORD[ul]
103 - SPECIAL[>]
104 - NEWLINE
105 - SPECIAL[<]
106 - WORD[li]
107 - SPECIAL[>]
108 - SPACE[ ]
109 - WORD[item]
110 - SPACE[ ]
111 - SPECIAL[</]
112 - WORD[li]
113 - SPECIAL[>]
114 - END PARAGRAPH
 64+ BEGIN DEFINITION ITEM
 65+ BEGIN BULLET LIST
 66+ BEGIN BULLET LIST ITEM
 67+ WORD[definition]
 68+ SPECIAL[</]
 69+ WORD[dd]
 70+ SPECIAL[>]
 71+ NEWLINE
 72+ SPECIAL[</]
 73+ WORD[dd]
 74+ SPECIAL[>]
 75+ NEWLINE
 76+ BEGIN BULLET LIST
 77+ BEGIN BULLET LIST ITEM
 78+ BEGIN BULLET LIST
 79+ BEGIN BULLET LIST ITEM
 80+ WORD[wikitext]
 81+ SPACE[ ]
 82+ WORD[list]
 83+ SPACE[ ]
 84+ WORD[item]
 85+ END BULLET LIST ITEM
 86+ END BULLET LIST
 87+ END BULLET LIST ITEM
 88+ END BULLET LIST
 89+ BEGIN PARAGRAPH
 90+ SPECIAL[</]
 91+ WORD[ol]
 92+ SPECIAL[>]
 93+ END PARAGRAPH
 94+ END BULLET LIST ITEM
 95+ END BULLET LIST
 96+ BEGIN PARAGRAPH
 97+ SPECIAL[<]
 98+ WORD[li]
 99+ SPECIAL[>]
 100+ SPACE[ ]
 101+ WORD[item]
 102+ SPACE[ ]
 103+ SPECIAL[</]
 104+ WORD[li]
 105+ SPECIAL[>]
 106+ END PARAGRAPH
 107+ END DEFINITION ITEM
115108 END DEFINITION LIST
116109 END ENUMERATION LIST ITEM
117110 END ENUMERATION LIST
Index: trunk/parsers/libmwparser/Makefile.am
@@ -45,6 +45,7 @@
4646 include/mwformats.h \
4747 include/mwheadings.h \
4848 include/mwhtml.h \
 49+ include/mwgarbage.h \
4950 include/mwkeyvalue.h \
5051 include/mwlexercontext.h \
5152 include/mwlinkcollection.h \
@@ -65,6 +66,7 @@
6667 src/mwhtml.c \
6768 src/mwlexercontext.c \
6869 src/mwlinks.c \
 70+ src/mwgarbage.c \
6971 src/mwlinkresolution.c \
7072 src/mwlinkcollection.c \
7173 src/mwmedialinkoption.c \

Status & tagging log