summaryrefslogtreecommitdiff
path: root/checks
diff options
context:
space:
mode:
Diffstat (limited to 'checks')
-rw-r--r--checks/001.preprocess39
-rw-r--r--checks/002.debugging_16
-rw-r--r--checks/003.command_li11
-rw-r--r--checks/004.command_li11
-rw-r--r--checks/005.command_li21
-rw-r--r--checks/006.command_li23
-rw-r--r--checks/007.command_li18
-rw-r--r--checks/008.comments13
-rw-r--r--checks/009.comments23
-rw-r--r--checks/010.input_proc19
-rw-r--r--checks/011.input_proc16
-rw-r--r--checks/012.inhibiting13
-rw-r--r--checks/013.inhibiting17
-rw-r--r--checks/014.inhibiting17
-rw-r--r--checks/015.inhibiting13
-rw-r--r--checks/016.inhibiting17
-rw-r--r--checks/017.inhibiting15
-rw-r--r--checks/018.inhibiting15
-rw-r--r--checks/019.inhibiting15
-rw-r--r--checks/020.macro_argu26
-rw-r--r--checks/021.macro_argu17
-rw-r--r--checks/022.macro_argu15
-rw-r--r--checks/023.macro_argu15
-rw-r--r--checks/024.macro_argu13
-rw-r--r--checks/025.quoting_ar19
-rw-r--r--checks/026.macro_expa11
-rw-r--r--checks/027.macro_expa15
-rw-r--r--checks/028.define13
-rw-r--r--checks/029.define15
-rw-r--r--checks/030.define21
-rw-r--r--checks/031.arguments13
-rw-r--r--checks/032.arguments15
-rw-r--r--checks/033.arguments13
-rw-r--r--checks/034.arguments13
-rw-r--r--checks/035.arguments17
-rw-r--r--checks/036.arguments15
-rw-r--r--checks/037.pseudo_arg24
-rw-r--r--checks/038.pseudo_arg16
-rw-r--r--checks/039.pseudo_arg13
-rw-r--r--checks/040.pseudo_arg13
-rw-r--r--checks/041.pseudo_arg23
-rw-r--r--checks/042.pseudo_arg23
-rw-r--r--checks/043.pseudo_arg29
-rw-r--r--checks/044.pseudo_arg13
-rw-r--r--checks/045.pseudo_arg29
-rw-r--r--checks/046.undefine23
-rw-r--r--checks/047.undefine15
-rw-r--r--checks/048.defn15
-rw-r--r--checks/049.defn15
-rw-r--r--checks/050.defn17
-rw-r--r--checks/051.defn21
-rw-r--r--checks/052.defn19
-rw-r--r--checks/053.defn18
-rw-r--r--checks/054.defn25
-rw-r--r--checks/055.pushdef33
-rw-r--r--checks/056.pushdef25
-rw-r--r--checks/057.indir15
-rw-r--r--checks/058.indir18
-rw-r--r--checks/059.indir22
-rw-r--r--checks/060.builtin33
-rw-r--r--checks/061.builtin19
-rw-r--r--checks/062.builtin28
-rw-r--r--checks/063.builtin11
-rw-r--r--checks/064.builtin21
-rw-r--r--checks/065.ifdef18
-rw-r--r--checks/066.ifelse14
-rw-r--r--checks/067.ifelse19
-rw-r--r--checks/068.ifelse17
-rw-r--r--checks/069.ifelse19
-rw-r--r--checks/070.ifelse59
-rw-r--r--checks/071.shift15
-rw-r--r--checks/072.shift18
-rw-r--r--checks/073.shift42
-rw-r--r--checks/074.shift30
-rw-r--r--checks/075.shift25
-rw-r--r--checks/076.shift26
-rw-r--r--checks/077.shift19
-rw-r--r--checks/078.shift18
-rw-r--r--checks/079.forloop13
-rw-r--r--checks/080.forloop18
-rw-r--r--checks/081.forloop16
-rw-r--r--checks/082.foreach23
-rw-r--r--checks/083.foreach27
-rw-r--r--checks/084.foreach18
-rw-r--r--checks/085.foreach27
-rw-r--r--checks/086.foreach19
-rw-r--r--checks/087.foreach15
-rw-r--r--checks/088.stacks24
-rw-r--r--checks/089.stacks26
-rw-r--r--checks/090.compositio31
-rw-r--r--checks/091.compositio20
-rw-r--r--checks/092.compositio17
-rw-r--r--checks/093.compositio27
-rw-r--r--checks/094.dumpdef17
-rw-r--r--checks/095.dumpdef17
-rw-r--r--checks/096.trace21
-rw-r--r--checks/097.trace19
-rw-r--r--checks/098.trace38
-rw-r--r--checks/099.trace31
-rw-r--r--checks/100.trace16
-rw-r--r--checks/101.debug_leve28
-rw-r--r--checks/102.debug_leve18
-rw-r--r--checks/103.debug_leve16
-rw-r--r--checks/104.debug_outp25
-rw-r--r--checks/105.dnl12
-rw-r--r--checks/106.dnl14
-rw-r--r--checks/107.dnl16
-rw-r--r--checks/108.changequot15
-rw-r--r--checks/109.changequot17
-rw-r--r--checks/110.changequot15
-rw-r--r--checks/111.changequot21
-rw-r--r--checks/112.changequot33
-rw-r--r--checks/113.changequot31
-rw-r--r--checks/114.changequot20
-rw-r--r--checks/115.changequot27
-rw-r--r--checks/116.changequot15
-rw-r--r--checks/117.changequot13
-rw-r--r--checks/118.changequot11
-rw-r--r--checks/119.changecom19
-rw-r--r--checks/120.changecom19
-rw-r--r--checks/121.changecom17
-rw-r--r--checks/122.changecom23
-rw-r--r--checks/123.changecom35
-rw-r--r--checks/124.changecom13
-rw-r--r--checks/125.changeword15
-rw-r--r--checks/126.changeword20
-rw-r--r--checks/127.changeword41
-rw-r--r--checks/128.changeword39
-rw-r--r--checks/129.changeword21
-rw-r--r--checks/130.changeword16
-rw-r--r--checks/131.m4wrap17
-rw-r--r--checks/132.m4wrap26
-rw-r--r--checks/133.m4wrap26
-rw-r--r--checks/134.m4wrap16
-rw-r--r--checks/135.m4wrap15
-rw-r--r--checks/136.m4wrap12
-rw-r--r--checks/137.include19
-rw-r--r--checks/138.include16
-rw-r--r--checks/139.include16
-rw-r--r--checks/140.include13
-rw-r--r--checks/141.include13
-rw-r--r--checks/142.include13
-rw-r--r--checks/143.diversions40
-rw-r--r--checks/144.diversions36
-rw-r--r--checks/145.diversions18
-rw-r--r--checks/146.diversions17
-rw-r--r--checks/147.divert17
-rw-r--r--checks/148.divert17
-rw-r--r--checks/149.divert14
-rw-r--r--checks/150.divert13
-rw-r--r--checks/151.divert19
-rw-r--r--checks/152.undivert19
-rw-r--r--checks/153.undivert27
-rw-r--r--checks/154.undivert21
-rw-r--r--checks/155.undivert17
-rw-r--r--checks/156.undivert17
-rw-r--r--checks/157.undivert18
-rw-r--r--checks/158.divnum19
-rw-r--r--checks/159.cleardiver15
-rw-r--r--checks/160.cleardiver12
-rw-r--r--checks/161.len13
-rw-r--r--checks/162.index_macr13
-rw-r--r--checks/163.index_macr16
-rw-r--r--checks/164.index_macr12
-rw-r--r--checks/165.index_macr11
-rw-r--r--checks/166.regexp17
-rw-r--r--checks/167.regexp20
-rw-r--r--checks/168.regexp16
-rw-r--r--checks/169.substr13
-rw-r--r--checks/170.substr15
-rw-r--r--checks/171.translit19
-rw-r--r--checks/172.translit11
-rw-r--r--checks/173.translit31
-rw-r--r--checks/174.translit12
-rw-r--r--checks/175.patsubst22
-rw-r--r--checks/176.patsubst17
-rw-r--r--checks/177.patsubst22
-rw-r--r--checks/178.patsubst18
-rw-r--r--checks/179.patsubst16
-rw-r--r--checks/180.format29
-rw-r--r--checks/181.format24
-rw-r--r--checks/182.format12
-rw-r--r--checks/183.format12
-rw-r--r--checks/184.incr19
-rw-r--r--checks/185.eval18
-rw-r--r--checks/186.eval33
-rw-r--r--checks/187.eval23
-rw-r--r--checks/188.eval34
-rw-r--r--checks/189.eval27
-rw-r--r--checks/190.eval34
-rw-r--r--checks/191.platform_m15
-rw-r--r--checks/192.platform_m15
-rw-r--r--checks/193.platform_m19
-rw-r--r--checks/194.syscmd14
-rw-r--r--checks/195.syscmd11
-rw-r--r--checks/196.esyscmd14
-rw-r--r--checks/197.sysval35
-rw-r--r--checks/198.sysval26
-rw-r--r--checks/199.mkstemp32
-rw-r--r--checks/200.mkstemp17
-rw-r--r--checks/201.mkstemp21
-rw-r--r--checks/202.errprint17
-rw-r--r--checks/203.location13
-rw-r--r--checks/204.location18
-rw-r--r--checks/205.location36
-rw-r--r--checks/206.m4exit15
-rw-r--r--checks/207.m4exit15
-rw-r--r--checks/208.using_froz10
-rw-r--r--checks/209.using_froz20
-rw-r--r--checks/210.using_froz11
-rw-r--r--checks/211.extensions26
-rw-r--r--checks/212.other_inco18
-rw-r--r--checks/213.other_inco13
-rw-r--r--checks/214.improved_e15
-rw-r--r--checks/215.improved_f33
-rw-r--r--checks/216.improved_f34
-rw-r--r--checks/217.improved_f43
-rw-r--r--checks/218.improved_f35
-rw-r--r--checks/219.improved_f33
-rw-r--r--checks/220.improved_f49
-rw-r--r--checks/221.improved_f33
-rw-r--r--checks/222.improved_f37
-rw-r--r--checks/223.improved_f77
-rw-r--r--checks/224.improved_f11
-rw-r--r--checks/225.improved_f11
-rw-r--r--checks/226.improved_f11
-rw-r--r--checks/227.improved_f10
-rw-r--r--checks/228.improved_f14
-rw-r--r--checks/229.improved_c46
-rw-r--r--checks/230.improved_c16
-rw-r--r--checks/231.improved_m19
-rw-r--r--checks/232.improved_m31
-rw-r--r--checks/233.improved_c31
-rw-r--r--checks/234.improved_c37
-rw-r--r--checks/235.improved_c36
-rw-r--r--checks/236.improved_f21
-rw-r--r--checks/Makefile.am41
-rw-r--r--checks/Makefile.in1564
-rwxr-xr-xchecks/check-them191
-rwxr-xr-xchecks/get-them137
-rwxr-xr-xchecks/stackovf.test99
-rw-r--r--checks/stamp-checks1
242 files changed, 6902 insertions, 0 deletions
diff --git a/checks/001.preprocess b/checks/001.preprocess
new file mode 100644
index 0000000..14667d8
--- /dev/null
+++ b/checks/001.preprocess
@@ -0,0 +1,39 @@
+dnl @ ../doc/m4.texi:719: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -s
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`twoline', `1
+2')
+dnl @result{}#line 2 "stdin"
+dnl @result{}
+changecom(`/*', `*/')
+dnl @result{}
+define(`comment', `/*1
+2*/')
+dnl @result{}#line 5
+dnl @result{}
+dnl no line
+hello
+dnl @result{}#line 7
+dnl @result{}hello
+twoline
+dnl @result{}1
+dnl @result{}#line 8
+dnl @result{}2
+comment
+dnl @result{}/*1
+dnl @result{}2*/
+one comment `two
+three'
+dnl @result{}#line 10
+dnl @result{}one /*1
+dnl @result{}2*/ two
+dnl @result{}three
+goodbye
+dnl @result{}#line 12
+dnl @result{}goodbye
diff --git a/checks/002.debugging_ b/checks/002.debugging_
new file mode 100644
index 0000000..7c85bcc
--- /dev/null
+++ b/checks/002.debugging_
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:902: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dbar=hello -tbar --debugfile= foo --debugfile -
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @result{}hello
+errprint(`hi
+')dnl
+dnl @error{}hi
+bar
+dnl @error{}m4trace: -1- bar -> `hello'
+dnl @result{}hello
diff --git a/checks/003.command_li b/checks/003.command_li
new file mode 100644
index 0000000..6ec9e7d
--- /dev/null
+++ b/checks/003.command_li
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:961: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dbar=hello foo -Dbar=world foo
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @result{}hello
+dnl @result{}world
diff --git a/checks/004.command_li b/checks/004.command_li
new file mode 100644
index 0000000..0ef9fb1
--- /dev/null
+++ b/checks/004.command_li
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:984: Origin of test
+dnl @ expected status: 1
+dnl @ extra options: Makefile/
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @ expected error: ignore
+dnl @error{}m4: cannot open `Makefile/': Not a directory
diff --git a/checks/005.command_li b/checks/005.command_li
new file mode 100644
index 0000000..0f3f4a1
--- /dev/null
+++ b/checks/005.command_li
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:992: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @ expected error: ignore
+ifdef(`__unix__', ,
+ `errprint(` skipping: syscmd does not have unix semantics
+')m4exit(`77')')dnl
+syscmd(`echo | cat >&- 2>/dev/null')ifelse(sysval, `0',
+ `errprint(` skipping: system does not allow closing stdout
+')m4exit(`77')')dnl
+changequote(`[', `]')dnl
+syscmd([echo | ']__program__[' >&-])dnl
+dnl @error{}m4: write error: Bad file descriptor
+sysval
+dnl @result{}1
diff --git a/checks/006.command_li b/checks/006.command_li
new file mode 100644
index 0000000..f852d9e
--- /dev/null
+++ b/checks/006.command_li
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:1006: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`__unix__', ,
+ `errprint(` skipping: syscmd does not have unix semantics
+')m4exit(`77')')dnl
+syscmd(`echo | cat >&- 2>/dev/null')ifelse(sysval, `0',
+ `errprint(` skipping: system does not allow closing stdout
+')m4exit(`77')')dnl
+changequote(`[', `]')dnl
+syscmd([echo 'esyscmd(echo hi >&2 && echo err"print(bye
+)d"nl)dnl' > tmp.m4 \
+ && ']__program__[' tmp.m4 <&- >&- \
+ && rm tmp.m4])sysval
+dnl @error{}hi
+dnl @error{}bye
+dnl @result{}0
diff --git a/checks/007.command_li b/checks/007.command_li
new file mode 100644
index 0000000..cda6756
--- /dev/null
+++ b/checks/007.command_li
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:1027: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`__unix__', ,
+ `errprint(` skipping: syscmd does not have unix semantics
+')m4exit(`77')')dnl
+changequote(`[', `]')dnl
+syscmd([POSIXLY_CORRECT=1 ']__program__[' -Dbar=hello foo -Dbar=world foo])dnl
+dnl @result{}hello
+dnl @result{}world
+sysval
+dnl @result{}0
diff --git a/checks/008.comments b/checks/008.comments
new file mode 100644
index 0000000..0dc8582
--- /dev/null
+++ b/checks/008.comments
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1120: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+`quoted text' # `commented text'
+dnl @result{}quoted text # `commented text'
+`quoting inhibits' `#' `comments'
+dnl @result{}quoting inhibits # comments
diff --git a/checks/009.comments b/checks/009.comments
new file mode 100644
index 0000000..8caf4f7
--- /dev/null
+++ b/checks/009.comments
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:1135: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`e', `$@')define(`q', ``$@'')define(`foo', `bar')
+dnl @result{}
+q(e(`one
+',#two ' foo
+))
+dnl @result{}`one
+dnl @result{}',`#two bar
+dnl @result{}''
+changecom(`<', `>')define(`n', `$#')
+dnl @result{}
+n(e(<`>, <'>))
+dnl @result{}1
+len(e(<`>, ,<'>))
+dnl @result{}12
diff --git a/checks/010.input_proc b/checks/010.input_proc
new file mode 100644
index 0000000..20847a2
--- /dev/null
+++ b/checks/010.input_proc
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:1227: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+changequote([,])dnl
+define([gl_STRING_MODULE_INDICATOR],
+ [
+ dnl comment
+ GNULIB_]translit([$1],[a-z],[A-Z])[=1
+ ])dnl
+ gl_STRING_MODULE_INDICATOR([strcase])
+dnl @result{}
+dnl @result{} GNULIB_strcase=1
+dnl @result{}
diff --git a/checks/011.input_proc b/checks/011.input_proc
new file mode 100644
index 0000000..61f8df2
--- /dev/null
+++ b/checks/011.input_proc
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:1305: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+changequote([,])dnl
+define([gl_STRING_MODULE_INDICATOR],
+ [dnl comment
+ GNULIB_[]translit([[$1]], [a-z], [A-Z])=1dnl
+])dnl
+ gl_STRING_MODULE_INDICATOR([strcase])
+dnl @result{} GNULIB_STRCASE=1
diff --git a/checks/012.inhibiting b/checks/012.inhibiting
new file mode 100644
index 0000000..71de4bb
--- /dev/null
+++ b/checks/012.inhibiting
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1431: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+eval
+dnl @result{}eval
+eval(`1')
+dnl @result{}1
diff --git a/checks/013.inhibiting b/checks/013.inhibiting
new file mode 100644
index 0000000..8358a1d
--- /dev/null
+++ b/checks/013.inhibiting
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:1447: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -P
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+eval
+dnl @result{}eval
+eval(`1')
+dnl @result{}eval(1)
+m4_eval
+dnl @result{}m4_eval
+m4_eval(`1')
+dnl @result{}1
diff --git a/checks/014.inhibiting b/checks/014.inhibiting
new file mode 100644
index 0000000..ba2eee6
--- /dev/null
+++ b/checks/014.inhibiting
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:1478: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+`divert'
+dnl @result{}divert
+`d'ivert
+dnl @result{}divert
+di`ver't
+dnl @result{}divert
+div`'ert
+dnl @result{}divert
diff --git a/checks/015.inhibiting b/checks/015.inhibiting
new file mode 100644
index 0000000..4a78b8d
--- /dev/null
+++ b/checks/015.inhibiting
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1492: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+`'divert
+dnl @result{}
+divert`'
+dnl @result{}
diff --git a/checks/016.inhibiting b/checks/016.inhibiting
new file mode 100644
index 0000000..b407f8f
--- /dev/null
+++ b/checks/016.inhibiting
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:1509: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`cde', `CDE')
+dnl @result{}
+define(`x', `substr(ab')
+dnl @result{}
+define(`y', `cde, `1', `3')')
+dnl @result{}
+x`'y
+dnl @result{}bCD
diff --git a/checks/017.inhibiting b/checks/017.inhibiting
new file mode 100644
index 0000000..fde1aa7
--- /dev/null
+++ b/checks/017.inhibiting
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1523: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`x1', `len(`$1'')
+dnl @result{}
+define(`y1', ``$1')')
+dnl @result{}
+x1(`01234567890123456789')y1(`98765432109876543210')
+dnl @result{}40
diff --git a/checks/018.inhibiting b/checks/018.inhibiting
new file mode 100644
index 0000000..c2283ee
--- /dev/null
+++ b/checks/018.inhibiting
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1537: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`macro', `m')
+dnl @result{}
+macro(`m')macro
+dnl @result{}mmacro
+macro(`m')`'macro
+dnl @result{}mm
diff --git a/checks/019.inhibiting b/checks/019.inhibiting
new file mode 100644
index 0000000..6b929c2
--- /dev/null
+++ b/checks/019.inhibiting
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1549: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`macro', `di$1')
+dnl @result{}
+macro(`v')`ert'
+dnl @result{}divert
+macro(`v')ert
+dnl @result{}
diff --git a/checks/020.macro_argu b/checks/020.macro_argu
new file mode 100644
index 0000000..6271cfd
--- /dev/null
+++ b/checks/020.macro_argu
@@ -0,0 +1,26 @@
+dnl @ ../doc/m4.texi:1581: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`macro', `$1')
+dnl @result{}
+macro( unquoted leading space lost)
+dnl @result{}unquoted leading space lost
+macro(` quoted leading space kept')
+dnl @result{} quoted leading space kept
+macro(
+ divert `unquoted space kept after expansion')
+dnl @result{} unquoted space kept after expansion
+macro(macro(`
+')`whitespace from expansion kept')
+dnl @result{}
+dnl @result{}whitespace from expansion kept
+macro(`unquoted trailing whitespace kept'
+)
+dnl @result{}unquoted trailing whitespace kept
+dnl @result{}
diff --git a/checks/021.macro_argu b/checks/021.macro_argu
new file mode 100644
index 0000000..ec04415
--- /dev/null
+++ b/checks/021.macro_argu
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:1609: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+index(`abc')
+dnl @error{}m4:stdin:1: Warning: too few arguments to builtin `index'
+dnl @result{}0
+index(`abc',)
+dnl @result{}0
+index(`abc', `b', `ignored')
+dnl @error{}m4:stdin:3: Warning: excess arguments to builtin `index' ignored
+dnl @result{}1
diff --git a/checks/022.macro_argu b/checks/022.macro_argu
new file mode 100644
index 0000000..3ec319f
--- /dev/null
+++ b/checks/022.macro_argu
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1622: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Q
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+index(`abc')
+dnl @result{}0
+index(`abc',)
+dnl @result{}0
+index(`abc', `b', `ignored')
+dnl @result{}1
diff --git a/checks/023.macro_argu b/checks/023.macro_argu
new file mode 100644
index 0000000..d76d3e1
--- /dev/null
+++ b/checks/023.macro_argu
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1652: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`f', `1')
+dnl @result{}
+f(define(`f', `2'))
+dnl @result{}1
+f
+dnl @result{}2
diff --git a/checks/024.macro_argu b/checks/024.macro_argu
new file mode 100644
index 0000000..3fdd23b
--- /dev/null
+++ b/checks/024.macro_argu
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1664: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+hello world
+dnl @result{}hello world
+define(
+dnl @error{}m4:stdin:2: ERROR: end of file in argument list
diff --git a/checks/025.quoting_ar b/checks/025.quoting_ar
new file mode 100644
index 0000000..1b44779
--- /dev/null
+++ b/checks/025.quoting_ar
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:1723: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`active', `ACT, IVE')
+dnl @result{}
+define(`show', `$1 $1')
+dnl @result{}
+show(active)
+dnl @result{}ACT ACT
+show(`active')
+dnl @result{}ACT, IVE ACT, IVE
+show(``active'')
+dnl @result{}active active
diff --git a/checks/026.macro_expa b/checks/026.macro_expa
new file mode 100644
index 0000000..fed04f1
--- /dev/null
+++ b/checks/026.macro_expa
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:1751: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dbar=Hello -Dfoo=bar
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+foo
+dnl @result{}Hello
diff --git a/checks/027.macro_expa b/checks/027.macro_expa
new file mode 100644
index 0000000..6900005
--- /dev/null
+++ b/checks/027.macro_expa
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1766: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dfoo -Decho=$@
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+foo
+dnl @result{}
+foo(`silently ignored')
+dnl @result{}
+echo(`1', `2')
+dnl @result{}1,2
diff --git a/checks/028.define b/checks/028.define
new file mode 100644
index 0000000..435da9e
--- /dev/null
+++ b/checks/028.define
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1815: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `Hello world.')
+dnl @result{}
+foo
+dnl @result{}Hello world.
diff --git a/checks/029.define b/checks/029.define
new file mode 100644
index 0000000..df38751
--- /dev/null
+++ b/checks/029.define
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1832: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(foo, one)
+dnl @result{}
+define(foo, two)
+dnl @result{}
+one
+dnl @result{}two
diff --git a/checks/030.define b/checks/030.define
new file mode 100644
index 0000000..09da162
--- /dev/null
+++ b/checks/030.define
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:1866: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`array', `defn(format(``array[%d]'', `$1'))')
+dnl @result{}
+define(`array_set', `define(format(``array[%d]'', `$1'), `$2')')
+dnl @result{}
+array_set(`4', `array element no. 4')
+dnl @result{}
+array_set(`17', `array element no. 17')
+dnl @result{}
+array(`4')
+dnl @result{}array element no. 4
+array(eval(`10 + 7'))
+dnl @result{}array element no. 17
diff --git a/checks/031.arguments b/checks/031.arguments
new file mode 100644
index 0000000..766d489
--- /dev/null
+++ b/checks/031.arguments
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1900: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`exch', `$2, $1')
+dnl @result{}
+exch(`arg1', `arg2')
+dnl @result{}arg2, arg1
diff --git a/checks/032.arguments b/checks/032.arguments
new file mode 100644
index 0000000..ddc2afb
--- /dev/null
+++ b/checks/032.arguments
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1910: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`exch', `$2, $1')
+dnl @result{}
+define(exch(``expansion text'', ``macro''))
+dnl @result{}
+macro
+dnl @result{}expansion text
diff --git a/checks/033.arguments b/checks/033.arguments
new file mode 100644
index 0000000..a9bf717
--- /dev/null
+++ b/checks/033.arguments
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1926: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`test', ``Macro name: $0'')
+dnl @result{}
+test
+dnl @result{}Macro name: test
diff --git a/checks/034.arguments b/checks/034.arguments
new file mode 100644
index 0000000..d6a4267
--- /dev/null
+++ b/checks/034.arguments
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:1936: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `This is macro `foo'.')
+dnl @result{}
+foo
+dnl @result{}This is macro foo.
diff --git a/checks/035.arguments b/checks/035.arguments
new file mode 100644
index 0000000..d6418b9
--- /dev/null
+++ b/checks/035.arguments
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:1971: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `single quoted $`'{1} output')
+dnl @result{}
+define(`bar', ``double quoted $'`{2} output'')
+dnl @result{}
+foo(`a', `b')
+dnl @result{}single quoted ${1} output
+bar(`a', `b')
+dnl @result{}double quoted ${2} output
diff --git a/checks/036.arguments b/checks/036.arguments
new file mode 100644
index 0000000..dd2dcd5
--- /dev/null
+++ b/checks/036.arguments
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:1993: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: --warn-macro-sequence
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `$001 ${1} $1')
+dnl @error{}m4:stdin:1: Warning: definition of `foo' contains sequence `$001'
+dnl @error{}m4:stdin:1: Warning: definition of `foo' contains sequence `${1}'
+dnl @result{}
+foo(`bar')
+dnl @result{}bar ${1} bar
diff --git a/checks/037.pseudo_arg b/checks/037.pseudo_arg
new file mode 100644
index 0000000..af5dacc
--- /dev/null
+++ b/checks/037.pseudo_arg
@@ -0,0 +1,24 @@
+dnl @ ../doc/m4.texi:2019: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`nargs', `$#')
+dnl @result{}
+nargs
+dnl @result{}0
+nargs()
+dnl @result{}1
+nargs(`arg1', `arg2', `arg3')
+dnl @result{}3
+nargs(`commas can be quoted, like this')
+dnl @result{}1
+nargs(arg1#inside comments, commas do not separate arguments
+still arg1)
+dnl @result{}1
+nargs((unquoted parentheses, like this, group arguments))
+dnl @result{}1
diff --git a/checks/038.pseudo_arg b/checks/038.pseudo_arg
new file mode 100644
index 0000000..6aef0f4
--- /dev/null
+++ b/checks/038.pseudo_arg
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:2041: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl Attempt to define a macro to just `$#'
+define(underquoted, $#)
+oops)
+dnl @result{}
+underquoted
+dnl @result{}0)
+dnl @result{}oops
diff --git a/checks/039.pseudo_arg b/checks/039.pseudo_arg
new file mode 100644
index 0000000..887dea0
--- /dev/null
+++ b/checks/039.pseudo_arg
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:2054: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$*')
+dnl @result{}
+echo(arg1, arg2, arg3 , arg4)
+dnl @result{}arg1,arg2,arg3 ,arg4
diff --git a/checks/040.pseudo_arg b/checks/040.pseudo_arg
new file mode 100644
index 0000000..fd64caf
--- /dev/null
+++ b/checks/040.pseudo_arg
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:2065: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$@')
+dnl @result{}
+echo(arg1, arg2, arg3 , arg4)
+dnl @result{}arg1,arg2,arg3 ,arg4
diff --git a/checks/041.pseudo_arg b/checks/041.pseudo_arg
new file mode 100644
index 0000000..6fb0479
--- /dev/null
+++ b/checks/041.pseudo_arg
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:2075: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo1', `$*')
+dnl @result{}
+define(`echo2', `$@')
+dnl @result{}
+define(`foo', `This is macro `foo'.')
+dnl @result{}
+echo1(foo)
+dnl @result{}This is macro This is macro foo..
+echo1(`foo')
+dnl @result{}This is macro foo.
+echo2(foo)
+dnl @result{}This is macro foo.
+echo2(`foo')
+dnl @result{}foo
diff --git a/checks/042.pseudo_arg b/checks/042.pseudo_arg
new file mode 100644
index 0000000..ca4ae05
--- /dev/null
+++ b/checks/042.pseudo_arg
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:2097: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo1', `$*')
+dnl @result{}
+define(`echo2', `$@')
+dnl @result{}
+define(`foo', `bar')
+dnl @result{}
+echo1(#foo'foo
+foo)
+dnl @result{}#foo'foo
+dnl @result{}bar
+echo2(#foo'foo
+foo)
+dnl @result{}#foobar
+dnl @result{}bar'
diff --git a/checks/043.pseudo_arg b/checks/043.pseudo_arg
new file mode 100644
index 0000000..ac1a611
--- /dev/null
+++ b/checks/043.pseudo_arg
@@ -0,0 +1,29 @@
+dnl @ ../doc/m4.texi:2119: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$@')dnl
+echo(echo(`01234567890123456789', `01234567890123456789')
+echo(`98765432109876543210', `98765432109876543210'))
+dnl @result{}01234567890123456789,01234567890123456789
+dnl @result{}98765432109876543210,98765432109876543210
+len((echo(`01234567890123456789',
+ `01234567890123456789')echo(`98765432109876543210',
+ `98765432109876543210')))
+dnl @result{}84
+indir(`echo', indir(`echo', `01234567890123456789',
+ `01234567890123456789')
+indir(`echo', `98765432109876543210', `98765432109876543210'))
+dnl @result{}01234567890123456789,01234567890123456789
+dnl @result{}98765432109876543210,98765432109876543210
+define(`argn', `$#')dnl
+define(`echo1', `-$@-')define(`echo2', `,$@,')dnl
+echo1(`1', `2', `3') argn(echo1(`1', `2', `3'))
+dnl @result{}-1,2,3- 3
+echo2(`1', `2', `3') argn(echo2(`1', `2', `3'))
+dnl @result{},1,2,3, 5
diff --git a/checks/044.pseudo_arg b/checks/044.pseudo_arg
new file mode 100644
index 0000000..42b2b9e
--- /dev/null
+++ b/checks/044.pseudo_arg
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:2147: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `$$$ hello $$$')
+dnl @result{}
+foo
+dnl @result{}$$$ hello $$$
diff --git a/checks/045.pseudo_arg b/checks/045.pseudo_arg
new file mode 100644
index 0000000..51840e8
--- /dev/null
+++ b/checks/045.pseudo_arg
@@ -0,0 +1,29 @@
+dnl @ ../doc/m4.texi:2163: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `no nested quote: $1')
+dnl @result{}
+foo(`arg')
+dnl @result{}no nested quote: arg
+define(`foo', `nested quote around $: `$'1')
+dnl @result{}
+foo(`arg')
+dnl @result{}nested quote around $: $1
+define(`foo', `nested empty quote after $: $`'1')
+dnl @result{}
+foo(`arg')
+dnl @result{}nested empty quote after $: $1
+define(`foo', `nested quote around next character: $`1'')
+dnl @result{}
+foo(`arg')
+dnl @result{}nested quote around next character: $1
+define(`foo', `nested quote around both: `$1'')
+dnl @result{}
+foo(`arg')
+dnl @result{}nested quote around both: arg
diff --git a/checks/046.undefine b/checks/046.undefine
new file mode 100644
index 0000000..179601f
--- /dev/null
+++ b/checks/046.undefine
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:2202: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+foo bar blah
+dnl @result{}foo bar blah
+define(`foo', `some')define(`bar', `other')define(`blah', `text')
+dnl @result{}
+foo bar blah
+dnl @result{}some other text
+undefine(`foo')
+dnl @result{}
+foo bar blah
+dnl @result{}foo other text
+undefine(`bar', `blah')
+dnl @result{}
+foo bar blah
+dnl @result{}foo bar blah
diff --git a/checks/047.undefine b/checks/047.undefine
new file mode 100644
index 0000000..7145c06
--- /dev/null
+++ b/checks/047.undefine
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:2222: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`f', ``$0':$1')
+dnl @result{}
+f(f(f(undefine(`f')`hello world')))
+dnl @result{}f:f:f:hello world
+f(`bye')
+dnl @result{}f(bye)
diff --git a/checks/048.defn b/checks/048.defn
new file mode 100644
index 0000000..8b0fba9
--- /dev/null
+++ b/checks/048.defn
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:2265: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`zap', defn(`undefine'))
+dnl @result{}
+zap(`undefine')
+dnl @result{}
+undefine(`zap')
+dnl @result{}undefine(zap)
diff --git a/checks/049.defn b/checks/049.defn
new file mode 100644
index 0000000..15a496d
--- /dev/null
+++ b/checks/049.defn
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:2282: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `This is `$0'')
+dnl @result{}
+define(`bar', defn(`foo'))
+dnl @result{}
+bar
+dnl @result{}This is bar
diff --git a/checks/050.defn b/checks/050.defn
new file mode 100644
index 0000000..8b42e86
--- /dev/null
+++ b/checks/050.defn
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:2294: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`string', `The macro dnl is very useful
+')
+dnl @result{}
+string
+dnl @result{}The macro
+defn(`string')
+dnl @result{}The macro dnl is very useful
+dnl @result{}
diff --git a/checks/051.defn b/checks/051.defn
new file mode 100644
index 0000000..99f42f1
--- /dev/null
+++ b/checks/051.defn
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:2313: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', a'a)
+dnl @result{}
+define(`a', `A')
+dnl @result{}
+define(`echo', `$@')
+dnl @result{}
+foo
+dnl @result{}A'A
+defn(`foo')
+dnl @result{}aA'
+echo(foo)
+dnl @result{}AA'
diff --git a/checks/052.defn b/checks/052.defn
new file mode 100644
index 0000000..a6abec2
--- /dev/null
+++ b/checks/052.defn
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:2337: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`l', `<[>')define(`r', `<]>')
+dnl @result{}
+changequote(`[', `]')
+dnl @result{}
+defn([l])defn([r])
+])
+dnl @result{}<[>]defn([r])
+dnl @result{})
+defn([l], [r])
+dnl @result{}<[>][<]>
diff --git a/checks/053.defn b/checks/053.defn
new file mode 100644
index 0000000..b0d335d
--- /dev/null
+++ b/checks/053.defn
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:2356: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+defn(`defn')
+dnl @result{}
+define(defn(`divnum'), `cannot redefine a builtin token')
+dnl @error{}m4:stdin:2: Warning: define: invalid macro name ignored
+dnl @result{}
+divnum
+dnl @result{}0
+len(defn(`divnum'))
+dnl @result{}0
diff --git a/checks/054.defn b/checks/054.defn
new file mode 100644
index 0000000..d2d56ca
--- /dev/null
+++ b/checks/054.defn
@@ -0,0 +1,25 @@
+dnl @ ../doc/m4.texi:2373: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`a', `A')define(`AA', `b')
+dnl @result{}
+traceon(`defn', `define')
+dnl @result{}
+defn(`a', `divnum', `a')
+dnl @error{}m4:stdin:3: Warning: cannot concatenate builtin `divnum'
+dnl @error{}m4trace: -1- defn(`a', `divnum', `a') -> ``A'`A''
+dnl @result{}AA
+define(`mydivnum', defn(`divnum', `divnum'))mydivnum
+dnl @error{}m4:stdin:4: Warning: cannot concatenate builtin `divnum'
+dnl @error{}m4:stdin:4: Warning: cannot concatenate builtin `divnum'
+dnl @error{}m4trace: -2- defn(`divnum', `divnum')
+dnl @error{}m4trace: -1- define(`mydivnum', `')
+dnl @result{}
+traceoff(`defn', `define')
+dnl @result{}
diff --git a/checks/055.pushdef b/checks/055.pushdef
new file mode 100644
index 0000000..fdf8aad
--- /dev/null
+++ b/checks/055.pushdef
@@ -0,0 +1,33 @@
+dnl @ ../doc/m4.texi:2425: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `Expansion one.')
+dnl @result{}
+foo
+dnl @result{}Expansion one.
+pushdef(`foo', `Expansion two.')
+dnl @result{}
+foo
+dnl @result{}Expansion two.
+pushdef(`foo', `Expansion three.')
+dnl @result{}
+pushdef(`foo', `Expansion four.')
+dnl @result{}
+popdef(`foo')
+dnl @result{}
+foo
+dnl @result{}Expansion three.
+popdef(`foo', `foo')
+dnl @result{}
+foo
+dnl @result{}Expansion one.
+popdef(`foo')
+dnl @result{}
+foo
+dnl @result{}foo
diff --git a/checks/056.pushdef b/checks/056.pushdef
new file mode 100644
index 0000000..ff04259
--- /dev/null
+++ b/checks/056.pushdef
@@ -0,0 +1,25 @@
+dnl @ ../doc/m4.texi:2462: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `Expansion one.')
+dnl @result{}
+foo
+dnl @result{}Expansion one.
+pushdef(`foo', `Expansion two.')
+dnl @result{}
+foo
+dnl @result{}Expansion two.
+define(`foo', `Second expansion two.')
+dnl @result{}
+foo
+dnl @result{}Second expansion two.
+undefine(`foo')
+dnl @result{}
+foo
+dnl @result{}foo
diff --git a/checks/057.indir b/checks/057.indir
new file mode 100644
index 0000000..dc612d7
--- /dev/null
+++ b/checks/057.indir
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:2511: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`$$internal$macro', `Internal macro (name `$0')')
+dnl @result{}
+$$internal$macro
+dnl @result{}$$internal$macro
+indir(`$$internal$macro')
+dnl @result{}Internal macro (name $$internal$macro)
diff --git a/checks/058.indir b/checks/058.indir
new file mode 100644
index 0000000..58d08cd
--- /dev/null
+++ b/checks/058.indir
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:2531: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`f', `1')
+dnl @result{}
+f(define(`f', `2'))
+dnl @result{}1
+indir(`f', define(`f', `3'))
+dnl @result{}3
+indir(`f', undefine(`f'))
+dnl @error{}m4:stdin:4: undefined macro `f'
+dnl @result{}
diff --git a/checks/059.indir b/checks/059.indir
new file mode 100644
index 0000000..484557d
--- /dev/null
+++ b/checks/059.indir
@@ -0,0 +1,22 @@
+dnl @ ../doc/m4.texi:2549: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+indir(defn(`defn'), `divnum')
+dnl @error{}m4:stdin:1: Warning: indir: invalid macro name ignored
+dnl @result{}
+indir(`define', defn(`defn'), `divnum')
+dnl @error{}m4:stdin:2: Warning: define: invalid macro name ignored
+dnl @result{}
+indir(`define', `foo', defn(`divnum'))
+dnl @result{}
+foo
+dnl @result{}0
+indir(`divert', defn(`foo'))
+dnl @error{}m4:stdin:5: empty string treated as 0 in builtin `divert'
+dnl @result{}
diff --git a/checks/060.builtin b/checks/060.builtin
new file mode 100644
index 0000000..1f9da39
--- /dev/null
+++ b/checks/060.builtin
@@ -0,0 +1,33 @@
+dnl @ ../doc/m4.texi:2587: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+pushdef(`define', `hidden')
+dnl @result{}
+undefine(`undefine')
+dnl @result{}
+define(`foo', `bar')
+dnl @result{}hidden
+foo
+dnl @result{}foo
+builtin(`define', `foo', defn(`divnum'))
+dnl @result{}
+foo
+dnl @result{}0
+builtin(`define', `foo', `BAR')
+dnl @result{}
+foo
+dnl @result{}BAR
+undefine(`foo')
+dnl @result{}undefine(foo)
+foo
+dnl @result{}BAR
+builtin(`undefine', `foo')
+dnl @result{}
+foo
+dnl @result{}foo
diff --git a/checks/061.builtin b/checks/061.builtin
new file mode 100644
index 0000000..ff2ed35
--- /dev/null
+++ b/checks/061.builtin
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:2620: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -P
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+m4_builtin(`divnum')
+dnl @result{}0
+m4_builtin(`m4_divnum')
+dnl @error{}m4:stdin:2: undefined builtin `m4_divnum'
+dnl @result{}
+m4_indir(`divnum')
+dnl @error{}m4:stdin:3: undefined macro `divnum'
+dnl @result{}
+m4_indir(`m4_divnum')
+dnl @result{}0
diff --git a/checks/062.builtin b/checks/062.builtin
new file mode 100644
index 0000000..d3c30bf
--- /dev/null
+++ b/checks/062.builtin
@@ -0,0 +1,28 @@
+dnl @ ../doc/m4.texi:2638: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+builtin
+dnl @result{}builtin
+builtin()
+dnl @error{}m4:stdin:2: undefined builtin `'
+dnl @result{}
+builtin(`builtin')
+dnl @error{}m4:stdin:3: Warning: too few arguments to builtin `builtin'
+dnl @result{}
+builtin(`builtin',)
+dnl @error{}m4:stdin:4: undefined builtin `'
+dnl @result{}
+builtin(`builtin', ``'
+')
+dnl @error{}m4:stdin:5: undefined builtin ``'
+dnl @error{}'
+dnl @result{}
+indir(`index')
+dnl @error{}m4:stdin:7: Warning: too few arguments to builtin `index'
+dnl @result{}
diff --git a/checks/063.builtin b/checks/063.builtin
new file mode 100644
index 0000000..9a40dd8
--- /dev/null
+++ b/checks/063.builtin
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:2665: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+builtin(`include', `foo')dnl
+dnl @result{}bar
diff --git a/checks/064.builtin b/checks/064.builtin
new file mode 100644
index 0000000..6bd6cd3
--- /dev/null
+++ b/checks/064.builtin
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:2672: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`s', `builtin(`shift', $@)')dnl
+define(`loop', `ifelse(`$2', `', `-', `$1$2: $0(`$1', s(s($@)))')')dnl
+loop(`1')
+dnl @result{}-
+loop(`1', `2')
+dnl @result{}12: -
+loop(`1', `2', `3')
+dnl @result{}12: 13: -
+loop(`1', `2', `3', `4')
+dnl @result{}12: 13: 14: -
+loop(`1', `2', `3', `4', `5')
+dnl @result{}12: 13: 14: 15: -
diff --git a/checks/065.ifdef b/checks/065.ifdef
new file mode 100644
index 0000000..95aae52
--- /dev/null
+++ b/checks/065.ifdef
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:2723: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`foo', ``foo' is defined', ``foo' is not defined')
+dnl @result{}foo is not defined
+define(`foo', `')
+dnl @result{}
+ifdef(`foo', ``foo' is defined', ``foo' is not defined')
+dnl @result{}foo is defined
+ifdef(`no_such_macro', `yes', `no', `extra argument')
+dnl @error{}m4:stdin:4: Warning: excess arguments to builtin `ifdef' ignored
+dnl @result{}no
diff --git a/checks/066.ifelse b/checks/066.ifelse
new file mode 100644
index 0000000..5b2f873
--- /dev/null
+++ b/checks/066.ifelse
@@ -0,0 +1,14 @@
+dnl @ ../doc/m4.texi:2771: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifelse(`some comments')
+dnl @result{}
+ifelse(`foo', `bar')
+dnl @error{}m4:stdin:2: Warning: too few arguments to builtin `ifelse'
+dnl @result{}
diff --git a/checks/067.ifelse b/checks/067.ifelse
new file mode 100644
index 0000000..c267dee
--- /dev/null
+++ b/checks/067.ifelse
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:2781: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifelse(`foo', `bar', `true')
+dnl @result{}
+ifelse(`foo', `foo', `true')
+dnl @result{}true
+define(`foo', `bar')
+dnl @result{}
+ifelse(foo, `bar', `true', `false')
+dnl @result{}true
+ifelse(foo, `foo', `true', `false')
+dnl @result{}false
diff --git a/checks/068.ifelse b/checks/068.ifelse
new file mode 100644
index 0000000..f91a104
--- /dev/null
+++ b/checks/068.ifelse
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:2801: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `ifelse(`$#', `0', ``$0'', `arguments:$#')')
+dnl @result{}
+foo
+dnl @result{}foo
+foo()
+dnl @result{}arguments:1
+foo(`a', `b', `c')
+dnl @result{}arguments:3
diff --git a/checks/069.ifelse b/checks/069.ifelse
new file mode 100644
index 0000000..6691c4f
--- /dev/null
+++ b/checks/069.ifelse
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:2825: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifelse(`foo', `bar', `third', `gnu', `gnats')
+dnl @error{}m4:stdin:1: Warning: excess arguments to builtin `ifelse' ignored
+dnl @result{}gnu
+ifelse(`foo', `bar', `third', `gnu', `gnats', `sixth')
+dnl @result{}
+ifelse(`foo', `bar', `third', `gnu', `gnats', `sixth', `seventh')
+dnl @result{}seventh
+ifelse(`foo', `bar', `3', `gnu', `gnats', `6', `7', `8')
+dnl @error{}m4:stdin:4: Warning: excess arguments to builtin `ifelse' ignored
+dnl @result{}7
diff --git a/checks/070.ifelse b/checks/070.ifelse
new file mode 100644
index 0000000..03eb304
--- /dev/null
+++ b/checks/070.ifelse
@@ -0,0 +1,59 @@
+dnl @ ../doc/m4.texi:2843: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`e', `$@')define(`long', `01234567890123456789')
+dnl @result{}
+ifelse(long, `01234567890123456789', `yes', `no')
+dnl @result{}yes
+ifelse(`01234567890123456789', long, `yes', `no')
+dnl @result{}yes
+ifelse(long, `01234567890123456789-', `yes', `no')
+dnl @result{}no
+ifelse(`01234567890123456789-', long, `yes', `no')
+dnl @result{}no
+ifelse(e(long), `01234567890123456789', `yes', `no')
+dnl @result{}yes
+ifelse(`01234567890123456789', e(long), `yes', `no')
+dnl @result{}yes
+ifelse(e(long), `01234567890123456789-', `yes', `no')
+dnl @result{}no
+ifelse(`01234567890123456789-', e(long), `yes', `no')
+dnl @result{}no
+ifelse(-e(long), `-01234567890123456789', `yes', `no')
+dnl @result{}yes
+ifelse(-`01234567890123456789', -e(long), `yes', `no')
+dnl @result{}yes
+ifelse(-e(long), `-01234567890123456789-', `yes', `no')
+dnl @result{}no
+ifelse(`-01234567890123456789-', -e(long), `yes', `no')
+dnl @result{}no
+ifelse(-e(long)-, `-01234567890123456789-', `yes', `no')
+dnl @result{}yes
+ifelse(-`01234567890123456789-', -e(long)-, `yes', `no')
+dnl @result{}yes
+ifelse(-e(long)-, `-01234567890123456789', `yes', `no')
+dnl @result{}no
+ifelse(`-01234567890123456789', -e(long)-, `yes', `no')
+dnl @result{}no
+ifelse(`-'e(long), `-01234567890123456789', `yes', `no')
+dnl @result{}yes
+ifelse(-`01234567890123456789', `-'e(long), `yes', `no')
+dnl @result{}yes
+ifelse(`-'e(long), `-01234567890123456789-', `yes', `no')
+dnl @result{}no
+ifelse(`-01234567890123456789-', `-'e(long), `yes', `no')
+dnl @result{}no
+ifelse(`-'e(long)`-', `-01234567890123456789-', `yes', `no')
+dnl @result{}yes
+ifelse(-`01234567890123456789-', `-'e(long)`-', `yes', `no')
+dnl @result{}yes
+ifelse(`-'e(long)`-', `-01234567890123456789', `yes', `no')
+dnl @result{}no
+ifelse(`-01234567890123456789', `-'e(long)`-', `yes', `no')
+dnl @result{}no
diff --git a/checks/071.shift b/checks/071.shift
new file mode 100644
index 0000000..622de19
--- /dev/null
+++ b/checks/071.shift
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:2924: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+shift
+dnl @result{}shift
+shift(`bar')
+dnl @result{}
+shift(`foo', `bar', `baz')
+dnl @result{}bar,baz
diff --git a/checks/072.shift b/checks/072.shift
new file mode 100644
index 0000000..c32e838
--- /dev/null
+++ b/checks/072.shift
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:2943: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`reverse', `ifelse(`$#', `0', , `$#', `1', ``$1'',
+ `reverse(shift($@)), `$1'')')
+dnl @result{}
+reverse
+dnl @result{}
+reverse(`foo')
+dnl @result{}foo
+reverse(`foo', `bar', `gnats', `and gnus')
+dnl @result{}and gnus, gnats, bar, foo
diff --git a/checks/073.shift b/checks/073.shift
new file mode 100644
index 0000000..96d2155
--- /dev/null
+++ b/checks/073.shift
@@ -0,0 +1,42 @@
+dnl @ ../doc/m4.texi:2978: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`cond',
+`ifelse(`$#', `1', `$1',
+ `ifelse($1, `$2', `$3',
+ `$0(shift(shift(shift($@))))')')')dnl
+define(`side', `define(`counter', incr(counter))$1')dnl
+define(`example1',
+`define(`counter', `0')dnl
+ifelse(side(`$1'), `yes', `one comparison: ',
+ side(`$1'), `no', `two comparisons: ',
+ side(`$1'), `maybe', `three comparisons: ',
+ `side(`default answer: ')')counter')dnl
+define(`example2',
+`define(`counter', `0')dnl
+cond(`side(`$1')', `yes', `one comparison: ',
+ `side(`$1')', `no', `two comparisons: ',
+ `side(`$1')', `maybe', `three comparisons: ',
+ `side(`default answer: ')')counter')dnl
+example1(`yes')
+dnl @result{}one comparison: 3
+example1(`no')
+dnl @result{}two comparisons: 3
+example1(`maybe')
+dnl @result{}three comparisons: 3
+example1(`feeling rather indecisive today')
+dnl @result{}default answer: 4
+example2(`yes')
+dnl @result{}one comparison: 1
+example2(`no')
+dnl @result{}two comparisons: 2
+example2(`maybe')
+dnl @result{}three comparisons: 3
+example2(`feeling rather indecisive today')
+dnl @result{}default answer: 4
diff --git a/checks/074.shift b/checks/074.shift
new file mode 100644
index 0000000..967428d
--- /dev/null
+++ b/checks/074.shift
@@ -0,0 +1,30 @@
+dnl @ ../doc/m4.texi:3033: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`join.m4')
+dnl @result{}
+join,join(`-'),join(`-', `'),join(`-', `', `')
+dnl @result{},,,
+joinall,joinall(`-'),joinall(`-', `'),joinall(`-', `', `')
+dnl @result{},,,-
+join(`-', `1')
+dnl @result{}1
+join(`-', `1', `2', `3')
+dnl @result{}1-2-3
+join(`', `1', `2', `3')
+dnl @result{}123
+join(`-', `', `1', `', `', `2', `')
+dnl @result{}1-2
+joinall(`-', `', `1', `', `', `2', `')
+dnl @result{}-1---2-
+join(`,', `1', `2', `3')
+dnl @result{}1,2,3
+define(`nargs', `$#')dnl
+nargs(join(`,', `1', `2', `3'))
+dnl @result{}1
diff --git a/checks/075.shift b/checks/075.shift
new file mode 100644
index 0000000..63cf732
--- /dev/null
+++ b/checks/075.shift
@@ -0,0 +1,25 @@
+dnl @ ../doc/m4.texi:3062: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`join.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# join(sep, args) - join each non-empty ARG into a single
+dnl @result{}# string, with each element separated by SEP
+dnl @result{}define(`join',
+dnl @result{}`ifelse(`$#', `2', ``$2'',
+dnl @result{} `ifelse(`$2', `', `', ``$2'_')$0(`$1', shift(shift($@)))')')
+dnl @result{}define(`_join',
+dnl @result{}`ifelse(`$#$2', `2', `',
+dnl @result{} `ifelse(`$2', `', `', ``$1$2'')$0(`$1', shift(shift($@)))')')
+dnl @result{}# joinall(sep, args) - join each ARG, including empty ones,
+dnl @result{}# into a single string, with each element separated by SEP
+dnl @result{}define(`joinall', ``$2'_$0(`$1', shift($@))')
+dnl @result{}define(`_joinall',
+dnl @result{}`ifelse(`$#', `2', `', ``$1$3'$0(`$1', shift(shift($@)))')')
+dnl @result{}divert`'dnl
diff --git a/checks/076.shift b/checks/076.shift
new file mode 100644
index 0000000..dbe0a02
--- /dev/null
+++ b/checks/076.shift
@@ -0,0 +1,26 @@
+dnl @ ../doc/m4.texi:3140: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`quote.m4')
+dnl @result{}
+-quote-dquote-dquote_elt-
+dnl @result{}----
+-quote()-dquote()-dquote_elt()-
+dnl @result{}--`'-`'-
+-quote(`1')-dquote(`1')-dquote_elt(`1')-
+dnl @result{}-1-`1'-`1'-
+-quote(`1', `2')-dquote(`1', `2')-dquote_elt(`1', `2')-
+dnl @result{}-1,2-`1',`2'-`1',`2'-
+define(`n', `$#')dnl
+-n(quote(`1', `2'))-n(dquote(`1', `2'))-n(dquote_elt(`1', `2'))-
+dnl @result{}-1-1-2-
+dquote(dquote_elt(`1', `2'))
+dnl @result{}``1'',``2''
+dquote_elt(dquote(`1', `2'))
+dnl @result{}``1',`2''
diff --git a/checks/077.shift b/checks/077.shift
new file mode 100644
index 0000000..b53fa06
--- /dev/null
+++ b/checks/077.shift
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:3173: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`quote.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# quote(args) - convert args to single-quoted string
+dnl @result{}define(`quote', `ifelse(`$#', `0', `', ``$*'')')
+dnl @result{}# dquote(args) - convert args to quoted list of quoted strings
+dnl @result{}define(`dquote', ``$@'')
+dnl @result{}# dquote_elt(args) - convert args to list of double-quoted strings
+dnl @result{}define(`dquote_elt', `ifelse(`$#', `0', `', `$#', `1', ```$1''',
+dnl @result{} ```$1'',$0(shift($@))')')
+dnl @result{}divert`'dnl
diff --git a/checks/078.shift b/checks/078.shift
new file mode 100644
index 0000000..10aa85f
--- /dev/null
+++ b/checks/078.shift
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:3206: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`argn', `ifelse(`$1', 1, ``$2'',
+ `argn(decr(`$1'), shift(shift($@)))')')
+dnl @result{}
+argn(`1', `a')
+dnl @result{}a
+define(`foo', `argn(`11', $@)')
+dnl @result{}
+foo(`a', `b', `c', `d', `e', `f', `g', `h', `i', `j', `k', `l')
+dnl @result{}k
diff --git a/checks/079.forloop b/checks/079.forloop
new file mode 100644
index 0000000..82c360a
--- /dev/null
+++ b/checks/079.forloop
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:3238: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`forloop.m4')
+dnl @result{}
+forloop(`i', `1', `8', `i ')
+dnl @result{}1 2 3 4 5 6 7 8
diff --git a/checks/080.forloop b/checks/080.forloop
new file mode 100644
index 0000000..ca4816f
--- /dev/null
+++ b/checks/080.forloop
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:3249: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`forloop.m4')
+dnl @result{}
+forloop(`i', `1', `4', `forloop(`j', `1', `8', ` (i, j)')
+')
+dnl @result{} (1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (1, 6) (1, 7) (1, 8)
+dnl @result{} (2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (2, 7) (2, 8)
+dnl @result{} (3, 1) (3, 2) (3, 3) (3, 4) (3, 5) (3, 6) (3, 7) (3, 8)
+dnl @result{} (4, 1) (4, 2) (4, 3) (4, 4) (4, 5) (4, 6) (4, 7) (4, 8)
+dnl @result{}
diff --git a/checks/081.forloop b/checks/081.forloop
new file mode 100644
index 0000000..52f0ed6
--- /dev/null
+++ b/checks/081.forloop
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:3277: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`forloop.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# forloop(var, from, to, stmt) - simple version
+dnl @result{}define(`forloop', `pushdef(`$1', `$2')_forloop($@)popdef(`$1')')
+dnl @result{}define(`_forloop',
+dnl @result{} `$4`'ifelse($1, `$3', `', `define(`$1', incr($1))$0($@)')')
+dnl @result{}divert`'dnl
diff --git a/checks/082.foreach b/checks/082.foreach
new file mode 100644
index 0000000..6b19b8f
--- /dev/null
+++ b/checks/082.foreach
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:3324: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreach.m4')
+dnl @result{}
+foreach(`x', (foo, bar, foobar), `Word was: x
+')dnl
+dnl @result{}Word was: foo
+dnl @result{}Word was: bar
+dnl @result{}Word was: foobar
+include(`foreachq.m4')
+dnl @result{}
+foreachq(`x', `foo, bar, foobar', `Word was: x
+')dnl
+dnl @result{}Word was: foo
+dnl @result{}Word was: bar
+dnl @result{}Word was: foobar
diff --git a/checks/083.foreach b/checks/083.foreach
new file mode 100644
index 0000000..aa0fcd1
--- /dev/null
+++ b/checks/083.foreach
@@ -0,0 +1,27 @@
+dnl @ ../doc/m4.texi:3347: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreach.m4')
+dnl @result{}
+define(`_case', ` $1)
+ $2=" $1";;
+')dnl
+define(`_cat', `$1$2')dnl
+case $`'1 in
+dnl @result{}case $1 in
+foreach(`x', `(`(`a', `vara')', `(`b', `varb')', `(`c', `varc')')',
+ `_cat(`_case', x)')dnl
+dnl @result{} a)
+dnl @result{} vara=" a";;
+dnl @result{} b)
+dnl @result{} varb=" b";;
+dnl @result{} c)
+dnl @result{} varc=" c";;
+esac
+dnl @result{}esac
diff --git a/checks/084.foreach b/checks/084.foreach
new file mode 100644
index 0000000..e85ae37
--- /dev/null
+++ b/checks/084.foreach
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:3377: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`foreach.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# foreach(x, (item_1, item_2, ..., item_n), stmt)
+dnl @result{}# parenthesized list, simple version
+dnl @result{}define(`foreach', `pushdef(`$1')_foreach($@)popdef(`$1')')
+dnl @result{}define(`_arg1', `$1')
+dnl @result{}define(`_foreach', `ifelse(`$2', `()', `',
+dnl @result{} `define(`$1', _arg1$2)$3`'$0(`$1', (shift$2), `$3')')')
+dnl @result{}divert`'dnl
diff --git a/checks/085.foreach b/checks/085.foreach
new file mode 100644
index 0000000..c063ac0
--- /dev/null
+++ b/checks/085.foreach
@@ -0,0 +1,27 @@
+dnl @ ../doc/m4.texi:3404: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`a', `1')define(`b', `2')define(`c', `3')
+dnl @result{}
+include(`foreach.m4')
+dnl @result{}
+include(`foreachq.m4')
+dnl @result{}
+foreach(`x', `(``a'', ``(b'', ``c)'')', `x
+')
+dnl @result{}1
+dnl @result{}(2)1
+dnl @result{}
+dnl @result{}, x
+dnl @result{})
+foreachq(`x', ```a'', ``(b'', ``c)''', `x
+')dnl
+dnl @result{}a
+dnl @result{}(b
+dnl @result{}c)
diff --git a/checks/086.foreach b/checks/086.foreach
new file mode 100644
index 0000000..80536cf
--- /dev/null
+++ b/checks/086.foreach
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:3429: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`foreachq.m4')dnl
+dnl @result{}include(`quote.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# foreachq(x, `item_1, item_2, ..., item_n', stmt)
+dnl @result{}# quoted list, simple version
+dnl @result{}define(`foreachq', `pushdef(`$1')_foreachq($@)popdef(`$1')')
+dnl @result{}define(`_arg1', `$1')
+dnl @result{}define(`_foreachq', `ifelse(quote($2), `', `',
+dnl @result{} `define(`$1', `_arg1($2)')$3`'$0(`$1', `shift($2)', `$3')')')
+dnl @result{}divert`'dnl
diff --git a/checks/087.foreach b/checks/087.foreach
new file mode 100644
index 0000000..7273c23
--- /dev/null
+++ b/checks/087.foreach
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:3456: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreach.m4')include(`foreachq.m4')
+dnl @result{}
+foreach(`name', `(`a', `b')', ` defn(`name')')
+dnl @result{} a b
+foreachq(`name', ``a', `b'', ` defn(`name')')
+dnl @result{} _arg1(`a', `b') _arg1(shift(`a', `b'))
diff --git a/checks/088.stacks b/checks/088.stacks
new file mode 100644
index 0000000..af825b0
--- /dev/null
+++ b/checks/088.stacks
@@ -0,0 +1,24 @@
+dnl @ ../doc/m4.texi:3497: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`stack.m4')
+dnl @result{}
+pushdef(`a', `1')pushdef(`a', `2')pushdef(`a', `3')
+dnl @result{}
+define(`show', ``$1'
+')
+dnl @result{}
+stack_foreach(`a', `show')dnl
+dnl @result{}1
+dnl @result{}2
+dnl @result{}3
+stack_foreach_lifo(`a', `show')dnl
+dnl @result{}3
+dnl @result{}2
+dnl @result{}1
diff --git a/checks/089.stacks b/checks/089.stacks
new file mode 100644
index 0000000..f90ab29
--- /dev/null
+++ b/checks/089.stacks
@@ -0,0 +1,26 @@
+dnl @ ../doc/m4.texi:3533: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`stack.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# stack_foreach(macro, action)
+dnl @result{}# Invoke ACTION with a single argument of each definition
+dnl @result{}# from the definition stack of MACRO, starting with the oldest.
+dnl @result{}define(`stack_foreach',
+dnl @result{}`_stack_reverse(`$1', `tmp-$1')'dnl
+dnl @result{}`_stack_reverse(`tmp-$1', `$1', `$2(defn(`$1'))')')
+dnl @result{}# stack_foreach_lifo(macro, action)
+dnl @result{}# Invoke ACTION with a single argument of each definition
+dnl @result{}# from the definition stack of MACRO, starting with the newest.
+dnl @result{}define(`stack_foreach_lifo',
+dnl @result{}`_stack_reverse(`$1', `tmp-$1', `$2(defn(`$1'))')'dnl
+dnl @result{}`_stack_reverse(`tmp-$1', `$1')')
+dnl @result{}define(`_stack_reverse',
+dnl @result{}`ifdef(`$1', `pushdef(`$2', defn(`$1'))$3`'popdef(`$1')$0($@)')')
+dnl @result{}divert`'dnl
diff --git a/checks/090.compositio b/checks/090.compositio
new file mode 100644
index 0000000..b790d61
--- /dev/null
+++ b/checks/090.compositio
@@ -0,0 +1,31 @@
+dnl @ ../doc/m4.texi:3596: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`define_blind', `ifelse(`$#', `0', ``$0'',
+`_$0(`$1', `$2', `$'`#', `$'`0')')')
+dnl @result{}
+define(`_define_blind', `define(`$1',
+`ifelse(`$3', `0', ``$4'', `$2')')')
+dnl @result{}
+define_blind
+dnl @result{}define_blind
+define_blind(`foo', `arguments were $*')
+dnl @result{}
+foo
+dnl @result{}foo
+foo(`bar')
+dnl @result{}arguments were bar
+define(`blah', defn(`foo'))
+dnl @result{}
+blah
+dnl @result{}blah
+blah(`a', `b')
+dnl @result{}arguments were a,b
+defn(`blah')
+dnl @result{}ifelse(`$#', `0', ``$0'', `arguments were $*')
diff --git a/checks/091.compositio b/checks/091.compositio
new file mode 100644
index 0000000..37a7121
--- /dev/null
+++ b/checks/091.compositio
@@ -0,0 +1,20 @@
+dnl @ ../doc/m4.texi:3643: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`curry.m4')include(`stack.m4')
+dnl @result{}
+define(`reverse', `ifelse(`$#', `0', , `$#', `1', ``$1'',
+ `reverse(shift($@)), `$1'')')
+dnl @result{}
+pushdef(`a', `1')pushdef(`a', `2')pushdef(`a', `3')
+dnl @result{}
+stack_foreach(`a', `:curry(`reverse', `4')')
+dnl @result{}:1, 4:2, 4:3, 4
+curry(`curry', `reverse', `1')(`2')(`3')
+dnl @result{}3, 2, 1
diff --git a/checks/092.compositio b/checks/092.compositio
new file mode 100644
index 0000000..f3ff33c
--- /dev/null
+++ b/checks/092.compositio
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:3668: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`curry.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# curry(macro, args)
+dnl @result{}# Expand to a macro call that takes one argument, then invoke
+dnl @result{}# macro(args, extra).
+dnl @result{}define(`curry', `$1(shift($@,)_$0')
+dnl @result{}define(`_curry', ``$1')')
+dnl @result{}divert`'dnl
diff --git a/checks/093.compositio b/checks/093.compositio
new file mode 100644
index 0000000..c5d50e5
--- /dev/null
+++ b/checks/093.compositio
@@ -0,0 +1,27 @@
+dnl @ ../doc/m4.texi:3707: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`curry.m4')include(`stack.m4')
+dnl @result{}
+define(`rename', `copy($@)undefine(`$1')')dnl
+define(`copy', `ifdef(`$2', `errprint(`$2 already defined
+')m4exit(`1')',
+ `stack_foreach(`$1', `curry(`pushdef', `$2')')')')dnl
+pushdef(`a', `1')pushdef(`a', defn(`divnum'))pushdef(`a', `2')
+dnl @result{}
+copy(`a', `b')
+dnl @result{}
+rename(`b', `c')
+dnl @result{}
+a b c
+dnl @result{}2 b 2
+popdef(`a', `c')c a
+dnl @result{} 0
+popdef(`a', `c')a c
+dnl @result{}1 1
diff --git a/checks/094.dumpdef b/checks/094.dumpdef
new file mode 100644
index 0000000..f4cc176
--- /dev/null
+++ b/checks/094.dumpdef
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:3765: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `Hello world.')
+dnl @result{}
+dumpdef(`foo')
+dnl @error{}foo: `Hello world.'
+dnl @result{}
+dumpdef(`define')
+dnl @error{}define: <define>
+dnl @result{}
diff --git a/checks/095.dumpdef b/checks/095.dumpdef
new file mode 100644
index 0000000..8056836
--- /dev/null
+++ b/checks/095.dumpdef
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:3782: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+pushdef(`f', ``$0'1')pushdef(`f', ``$0'2')
+dnl @result{}
+f(popdef(`f')dumpdef(`f'))
+dnl @error{}f: ``$0'1'
+dnl @result{}f2
+f(popdef(`f')dumpdef(`f'))
+dnl @error{}m4:stdin:3: undefined macro `f'
+dnl @result{}f1
diff --git a/checks/096.trace b/checks/096.trace
new file mode 100644
index 0000000..bde79f5
--- /dev/null
+++ b/checks/096.trace
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:3825: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `Hello World.')
+dnl @result{}
+define(`echo', `$@')
+dnl @result{}
+traceon(`foo', `echo')
+dnl @result{}
+foo
+dnl @error{}m4trace: -1- foo -> `Hello World.'
+dnl @result{}Hello World.
+echo(`gnus', `and gnats')
+dnl @error{}m4trace: -1- echo(`gnus', `and gnats') -> ``gnus',`and gnats''
+dnl @result{}gnus,and gnats
diff --git a/checks/097.trace b/checks/097.trace
new file mode 100644
index 0000000..45a64d6
--- /dev/null
+++ b/checks/097.trace
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:3853: Origin of test
+dnl @ expected status: 1
+dnl @ extra options: -dp -L3 -tifelse
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifelse(`one level')
+dnl @error{}m4trace: -1- ifelse
+dnl @result{}
+ifelse(ifelse(ifelse(`three levels')))
+dnl @error{}m4trace: -3- ifelse
+dnl @error{}m4trace: -2- ifelse
+dnl @error{}m4trace: -1- ifelse
+dnl @result{}
+ifelse(ifelse(ifelse(ifelse(`four levels'))))
+dnl @error{}m4:stdin:3: recursion limit of 3 exceeded, use -L<N> to change it
diff --git a/checks/098.trace b/checks/098.trace
new file mode 100644
index 0000000..98221b7
--- /dev/null
+++ b/checks/098.trace
@@ -0,0 +1,38 @@
+dnl @ ../doc/m4.texi:3871: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+traceoff(`foo')
+dnl @result{}
+traceon(`foo')
+dnl @result{}
+foo
+dnl @result{}foo
+defn(`foo')
+dnl @result{}
+define(`foo', `bar')
+dnl @result{}
+foo
+dnl @error{}m4trace: -1- foo -> `bar'
+dnl @result{}bar
+undefine(`foo')
+dnl @result{}
+ifdef(`foo', `yes', `no')
+dnl @result{}no
+indir(`foo')
+dnl @error{}m4:stdin:9: undefined macro `foo'
+dnl @result{}
+define(`foo', `blah')
+dnl @result{}
+foo
+dnl @error{}m4trace: -1- foo -> `blah'
+dnl @result{}blah
+traceoff
+dnl @result{}
+foo
+dnl @result{}blah
diff --git a/checks/099.trace b/checks/099.trace
new file mode 100644
index 0000000..d9c25cc
--- /dev/null
+++ b/checks/099.trace
@@ -0,0 +1,31 @@
+dnl @ ../doc/m4.texi:3907: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+traceon(`traceon')
+dnl @result{}
+traceon(`traceoff')
+dnl @error{}m4trace: -1- traceon(`traceoff')
+dnl @result{}
+traceoff(`traceoff')
+dnl @error{}m4trace: -1- traceoff(`traceoff')
+dnl @result{}
+traceoff(`traceon')
+dnl @result{}
+traceon(`eval', `m4_divnum')
+dnl @result{}
+define(`m4_eval', defn(`eval'))
+dnl @result{}
+define(`m4_divnum', defn(`divnum'))
+dnl @result{}
+eval(divnum)
+dnl @error{}m4trace: -1- eval(`0') -> `0'
+dnl @result{}0
+m4_eval(m4_divnum)
+dnl @error{}m4trace: -2- m4_divnum -> `0'
+dnl @result{}0
diff --git a/checks/100.trace b/checks/100.trace
new file mode 100644
index 0000000..a4d9094
--- /dev/null
+++ b/checks/100.trace
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:3941: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -de --trace ifelse
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`e', `ifelse(`$1', `$2', `ifelse(`$1', `$2', `e(shift($@))')')')
+dnl @result{}
+e(`1', `1')
+dnl @error{}m4trace: -1- ifelse -> ifelse(`1', `1', `e(shift(`1',`1'))')
+dnl @error{}m4trace: -1- ifelse -> e(shift(`1',`1'))
+dnl @error{}m4trace: -1- ifelse
+dnl @result{}
diff --git a/checks/101.debug_leve b/checks/101.debug_leve
new file mode 100644
index 0000000..5894320
--- /dev/null
+++ b/checks/101.debug_leve
@@ -0,0 +1,28 @@
+dnl @ ../doc/m4.texi:4047: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -dp
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `FOO')
+dnl @result{}
+traceon(`foo')
+dnl @result{}
+debugmode()
+dnl @result{}
+foo
+dnl @error{}m4trace: -1- foo -> `FOO'
+dnl @result{}FOO
+debugmode
+dnl @result{}
+foo
+dnl @error{}m4trace: -1- foo
+dnl @result{}FOO
+debugmode(`+l')
+dnl @result{}
+foo
+dnl @error{}m4trace:8: -1- foo
+dnl @result{}FOO
diff --git a/checks/102.debug_leve b/checks/102.debug_leve
new file mode 100644
index 0000000..fa6af29
--- /dev/null
+++ b/checks/102.debug_leve
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:4076: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -l6
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$@')debugmode(`+t')
+dnl @result{}
+echo(`1', `long string')
+dnl @error{}m4trace: -1- echo(`1', `long s...') -> ``1',`l...'
+dnl @result{}1,long string
+indir(`echo', defn(`changequote'))
+dnl @error{}m4trace: -2- defn(`change...')
+dnl @error{}m4trace: -1- indir(`echo', <changequote>) -> ``''
+dnl @result{}
diff --git a/checks/103.debug_leve b/checks/103.debug_leve
new file mode 100644
index 0000000..a85ebaf
--- /dev/null
+++ b/checks/103.debug_leve
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:4094: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -dip
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @error{}m4debug: input read from stdin
+include(`foo')dnl
+dnl @error{}m4debug: path search for `foo' found `examples/foo'
+dnl @error{}m4debug: input read from examples/foo
+dnl @result{}bar
+dnl @error{}m4debug: input reverted to stdin, line 1
+dnl @error{}m4debug: input exhausted
diff --git a/checks/104.debug_outp b/checks/104.debug_outp
new file mode 100644
index 0000000..dc97ddf
--- /dev/null
+++ b/checks/104.debug_outp
@@ -0,0 +1,25 @@
+dnl @ ../doc/m4.texi:4129: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+traceon(`divnum')
+dnl @result{}
+divnum(`extra')
+dnl @error{}m4:stdin:2: Warning: excess arguments to builtin `divnum' ignored
+dnl @error{}m4trace: -1- divnum(`extra') -> `0'
+dnl @result{}0
+debugfile()
+dnl @result{}
+divnum(`extra')
+dnl @error{}m4:stdin:4: Warning: excess arguments to builtin `divnum' ignored
+dnl @result{}0
+debugfile
+dnl @result{}
+divnum
+dnl @error{}m4trace: -1- divnum -> `0'
+dnl @result{}0
diff --git a/checks/105.dnl b/checks/105.dnl
new file mode 100644
index 0000000..747dfa9
--- /dev/null
+++ b/checks/105.dnl
@@ -0,0 +1,12 @@
+dnl @ ../doc/m4.texi:4182: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `Macro `foo'.')dnl A very simple macro, indeed.
+foo
+dnl @result{}Macro foo.
diff --git a/checks/106.dnl b/checks/106.dnl
new file mode 100644
index 0000000..454fa2d
--- /dev/null
+++ b/checks/106.dnl
@@ -0,0 +1,14 @@
+dnl @ ../doc/m4.texi:4200: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl(`args are ignored, but side effects occur',
+define(`foo', `like this')) while this text is ignored: undefine(`foo')
+dnl @error{}m4:stdin:1: Warning: excess arguments to builtin `dnl' ignored
+See how `foo' was defined, foo?
+dnl @result{}See how foo was defined, like this?
diff --git a/checks/107.dnl b/checks/107.dnl
new file mode 100644
index 0000000..881f1aa
--- /dev/null
+++ b/checks/107.dnl
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:4211: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+m4wrap(`m4wrap(`2 hi
+')0 hi dnl 1 hi')
+dnl @result{}
+define(`hi', `HI')
+dnl @result{}
+dnl @error{}m4:stdin:1: Warning: end of file treated as newline
+dnl @result{}0 HI 2 HI
diff --git a/checks/108.changequot b/checks/108.changequot
new file mode 100644
index 0000000..05e01f9
--- /dev/null
+++ b/checks/108.changequot
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:4242: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+changequote(`[', `]')
+dnl @result{}
+define([foo], [Macro [foo].])
+dnl @result{}
+foo
+dnl @result{}Macro foo.
diff --git a/checks/109.changequot b/checks/109.changequot
new file mode 100644
index 0000000..08824a5
--- /dev/null
+++ b/checks/109.changequot
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:4257: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`a', `b')
+dnl @result{}
+«a»
+dnl @result{}«b»
+changequote(`«', `»')
+dnl @result{}
+«a»
+dnl @result{}a
diff --git a/checks/110.changequot b/checks/110.changequot
new file mode 100644
index 0000000..381d3c0
--- /dev/null
+++ b/checks/110.changequot
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:4272: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+changequote(`[[[', `]]]')
+dnl @result{}
+define([[[foo]]], [[[Macro [[[[[foo]]]]].]]])
+dnl @result{}
+foo
+dnl @result{}Macro [[foo]].
diff --git a/checks/111.changequot b/checks/111.changequot
new file mode 100644
index 0000000..b49602b
--- /dev/null
+++ b/checks/111.changequot
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:4294: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `Macro `FOO'.')
+dnl @result{}
+changequote(`', `')
+dnl @result{}
+foo
+dnl @result{}Macro `FOO'.
+`foo'
+dnl @result{}`Macro `FOO'.'
+changequote(`,)
+dnl @result{}
+foo
+dnl @result{}Macro FOO.
diff --git a/checks/112.changequot b/checks/112.changequot
new file mode 100644
index 0000000..ce2fe88
--- /dev/null
+++ b/checks/112.changequot
@@ -0,0 +1,33 @@
+dnl @ ../doc/m4.texi:4327: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$@')
+dnl @result{}
+define(`hi', `HI')
+dnl @result{}
+changequote(`q', `Q')
+dnl @result{}
+q hi Q hi
+dnl @result{}q HI Q HI
+echo(hi)
+dnl @result{}qHIQ
+changequote
+dnl @result{}
+changequote(`-', `EOF')
+dnl @result{}
+- hi EOF hi
+dnl @result{} hi HI
+changequote
+dnl @result{}
+changequote(`1', `2')
+dnl @result{}
+hi1hi2
+dnl @result{}hi1hi2
+hi 1hi2
+dnl @result{}HI hi
diff --git a/checks/113.changequot b/checks/113.changequot
new file mode 100644
index 0000000..a499089
--- /dev/null
+++ b/checks/113.changequot
@@ -0,0 +1,31 @@
+dnl @ ../doc/m4.texi:4360: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$#:$@:')
+dnl @result{}
+define(`hi', `HI')
+dnl @result{}
+changequote(`(',`)')
+dnl @result{}
+echo(hi)
+dnl @result{}0::hi
+changequote
+dnl @result{}
+changequote(`((', `))')
+dnl @result{}
+echo(hi)
+dnl @result{}1:HI:
+echo((hi))
+dnl @result{}0::hi
+changequote
+dnl @result{}
+changequote(`,', `)')
+dnl @result{}
+echo(hi,hi)bye)
+dnl @result{}1:HIhibye:
diff --git a/checks/114.changequot b/checks/114.changequot
new file mode 100644
index 0000000..87a84ed
--- /dev/null
+++ b/checks/114.changequot
@@ -0,0 +1,20 @@
+dnl @ ../doc/m4.texi:4399: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+changequote(`[', `]')dnl
+define([a], [1, (b)])dnl
+define([b], [2])dnl
+define([quote], [[$*]])dnl
+define([expand], [_$0(($1))])dnl
+define([_expand],
+ [changequote([(], [)])$1changequote`'changequote(`[', `]')])dnl
+expand([a, a, [a, a], [[a, a]]])
+dnl @result{}1, (2), 1, (2), a, a, [a, a]
+quote(a, a, [a, a], [[a, a]])
+dnl @result{}1,(2),1,(2),a, a,[a, a]
diff --git a/checks/115.changequot b/checks/115.changequot
new file mode 100644
index 0000000..abf9d89
--- /dev/null
+++ b/checks/115.changequot
@@ -0,0 +1,27 @@
+dnl @ ../doc/m4.texi:4420: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`hi', `HI')
+dnl @result{}
+changequote(`""', `"')
+dnl @result{}
+""hi"""hi"
+dnl @result{}hihi
+""hi" ""hi"
+dnl @result{}hi hi
+""hi"" "hi"
+dnl @result{}hi" "HI"
+changequote
+dnl @result{}
+`hi`hi'hi'
+dnl @result{}hi`hi'hi
+changequote(`"', `"')
+dnl @result{}
+"hi"hi"hi"
+dnl @result{}hiHIhi
diff --git a/checks/116.changequot b/checks/116.changequot
new file mode 100644
index 0000000..7918a6d
--- /dev/null
+++ b/checks/116.changequot
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:4443: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`aaaaaaaaaaaaaaaaaaaa', `A')define(`q', `"$@"')
+dnl @result{}
+changequote(`"', `"')
+dnl @result{}
+q(q("aaaaaaaaaaaaaaaaaaaa", "a"))
+dnl @result{}A,a
diff --git a/checks/117.changequot b/checks/117.changequot
new file mode 100644
index 0000000..eb6e573
--- /dev/null
+++ b/checks/117.changequot
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:4456: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+`hello world'
+dnl @result{}hello world
+`dangling quote
+dnl @error{}m4:stdin:2: ERROR: end of file in string
diff --git a/checks/118.changequot b/checks/118.changequot
new file mode 100644
index 0000000..1f5a76c
--- /dev/null
+++ b/checks/118.changequot
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:4465: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifelse(`dangling quote
+dnl @error{}m4:stdin:1: ERROR: end of file in string
diff --git a/checks/119.changecom b/checks/119.changecom
new file mode 100644
index 0000000..d74ae5b
--- /dev/null
+++ b/checks/119.changecom
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:4490: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`comment', `COMMENT')
+dnl @result{}
+# A normal comment
+dnl @result{}# A normal comment
+changecom(`/*', `*/')
+dnl @result{}
+# Not a comment anymore
+dnl @result{}# Not a COMMENT anymore
+But: /* this is a comment now */ while this is not a comment
+dnl @result{}But: /* this is a comment now */ while this is not a COMMENT
diff --git a/checks/120.changecom b/checks/120.changecom
new file mode 100644
index 0000000..3c5acce
--- /dev/null
+++ b/checks/120.changecom
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:4517: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`comment', `COMMENT')
+dnl @result{}
+changecom
+dnl @result{}
+# Not a comment anymore
+dnl @result{}# Not a COMMENT anymore
+changecom(`#', `')
+dnl @result{}
+# comment again
+dnl @result{}# comment again
diff --git a/checks/121.changecom b/checks/121.changecom
new file mode 100644
index 0000000..ceda872
--- /dev/null
+++ b/checks/121.changecom
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:4536: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`a', `b')
+dnl @result{}
+«a»
+dnl @result{}«b»
+changecom(`«', `»')
+dnl @result{}
+«a»
+dnl @result{}«a»
diff --git a/checks/122.changecom b/checks/122.changecom
new file mode 100644
index 0000000..0c8ea83
--- /dev/null
+++ b/checks/122.changecom
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:4559: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`hi', `HI')
+dnl @result{}
+define(`hi1hi2', `hello')
+dnl @result{}
+changecom(`q', `Q')
+dnl @result{}
+q hi Q hi
+dnl @result{}q hi Q HI
+changecom(`1', `2')
+dnl @result{}
+hi1hi2
+dnl @result{}hello
+hi 1hi2
+dnl @result{}HI 1hi2
diff --git a/checks/123.changecom b/checks/123.changecom
new file mode 100644
index 0000000..ee22ebb
--- /dev/null
+++ b/checks/123.changecom
@@ -0,0 +1,35 @@
+dnl @ ../doc/m4.texi:4582: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$#:$*:$@:')
+dnl @result{}
+define(`hi', `HI')
+dnl @result{}
+changecom(`(',`)')
+dnl @result{}
+echo(hi)
+dnl @result{}0:::(hi)
+changecom
+dnl @result{}
+changecom(`((', `))')
+dnl @result{}
+echo(hi)
+dnl @result{}1:HI:HI:
+echo((hi))
+dnl @result{}0:::((hi))
+changecom(`,', `)')
+dnl @result{}
+echo(hi,hi)bye)
+dnl @result{}1:HI,hi)bye:HI,hi)bye:
+changecom
+dnl @result{}
+echo(hi,`,`'hi',hi)
+dnl @result{}3:HI,,HI,HI:HI,,`'hi,HI:
+echo(hi,`,`'hi',hi`'changecom(`,,', `hi'))
+dnl @result{}3:HI,,`'hi,HI:HI,,`'hi,HI:
diff --git a/checks/124.changecom b/checks/124.changecom
new file mode 100644
index 0000000..581be70
--- /dev/null
+++ b/checks/124.changecom
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:4614: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+changecom(`/*', `*/')
+dnl @result{}
+/*dangling comment
+dnl @error{}m4:stdin:2: ERROR: end of file in comment
diff --git a/checks/125.changeword b/checks/125.changeword
new file mode 100644
index 0000000..a25f12b
--- /dev/null
+++ b/checks/125.changeword
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:4668: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`changeword', `', `errprint(` skipping: no changeword support
+')m4exit(`77')')dnl
+changeword(`[_a-zA-Z0-9]+')
+dnl @result{}
+define(`1', `0')1
+dnl @result{}0
diff --git a/checks/126.changeword b/checks/126.changeword
new file mode 100644
index 0000000..fad4eb9
--- /dev/null
+++ b/checks/126.changeword
@@ -0,0 +1,20 @@
+dnl @ ../doc/m4.texi:4681: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`changeword', `', `errprint(` skipping: no changeword support
+')m4exit(`77')')dnl
+define(`_indir', defn(`indir'))
+dnl @result{}
+changeword(`_[_a-zA-Z0-9]*')
+dnl @result{}
+esyscmd(`foo')
+dnl @result{}esyscmd(foo)
+_indir(`esyscmd', `echo hi')
+dnl @result{}hi
+dnl @result{}
diff --git a/checks/127.changeword b/checks/127.changeword
new file mode 100644
index 0000000..79e1102
--- /dev/null
+++ b/checks/127.changeword
@@ -0,0 +1,41 @@
+dnl @ ../doc/m4.texi:4700: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`changeword', `', `errprint(` skipping: no changeword support
+')m4exit(`77')')dnl
+define(`foo
+', `bar
+')
+dnl @result{}
+dnl This example wants to recognize changeword, dnl, and `foo\n'.
+dnl First, we check that our regexp will match.
+regexp(`changeword', `[cd][a-z]*\|foo[
+]')
+dnl @result{}0
+regexp(`foo
+', `[cd][a-z]*\|foo[
+]')
+dnl @result{}0
+regexp(`f', `[cd][a-z]*\|foo[
+]')
+dnl @result{}-1
+foo
+dnl @result{}foo
+changeword(`[cd][a-z]*\|foo[
+]')
+dnl @result{}
+dnl Even though `foo\n' matches, we forgot to allow `f'.
+foo
+dnl @result{}foo
+changeword(`[cd][a-z]*\|fo*[
+]?')
+dnl @result{}
+dnl Now we can call `foo\n'.
+foo
+dnl @result{}bar
diff --git a/checks/128.changeword b/checks/128.changeword
new file mode 100644
index 0000000..8498cbc
--- /dev/null
+++ b/checks/128.changeword
@@ -0,0 +1,39 @@
+dnl @ ../doc/m4.texi:4742: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`changeword', `', `errprint(` skipping: no changeword support
+')m4exit(`77')')dnl
+define(`bar
+', defn(`dnl'))dnl
+define(`baz', `dnl
+include(`foo') ignored
+dnl')dnl
+changeword(`\([_a-zA-Z][_a-zA-Z0-9]*\|bar
+\)')
+dnl @result{}
+__file__:__line__
+dnl @result{}stdin:10
+include(`foo') ignored
+__file__:__line__
+dnl @result{}stdin:12
+baz ignored
+__file__:__line__
+dnl @result{}stdin:14
+define(`bar
+', defn(`__file__'))
+dnl @result{}
+include(`foo')
+dnl @result{}examples/foo
+define(`bar
+', defn(`__line__'))
+dnl @result{}
+include(`foo')
+dnl @result{}1
+__file__:__line__
+dnl @result{}stdin:21
diff --git a/checks/129.changeword b/checks/129.changeword
new file mode 100644
index 0000000..c96d36c
--- /dev/null
+++ b/checks/129.changeword
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:4780: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`changeword', `', `errprint(` skipping: no changeword support
+')m4exit(`77')')dnl
+ifdef(`__unix__', ,
+ `errprint(` skipping: syscmd does not have unix semantics
+')m4exit(`77')')dnl
+changecom(`/*', `*/')dnl
+define(`foo', `bar')dnl
+changeword(`#\([_a-zA-Z0-9]*\)')
+dnl @result{}
+#esyscmd(`echo foo \#foo')
+dnl @result{}foo bar
+dnl @result{}
diff --git a/checks/130.changeword b/checks/130.changeword
new file mode 100644
index 0000000..b07860e
--- /dev/null
+++ b/checks/130.changeword
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:4817: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`changeword', `', `errprint(` skipping: no changeword support
+')m4exit(`77')')dnl
+define(`a', `errprint(`Hello')')dnl
+changeword(`@\([_a-zA-Z0-9]*\)')
+dnl @result{}
+@a
+dnl @result{}errprint(Hello)
diff --git a/checks/131.m4wrap b/checks/131.m4wrap
new file mode 100644
index 0000000..dc9e54e
--- /dev/null
+++ b/checks/131.m4wrap
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:4870: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`cleanup', `This is the `cleanup' action.
+')
+dnl @result{}
+m4wrap(`cleanup')
+dnl @result{}
+This is the first and last normal input line.
+dnl @result{}This is the first and last normal input line.
+dnl @result{}This is the cleanup action.
diff --git a/checks/132.m4wrap b/checks/132.m4wrap
new file mode 100644
index 0000000..ce5f2d7
--- /dev/null
+++ b/checks/132.m4wrap
@@ -0,0 +1,26 @@
+dnl @ ../doc/m4.texi:4902: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`wrapfifo.m4')dnl
+dnl @result{}dnl Redefine m4wrap to have FIFO semantics.
+dnl @result{}define(`_m4wrap_level', `0')dnl
+dnl @result{}define(`m4wrap',
+dnl @result{}`ifdef(`m4wrap'_m4wrap_level,
+dnl @result{} `define(`m4wrap'_m4wrap_level,
+dnl @result{} defn(`m4wrap'_m4wrap_level)`$1')',
+dnl @result{} `builtin(`m4wrap', `define(`_m4wrap_level',
+dnl @result{} incr(_m4wrap_level))dnl
+dnl @result{}m4wrap'_m4wrap_level)dnl
+dnl @result{}define(`m4wrap'_m4wrap_level, `$1')')')dnl
+include(`wrapfifo.m4')
+dnl @result{}
+m4wrap(`a`'m4wrap(`c
+', `d')')m4wrap(`b')
+dnl @result{}
+dnl @result{}abc
diff --git a/checks/133.m4wrap b/checks/133.m4wrap
new file mode 100644
index 0000000..d9aabb8
--- /dev/null
+++ b/checks/133.m4wrap
@@ -0,0 +1,26 @@
+dnl @ ../doc/m4.texi:4932: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`wraplifo.m4')dnl
+dnl @result{}dnl Redefine m4wrap to have LIFO semantics.
+dnl @result{}define(`_m4wrap_level', `0')dnl
+dnl @result{}define(`_m4wrap', defn(`m4wrap'))dnl
+dnl @result{}define(`m4wrap',
+dnl @result{}`ifdef(`m4wrap'_m4wrap_level,
+dnl @result{} `define(`m4wrap'_m4wrap_level,
+dnl @result{} `$1'defn(`m4wrap'_m4wrap_level))',
+dnl @result{} `_m4wrap(`define(`_m4wrap_level', incr(_m4wrap_level))dnl
+dnl @result{}m4wrap'_m4wrap_level)dnl
+dnl @result{}define(`m4wrap'_m4wrap_level, `$1')')')dnl
+include(`wraplifo.m4')
+dnl @result{}
+m4wrap(`a`'m4wrap(`c
+', `d')')m4wrap(`b')
+dnl @result{}
+dnl @result{}bac
diff --git a/checks/134.m4wrap b/checks/134.m4wrap
new file mode 100644
index 0000000..219d0fd
--- /dev/null
+++ b/checks/134.m4wrap
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:4957: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`f', `ifelse(`$1', `0', `Answer: 0!=1
+', eval(`$1>1'), `0', `Answer: $2$1=eval(`$2$1')
+', `m4wrap(`f(decr(`$1'), `$2$1*')')')')
+dnl @result{}
+f(`10')
+dnl @result{}
+dnl @result{}Answer: 10*9*8*7*6*5*4*3*2*1=3628800
diff --git a/checks/135.m4wrap b/checks/135.m4wrap
new file mode 100644
index 0000000..8cb7fa1
--- /dev/null
+++ b/checks/135.m4wrap
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:4971: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`aa', `AA
+')
+dnl @result{}
+m4wrap(`a')m4wrap(`a')
+dnl @result{}
+dnl @result{}AA
diff --git a/checks/136.m4wrap b/checks/136.m4wrap
new file mode 100644
index 0000000..fedcf7e
--- /dev/null
+++ b/checks/136.m4wrap
@@ -0,0 +1,12 @@
+dnl @ ../doc/m4.texi:4986: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+m4wrap(`m4wrap(`)')len(abc')
+dnl @result{}
+dnl @error{}m4:stdin:1: ERROR: end of file in argument list
diff --git a/checks/137.include b/checks/137.include
new file mode 100644
index 0000000..db36f3c
--- /dev/null
+++ b/checks/137.include
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:5029: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`none')
+dnl @error{}m4:stdin:1: cannot open `none': No such file or directory
+dnl @result{}
+include()
+dnl @error{}m4:stdin:2: cannot open `': No such file or directory
+dnl @result{}
+sinclude(`none')
+dnl @result{}
+sinclude()
+dnl @result{}
diff --git a/checks/138.include b/checks/138.include
new file mode 100644
index 0000000..dfefabb
--- /dev/null
+++ b/checks/138.include
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:5062: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `FOO')
+dnl @result{}
+include(`incl.m4')
+dnl @result{}Include file start
+dnl @result{}FOO
+dnl @result{}Include file end
+dnl @result{}
diff --git a/checks/139.include b/checks/139.include
new file mode 100644
index 0000000..f069b5c
--- /dev/null
+++ b/checks/139.include
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:5079: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`bar', include(`incl.m4'))
+dnl @result{}
+This is `bar': >>bar<<
+dnl @result{}This is bar: >>Include file start
+dnl @result{}foo
+dnl @result{}Include file end
+dnl @result{}<<
diff --git a/checks/140.include b/checks/140.include
new file mode 100644
index 0000000..da6fe0d
--- /dev/null
+++ b/checks/140.include
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:5108: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @ expected error: ignore
+include(`Makefile/')
+dnl @error{}m4:stdin:1: cannot open `Makefile/': Not a directory
+dnl @result{}
diff --git a/checks/141.include b/checks/141.include
new file mode 100644
index 0000000..0c71f3b
--- /dev/null
+++ b/checks/141.include
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:5121: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @ expected error: ignore
+include(`.')
+dnl @error{}m4:stdin:1: cannot open `.': Is a directory
+dnl @result{}
diff --git a/checks/142.include b/checks/142.include
new file mode 100644
index 0000000..882b906
--- /dev/null
+++ b/checks/142.include
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:5129: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+sinclude(`Makefile/')
+dnl @result{}
+sinclude(`.')
+dnl @result{}
diff --git a/checks/143.diversions b/checks/143.diversions
new file mode 100644
index 0000000..28f06f9
--- /dev/null
+++ b/checks/143.diversions
@@ -0,0 +1,40 @@
+dnl @ ../doc/m4.texi:5186: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`-1')define(`f', `.')
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+divert`'dnl
+len(f)
+dnl @result{}1048576
+divert(`1')
+f
+divert(`2')
+f
+divert(`-1')undivert
+divert(`1')bye
+dnl @result{}bye
diff --git a/checks/144.diversions b/checks/144.diversions
new file mode 100644
index 0000000..2d863d2
--- /dev/null
+++ b/checks/144.diversions
@@ -0,0 +1,36 @@
+dnl @ ../doc/m4.texi:5223: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`-1')define(`f', `.')
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+define(`f', defn(`f')defn(`f'))
+divert`'dnl
+len(f)
+dnl @result{}1048576
+divert(`1')
+f
+m4exit
diff --git a/checks/145.diversions b/checks/145.diversions
new file mode 100644
index 0000000..40d928a
--- /dev/null
+++ b/checks/145.diversions
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:5255: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`__unix__', ,
+ `errprint(` skipping: syscmd does not have unix semantics
+')m4exit(`77')')dnl
+changequote(`[', `]')dnl
+syscmd([echo 'divert(1)hi
+format(%1000000d, 1)' | ']__program__[' | sed -n 1p])dnl
+dnl @result{}hi
+sysval
+dnl @result{}0
diff --git a/checks/146.diversions b/checks/146.diversions
new file mode 100644
index 0000000..ff395b8
--- /dev/null
+++ b/checks/146.diversions
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:5271: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`forloop2.m4')dnl
+divert(`1')format(`%10000s', `')dnl
+forloop(`i', `1', `10000',
+ `divert(incr(i))undivert(i)')dnl
+divert(`9001')format(`%1000000s', `')dnl
+forloop(`i', `9001', `10000',
+ `divert(incr(i))undivert(i)')dnl
+divert(`-1')undivert
diff --git a/checks/147.divert b/checks/147.divert
new file mode 100644
index 0000000..c5d9a2d
--- /dev/null
+++ b/checks/147.divert
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:5318: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`1')
+This text is diverted.
+divert
+dnl @result{}
+This text is not diverted.
+dnl @result{}This text is not diverted.
+dnl @result{}
+dnl @result{}This text is diverted.
diff --git a/checks/148.divert b/checks/148.divert
new file mode 100644
index 0000000..6e2f62d
--- /dev/null
+++ b/checks/148.divert
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:5334: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`text', `TEXT')
+dnl @result{}
+divert(`1')`diverted text.'
+divert
+dnl @result{}
+m4wrap(`Wrapped text precedes ')
+dnl @result{}
+dnl @result{}Wrapped TEXT precedes diverted text.
diff --git a/checks/149.divert b/checks/149.divert
new file mode 100644
index 0000000..3f06f85
--- /dev/null
+++ b/checks/149.divert
@@ -0,0 +1,14 @@
+dnl @ ../doc/m4.texi:5353: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`-1')
+define(`foo', `Macro `foo'.')
+define(`bar', `Macro `bar'.')
+divert
+dnl @result{}
diff --git a/checks/150.divert b/checks/150.divert
new file mode 100644
index 0000000..05feb2a
--- /dev/null
+++ b/checks/150.divert
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:5367: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(eval(`1<<28'))world
+divert(`2')hello
+dnl @result{}hello
+dnl @result{}world
diff --git a/checks/151.divert b/checks/151.divert
new file mode 100644
index 0000000..ac6941d
--- /dev/null
+++ b/checks/151.divert
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:5382: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+We decided to divert the stream for irrigation.
+dnl @result{}We decided to the stream for irrigation.
+define(`divert', `ifelse(`$#', `0', ``$0'', `builtin(`$0', $@)')')
+dnl @result{}
+divert(`-1')
+Ignored text.
+divert(`0')
+dnl @result{}
+We decided to divert the stream for irrigation.
+dnl @result{}We decided to divert the stream for irrigation.
diff --git a/checks/152.undivert b/checks/152.undivert
new file mode 100644
index 0000000..d725e0f
--- /dev/null
+++ b/checks/152.undivert
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:5416: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`1')
+This text is diverted.
+divert
+dnl @result{}
+This text is not diverted.
+dnl @result{}This text is not diverted.
+undivert(`1')
+dnl @result{}
+dnl @result{}This text is diverted.
+dnl @result{}
diff --git a/checks/153.undivert b/checks/153.undivert
new file mode 100644
index 0000000..161c020
--- /dev/null
+++ b/checks/153.undivert
@@ -0,0 +1,27 @@
+dnl @ ../doc/m4.texi:5439: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`1')diverted text
+divert
+dnl @result{}
+undivert()
+dnl @result{}
+undivert(`0')
+dnl @result{}
+undivert
+dnl @result{}diverted text
+dnl @result{}
+divert(`1')more
+divert(`2')undivert(`1')diverted text`'divert
+dnl @result{}
+undivert(`1')
+dnl @result{}
+undivert(`2')
+dnl @result{}more
+dnl @result{}diverted text
diff --git a/checks/154.undivert b/checks/154.undivert
new file mode 100644
index 0000000..9b208ec
--- /dev/null
+++ b/checks/154.undivert
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:5463: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`1')
+This text is diverted first.
+divert(`0')undivert(`1')dnl
+dnl @result{}
+dnl @result{}This text is diverted first.
+undivert(`1')
+dnl @result{}
+divert(`1')
+This text is also diverted but not appended.
+divert(`0')undivert(`1')dnl
+dnl @result{}
+dnl @result{}This text is also diverted but not appended.
diff --git a/checks/155.undivert b/checks/155.undivert
new file mode 100644
index 0000000..77216a3
--- /dev/null
+++ b/checks/155.undivert
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:5482: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`1')one
+divert(`2')two
+divert(`3')three
+divert(`2')undivert`'dnl
+divert`'undivert`'dnl
+dnl @result{}two
+dnl @result{}one
+dnl @result{}three
diff --git a/checks/156.undivert b/checks/156.undivert
new file mode 100644
index 0000000..63d0a73
--- /dev/null
+++ b/checks/156.undivert
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:5511: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`bar', `BAR')
+dnl @result{}
+undivert(`foo')
+dnl @result{}bar
+dnl @result{}
+include(`foo')
+dnl @result{}BAR
+dnl @result{}
diff --git a/checks/157.undivert b/checks/157.undivert
new file mode 100644
index 0000000..2bd1461
--- /dev/null
+++ b/checks/157.undivert
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:5526: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`1')diversion one
+divert(`2')undivert(`foo')dnl
+divert(`3')diversion three
+divert`'dnl
+undivert(`1', `2', `foo', `3')dnl
+dnl @result{}diversion one
+dnl @result{}bar
+dnl @result{}bar
+dnl @result{}diversion three
diff --git a/checks/158.divnum b/checks/158.divnum
new file mode 100644
index 0000000..e48ef3c
--- /dev/null
+++ b/checks/158.divnum
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:5548: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+Initial divnum
+dnl @result{}Initial 0
+divert(`1')
+Diversion one: divnum
+divert(`2')
+Diversion two: divnum
+dnl @result{}
+dnl @result{}Diversion one: 1
+dnl @result{}
+dnl @result{}Diversion two: 2
diff --git a/checks/159.cleardiver b/checks/159.cleardiver
new file mode 100644
index 0000000..8fe0a32
--- /dev/null
+++ b/checks/159.cleardiver
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:5574: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(`1')
+Diversion one: divnum
+divert(`2')
+Diversion two: divnum
+divert(`-1')
+undivert
diff --git a/checks/160.cleardiver b/checks/160.cleardiver
new file mode 100644
index 0000000..a055c7f
--- /dev/null
+++ b/checks/160.cleardiver
@@ -0,0 +1,12 @@
+dnl @ ../doc/m4.texi:5593: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`cleardivert',
+`pushdef(`_n', divnum)divert(`-1')undivert($@)divert(_n)popdef(`_n')')
+dnl @result{}
diff --git a/checks/161.len b/checks/161.len
new file mode 100644
index 0000000..ce4cebe
--- /dev/null
+++ b/checks/161.len
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:5633: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+len()
+dnl @result{}0
+len(`abcdef')
+dnl @result{}6
diff --git a/checks/162.index_macr b/checks/162.index_macr
new file mode 100644
index 0000000..c289729
--- /dev/null
+++ b/checks/162.index_macr
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:5655: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+index(`gnus, gnats, and armadillos', `nat')
+dnl @result{}7
+index(`gnus, gnats, and armadillos', `dag')
+dnl @result{}-1
diff --git a/checks/163.index_macr b/checks/163.index_macr
new file mode 100644
index 0000000..04eedef
--- /dev/null
+++ b/checks/163.index_macr
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:5665: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+index(`abc')
+dnl @error{}m4:stdin:1: Warning: too few arguments to builtin `index'
+dnl @result{}0
+index(`abc', `')
+dnl @result{}0
+index(`abc', `b')
+dnl @result{}1
diff --git a/checks/164.index_macr b/checks/164.index_macr
new file mode 100644
index 0000000..2ad0d45
--- /dev/null
+++ b/checks/164.index_macr
@@ -0,0 +1,12 @@
+dnl @ ../doc/m4.texi:5679: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+index(`;:11-:12-:12-:12-:12-:12-:12-:12-:12.:12.:12.:12.:12.:12.:12.:12.:12-',
+`:12-:12-:12-:12-:12-:12-:12-:12-')
+dnl @result{}-1
diff --git a/checks/165.index_macr b/checks/165.index_macr
new file mode 100644
index 0000000..e3339d4
--- /dev/null
+++ b/checks/165.index_macr
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:5688: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+index(`..wi.d.', `.d.')
+dnl @result{}4
diff --git a/checks/166.regexp b/checks/166.regexp
new file mode 100644
index 0000000..d7d9f18
--- /dev/null
+++ b/checks/166.regexp
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:5737: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+regexp(`GNUs not Unix', `\<[a-z]\w+')
+dnl @result{}5
+regexp(`GNUs not Unix', `\<Q\w*')
+dnl @result{}-1
+regexp(`GNUs not Unix', `\w\(\w+\)$', `*** \& *** \1 ***')
+dnl @result{}*** Unix *** nix ***
+regexp(`GNUs not Unix', `\<Q\w*', `*** \& *** \1 ***')
+dnl @result{}
diff --git a/checks/167.regexp b/checks/167.regexp
new file mode 100644
index 0000000..a597313
--- /dev/null
+++ b/checks/167.regexp
@@ -0,0 +1,20 @@
+dnl @ ../doc/m4.texi:5750: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+regexp(`abc', `\(b\)', `\\\10\a')
+dnl @result{}\b0a
+regexp(`abc', `b', `\1\')
+dnl @error{}m4:stdin:2: Warning: sub-expression 1 not present
+dnl @error{}m4:stdin:2: Warning: trailing \ ignored in replacement
+dnl @result{}
+regexp(`abc', `\(\(d\)?\)\(c\)', `\1\2\3\4\5\6')
+dnl @error{}m4:stdin:3: Warning: sub-expression 4 not present
+dnl @error{}m4:stdin:3: Warning: sub-expression 5 not present
+dnl @error{}m4:stdin:3: Warning: sub-expression 6 not present
+dnl @result{}c
diff --git a/checks/168.regexp b/checks/168.regexp
new file mode 100644
index 0000000..511db19
--- /dev/null
+++ b/checks/168.regexp
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:5767: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+regexp(`abc')
+dnl @error{}m4:stdin:1: Warning: too few arguments to builtin `regexp'
+dnl @result{}0
+regexp(`abc', `')
+dnl @result{}0
+regexp(`abc', `', `\\def')
+dnl @result{}\def
diff --git a/checks/169.substr b/checks/169.substr
new file mode 100644
index 0000000..801f186
--- /dev/null
+++ b/checks/169.substr
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:5795: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+substr(`gnus, gnats, and armadillos', `6')
+dnl @result{}gnats, and armadillos
+substr(`gnus, gnats, and armadillos', `6', `5')
+dnl @result{}gnats
diff --git a/checks/170.substr b/checks/170.substr
new file mode 100644
index 0000000..3ce4bbe
--- /dev/null
+++ b/checks/170.substr
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:5804: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+substr(`abc')
+dnl @error{}m4:stdin:1: Warning: too few arguments to builtin `substr'
+dnl @result{}abc
+substr(`abc',)
+dnl @error{}m4:stdin:2: empty string treated as 0 in builtin `substr'
+dnl @result{}abc
diff --git a/checks/171.translit b/checks/171.translit
new file mode 100644
index 0000000..c185313
--- /dev/null
+++ b/checks/171.translit
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:5849: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+translit(`GNUs not Unix', `A-Z')
+dnl @result{}s not nix
+translit(`GNUs not Unix', `a-z', `A-Z')
+dnl @result{}GNUS NOT UNIX
+translit(`GNUs not Unix', `A-Z', `z-a')
+dnl @result{}tmfs not fnix
+translit(`+,-12345', `+--1-5', `<;>a-c-a')
+dnl @result{}<;>abcba
+translit(`abcdef', `aabdef', `bcged')
+dnl @result{}bgced
diff --git a/checks/172.translit b/checks/172.translit
new file mode 100644
index 0000000..8af557f
--- /dev/null
+++ b/checks/172.translit
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:5876: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+translit(`«abc~', `~-»')
+dnl @result{}abc
diff --git a/checks/173.translit b/checks/173.translit
new file mode 100644
index 0000000..80ad36e
--- /dev/null
+++ b/checks/173.translit
@@ -0,0 +1,31 @@
+dnl @ ../doc/m4.texi:5883: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+translit(`abcdeabcde', `a')
+dnl @result{}bcdebcde
+translit(`abcdeabcde', `ab')
+dnl @result{}cdecde
+translit(`abcdeabcde', `a', `f')
+dnl @result{}fbcdefbcde
+translit(`abcdeabcde', `a', `f')
+dnl @result{}fbcdefbcde
+translit(`abcdeabcde', `a', `fg')
+dnl @result{}fbcdefbcde
+translit(`abcdeabcde', `ab', `f')
+dnl @result{}fcdefcde
+translit(`abcdeabcde', `ab', `fg')
+dnl @result{}fgcdefgcde
+translit(`abcdeabcde', `ab', `ba')
+dnl @result{}bacdebacde
+translit(`abcdeabcde', `e', `f')
+dnl @result{}abcdfabcdf
+translit(`abc', `', `cde')
+dnl @result{}abc
+translit(`', `a', `bc')
+dnl @result{}
diff --git a/checks/174.translit b/checks/174.translit
new file mode 100644
index 0000000..ffae106
--- /dev/null
+++ b/checks/174.translit
@@ -0,0 +1,12 @@
+dnl @ ../doc/m4.texi:5911: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+translit(`abc')
+dnl @error{}m4:stdin:1: Warning: too few arguments to builtin `translit'
+dnl @result{}abc
diff --git a/checks/175.patsubst b/checks/175.patsubst
new file mode 100644
index 0000000..66f66c4
--- /dev/null
+++ b/checks/175.patsubst
@@ -0,0 +1,22 @@
+dnl @ ../doc/m4.texi:5955: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+patsubst(`GNUs not Unix', `^', `OBS: ')
+dnl @result{}OBS: GNUs not Unix
+patsubst(`GNUs not Unix', `\<', `OBS: ')
+dnl @result{}OBS: GNUs OBS: not OBS: Unix
+patsubst(`GNUs not Unix', `\w*', `(\&)')
+dnl @result{}(GNUs)() (not)() (Unix)()
+patsubst(`GNUs not Unix', `\w+', `(\&)')
+dnl @result{}(GNUs) (not) (Unix)
+patsubst(`GNUs not Unix', `[A-Z][a-z]+')
+dnl @result{}GN not
+patsubst(`GNUs not Unix', `not', `NOT\')
+dnl @error{}m4:stdin:6: Warning: trailing \ ignored in replacement
+dnl @result{}GNUs NOT Unix
diff --git a/checks/176.patsubst b/checks/176.patsubst
new file mode 100644
index 0000000..3c55467
--- /dev/null
+++ b/checks/176.patsubst
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:5988: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`capitalize.m4')
+dnl @result{}
+upcase(`GNUs not Unix')
+dnl @result{}GNUS NOT UNIX
+downcase(`GNUs not Unix')
+dnl @result{}gnus not unix
+capitalize(`GNUs not Unix')
+dnl @result{}Gnus Not Unix
diff --git a/checks/177.patsubst b/checks/177.patsubst
new file mode 100644
index 0000000..1dbadd1
--- /dev/null
+++ b/checks/177.patsubst
@@ -0,0 +1,22 @@
+dnl @ ../doc/m4.texi:6008: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`capitalize.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# upcase(text)
+dnl @result{}# downcase(text)
+dnl @result{}# capitalize(text)
+dnl @result{}# change case of text, simple version
+dnl @result{}define(`upcase', `translit(`$*', `a-z', `A-Z')')
+dnl @result{}define(`downcase', `translit(`$*', `A-Z', `a-z')')
+dnl @result{}define(`_capitalize',
+dnl @result{} `regexp(`$1', `^\(\w\)\(\w*\)',
+dnl @result{} `upcase(`\1')`'downcase(`\2')')')
+dnl @result{}define(`capitalize', `patsubst(`$1', `\w+', `_$0(`\&')')')
+dnl @result{}divert`'dnl
diff --git a/checks/178.patsubst b/checks/178.patsubst
new file mode 100644
index 0000000..0e9807d
--- /dev/null
+++ b/checks/178.patsubst
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:6029: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`patreg',
+`patsubst($@)
+regexp($@)')dnl
+patreg(`bar foo baz Foo', `foo\|Foo', `FOO')
+dnl @result{}bar FOO baz FOO
+dnl @result{}FOO
+patreg(`aba abb 121', `\(.\)\(.\)\1', `\2\1\2')
+dnl @result{}bab abb 212
+dnl @result{}bab
diff --git a/checks/179.patsubst b/checks/179.patsubst
new file mode 100644
index 0000000..3144751
--- /dev/null
+++ b/checks/179.patsubst
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:6044: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+patsubst(`abc')
+dnl @error{}m4:stdin:1: Warning: too few arguments to builtin `patsubst'
+dnl @result{}abc
+patsubst(`abc', `')
+dnl @result{}abc
+patsubst(`abc', `', `\\-')
+dnl @result{}\-a\-b\-c\-
diff --git a/checks/180.format b/checks/180.format
new file mode 100644
index 0000000..0298d69
--- /dev/null
+++ b/checks/180.format
@@ -0,0 +1,29 @@
+dnl @ ../doc/m4.texi:6075: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `The brown fox jumped over the lazy dog')
+dnl @result{}
+format(`The string "%s" uses %d characters', foo, len(foo))
+dnl @result{}The string "The brown fox jumped over the lazy dog" uses 38 characters
+format(`%*.*d', `-1', `-1', `1')
+dnl @result{}1
+format(`%.0f', `56789.9876')
+dnl @result{}56790
+len(format(`%-*X', `5000', `1'))
+dnl @result{}5000
+ifelse(format(`%010F', `infinity'), ` INF', `success',
+ format(`%010F', `infinity'), ` INFINITY', `success',
+ format(`%010F', `infinity'))
+dnl @result{}success
+ifelse(format(`%.1A', `1.999'), `0X1.0P+1', `success',
+ format(`%.1A', `1.999'), `0X2.0P+0', `success',
+ format(`%.1A', `1.999'))
+dnl @result{}success
+format(`%g', `0xa.P+1')
+dnl @result{}20
diff --git a/checks/181.format b/checks/181.format
new file mode 100644
index 0000000..fb0df98
--- /dev/null
+++ b/checks/181.format
@@ -0,0 +1,24 @@
+dnl @ ../doc/m4.texi:6102: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`forloop.m4')
+dnl @result{}
+forloop(`i', `1', `10', `format(`%6d squared is %10d
+', i, eval(i**2))')
+dnl @result{} 1 squared is 1
+dnl @result{} 2 squared is 4
+dnl @result{} 3 squared is 9
+dnl @result{} 4 squared is 16
+dnl @result{} 5 squared is 25
+dnl @result{} 6 squared is 36
+dnl @result{} 7 squared is 49
+dnl @result{} 8 squared is 64
+dnl @result{} 9 squared is 81
+dnl @result{} 10 squared is 100
+dnl @result{}
diff --git a/checks/182.format b/checks/182.format
new file mode 100644
index 0000000..211b420
--- /dev/null
+++ b/checks/182.format
@@ -0,0 +1,12 @@
+dnl @ ../doc/m4.texi:6143: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+format(`%p', `0')
+dnl @error{}m4:stdin:1: Warning: unrecognized specifier in `%p'
+dnl @result{}
diff --git a/checks/183.format b/checks/183.format
new file mode 100644
index 0000000..aa9f241
--- /dev/null
+++ b/checks/183.format
@@ -0,0 +1,12 @@
+dnl @ ../doc/m4.texi:6155: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @ expected error: ignore
+format(`%'format(`%c', `128'))
+dnl @result{}
diff --git a/checks/184.incr b/checks/184.incr
new file mode 100644
index 0000000..ba8f8d1
--- /dev/null
+++ b/checks/184.incr
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:6193: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+incr(`4')
+dnl @result{}5
+decr(`7')
+dnl @result{}6
+incr()
+dnl @error{}m4:stdin:3: empty string treated as 0 in builtin `incr'
+dnl @result{}1
+decr()
+dnl @error{}m4:stdin:4: empty string treated as 0 in builtin `decr'
+dnl @result{}-1
diff --git a/checks/185.eval b/checks/185.eval
new file mode 100644
index 0000000..d1631fe
--- /dev/null
+++ b/checks/185.eval
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:6270: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+eval(`2 = 2')
+dnl @error{}m4:stdin:1: Warning: recommend ==, not =, for equality operator
+dnl @result{}1
+eval(`++0')
+dnl @error{}m4:stdin:2: invalid operator in eval: ++0
+dnl @result{}
+eval(`0 |= 1')
+dnl @error{}m4:stdin:3: invalid operator in eval: 0 |= 1
+dnl @result{}
diff --git a/checks/186.eval b/checks/186.eval
new file mode 100644
index 0000000..b5af9f4
--- /dev/null
+++ b/checks/186.eval
@@ -0,0 +1,33 @@
+dnl @ ../doc/m4.texi:6303: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+eval(`1 == 2 > 0')
+dnl @result{}1
+eval(`(1 == 2) > 0')
+dnl @result{}0
+eval(`! 0 * 2')
+dnl @result{}2
+eval(`! (0 * 2)')
+dnl @result{}1
+eval(`1 | 1 ^ 1')
+dnl @result{}1
+eval(`(1 | 1) ^ 1')
+dnl @result{}0
+eval(`+ + - ~ ! ~ 0')
+dnl @result{}1
+eval(`2 || 1 / 0')
+dnl @result{}1
+eval(`0 || 1 / 0')
+dnl @error{}m4:stdin:9: divide by zero in eval: 0 || 1 / 0
+dnl @result{}
+eval(`0 && 1 % 0')
+dnl @result{}0
+eval(`2 && 1 % 0')
+dnl @error{}m4:stdin:11: modulo by zero in eval: 2 && 1 % 0
+dnl @result{}
diff --git a/checks/187.eval b/checks/187.eval
new file mode 100644
index 0000000..aa10aa2
--- /dev/null
+++ b/checks/187.eval
@@ -0,0 +1,23 @@
+dnl @ ../doc/m4.texi:6336: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+eval(`2 ** 3 ** 2')
+dnl @result{}512
+eval(`(2 ** 3) ** 2')
+dnl @result{}64
+eval(`0 ** 1')
+dnl @result{}0
+eval(`2 ** 0')
+dnl @result{}1
+eval(`0 ** 0')
+dnl @result{}
+dnl @error{}m4:stdin:5: divide by zero in eval: 0 ** 0
+eval(`4 ** -2')
+dnl @error{}m4:stdin:6: negative exponent in eval: 4 ** -2
+dnl @result{}
diff --git a/checks/188.eval b/checks/188.eval
new file mode 100644
index 0000000..52c78c7
--- /dev/null
+++ b/checks/188.eval
@@ -0,0 +1,34 @@
+dnl @ ../doc/m4.texi:6372: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+eval(`-3 * 5')
+dnl @result{}-15
+eval(`-99 / 10')
+dnl @result{}-9
+eval(`-99 % 10')
+dnl @result{}-9
+eval(`99 % -10')
+dnl @result{}9
+eval(index(`Hello world', `llo') >= 0)
+dnl @result{}1
+eval(`0r1:0111 + 0b100 + 0r3:12')
+dnl @result{}12
+define(`square', `eval(`($1) ** 2')')
+dnl @result{}
+square(`9')
+dnl @result{}81
+square(square(`5')` + 1')
+dnl @result{}676
+define(`foo', `666')
+dnl @result{}
+eval(`foo / 6')
+dnl @error{}m4:stdin:11: bad expression in eval: foo / 6
+dnl @result{}
+eval(foo / 6)
+dnl @result{}111
diff --git a/checks/189.eval b/checks/189.eval
new file mode 100644
index 0000000..5989dcf
--- /dev/null
+++ b/checks/189.eval
@@ -0,0 +1,27 @@
+dnl @ ../doc/m4.texi:6411: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`max_int', eval(`0x7fffffff'))
+dnl @result{}
+define(`min_int', incr(max_int))
+dnl @result{}
+eval(min_int` < 0')
+dnl @result{}1
+eval(max_int` > 0')
+dnl @result{}1
+ifelse(eval(min_int` / -1'), min_int, `overflow occurred')
+dnl @result{}overflow occurred
+min_int
+dnl @result{}-2147483648
+eval(`0x80000000 % -1')
+dnl @result{}0
+eval(`-4 >> 1')
+dnl @result{}-2
+eval(`-4 >> 33')
+dnl @result{}-2
diff --git a/checks/190.eval b/checks/190.eval
new file mode 100644
index 0000000..e69b153
--- /dev/null
+++ b/checks/190.eval
@@ -0,0 +1,34 @@
+dnl @ ../doc/m4.texi:6444: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+eval(`666', `10')
+dnl @result{}666
+eval(`666', `11')
+dnl @result{}556
+eval(`666', `6')
+dnl @result{}3030
+eval(`666', `6', `10')
+dnl @result{}0000003030
+eval(`-666', `6', `10')
+dnl @result{}-0000003030
+eval(`10', `', `0')
+dnl @result{}10
+`0r1:'eval(`10', `1', `11')
+dnl @result{}0r1:01111111111
+eval(`10', `16')
+dnl @result{}a
+eval(`1', `37')
+dnl @error{}m4:stdin:9: radix 37 in builtin `eval' out of range
+dnl @result{}
+eval(`1', , `-1')
+dnl @error{}m4:stdin:10: negative width to builtin `eval'
+dnl @result{}
+eval()
+dnl @error{}m4:stdin:11: empty string treated as 0 in builtin `eval'
+dnl @result{}0
diff --git a/checks/191.platform_m b/checks/191.platform_m
new file mode 100644
index 0000000..065fc1c
--- /dev/null
+++ b/checks/191.platform_m
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:6525: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+__gnu__
+dnl @result{}
+__gnu__(`ignored')
+dnl @result{}
+Extensions are ifdef(`__gnu__', `active', `inactive')
+dnl @result{}Extensions are active
diff --git a/checks/192.platform_m b/checks/192.platform_m
new file mode 100644
index 0000000..5fed587
--- /dev/null
+++ b/checks/192.platform_m
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:6536: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -G
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+__gnu__
+dnl @result{}__gnu__
+__gnu__(`ignored')
+dnl @result{}__gnu__(ignored)
+Extensions are ifdef(`__gnu__', `active', `inactive')
+dnl @result{}Extensions are inactive
diff --git a/checks/193.platform_m b/checks/193.platform_m
new file mode 100644
index 0000000..77b1fea
--- /dev/null
+++ b/checks/193.platform_m
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:6559: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`provided', `0')
+dnl @result{}
+ifdef(`__unix__', `define(`provided', incr(provided))')
+dnl @result{}
+ifdef(`__windows__', `define(`provided', incr(provided))')
+dnl @result{}
+ifdef(`__os2__', `define(`provided', incr(provided))')
+dnl @result{}
+provided
+dnl @result{}1
diff --git a/checks/194.syscmd b/checks/194.syscmd
new file mode 100644
index 0000000..1eb99b1
--- /dev/null
+++ b/checks/194.syscmd
@@ -0,0 +1,14 @@
+dnl @ ../doc/m4.texi:6601: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `FOO')
+dnl @result{}
+syscmd(`echo foo')
+dnl @result{}foo
+dnl @result{}
diff --git a/checks/195.syscmd b/checks/195.syscmd
new file mode 100644
index 0000000..8f45806
--- /dev/null
+++ b/checks/195.syscmd
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:6630: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+m4wrap(`syscmd(`cat')')
+dnl @result{}
diff --git a/checks/196.esyscmd b/checks/196.esyscmd
new file mode 100644
index 0000000..e334f23
--- /dev/null
+++ b/checks/196.esyscmd
@@ -0,0 +1,14 @@
+dnl @ ../doc/m4.texi:6678: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `FOO')
+dnl @result{}
+esyscmd(`echo foo')
+dnl @result{}FOO
+dnl @result{}
diff --git a/checks/197.sysval b/checks/197.sysval
new file mode 100644
index 0000000..6a61ac3
--- /dev/null
+++ b/checks/197.sysval
@@ -0,0 +1,35 @@
+dnl @ ../doc/m4.texi:6708: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+sysval
+dnl @result{}0
+syscmd(`false')
+dnl @result{}
+ifelse(sysval, `0', `zero', `non-zero')
+dnl @result{}non-zero
+syscmd(`exit 2')
+dnl @result{}
+sysval
+dnl @result{}2
+syscmd(`true')
+dnl @result{}
+sysval
+dnl @result{}0
+esyscmd(`false')
+dnl @result{}
+ifelse(sysval, `0', `zero', `non-zero')
+dnl @result{}non-zero
+esyscmd(`echo dnl && exit 127')
+dnl @result{}
+sysval
+dnl @result{}127
+esyscmd(`true')
+dnl @result{}
+sysval
+dnl @result{}0
diff --git a/checks/198.sysval b/checks/198.sysval
new file mode 100644
index 0000000..acfead7
--- /dev/null
+++ b/checks/198.sysval
@@ -0,0 +1,26 @@
+dnl @ ../doc/m4.texi:6758: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl This test assumes kill is a shell builtin, and that signals are
+dnl recognizable.
+ifdef(`__unix__', ,
+ `errprint(` skipping: syscmd does not have unix semantics
+')m4exit(`77')')dnl
+syscmd(`kill -9 $$')
+dnl @result{}
+sysval
+dnl @result{}2304
+syscmd()
+dnl @result{}
+sysval
+dnl @result{}0
+esyscmd(`kill -9 $$')
+dnl @result{}
+sysval
+dnl @result{}2304
diff --git a/checks/199.mkstemp b/checks/199.mkstemp
new file mode 100644
index 0000000..ab325e9
--- /dev/null
+++ b/checks/199.mkstemp
@@ -0,0 +1,32 @@
+dnl @ ../doc/m4.texi:6852: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `errprint(`oops')')
+dnl @result{}
+syscmd(`rm -f foo-??????')sysval
+dnl @result{}0
+define(`file1', maketemp(`foo-XXXXXX'))dnl
+ifelse(esyscmd(`echo \` foo-?????? \''), ` foo-?????? ',
+ `no file', `created')
+dnl @result{}created
+define(`file2', maketemp(`foo-XX'))dnl
+define(`file3', mkstemp(`foo-XXXXXX'))dnl
+ifelse(len(defn(`file1')), len(defn(`file2')),
+ `same length', `different')
+dnl @result{}same length
+ifelse(defn(`file1'), defn(`file2'), `same', `different file')
+dnl @result{}different file
+ifelse(defn(`file2'), defn(`file3'), `same', `different file')
+dnl @result{}different file
+ifelse(defn(`file1'), defn(`file3'), `same', `different file')
+dnl @result{}different file
+syscmd(`rm 'defn(`file1') defn(`file2') defn(`file3'))
+dnl @result{}
+sysval
+dnl @result{}0
diff --git a/checks/200.mkstemp b/checks/200.mkstemp
new file mode 100644
index 0000000..dd32c2d
--- /dev/null
+++ b/checks/200.mkstemp
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:6883: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+syscmd(`rm -rf foodir')sysval
+dnl @result{}0
+syscmd(`mkdir foodir')sysval
+dnl @result{}0
+len(mkstemp(`foodir/fooXXXXX'))
+dnl @result{}16
+syscmd(`rm -r foodir')sysval
+dnl @result{}0
diff --git a/checks/201.mkstemp b/checks/201.mkstemp
new file mode 100644
index 0000000..0953174
--- /dev/null
+++ b/checks/201.mkstemp
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:6898: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -G
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+syscmd(`rm -f foo-*')sysval
+dnl @result{}0
+len(maketemp(`foo-XXXXX'))
+dnl @error{}m4:stdin:2: recommend using mkstemp instead
+dnl @result{}9
+define(`abc', `def')
+dnl @result{}
+maketemp(`foo-abc')
+dnl @result{}foo-def
+dnl @error{}m4:stdin:4: recommend using mkstemp instead
+syscmd(`test -f foo-*')ifelse(sysval, `0', `0', `1')
+dnl @result{}1
diff --git a/checks/202.errprint b/checks/202.errprint
new file mode 100644
index 0000000..2875c64
--- /dev/null
+++ b/checks/202.errprint
@@ -0,0 +1,17 @@
+dnl @ ../doc/m4.texi:6944: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+errprint(`Invalid arguments to forloop
+')
+dnl @error{}Invalid arguments to forloop
+dnl @result{}
+errprint(`1')errprint(`2',`3
+')
+dnl @error{}12 3
+dnl @result{}
diff --git a/checks/203.location b/checks/203.location
new file mode 100644
index 0000000..d416ba1
--- /dev/null
+++ b/checks/203.location
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:6981: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+errprint(__program__:__file__:__line__: `input error
+')
+dnl @error{}m4:stdin:1: input error
+dnl @result{}
diff --git a/checks/204.location b/checks/204.location
new file mode 100644
index 0000000..e06e76e
--- /dev/null
+++ b/checks/204.location
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:7001: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', ``$0' called at __file__:__line__')
+dnl @result{}
+foo
+dnl @result{}foo called at stdin:2
+include(`incl.m4')
+dnl @result{}Include file start
+dnl @result{}foo called at examples/incl.m4:2
+dnl @result{}Include file end
+dnl @result{}
diff --git a/checks/205.location b/checks/205.location
new file mode 100644
index 0000000..1dbb770
--- /dev/null
+++ b/checks/205.location
@@ -0,0 +1,36 @@
+dnl @ ../doc/m4.texi:7022: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`echo', `$@')
+dnl @result{}
+define(`foo', `echo(__line__
+__line__)')
+dnl @result{}
+echo(__line__
+__line__)
+dnl @result{}4
+dnl @result{}5
+m4wrap(`foo
+')
+dnl @result{}
+foo(errprint(__line__
+__line__
+))
+dnl @error{}8
+dnl @error{}9
+dnl @result{}8
+dnl @result{}8
+__line__
+dnl @result{}11
+m4wrap(`__line__
+')
+dnl @result{}
+dnl @result{}12
+dnl @result{}6
+dnl @result{}6
diff --git a/checks/206.m4exit b/checks/206.m4exit
new file mode 100644
index 0000000..bda134a
--- /dev/null
+++ b/checks/206.m4exit
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:7079: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+m4wrap(`This text is lost due to `m4exit'.')
+dnl @result{}
+divert(`1') So is this.
+divert
+dnl @result{}
+m4exit And this is never read.
diff --git a/checks/207.m4exit b/checks/207.m4exit
new file mode 100644
index 0000000..a05a1f4
--- /dev/null
+++ b/checks/207.m4exit
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:7097: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`fatal_error',
+ `errprint(__program__:__file__:__line__`: fatal error: $*
+')m4exit(`1')')
+dnl @result{}
+fatal_error(`this is a BAD one, buster')
+dnl @error{}m4:stdin:4: fatal error: this is a BAD one, buster
diff --git a/checks/208.using_froz b/checks/208.using_froz
new file mode 100644
index 0000000..bb0637e
--- /dev/null
+++ b/checks/208.using_froz
@@ -0,0 +1,10 @@
+dnl @ ../doc/m4.texi:7233: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -F /dev/null
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+traceon(`undefined')dnl
diff --git a/checks/209.using_froz b/checks/209.using_froz
new file mode 100644
index 0000000..fa40031
--- /dev/null
+++ b/checks/209.using_froz
@@ -0,0 +1,20 @@
+dnl @ ../doc/m4.texi:7239: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+ifdef(`__unix__', ,
+ `errprint(` skipping: syscmd does not have unix semantics
+')m4exit(`77')')dnl
+changequote(`[', `]')dnl
+syscmd([echo 'changequote([,])pushdef([divnum],[hi])dnl' \
+ | ']__program__[' -F in.m4f \
+ && echo 'divnum popdef([divnum])divnum' \
+ | ']__program__[' -R in.m4f \
+ && rm in.m4f])status sysval
+dnl @result{}hi 0
+dnl @result{}status 0
diff --git a/checks/210.using_froz b/checks/210.using_froz
new file mode 100644
index 0000000..7f40d9c
--- /dev/null
+++ b/checks/210.using_froz
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:7259: Origin of test
+dnl @ expected status: 1
+dnl @ extra options: -F /none/such
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+dnl @ expected error: ignore
+dnl @error{}m4: cannot open `/none/such': No such file or directory
diff --git a/checks/211.extensions b/checks/211.extensions
new file mode 100644
index 0000000..fa125a8
--- /dev/null
+++ b/checks/211.extensions
@@ -0,0 +1,26 @@
+dnl @ ../doc/m4.texi:7395: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`a1', `A1')
+dnl @result{}
+dnl First argument, concatenated with 1
+define(`_1', `$1')define(`first1', `_1($@)1')
+dnl @result{}
+dnl Eleventh argument, portable
+define(`_9', `$9')define(`eleventh', `_9(shift(shift($@)))')
+dnl @result{}
+dnl Eleventh argument, GNU style
+define(`Eleventh', `$11')
+dnl @result{}
+first1(`a', `b', `c', `d', `e', `f', `g', `h', `i', `j', `k')
+dnl @result{}A1
+eleventh(`a', `b', `c', `d', `e', `f', `g', `h', `i', `j', `k')
+dnl @result{}k
+Eleventh(`a', `b', `c', `d', `e', `f', `g', `h', `i', `j', `k')
+dnl @result{}k
diff --git a/checks/212.other_inco b/checks/212.other_inco
new file mode 100644
index 0000000..3b38c26
--- /dev/null
+++ b/checks/212.other_inco
@@ -0,0 +1,18 @@
+dnl @ ../doc/m4.texi:7689: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -s
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+divert(2)2
+divert(1)1
+divert`'0
+dnl @result{}#line 3 "stdin"
+dnl @result{}0
+dnl @result{}#line 2 "stdin"
+dnl @result{}1
+dnl @result{}#line 1 "stdin"
+dnl @result{}2
diff --git a/checks/213.other_inco b/checks/213.other_inco
new file mode 100644
index 0000000..acb6375
--- /dev/null
+++ b/checks/213.other_inco
@@ -0,0 +1,13 @@
+dnl @ ../doc/m4.texi:7714: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`x', `x')
+dnl @result{}
+define(`x', `x ')
+dnl @result{}
diff --git a/checks/214.improved_e b/checks/214.improved_e
new file mode 100644
index 0000000..3ac89ef
--- /dev/null
+++ b/checks/214.improved_e
@@ -0,0 +1,15 @@
+dnl @ ../doc/m4.texi:7768: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`exch', ``$2', `$1'')
+dnl @result{}
+define(exch(`expansion text', `macro'))
+dnl @result{}
+macro
+dnl @result{}expansion text
diff --git a/checks/215.improved_f b/checks/215.improved_f
new file mode 100644
index 0000000..95e5619
--- /dev/null
+++ b/checks/215.improved_f
@@ -0,0 +1,33 @@
+dnl @ ../doc/m4.texi:7790: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+undivert(`forloop2.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# forloop(var, from, to, stmt) - improved version:
+dnl @result{}# works even if VAR is not a strict macro name
+dnl @result{}# performs sanity check that FROM is larger than TO
+dnl @result{}# allows complex numerical expressions in TO and FROM
+dnl @result{}define(`forloop', `ifelse(eval(`($2) <= ($3)'), `1',
+dnl @result{} `pushdef(`$1')_$0(`$1', eval(`$2'),
+dnl @result{} eval(`$3'), `$4')popdef(`$1')')')
+dnl @result{}define(`_forloop',
+dnl @result{} `define(`$1', `$2')$4`'ifelse(`$2', `$3', `',
+dnl @result{} `$0(`$1', incr(`$2'), `$3', `$4')')')
+dnl @result{}divert`'dnl
+include(`forloop2.m4')
+dnl @result{}
+forloop(`i', `2', `1', `no iteration occurs')
+dnl @result{}
+forloop(`', `1', `2', ` odd iterator name')
+dnl @result{} odd iterator name odd iterator name
+forloop(`i', `5 + 5', `0xc', ` 0x`'eval(i, `16')')
+dnl @result{} 0xa 0xb 0xc
+forloop(`i', `a', `b', `non-numeric bounds')
+dnl @error{}m4:stdin:6: bad expression in eval (bad input): (a) <= (b)
+dnl @result{}
diff --git a/checks/216.improved_f b/checks/216.improved_f
new file mode 100644
index 0000000..b07bbfa
--- /dev/null
+++ b/checks/216.improved_f
@@ -0,0 +1,34 @@
+dnl @ ../doc/m4.texi:7831: Origin of test
+dnl @ expected status: 1
+dnl @ extra options: -L9
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`arg1', `$1')include(`forloop2.m4')include(`quote.m4')
+dnl @result{}
+define(`double', `define(`$1'`2',
+ arg1(patsubst(dquote(defn(`$1')), `[`']', `\&\&')))')
+dnl @result{}
+double(`forloop')double(`_forloop')defn(`forloop2')
+dnl @result{}ifelse(eval(``($2) <= ($3)''), ``1'',
+dnl @result{} ``pushdef(``$1'')_$0(``$1'', eval(``$2''),
+dnl @result{} eval(``$3''), ``$4'')popdef(``$1'')'')
+forloop(i, 1, 5, `ifelse(')forloop(i, 1, 5, `)')
+dnl @result{}
+changequote(`[', `]')changequote([``], [''])
+dnl @result{}
+forloop2(i, 1, 5, ``ifelse('')forloop2(i, 1, 5, ``)'')
+dnl @result{}
+changequote`'include(`forloop.m4')
+dnl @result{}
+double(`forloop')double(`_forloop')defn(`forloop2')
+dnl @result{}pushdef(``$1'', ``$2'')_forloop($@)popdef(``$1'')
+forloop(i, 1, 5, `ifelse(')forloop(i, 1, 5, `)')
+dnl @result{}
+changequote(`[', `]')changequote([``], [''])
+dnl @result{}
+forloop2(i, 1, 5, ``ifelse('')forloop2(i, 1, 5, ``)'')
+dnl @error{}m4:stdin:12: recursion limit of 9 exceeded, use -L<N> to change it
diff --git a/checks/217.improved_f b/checks/217.improved_f
new file mode 100644
index 0000000..a11e131
--- /dev/null
+++ b/checks/217.improved_f
@@ -0,0 +1,43 @@
+dnl @ ../doc/m4.texi:7874: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`forloop3.m4')
+dnl @result{}
+undivert(`forloop3.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# forloop_arg(from, to, macro) - invoke MACRO(value) for
+dnl @result{}# each value between FROM and TO, without define overhead
+dnl @result{}define(`forloop_arg', `ifelse(eval(`($1) <= ($2)'), `1',
+dnl @result{} `_forloop(`$1', eval(`$2'), `$3(', `)')')')
+dnl @result{}# forloop(var, from, to, stmt) - refactored to share code
+dnl @result{}define(`forloop', `ifelse(eval(`($2) <= ($3)'), `1',
+dnl @result{} `pushdef(`$1')_forloop(eval(`$2'), eval(`$3'),
+dnl @result{} `define(`$1',', `)$4')popdef(`$1')')')
+dnl @result{}define(`_forloop',
+dnl @result{} `$3`$1'$4`'ifelse(`$1', `$2', `',
+dnl @result{} `$0(incr(`$1'), `$2', `$3', `$4')')')
+dnl @result{}divert`'dnl
+forloop(`i', `1', `3', ` i')
+dnl @result{} 1 2 3
+define(`echo', `$@')
+dnl @result{}
+forloop_arg(`1', `3', ` echo')
+dnl @result{} 1 2 3
+include(`curry.m4')
+dnl @result{}
+forloop_arg(`1', `3', `curry(`pushdef', `a')')
+dnl @result{}
+a
+dnl @result{}3
+popdef(`a')a
+dnl @result{}2
+popdef(`a')a
+dnl @result{}1
+popdef(`a')a
+dnl @result{}a
diff --git a/checks/218.improved_f b/checks/218.improved_f
new file mode 100644
index 0000000..55d5074
--- /dev/null
+++ b/checks/218.improved_f
@@ -0,0 +1,35 @@
+dnl @ ../doc/m4.texi:7925: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreachq.m4')
+dnl @result{}
+traceon(`shift')debugmode(`aq')
+dnl @result{}
+foreachq(`x', ``1', `2', `3', `4'', `x
+')dnl
+dnl @result{}1
+dnl @error{}m4trace: -3- shift(`1', `2', `3', `4')
+dnl @error{}m4trace: -2- shift(`1', `2', `3', `4')
+dnl @result{}2
+dnl @error{}m4trace: -4- shift(`1', `2', `3', `4')
+dnl @error{}m4trace: -3- shift(`2', `3', `4')
+dnl @error{}m4trace: -3- shift(`1', `2', `3', `4')
+dnl @error{}m4trace: -2- shift(`2', `3', `4')
+dnl @result{}3
+dnl @error{}m4trace: -5- shift(`1', `2', `3', `4')
+dnl @error{}m4trace: -4- shift(`2', `3', `4')
+dnl @error{}m4trace: -3- shift(`3', `4')
+dnl @error{}m4trace: -4- shift(`1', `2', `3', `4')
+dnl @error{}m4trace: -3- shift(`2', `3', `4')
+dnl @error{}m4trace: -2- shift(`3', `4')
+dnl @result{}4
+dnl @error{}m4trace: -6- shift(`1', `2', `3', `4')
+dnl @error{}m4trace: -5- shift(`2', `3', `4')
+dnl @error{}m4trace: -4- shift(`3', `4')
+dnl @error{}m4trace: -3- shift(`4')
diff --git a/checks/219.improved_f b/checks/219.improved_f
new file mode 100644
index 0000000..8672cb7
--- /dev/null
+++ b/checks/219.improved_f
@@ -0,0 +1,33 @@
+dnl @ ../doc/m4.texi:7967: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreachq2.m4')
+dnl @result{}
+undivert(`foreachq2.m4')dnl
+dnl @result{}include(`quote.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# foreachq(x, `item_1, item_2, ..., item_n', stmt)
+dnl @result{}# quoted list, improved version
+dnl @result{}define(`foreachq', `pushdef(`$1')_$0($@)popdef(`$1')')
+dnl @result{}define(`_arg1q', ``$1'')
+dnl @result{}define(`_rest', `ifelse(`$#', `1', `', `dquote(shift($@))')')
+dnl @result{}define(`_foreachq', `ifelse(`$2', `', `',
+dnl @result{} `define(`$1', _arg1q($2))$3`'$0(`$1', _rest($2), `$3')')')
+dnl @result{}divert`'dnl
+traceon(`shift')debugmode(`aq')
+dnl @result{}
+foreachq(`x', ``1', `2', `3', `4'', `x
+')dnl
+dnl @result{}1
+dnl @error{}m4trace: -3- shift(`1', `2', `3', `4')
+dnl @result{}2
+dnl @error{}m4trace: -3- shift(`2', `3', `4')
+dnl @result{}3
+dnl @error{}m4trace: -3- shift(`3', `4')
+dnl @result{}4
diff --git a/checks/220.improved_f b/checks/220.improved_f
new file mode 100644
index 0000000..fc3d190
--- /dev/null
+++ b/checks/220.improved_f
@@ -0,0 +1,49 @@
+dnl @ ../doc/m4.texi:8020: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreachq3.m4')
+dnl @result{}
+undivert(`foreachq3.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# foreachq(x, `item_1, item_2, ..., item_n', stmt)
+dnl @result{}# quoted list, alternate improved version
+dnl @result{}define(`foreachq', `ifelse(`$2', `', `',
+dnl @result{} `pushdef(`$1')_$0(`$1', `$3', `', $2)popdef(`$1')')')
+dnl @result{}define(`_foreachq', `ifelse(`$#', `3', `',
+dnl @result{} `define(`$1', `$4')$2`'$0(`$1', `$2',
+dnl @result{} shift(shift(shift($@))))')')
+dnl @result{}divert`'dnl
+traceon(`shift')debugmode(`aq')
+dnl @result{}
+foreachq(`x', ``1', `2', `3', `4'', `x
+')dnl
+dnl @result{}1
+dnl @error{}m4trace: -4- shift(`x', `x
+dnl @error{}', `', `1', `2', `3', `4')
+dnl @error{}m4trace: -3- shift(`x
+dnl @error{}', `', `1', `2', `3', `4')
+dnl @error{}m4trace: -2- shift(`', `1', `2', `3', `4')
+dnl @result{}2
+dnl @error{}m4trace: -4- shift(`x', `x
+dnl @error{}', `1', `2', `3', `4')
+dnl @error{}m4trace: -3- shift(`x
+dnl @error{}', `1', `2', `3', `4')
+dnl @error{}m4trace: -2- shift(`1', `2', `3', `4')
+dnl @result{}3
+dnl @error{}m4trace: -4- shift(`x', `x
+dnl @error{}', `2', `3', `4')
+dnl @error{}m4trace: -3- shift(`x
+dnl @error{}', `2', `3', `4')
+dnl @error{}m4trace: -2- shift(`2', `3', `4')
+dnl @result{}4
+dnl @error{}m4trace: -4- shift(`x', `x
+dnl @error{}', `3', `4')
+dnl @error{}m4trace: -3- shift(`x
+dnl @error{}', `3', `4')
+dnl @error{}m4trace: -2- shift(`3', `4')
diff --git a/checks/221.improved_f b/checks/221.improved_f
new file mode 100644
index 0000000..9ff37e9
--- /dev/null
+++ b/checks/221.improved_f
@@ -0,0 +1,33 @@
+dnl @ ../doc/m4.texi:8107: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreachq4.m4')
+dnl @result{}
+undivert(`foreachq4.m4')dnl
+dnl @result{}include(`forloop2.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# foreachq(x, `item_1, item_2, ..., item_n', stmt)
+dnl @result{}# quoted list, version based on forloop
+dnl @result{}define(`foreachq',
+dnl @result{}`ifelse(`$2', `', `', `_$0(`$1', `$3', $2)')')
+dnl @result{}define(`_foreachq',
+dnl @result{}`pushdef(`$1', forloop(`$1', `3', `$#',
+dnl @result{} `$0_(`1', `2', indir(`$1'))')`popdef(
+dnl @result{} `$1')')indir(`$1', $@)')
+dnl @result{}define(`_foreachq_',
+dnl @result{}``define(`$$1', `$$3')$$2`''')
+dnl @result{}divert`'dnl
+traceon(`shift')debugmode(`aq')
+dnl @result{}
+foreachq(`x', ``1', `2', `3', `4'', `x
+')dnl
+dnl @result{}1
+dnl @result{}2
+dnl @result{}3
+dnl @result{}4
diff --git a/checks/222.improved_f b/checks/222.improved_f
new file mode 100644
index 0000000..70407ad
--- /dev/null
+++ b/checks/222.improved_f
@@ -0,0 +1,37 @@
+dnl @ ../doc/m4.texi:8143: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreach2.m4')
+dnl @result{}
+undivert(`foreach2.m4')dnl
+dnl @result{}include(`quote.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# foreach(x, (item_1, item_2, ..., item_n), stmt)
+dnl @result{}# parenthesized list, improved version
+dnl @result{}define(`foreach', `pushdef(`$1')_$0(`$1',
+dnl @result{} (dquote(dquote_elt$2)), `$3')popdef(`$1')')
+dnl @result{}define(`_arg1', `$1')
+dnl @result{}define(`_foreach', `ifelse(`$2', `(`')', `',
+dnl @result{} `define(`$1', _arg1$2)$3`'$0(`$1', (dquote(shift$2)), `$3')')')
+dnl @result{}divert`'dnl
+traceon(`shift')debugmode(`aq')
+dnl @result{}
+foreach(`x', `(`1', `2', `3', `4')', `x
+')dnl
+dnl @error{}m4trace: -4- shift(`1', `2', `3', `4')
+dnl @error{}m4trace: -4- shift(`2', `3', `4')
+dnl @error{}m4trace: -4- shift(`3', `4')
+dnl @result{}1
+dnl @error{}m4trace: -3- shift(``1'', ``2'', ``3'', ``4'')
+dnl @result{}2
+dnl @error{}m4trace: -3- shift(``2'', ``3'', ``4'')
+dnl @result{}3
+dnl @error{}m4trace: -3- shift(``3'', ``4'')
+dnl @result{}4
+dnl @error{}m4trace: -3- shift(``4'')
diff --git a/checks/223.improved_f b/checks/223.improved_f
new file mode 100644
index 0000000..5ee81ed
--- /dev/null
+++ b/checks/223.improved_f
@@ -0,0 +1,77 @@
+dnl @ ../doc/m4.texi:8197: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`foreach2.m4')
+dnl @result{}
+include(`foreachq2.m4')
+dnl @result{}
+dnl 0-element list:
+foreach(`x', `', `<x>') / foreachq(`x', `', `<x>')
+dnl @result{} /
+dnl 1-element list of empty element
+foreach(`x', `()', `<x>') / foreachq(`x', ``'', `<x>')
+dnl @result{}<> / <>
+dnl 2-element list of empty elements
+foreach(`x', `(`',`')', `<x>') / foreachq(`x', ``',`'', `<x>')
+dnl @result{}<><> / <><>
+dnl 1-element list of a comma
+foreach(`x', `(`,')', `<x>') / foreachq(`x', ``,'', `<x>')
+dnl @result{}<,> / <,>
+dnl 2-element list of unbalanced parentheses
+foreach(`x', `(`(', `)')', `<x>') / foreachq(`x', ``(', `)'', `<x>')
+dnl @result{}<(><)> / <(><)>
+define(`ab', `oops')dnl using defn(`iterator')
+foreach(`x', `(`a', `b')', `defn(`x')') /dnl
+ foreachq(`x', ``a', `b'', `defn(`x')')
+dnl @result{}ab / ab
+define(`active', `ACT, IVE')
+dnl @result{}
+traceon(`active')
+dnl @result{}
+dnl list of unquoted macros; expansion occurs before recursion
+foreach(`x', `(active, active)', `<x>
+')dnl
+dnl @error{}m4trace: -4- active -> `ACT, IVE'
+dnl @error{}m4trace: -4- active -> `ACT, IVE'
+dnl @result{}<ACT>
+dnl @result{}<IVE>
+dnl @result{}<ACT>
+dnl @result{}<IVE>
+foreachq(`x', `active, active', `<x>
+')dnl
+dnl @error{}m4trace: -3- active -> `ACT, IVE'
+dnl @error{}m4trace: -3- active -> `ACT, IVE'
+dnl @result{}<ACT>
+dnl @error{}m4trace: -3- active -> `ACT, IVE'
+dnl @error{}m4trace: -3- active -> `ACT, IVE'
+dnl @result{}<IVE>
+dnl @result{}<ACT>
+dnl @result{}<IVE>
+dnl list of quoted macros; expansion occurs during recursion
+foreach(`x', `(`active', `active')', `<x>
+')dnl
+dnl @error{}m4trace: -1- active -> `ACT, IVE'
+dnl @result{}<ACT, IVE>
+dnl @error{}m4trace: -1- active -> `ACT, IVE'
+dnl @result{}<ACT, IVE>
+foreachq(`x', ``active', `active'', `<x>
+')dnl
+dnl @error{}m4trace: -1- active -> `ACT, IVE'
+dnl @result{}<ACT, IVE>
+dnl @error{}m4trace: -1- active -> `ACT, IVE'
+dnl @result{}<ACT, IVE>
+dnl list of double-quoted macro names; no expansion
+foreach(`x', `(``active'', ``active'')', `<x>
+')dnl
+dnl @result{}<active>
+dnl @result{}<active>
+foreachq(`x', ```active'', ``active''', `<x>
+')dnl
+dnl @result{}<active>
+dnl @result{}<active>
diff --git a/checks/224.improved_f b/checks/224.improved_f
new file mode 100644
index 0000000..5be2ea8
--- /dev/null
+++ b/checks/224.improved_f
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:8278: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dlimit=10 -Dverbose
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`loop.m4')dnl
+dnl @result{} 1 2 3 4 5 6 7 8 9 10
diff --git a/checks/225.improved_f b/checks/225.improved_f
new file mode 100644
index 0000000..cff0b70
--- /dev/null
+++ b/checks/225.improved_f
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:8288: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dlimit=10 -Dverbose -Dalt
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`loop.m4')dnl
+dnl @result{} 1 2 3 4 5 6 7 8 9 10
diff --git a/checks/226.improved_f b/checks/226.improved_f
new file mode 100644
index 0000000..5fe9efa
--- /dev/null
+++ b/checks/226.improved_f
@@ -0,0 +1,11 @@
+dnl @ ../doc/m4.texi:8298: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dlimit=10 -Dverbose -Dalt=4
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`loop.m4')dnl
+dnl @result{} 1 2 3 4 5 6 7 8 9 10
diff --git a/checks/227.improved_f b/checks/227.improved_f
new file mode 100644
index 0000000..0500f98
--- /dev/null
+++ b/checks/227.improved_f
@@ -0,0 +1,10 @@
+dnl @ ../doc/m4.texi:8306: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dlimit=2500 -Dalt=4
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`loop.m4')dnl
diff --git a/checks/228.improved_f b/checks/228.improved_f
new file mode 100644
index 0000000..4db2d6e
--- /dev/null
+++ b/checks/228.improved_f
@@ -0,0 +1,14 @@
+dnl @ ../doc/m4.texi:8313: Origin of test
+dnl @ expected status: 0
+dnl @ extra options: -Dlimit=10000 -Dalt=4
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`foo', `divert`'len(popdef(`_foreachq')_foreachq($@))')dnl
+define(`debug', `pushdef(`_foreachq', defn(`foo'))')
+dnl @result{}
+include(`loop.m4')dnl
+dnl @result{}48894
diff --git a/checks/229.improved_c b/checks/229.improved_c
new file mode 100644
index 0000000..ce9de2f
--- /dev/null
+++ b/checks/229.improved_c
@@ -0,0 +1,46 @@
+dnl @ ../doc/m4.texi:8376: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`stack_sep.m4')
+dnl @result{}
+define(`copy', `ifdef(`$2', `errprint(`$2 already defined
+')m4exit(`1')',
+ `stack_foreach_sep(`$1', `pushdef(`$2',', `)')')')dnl
+pushdef(`a', `1')pushdef(`a', defn(`divnum'))
+dnl @result{}
+copy(`a', `b')
+dnl @result{}
+b
+dnl @result{}0
+popdef(`b')
+dnl @result{}
+b
+dnl @result{}1
+pushdef(`c', `1')pushdef(`c', `2')
+dnl @result{}
+stack_foreach_sep_lifo(`c', `', `', `, ')
+dnl @result{}2, 1
+undivert(`stack_sep.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# stack_foreach_sep(macro, pre, post, sep)
+dnl @result{}# Invoke PRE`'defn`'POST with a single argument of each definition
+dnl @result{}# from the definition stack of MACRO, starting with the oldest, and
+dnl @result{}# separated by SEP between definitions.
+dnl @result{}define(`stack_foreach_sep',
+dnl @result{}`_stack_reverse_sep(`$1', `tmp-$1')'dnl
+dnl @result{}`_stack_reverse_sep(`tmp-$1', `$1', `$2`'defn(`$1')$3', `$4`'')')
+dnl @result{}# stack_foreach_sep_lifo(macro, pre, post, sep)
+dnl @result{}# Like stack_foreach_sep, but starting with the newest definition.
+dnl @result{}define(`stack_foreach_sep_lifo',
+dnl @result{}`_stack_reverse_sep(`$1', `tmp-$1', `$2`'defn(`$1')$3', `$4`'')'dnl
+dnl @result{}`_stack_reverse_sep(`tmp-$1', `$1')')
+dnl @result{}define(`_stack_reverse_sep',
+dnl @result{}`ifdef(`$1', `pushdef(`$2', defn(`$1'))$3`'popdef(`$1')$0(
+dnl @result{} `$1', `$2', `$4$3')')')
+dnl @result{}divert`'dnl
diff --git a/checks/230.improved_c b/checks/230.improved_c
new file mode 100644
index 0000000..0b85c41
--- /dev/null
+++ b/checks/230.improved_c
@@ -0,0 +1,16 @@
+dnl @ ../doc/m4.texi:8422: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`forloop3.m4')include(`stack_sep.m4')dnl
+forloop(`i', `1', `10000', `pushdef(`s', i)')
+dnl @result{}
+define(`colon', `:')define(`dash', `-')
+dnl @result{}
+len(stack_foreach_sep(`s', `dash', `', `colon'))
+dnl @result{}58893
diff --git a/checks/231.improved_m b/checks/231.improved_m
new file mode 100644
index 0000000..fac272a
--- /dev/null
+++ b/checks/231.improved_m
@@ -0,0 +1,19 @@
+dnl @ ../doc/m4.texi:8445: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`wraplifo.m4')
+dnl @result{}
+m4wrap(`define(`foo', ``$0:'-$1-$*-$#-')foo(`a', `b')
+')
+dnl @result{}
+builtin(`m4wrap', ``'define(`bar', ``$0:'-$1-$*-$#-')bar(`a', `b')
+')
+dnl @result{}
+dnl @result{}bar:-a-a,b-2-
+dnl @result{}m4wrap0:---0-
diff --git a/checks/232.improved_m b/checks/232.improved_m
new file mode 100644
index 0000000..9126230
--- /dev/null
+++ b/checks/232.improved_m
@@ -0,0 +1,31 @@
+dnl @ ../doc/m4.texi:8478: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`wraplifo2.m4')
+dnl @result{}
+undivert(`wraplifo2.m4')dnl
+dnl @result{}dnl Redefine m4wrap to have LIFO semantics, improved example.
+dnl @result{}include(`join.m4')dnl
+dnl @result{}define(`_m4wrap', defn(`m4wrap'))dnl
+dnl @result{}define(`_arg1', `$1')dnl
+dnl @result{}define(`m4wrap',
+dnl @result{}`ifdef(`_$0_text',
+dnl @result{} `define(`_$0_text', joinall(` ', $@)defn(`_$0_text'))',
+dnl @result{} `_$0(`_arg1(defn(`_$0_text')undefine(`_$0_text'))')dnl
+dnl @result{}define(`_$0_text', joinall(` ', $@))')')dnl
+m4wrap(`define(`foo', ``$0:'-$1-$*-$#-')foo(`a', `b')
+')
+dnl @result{}
+m4wrap(`lifo text
+m4wrap(`nested', `', `$@
+')')
+dnl @result{}
+dnl @result{}lifo text
+dnl @result{}foo:-a-a,b-2-
+dnl @result{}nested $@
diff --git a/checks/233.improved_c b/checks/233.improved_c
new file mode 100644
index 0000000..b6a6ca2
--- /dev/null
+++ b/checks/233.improved_c
@@ -0,0 +1,31 @@
+dnl @ ../doc/m4.texi:8514: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`cleardivert',
+ `pushdef(`_n', divnum)divert(`-1')undivert($@)divert(_n)popdef(`_n')')
+dnl @result{}
+divert(`1')one
+divert
+dnl @result{}
+cleardivert
+dnl @result{}
+undivert
+dnl @result{}one
+dnl @result{}
+define(`cleardivert',
+ `pushdef(`_num', divnum)divert(`-1')ifelse(`$#', `0',
+ `undivert`'', `undivert($@)')divert(_num)popdef(`_num')')
+dnl @result{}
+divert(`2')two
+divert
+dnl @result{}
+cleardivert
+dnl @result{}
+undivert
+dnl @result{}
diff --git a/checks/234.improved_c b/checks/234.improved_c
new file mode 100644
index 0000000..e8587d1
--- /dev/null
+++ b/checks/234.improved_c
@@ -0,0 +1,37 @@
+dnl @ ../doc/m4.texi:8550: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`capitalize.m4')dnl
+define(`active', `act1, ive')dnl
+define(`Active', `Act2, Ive')dnl
+define(`ACTIVE', `ACT3, IVE')dnl
+upcase(active)
+dnl @result{}ACT1,IVE
+upcase(`active')
+dnl @result{}ACT3, IVE
+upcase(``active'')
+dnl @result{}ACTIVE
+downcase(ACTIVE)
+dnl @result{}act3,ive
+downcase(`ACTIVE')
+dnl @result{}act1, ive
+downcase(``ACTIVE'')
+dnl @result{}active
+capitalize(active)
+dnl @result{}Act1
+capitalize(`active')
+dnl @result{}Active
+capitalize(``active'')
+dnl @result{}_capitalize(`active')
+define(`A', `OOPS')
+dnl @result{}
+capitalize(active)
+dnl @result{}OOPSct1
+capitalize(`active')
+dnl @result{}OOPSctive
diff --git a/checks/235.improved_c b/checks/235.improved_c
new file mode 100644
index 0000000..888c482
--- /dev/null
+++ b/checks/235.improved_c
@@ -0,0 +1,36 @@
+dnl @ ../doc/m4.texi:8627: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`capitalize2.m4')dnl
+define(`active', `act1, ive')dnl
+define(`Active', `Act2, Ive')dnl
+define(`ACTIVE', `ACT3, IVE')dnl
+define(`A', `OOPS')dnl
+capitalize(active; `active'; ``active''; ```actIVE''')
+dnl @result{}Act1,Ive; Act2, Ive; Active; `Active'
+undivert(`capitalize2.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# upcase(text)
+dnl @result{}# downcase(text)
+dnl @result{}# capitalize(text)
+dnl @result{}# change case of text, improved version
+dnl @result{}define(`upcase', `translit(`$*', `a-z', `A-Z')')
+dnl @result{}define(`downcase', `translit(`$*', `A-Z', `a-z')')
+dnl @result{}define(`_arg1', `$1')
+dnl @result{}define(`_to_alt', `changequote(`<<[', `]>>')')
+dnl @result{}define(`_from_alt', `changequote(<<[`]>>, <<[']>>)')
+dnl @result{}define(`_upcase_alt', `translit(<<[$*]>>, <<[a-z]>>, <<[A-Z]>>)')
+dnl @result{}define(`_downcase_alt', `translit(<<[$*]>>, <<[A-Z]>>, <<[a-z]>>)')
+dnl @result{}define(`_capitalize_alt',
+dnl @result{} `regexp(<<[$1]>>, <<[^\(\w\)\(\w*\)]>>,
+dnl @result{} <<[_upcase_alt(<<[<<[\1]>>]>>)_downcase_alt(<<[<<[\2]>>]>>)]>>)')
+dnl @result{}define(`capitalize',
+dnl @result{} `_arg1(_to_alt()patsubst(<<[<<[$*]>>]>>, <<[\w+]>>,
+dnl @result{} _from_alt()`]>>_$0_alt(<<[\&]>>)<<['_to_alt())_from_alt())')
+dnl @result{}divert`'dnl
diff --git a/checks/236.improved_f b/checks/236.improved_f
new file mode 100644
index 0000000..c2eb6a5
--- /dev/null
+++ b/checks/236.improved_f
@@ -0,0 +1,21 @@
+dnl @ ../doc/m4.texi:8671: Origin of test
+dnl @ expected status: 1
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+define(`fatal_error',
+ `errprint(ifdef(`__program__', `__program__', ``m4'')'dnl
+`:ifelse(__line__, `0', `',
+ `__file__:__line__:')` fatal error: $*
+')m4exit(`1')')
+dnl @result{}
+m4wrap(`divnum(`demo of internal message')
+fatal_error(`inside wrapped text')')
+dnl @result{}
+dnl @error{}m4:stdin:6: Warning: excess arguments to builtin `divnum' ignored
+dnl @result{}0
+dnl @error{}m4:stdin:6: fatal error: inside wrapped text
diff --git a/checks/Makefile.am b/checks/Makefile.am
new file mode 100644
index 0000000..9265964
--- /dev/null
+++ b/checks/Makefile.am
@@ -0,0 +1,41 @@
+## Makefile.am - template for generating Makefile via Automake.
+##
+## Copyright (C) 1992-1994, 2006-2013 Free Software Foundation, Inc.
+##
+## This file is part of GNU M4.
+##
+## GNU M4 is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## GNU M4 is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Vern says that the first star is required around an Alpha make bug.
+DOC_CHECKS = $(srcdir)/*[0-9][0-9][0-9].*
+CHECKS = $(DOC_CHECKS) $(srcdir)/stackovf.test
+EXTRA_DIST = get-them check-them stamp-checks stackovf.test $(DOC_CHECKS)
+
+all-local: $(srcdir)/stamp-checks
+
+$(srcdir)/stamp-checks: $(srcdir)/get-them $(top_srcdir)/doc/m4.texi
+ rm -f $(DOC_CHECKS)
+ cd $(srcdir) && AWK=$(AWK) ./get-them ../doc/m4.texi
+ echo stamp >$@
+
+MAINTAINERCLEANFILES = $(DOC_CHECKS) $(srcdir)/stamp-checks
+
+check-local: $(srcdir)/stamp-checks
+ PATH=`pwd`/../src"$(PATH_SEPARATOR)"$$PATH; export PATH; \
+ $(srcdir)/check-them -I $(srcdir)/../examples $(CHECKS)
+
+installcheck: $(srcdir)/stamp-checks
+ PATH='$(bindir)'"$(PATH_SEPARATOR)"$$PATH; export PATH; \
+ $(srcdir)/check-them -I $(srcdir)/../examples \
+ -m "`echo m4 | sed '$(program_transform_name)'`" $(CHECKS)
diff --git a/checks/Makefile.in b/checks/Makefile.in
new file mode 100644
index 0000000..b01530a
--- /dev/null
+++ b/checks/Makefile.in
@@ -0,0 +1,1564 @@
+# Makefile.in generated by automake 1.14 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = checks
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/ansi-c++.m4 \
+ $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/autobuild.m4 $(top_srcdir)/m4/btowc.m4 \
+ $(top_srcdir)/m4/c-stack.m4 $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+ $(top_srcdir)/m4/closedir.m4 $(top_srcdir)/m4/closein.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+ $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/environ.m4 $(top_srcdir)/m4/errno_h.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/execute.m4 \
+ $(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/exponentf.m4 \
+ $(top_srcdir)/m4/exponentl.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/extern-inline.m4 \
+ $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fclose.m4 \
+ $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopen.m4 \
+ $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fopen.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fpieee.m4 \
+ $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freadahead.m4 \
+ $(top_srcdir)/m4/freading.m4 $(top_srcdir)/m4/frexp.m4 \
+ $(top_srcdir)/m4/frexpl.m4 $(top_srcdir)/m4/fseek.m4 \
+ $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fstat.m4 \
+ $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+ $(top_srcdir)/m4/getcwd.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/include_next.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+ $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnand.m4 \
+ $(top_srcdir)/m4/isnanf.m4 $(top_srcdir)/m4/isnanl.m4 \
+ $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/largefile.m4 \
+ $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/ldexp.m4 \
+ $(top_srcdir)/m4/ldexpl.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/libsigsegv.m4 $(top_srcdir)/m4/link.m4 \
+ $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+ $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-tr.m4 \
+ $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \
+ $(top_srcdir)/m4/localeconv.m4 $(top_srcdir)/m4/localename.m4 \
+ $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+ $(top_srcdir)/m4/manywarnings.m4 $(top_srcdir)/m4/math_h.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
+ $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nocrash.m4 \
+ $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
+ $(top_srcdir)/m4/opendir.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/posix_spawn.m4 \
+ $(top_srcdir)/m4/printf-frexp.m4 \
+ $(top_srcdir)/m4/printf-frexpl.m4 $(top_srcdir)/m4/printf.m4 \
+ $(top_srcdir)/m4/putenv.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/raise.m4 $(top_srcdir)/m4/rawmemchr.m4 \
+ $(top_srcdir)/m4/readdir.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/sched_h.m4 \
+ $(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/setlocale.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \
+ $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \
+ $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \
+ $(top_srcdir)/m4/sigpipe.m4 $(top_srcdir)/m4/size_max.m4 \
+ $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/spawn-pipe.m4 $(top_srcdir)/m4/spawn_h.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strchrnul.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strsignal.m4 \
+ $(top_srcdir)/m4/strstr.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/sys_wait_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/threadlib.m4 \
+ $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/tls.m4 \
+ $(top_srcdir)/m4/tmpdir.m4 $(top_srcdir)/m4/ungetc.m4 \
+ $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/vasnprintf.m4 \
+ $(top_srcdir)/m4/vasprintf-posix.m4 \
+ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
+ $(top_srcdir)/m4/wait-process.m4 $(top_srcdir)/m4/waitpid.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/m4/wchar_h.m4 \
+ $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcrtomb.m4 \
+ $(top_srcdir)/m4/wctob.m4 $(top_srcdir)/m4/wctomb.m4 \
+ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/write.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xvasprintf.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+ARFLAGS = @ARFLAGS@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXX_CHOICE = @CXX_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FLOAT_H = @FLOAT_H@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GNULIB_ACOSF = @GNULIB_ACOSF@
+GNULIB_ACOSL = @GNULIB_ACOSL@
+GNULIB_ALPHASORT = @GNULIB_ALPHASORT@
+GNULIB_ASINF = @GNULIB_ASINF@
+GNULIB_ASINL = @GNULIB_ASINL@
+GNULIB_ATAN2F = @GNULIB_ATAN2F@
+GNULIB_ATANF = @GNULIB_ATANF@
+GNULIB_ATANL = @GNULIB_ATANL@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CBRT = @GNULIB_CBRT@
+GNULIB_CBRTF = @GNULIB_CBRTF@
+GNULIB_CBRTL = @GNULIB_CBRTL@
+GNULIB_CEIL = @GNULIB_CEIL@
+GNULIB_CEILF = @GNULIB_CEILF@
+GNULIB_CEILL = @GNULIB_CEILL@
+GNULIB_CHDIR = @GNULIB_CHDIR@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@
+GNULIB_COPYSIGN = @GNULIB_COPYSIGN@
+GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@
+GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@
+GNULIB_COSF = @GNULIB_COSF@
+GNULIB_COSHF = @GNULIB_COSHF@
+GNULIB_COSL = @GNULIB_COSL@
+GNULIB_DIRFD = @GNULIB_DIRFD@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP = @GNULIB_DUP@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_EXP2 = @GNULIB_EXP2@
+GNULIB_EXP2F = @GNULIB_EXP2F@
+GNULIB_EXP2L = @GNULIB_EXP2L@
+GNULIB_EXPF = @GNULIB_EXPF@
+GNULIB_EXPL = @GNULIB_EXPL@
+GNULIB_EXPM1 = @GNULIB_EXPM1@
+GNULIB_EXPM1F = @GNULIB_EXPM1F@
+GNULIB_EXPM1L = @GNULIB_EXPM1L@
+GNULIB_FABSF = @GNULIB_FABSF@
+GNULIB_FABSL = @GNULIB_FABSL@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
+GNULIB_FDOPEN = @GNULIB_FDOPEN@
+GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FFSL = @GNULIB_FFSL@
+GNULIB_FFSLL = @GNULIB_FFSLL@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FLOOR = @GNULIB_FLOOR@
+GNULIB_FLOORF = @GNULIB_FLOORF@
+GNULIB_FLOORL = @GNULIB_FLOORL@
+GNULIB_FMA = @GNULIB_FMA@
+GNULIB_FMAF = @GNULIB_FMAF@
+GNULIB_FMAL = @GNULIB_FMAL@
+GNULIB_FMOD = @GNULIB_FMOD@
+GNULIB_FMODF = @GNULIB_FMODF@
+GNULIB_FMODL = @GNULIB_FMODL@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FREXP = @GNULIB_FREXP@
+GNULIB_FREXPF = @GNULIB_FREXPF@
+GNULIB_FREXPL = @GNULIB_FREXPL@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTAT = @GNULIB_FSTAT@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GL_M4_UNISTD_H_GETOPT = @GNULIB_GL_M4_UNISTD_H_GETOPT@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_HYPOT = @GNULIB_HYPOT@
+GNULIB_HYPOTF = @GNULIB_HYPOTF@
+GNULIB_HYPOTL = @GNULIB_HYPOTL@
+GNULIB_ILOGB = @GNULIB_ILOGB@
+GNULIB_ILOGBF = @GNULIB_ILOGBF@
+GNULIB_ILOGBL = @GNULIB_ILOGBL@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISATTY = @GNULIB_ISATTY@
+GNULIB_ISFINITE = @GNULIB_ISFINITE@
+GNULIB_ISINF = @GNULIB_ISINF@
+GNULIB_ISNAN = @GNULIB_ISNAN@
+GNULIB_ISNAND = @GNULIB_ISNAND@
+GNULIB_ISNANF = @GNULIB_ISNANF@
+GNULIB_ISNANL = @GNULIB_ISNANL@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LDEXPF = @GNULIB_LDEXPF@
+GNULIB_LDEXPL = @GNULIB_LDEXPL@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LOCALECONV = @GNULIB_LOCALECONV@
+GNULIB_LOG = @GNULIB_LOG@
+GNULIB_LOG10 = @GNULIB_LOG10@
+GNULIB_LOG10F = @GNULIB_LOG10F@
+GNULIB_LOG10L = @GNULIB_LOG10L@
+GNULIB_LOG1P = @GNULIB_LOG1P@
+GNULIB_LOG1PF = @GNULIB_LOG1PF@
+GNULIB_LOG1PL = @GNULIB_LOG1PL@
+GNULIB_LOG2 = @GNULIB_LOG2@
+GNULIB_LOG2F = @GNULIB_LOG2F@
+GNULIB_LOG2L = @GNULIB_LOG2L@
+GNULIB_LOGB = @GNULIB_LOGB@
+GNULIB_LOGBF = @GNULIB_LOGBF@
+GNULIB_LOGBL = @GNULIB_LOGBL@
+GNULIB_LOGF = @GNULIB_LOGF@
+GNULIB_LOGL = @GNULIB_LOGL@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_MODF = @GNULIB_MODF@
+GNULIB_MODFF = @GNULIB_MODFF@
+GNULIB_MODFL = @GNULIB_MODFL@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_OPENDIR = @GNULIB_OPENDIR@
+GNULIB_PCLOSE = @GNULIB_PCLOSE@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@
+GNULIB_POSIX_SPAWN = @GNULIB_POSIX_SPAWN@
+GNULIB_POSIX_SPAWNATTR_DESTROY = @GNULIB_POSIX_SPAWNATTR_DESTROY@
+GNULIB_POSIX_SPAWNATTR_GETFLAGS = @GNULIB_POSIX_SPAWNATTR_GETFLAGS@
+GNULIB_POSIX_SPAWNATTR_GETPGROUP = @GNULIB_POSIX_SPAWNATTR_GETPGROUP@
+GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM@
+GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY@
+GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT@
+GNULIB_POSIX_SPAWNATTR_GETSIGMASK = @GNULIB_POSIX_SPAWNATTR_GETSIGMASK@
+GNULIB_POSIX_SPAWNATTR_INIT = @GNULIB_POSIX_SPAWNATTR_INIT@
+GNULIB_POSIX_SPAWNATTR_SETFLAGS = @GNULIB_POSIX_SPAWNATTR_SETFLAGS@
+GNULIB_POSIX_SPAWNATTR_SETPGROUP = @GNULIB_POSIX_SPAWNATTR_SETPGROUP@
+GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM@
+GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY@
+GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT@
+GNULIB_POSIX_SPAWNATTR_SETSIGMASK = @GNULIB_POSIX_SPAWNATTR_SETSIGMASK@
+GNULIB_POSIX_SPAWNP = @GNULIB_POSIX_SPAWNP@
+GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@
+GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@
+GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@
+GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@
+GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@
+GNULIB_POWF = @GNULIB_POWF@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RAISE = @GNULIB_RAISE@
+GNULIB_RANDOM = @GNULIB_RANDOM@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READDIR = @GNULIB_READDIR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMAINDER = @GNULIB_REMAINDER@
+GNULIB_REMAINDERF = @GNULIB_REMAINDERF@
+GNULIB_REMAINDERL = @GNULIB_REMAINDERL@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_REWINDDIR = @GNULIB_REWINDDIR@
+GNULIB_RINT = @GNULIB_RINT@
+GNULIB_RINTF = @GNULIB_RINTF@
+GNULIB_RINTL = @GNULIB_RINTL@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_ROUND = @GNULIB_ROUND@
+GNULIB_ROUNDF = @GNULIB_ROUNDF@
+GNULIB_ROUNDL = @GNULIB_ROUNDL@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANDIR = @GNULIB_SCANDIR@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SIGACTION = @GNULIB_SIGACTION@
+GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@
+GNULIB_SIGNBIT = @GNULIB_SIGNBIT@
+GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@
+GNULIB_SINF = @GNULIB_SINF@
+GNULIB_SINHF = @GNULIB_SINHF@
+GNULIB_SINL = @GNULIB_SINL@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_SQRTF = @GNULIB_SQRTF@
+GNULIB_SQRTL = @GNULIB_SQRTL@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TANF = @GNULIB_TANF@
+GNULIB_TANHF = @GNULIB_TANHF@
+GNULIB_TANL = @GNULIB_TANL@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TRUNC = @GNULIB_TRUNC@
+GNULIB_TRUNCF = @GNULIB_TRUNCF@
+GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WAITPID = @GNULIB_WAITPID@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ACOSF = @HAVE_ACOSF@
+HAVE_ACOSL = @HAVE_ACOSL@
+HAVE_ALPHASORT = @HAVE_ALPHASORT@
+HAVE_ASINF = @HAVE_ASINF@
+HAVE_ASINL = @HAVE_ASINL@
+HAVE_ATAN2F = @HAVE_ATAN2F@
+HAVE_ATANF = @HAVE_ATANF@
+HAVE_ATANL = @HAVE_ATANL@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CBRT = @HAVE_CBRT@
+HAVE_CBRTF = @HAVE_CBRTF@
+HAVE_CBRTL = @HAVE_CBRTL@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_CLOSEDIR = @HAVE_CLOSEDIR@
+HAVE_COPYSIGN = @HAVE_COPYSIGN@
+HAVE_COPYSIGNL = @HAVE_COPYSIGNL@
+HAVE_COSF = @HAVE_COSF@
+HAVE_COSHF = @HAVE_COSHF@
+HAVE_COSL = @HAVE_COSL@
+HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
+HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
+HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
+HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@
+HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@
+HAVE_DECL_CEILF = @HAVE_DECL_CEILF@
+HAVE_DECL_CEILL = @HAVE_DECL_CEILL@
+HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@
+HAVE_DECL_COSL = @HAVE_DECL_COSL@
+HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@
+HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@
+HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@
+HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
+HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
+HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@
+HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@
+HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@
+HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@
+HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@
+HAVE_DECL_LOGB = @HAVE_DECL_LOGB@
+HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@
+HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@
+HAVE_DECL_RINTF = @HAVE_DECL_RINTF@
+HAVE_DECL_ROUND = @HAVE_DECL_ROUND@
+HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@
+HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
+HAVE_DECL_SINL = @HAVE_DECL_SINL@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TANL = @HAVE_DECL_TANL@
+HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
+HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
+HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DIRENT_H = @HAVE_DIRENT_H@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_EXPF = @HAVE_EXPF@
+HAVE_EXPL = @HAVE_EXPL@
+HAVE_EXPM1 = @HAVE_EXPM1@
+HAVE_EXPM1F = @HAVE_EXPM1F@
+HAVE_FABSF = @HAVE_FABSF@
+HAVE_FABSL = @HAVE_FABSL@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FDATASYNC = @HAVE_FDATASYNC@
+HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FFSL = @HAVE_FFSL@
+HAVE_FFSLL = @HAVE_FFSLL@
+HAVE_FMA = @HAVE_FMA@
+HAVE_FMAF = @HAVE_FMAF@
+HAVE_FMAL = @HAVE_FMAL@
+HAVE_FMODF = @HAVE_FMODF@
+HAVE_FMODL = @HAVE_FMODL@
+HAVE_FREXPF = @HAVE_FREXPF@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_HYPOTF = @HAVE_HYPOTF@
+HAVE_HYPOTL = @HAVE_HYPOTL@
+HAVE_ILOGB = @HAVE_ILOGB@
+HAVE_ILOGBF = @HAVE_ILOGBF@
+HAVE_ILOGBL = @HAVE_ILOGBL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISNAND = @HAVE_ISNAND@
+HAVE_ISNANF = @HAVE_ISNANF@
+HAVE_ISNANL = @HAVE_ISNANL@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LDEXPF = @HAVE_LDEXPF@
+HAVE_LIBSIGSEGV = @HAVE_LIBSIGSEGV@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOG10F = @HAVE_LOG10F@
+HAVE_LOG10L = @HAVE_LOG10L@
+HAVE_LOG1P = @HAVE_LOG1P@
+HAVE_LOG1PF = @HAVE_LOG1PF@
+HAVE_LOG1PL = @HAVE_LOG1PL@
+HAVE_LOGBF = @HAVE_LOGBF@
+HAVE_LOGBL = @HAVE_LOGBL@
+HAVE_LOGF = @HAVE_LOGF@
+HAVE_LOGL = @HAVE_LOGL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_MODFF = @HAVE_MODFF@
+HAVE_MODFL = @HAVE_MODFL@
+HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OPENDIR = @HAVE_OPENDIR@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PCLOSE = @HAVE_PCLOSE@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_POPEN = @HAVE_POPEN@
+HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@
+HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@
+HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@
+HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@
+HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@
+HAVE_POWF = @HAVE_POWF@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RAISE = @HAVE_RAISE@
+HAVE_RANDOM = @HAVE_RANDOM@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READDIR = @HAVE_READDIR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_REMAINDER = @HAVE_REMAINDER@
+HAVE_REMAINDERF = @HAVE_REMAINDERF@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_REWINDDIR = @HAVE_REWINDDIR@
+HAVE_RINT = @HAVE_RINT@
+HAVE_RINTL = @HAVE_RINTL@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
+HAVE_SCANDIR = @HAVE_SCANDIR@
+HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
+HAVE_SIGACTION = @HAVE_SIGACTION@
+HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@
+HAVE_SIGINFO_T = @HAVE_SIGINFO_T@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SIGSET_T = @HAVE_SIGSET_T@
+HAVE_SINF = @HAVE_SINF@
+HAVE_SINHF = @HAVE_SINHF@
+HAVE_SINL = @HAVE_SINL@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_SPAWN_H = @HAVE_SPAWN_H@
+HAVE_SQRTF = @HAVE_SQRTF@
+HAVE_SQRTL = @HAVE_SQRTL@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@
+HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TANF = @HAVE_TANF@
+HAVE_TANHF = @HAVE_TANHF@
+HAVE_TANL = @HAVE_TANL@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBCSTACK = @LIBCSTACK@
+LIBINTL = @LIBINTL@
+LIBM4_LIBDEPS = @LIBM4_LIBDEPS@
+LIBM4_LTLIBDEPS = @LIBM4_LTLIBDEPS@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBSIGSEGV = @LIBSIGSEGV@
+LIBSIGSEGV_PREFIX = @LIBSIGSEGV_PREFIX@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBCSTACK = @LTLIBCSTACK@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBSIGSEGV = @LTLIBSIGSEGV@
+LTLIBTHREAD = @LTLIBTHREAD@
+M4_LIBOBJS = @M4_LIBOBJS@
+M4_LTLIBOBJS = @M4_LTLIBOBJS@
+M4tests_LIBOBJS = @M4tests_LIBOBJS@
+M4tests_LTLIBOBJS = @M4tests_LTLIBOBJS@
+M4tests_WITNESS = @M4tests_WITNESS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@
+NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
+NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_DIRENT_H = @NEXT_DIRENT_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_FLOAT_H = @NEXT_FLOAT_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_SCHED_H = @NEXT_SCHED_H@
+NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
+NEXT_SPAWN_H = @NEXT_SPAWN_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
+NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CBRTF = @REPLACE_CBRTF@
+REPLACE_CBRTL = @REPLACE_CBRTL@
+REPLACE_CEIL = @REPLACE_CEIL@
+REPLACE_CEILF = @REPLACE_CEILF@
+REPLACE_CEILL = @REPLACE_CEILL@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_EXP2 = @REPLACE_EXP2@
+REPLACE_EXP2L = @REPLACE_EXP2L@
+REPLACE_EXPM1 = @REPLACE_EXPM1@
+REPLACE_EXPM1F = @REPLACE_EXPM1F@
+REPLACE_FABSL = @REPLACE_FABSL@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FDOPEN = @REPLACE_FDOPEN@
+REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FLOOR = @REPLACE_FLOOR@
+REPLACE_FLOORF = @REPLACE_FLOORF@
+REPLACE_FLOORL = @REPLACE_FLOORL@
+REPLACE_FMA = @REPLACE_FMA@
+REPLACE_FMAF = @REPLACE_FMAF@
+REPLACE_FMAL = @REPLACE_FMAL@
+REPLACE_FMOD = @REPLACE_FMOD@
+REPLACE_FMODF = @REPLACE_FMODF@
+REPLACE_FMODL = @REPLACE_FMODL@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FREXP = @REPLACE_FREXP@
+REPLACE_FREXPF = @REPLACE_FREXPF@
+REPLACE_FREXPL = @REPLACE_FREXPL@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
+REPLACE_HYPOT = @REPLACE_HYPOT@
+REPLACE_HYPOTF = @REPLACE_HYPOTF@
+REPLACE_HYPOTL = @REPLACE_HYPOTL@
+REPLACE_ILOGB = @REPLACE_ILOGB@
+REPLACE_ILOGBF = @REPLACE_ILOGBF@
+REPLACE_ISATTY = @REPLACE_ISATTY@
+REPLACE_ISFINITE = @REPLACE_ISFINITE@
+REPLACE_ISINF = @REPLACE_ISINF@
+REPLACE_ISNAN = @REPLACE_ISNAN@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_ITOLD = @REPLACE_ITOLD@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LDEXPL = @REPLACE_LDEXPL@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALECONV = @REPLACE_LOCALECONV@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LOG = @REPLACE_LOG@
+REPLACE_LOG10 = @REPLACE_LOG10@
+REPLACE_LOG10F = @REPLACE_LOG10F@
+REPLACE_LOG10L = @REPLACE_LOG10L@
+REPLACE_LOG1P = @REPLACE_LOG1P@
+REPLACE_LOG1PF = @REPLACE_LOG1PF@
+REPLACE_LOG1PL = @REPLACE_LOG1PL@
+REPLACE_LOG2 = @REPLACE_LOG2@
+REPLACE_LOG2F = @REPLACE_LOG2F@
+REPLACE_LOG2L = @REPLACE_LOG2L@
+REPLACE_LOGB = @REPLACE_LOGB@
+REPLACE_LOGBF = @REPLACE_LOGBF@
+REPLACE_LOGBL = @REPLACE_LOGBL@
+REPLACE_LOGF = @REPLACE_LOGF@
+REPLACE_LOGL = @REPLACE_LOGL@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_MODF = @REPLACE_MODF@
+REPLACE_MODFF = @REPLACE_MODFF@
+REPLACE_MODFL = @REPLACE_MODFL@
+REPLACE_NAN = @REPLACE_NAN@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_OPENDIR = @REPLACE_OPENDIR@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_POSIX_SPAWN = @REPLACE_POSIX_SPAWN@
+REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@
+REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@
+REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
+REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_RAISE = @REPLACE_RAISE@
+REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMAINDER = @REPLACE_REMAINDER@
+REPLACE_REMAINDERF = @REPLACE_REMAINDERF@
+REPLACE_REMAINDERL = @REPLACE_REMAINDERL@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_ROUND = @REPLACE_ROUND@
+REPLACE_ROUNDF = @REPLACE_ROUNDF@
+REPLACE_ROUNDL = @REPLACE_ROUNDL@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
+REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_SQRTL = @REPLACE_SQRTL@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@
+REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
+REPLACE_TRUNC = @REPLACE_TRUNC@
+REPLACE_TRUNCF = @REPLACE_TRUNCF@
+REPLACE_TRUNCL = @REPLACE_TRUNCL@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SCHED_H = @SCHED_H@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@
+WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Vern says that the first star is required around an Alpha make bug.
+DOC_CHECKS = $(srcdir)/*[0-9][0-9][0-9].*
+CHECKS = $(DOC_CHECKS) $(srcdir)/stackovf.test
+EXTRA_DIST = get-them check-them stamp-checks stackovf.test $(DOC_CHECKS)
+MAINTAINERCLEANFILES = $(DOC_CHECKS) $(srcdir)/stamp-checks
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu checks/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu checks/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am all-local check check-am check-local clean \
+ clean-generic cscopelist-am ctags-am distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am
+
+
+all-local: $(srcdir)/stamp-checks
+
+$(srcdir)/stamp-checks: $(srcdir)/get-them $(top_srcdir)/doc/m4.texi
+ rm -f $(DOC_CHECKS)
+ cd $(srcdir) && AWK=$(AWK) ./get-them ../doc/m4.texi
+ echo stamp >$@
+
+check-local: $(srcdir)/stamp-checks
+ PATH=`pwd`/../src"$(PATH_SEPARATOR)"$$PATH; export PATH; \
+ $(srcdir)/check-them -I $(srcdir)/../examples $(CHECKS)
+
+installcheck: $(srcdir)/stamp-checks
+ PATH='$(bindir)'"$(PATH_SEPARATOR)"$$PATH; export PATH; \
+ $(srcdir)/check-them -I $(srcdir)/../examples \
+ -m "`echo m4 | sed '$(program_transform_name)'`" $(CHECKS)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/checks/check-them b/checks/check-them
new file mode 100755
index 0000000..792457a
--- /dev/null
+++ b/checks/check-them
@@ -0,0 +1,191 @@
+#!/bin/sh
+# Check GNU m4 against examples from the manual source.
+# Copyright (C) 1992, 2006-2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU M4.
+#
+# GNU M4 is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GNU M4 is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Clean up temp files on exit
+pwd=`pwd`
+tmp=m4-tmp.$$
+trap 'stat=$?; cd "$pwd"; rm -rf $tmp && exit $stat' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+# Create scratch dir
+framework_failure=0
+mkdir $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+out=$tmp/m4-out
+err=$tmp/m4-err
+xout=$tmp/m4-xout
+xerr=$tmp/m4-xerr
+failed=
+skipped=
+strip_needed=false
+diffopts=-c
+
+# Allow user to select sed
+: ${SED=sed}
+
+# Find out where the examples live.
+examples=.
+if test "x$1" = x-I ; then
+ examples="$2"
+ shift; shift
+fi
+
+# Find out how to run m4.
+m4=m4
+if test "x$1" = x-m ; then
+ m4="$2"
+ shift; shift
+fi
+
+# Find out how the executable prints argv[0]
+m4name=`"$m4" --help | ${SED} -e 's/Usage: \(.*\) \[OPTION.*/\1/' \
+ -e 's/\\\\/\\\\\\\\/g' -e 1q`
+
+# Find out if we should strip \r in the output
+"$m4" --version | tee $out
+"$m4" --version | tr -d '\015' > $xout
+if cmp -s $out $xout; then
+ :
+else
+ echo "Ignoring carriage returns"
+ strip_needed=:
+fi
+
+# Find out if diff supports useful options.
+if diff -u /dev/null /dev/null 2>/dev/null ; then
+ diffopts="-u"
+fi
+if diff -a /dev/null /dev/null 2>/dev/null ; then
+ diffopts="$diffopts -a"
+fi
+
+# Run the tests.
+for file
+do
+ test -f "$file" || {
+ echo "No such file: $file"
+ continue
+ }
+ echo "Checking $file"
+
+ case $file in
+ *stackovf.test)
+ "$file" "$m4"
+ case $? in
+ 77) skipped="$skipped $file";;
+ 0) ;;
+ *) failed="$failed $file"
+ esac
+ continue ;;
+ esac
+
+ options=`${SED} -ne '3s/^dnl @ extra options: //p;3q' "$file"`
+ ${SED} -e '/^dnl @/d' -e '/^\^D$/q' "$file" \
+ | LC_MESSAGES=C M4PATH=$examples "$m4" -d $options - >$out 2>$err
+ stat=$?
+
+ xstat=`${SED} -ne '2s/^dnl @ expected status: //p;2q' "$file"`
+ case $stat in
+ 77)
+ skipped="$skipped $file"
+ cat $err
+ continue
+ ;;
+ $xstat) ;;
+ *)
+ failed="$failed $file:status"
+ echo `${SED} -e 's/^dnl //' -e 1q $file`
+ echo "$file: status was $stat, expected $xstat"
+ ;;
+ esac
+
+ xoutfile=`${SED} -n 's/^dnl @ expected output: //p' "$file"`
+ if test -z "$xoutfile" ; then
+ ${SED} -e '/^dnl @result{}/!d' -e 's///' -e "s|examples/|$examples/|" \
+ "$file" > $xout
+ else
+ cp "$examples/$xoutfile" $xout
+ fi
+
+ xerrfile=`${SED} -n 's/^dnl @ expected error: //p' "$file"`
+ case $xerrfile in
+ ignore)
+ cp $err $xerr ;;
+ '')
+ ${SED} '/^dnl @error{}/!d
+ s///; '"s|^m4:|$m4name:|; s|examples/|$examples/|" \
+ "$file" > $xerr ;;
+ *)
+ ${SED} "s|^m4:|$m4name:|; s|examples/|$examples/|" \
+ "$examples/$xerrfile" > $xerr ;;
+ esac
+
+ # For the benefit of mingw, normalize \r\n line endings
+ if $strip_needed ; then
+ tr -d '\015' < $out > $out.t
+ mv $out.t $out
+ tr -d '\015' < $xout > $xout.t
+ mv $xout.t $xout
+ tr -d '\015' < $err > $err.t
+ mv $err.t $err
+ tr -d '\015' < $xerr > $xerr.t
+ mv $xerr.t $xerr
+ fi
+
+ if cmp -s $out $xout; then
+ :
+ else
+ failed="$failed $file:out"
+ echo `${SED} -e 's/^dnl //' -e 1q $file`
+ echo "$file: stdout mismatch"
+ diff $diffopts $xout $out
+ fi
+
+ if cmp -s $err $xerr; then
+ :
+ else
+ failed="$failed $file:err"
+ echo `${SED} -e 's/^dnl //' -e 1q $file`
+ echo "$file: stderr mismatch"
+ diff $diffopts $xerr $err
+ fi
+
+done
+
+rm -f $out $err $xout $xerr
+
+echo
+if test -n "$skipped"; then
+ echo "Skipped checks were:"
+ echo " $skipped"
+fi
+if test -z "$failed"; then
+ echo "All checks successful"
+ stat=0
+else
+ echo "Failed checks were:"
+ echo " $failed"
+ stat=1
+fi
+(exit $stat); exit $stat
diff --git a/checks/get-them b/checks/get-them
new file mode 100755
index 0000000..33d38b5
--- /dev/null
+++ b/checks/get-them
@@ -0,0 +1,137 @@
+#!/bin/sh
+# -*- AWK -*-
+# Extract all examples from the manual source.
+# Copyright (C) 1992, 2005-2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU M4.
+#
+# GNU M4 is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GNU M4 is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This script was designed under GNU awk, but hopefully portable to
+# other implementations.
+
+FILE=${1-/dev/null}
+: ${AWK=awk}
+
+$AWK '
+
+BEGIN {
+ node = "";
+ seq = -1;
+ count = 0;
+ file = "NONE";
+ status = 0;
+ options = "";
+ xout = "";
+ xerr = "";
+}
+
+/^@node / {
+ if (seq > 0)
+ printf(" -- %d file%s", seq, seq == 1 ? "" : "s");
+ if (seq >= 0)
+ printf("\n");
+
+ split($0, tmp, ",");
+ node = substr(tmp[1], 7);
+ if (length(node) > 10)
+ printf("Node: %s - truncated", node);
+ else
+ printf("Node: %s ", node);
+ gsub(" ", "_", node);
+ node = tolower(substr(node, 1, 10));
+ seq = 0;
+}
+
+/^@comment ignore$/ {
+ getline;
+ status = 0;
+ options = "";
+ xout = "";
+ xout = "";
+ next;
+}
+
+/^@comment status: / {
+ status = $3;
+}
+
+/^@comment options: / {
+ options = $0;
+ gsub ("@comment options:", "", options);
+}
+
+/^@comment xout: / {
+ xout = $0;
+ gsub ("@comment xout: ", "", xout);
+}
+
+/^@comment xerr: / {
+ xerr = $0;
+ gsub ("@comment xerr: ", "", xerr);
+}
+
+/^@example$/, /^@end example$/ {
+ if (seq < 0)
+ next;
+ if ($0 ~ /^@example$/) {
+ if (count > 0)
+ close (file);
+ seq++;
+ count++;
+ file = sprintf("%03d.%s", count, node);
+ printf("dnl @ %s:%d: Origin of test\n"\
+ "dnl @ expected status: %d\n"\
+ "dnl @ extra options: %s\n"\
+ "dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software\n"\
+ "dnl @ Foundation, Inc.\n"\
+ "dnl @ This file is free software; the Free Software Foundation\n"\
+ "dnl @ gives unlimited permission to copy and/or distribute it\n"\
+ "dnl @ with or without modifications, as long as this notice\n"\
+ "dnl @ is preserved.\n", FILENAME, NR, status, options) > file;
+ if (xout)
+ printf("dnl @ expected output: %s\n", xout) > file;
+ if (xerr)
+ printf("dnl @ expected error: %s\n", xerr) > file;
+ status = 0;
+ options = "";
+ xout = "";
+ xerr = "";
+ next;
+ }
+ if ($0 ~ /^@end example$/) {
+ next;
+ }
+ if ($0 ~ /^\^D$/)
+ next;
+ if ($0 ~ /^\$ @kbd/)
+ next;
+ if ($0 ~ /^@result\{\}/ || $0 ~ /^@error\{\}/)
+ prefix = "dnl ";
+ else
+ prefix = "";
+ gsub("@@", "@", $0);
+ gsub("@[{]", "{", $0);
+ gsub("@}", "}", $0);
+ gsub("@w[{] }", " ", $0);
+ gsub("@tabchar[{]}", "\t", $0);
+ printf("%s%s\n", prefix, $0) >> file;
+}
+
+END {
+ printf("\n");
+ if (count > 0)
+ close(file);
+}
+' $FILE
diff --git a/checks/stackovf.test b/checks/stackovf.test
new file mode 100755
index 0000000..8be673e
--- /dev/null
+++ b/checks/stackovf.test
@@ -0,0 +1,99 @@
+#!/bin/sh
+# This file is part of the GNU m4 testsuite
+# Copyright (C) 2000, 2003, 2007-2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU M4.
+#
+# GNU M4 is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GNU M4 is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Script to verify that stack overflow is diagnosed properly when
+# there is infinite macro call nesting, provided the OS supports it.
+
+m4="$1"
+
+# Skip this test if -L defaults to 1024 instead of 0, as that is our
+# indicator that the OS does not support stack overflow detection.
+("$m4" --help | grep 'nesting.*\[0\]') >/dev/null 2>&1 \
+ || {
+ echo "$0: skipping test, no stack overflow support detected in $m4"
+ exit 77
+ }
+
+# On some systems the ulimit command is available in ksh or bash but not sh
+(exec 2>/dev/null; ulimit -Ss 300) || {
+ for altshell in bash bsh ksh zsh ; do
+ if (exec >/dev/null 2>&1; $altshell -c 'ulimit -Ss 300') && test -z "$2"
+ then
+ echo "Using $altshell because it supports ulimit"
+ exec $altshell "$0" "$@" running-with-$altshell
+ exit 1
+ fi
+ done
+}
+
+tmpdir=
+trap 'st=$?; rm -rf "$tmpdir" && exit $st' 0
+trap '(exit $?); exit $?' 1 2 3 15
+
+# Create a temporary subdirectory $tmpdir in $TMPDIR (default /tmp).
+# Use mktemp if possible; otherwise fall back on mkdir,
+# with $RANDOM to make collisions less likely.
+: ${TMPDIR=/tmp}
+{
+ tmpdir=`
+ (umask 077 && mktemp -d "$TMPDIR/m4stk-XXXXXX") 2>/dev/null
+ ` &&
+ test -n "$tmpdir" && test -d "$tmpdir"
+} || {
+ tmpdir=$TMPDIR/m4stk-$$-$RANDOM
+ (umask 077 && mkdir "$tmpdir")
+} || exit $?
+tmpfile="$tmpdir"/m4.out
+
+# Limit the stack size if the shell we are running permits it
+if (exec 2>/dev/null; ulimit -Ss 300)
+then
+ ulimit -Ss 300
+ echo "Stack soft limit set to `ulimit -s`K";
+else
+ echo "Can't reset stack limit - this may take a while..."
+fi
+
+# Induce stack overflow.
+echo 'define(a,a(a))a' | "$m4" > "$tmpfile" 2>&1
+result=$?
+
+exitcode=1
+if test $result -eq 0 ; then
+ echo "Failure - $m4 did not abort"
+else
+ # See if stack overflow was diagnosed.
+ case `cat "$tmpfile"` in
+ *stack\ overflow*)
+ case `echo "$tmpdir"/*` in
+ $tmpfile)
+ echo "Pass"
+ exitcode=0 ;;
+ *) echo "Failure - $m4 created unexpected core dump"
+ ls -l "$tmpdir" ;;
+ esac ;;
+ *) echo "Failure - $m4 aborted unexpectedly";
+ ;;
+ esac
+fi
+
+test $exitcode = 0 ||
+ { echo "Output from $m4:"; cat $tmpfile; }
+
+exit $exitcode
diff --git a/checks/stamp-checks b/checks/stamp-checks
new file mode 100644
index 0000000..859afb1
--- /dev/null
+++ b/checks/stamp-checks
@@ -0,0 +1 @@
+stamp