diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-09-22 07:04:10 +0000 |
---|---|---|
committer | <> | 2015-02-02 12:02:31 +0000 |
commit | 23c11479b3ad787adc7a651ee0c4347839e47723 (patch) | |
tree | 3aa9e1125da84f7e3bd764bbff577c42a766508b /checks | |
download | m4-tarball-23c11479b3ad787adc7a651ee0c4347839e47723.tar.gz |
Diffstat (limited to 'checks')
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 |