--- /dev/null
+From c5ac5b73ace64323a75423e7c1b7b2a0be71a156 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 22 Sep 2007 20:49:42 +0800
+Subject: [PATCH] [SHELL] Restore foreground process group on exit
+
+On Thu, Jun 07, 2007 at 12:20:27PM +0200, Denis Vlasenko wrote:
+>
+> When I start dash under Midnight Commander and then type 'exit', dash
+> exits all right, but then MC is sent to background. It happens because
+> dash does not restore current process group on exit.
+>
+> Attached patch fixes this. It also fixes another bug: setjobctl(0)
+> must ignore tcsetpgrp errors, because there are cases when tty is
+> destroyed under dash.
+>
+> Patch is run-tested.
+
+I've fixed this slightly differently so that we don't need the
+xtcsetpgrp change.
+---
+ ChangeLog | 4 ++++
+ src/trap.c | 8 +++++++-
+ 2 files changed, 11 insertions(+), 1 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 6ce16c6..295fa66 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-21 Denis Vlasenko <vda.linux@googlemail.com>
++
++ * Restore foreground process group on exit.
++
+ 2007-07-12 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Release 0.5.4.
+diff --git a/src/trap.c b/src/trap.c
+index eae6186..c386db7 100644
+--- a/src/trap.c
++++ b/src/trap.c
+@@ -357,7 +357,7 @@ exitshell(void)
+ TRACE(("pid %d, exitshell(%d)\n", getpid(), status));
+ if (setjmp(loc.loc)) {
+ if (exception == EXEXIT)
+- _exit(exitstatus);
++ status = exitstatus;
+ goto out;
+ }
+ handler = &loc;
+@@ -367,6 +367,12 @@ exitshell(void)
+ }
+ flushall();
+ out:
++ /*
++ * Disable job control so that whoever had the foreground before we
++ * started can get it back.
++ */
++ if (likely(!setjmp(loc.loc)))
++ setjobctl(0);
+ _exit(status);
+ /* NOTREACHED */
+ }
+--
+1.5.5
+
+From 553f85288bb1cdacfa482f351af26cc924ccb386 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 22 Sep 2007 20:50:21 +0800
+Subject: [PATCH] [SHELL] Move flushall to the point just before _exit
+
+We need to flush at the very end in case we've generated any errors
+before that. The flushall call cannot perform a longjmp so it's
+safe there.
+---
+ ChangeLog | 4 ++++
+ src/trap.c | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 295fa66..ba974ca 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-22 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Move flushall to the point just before _exit.
++
+ 2007-09-21 Denis Vlasenko <vda.linux@googlemail.com>
+
+ * Restore foreground process group on exit.
+diff --git a/src/trap.c b/src/trap.c
+index c386db7..58cd0cc 100644
+--- a/src/trap.c
++++ b/src/trap.c
+@@ -365,7 +365,6 @@ exitshell(void)
+ trap[0] = NULL;
+ evalstring(p, 0);
+ }
+- flushall();
+ out:
+ /*
+ * Disable job control so that whoever had the foreground before we
+@@ -373,6 +372,7 @@ out:
+ */
+ if (likely(!setjmp(loc.loc)))
+ setjobctl(0);
++ flushall();
+ _exit(status);
+ /* NOTREACHED */
+ }
+--
+1.5.5
+
+From cd8b7aebb095f82a574b2863bd82f3333d215042 Mon Sep 17 00:00:00 2001
+From: Oleg Verych <olecom@flower.upol.cz>
+Date: Sat, 22 Sep 2007 21:08:32 +0800
+Subject: [PATCH] [BUILTIN] test: White space fixes
+
+Some trailing whitespace was killed or tabified.
+---
+ ChangeLog | 4 ++++
+ src/bltin/test.c | 14 +++++++-------
+ 2 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ba974ca..5804248 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-22 Oleg Verych <olecom@flower.upol.cz>
++
++ * White space fixes for test(1).
++
+ 2007-09-22 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Move flushall to the point just before _exit.
+diff --git a/src/bltin/test.c b/src/bltin/test.c
+index f16c819..fd24fae 100644
+--- a/src/bltin/test.c
++++ b/src/bltin/test.c
+@@ -250,7 +250,7 @@ primary(enum token n)
+
+ if (t_lex(t_wp[1]), t_wp_op && t_wp_op->op_type == BINOP) {
+ return binop();
+- }
++ }
+
+ return strlen(*t_wp) > 0;
+ }
+@@ -267,7 +267,7 @@ binop(void)
+
+ if ((opnd2 = *++t_wp) == (char *)0)
+ syntax(op->op_text, "argument expected");
+-
++
+ switch (op->op_num) {
+ default:
+ #ifdef DEBUG
+@@ -389,8 +389,8 @@ isoperand(void)
+ return 0;
+ while (op->op_text) {
+ if (strcmp(s, op->op_text) == 0)
+- return op->op_type == BINOP &&
+- (t[0] != ')' || t[1] != '\0');
++ return op->op_type == BINOP &&
++ (t[0] != ')' || t[1] != '\0');
+ op++;
+ }
+ return 0;
+@@ -407,13 +407,13 @@ getn(const char *s)
+ r = strtol(s, &p, 10);
+
+ if (errno != 0)
+- error("%s: out of range", s);
++ error("%s: out of range", s);
+
+ while (isspace((unsigned char)*p))
+ p++;
+-
++
+ if (*p)
+- error("%s: bad number", s);
++ error("%s: bad number", s);
+
+ return (int) r;
+ }
+--
+1.5.5
+
+From cd212af1d362b0466f1f2767252424446c0fbaa5 Mon Sep 17 00:00:00 2001
+From: Oleg Verych <olecom@flower.upol.cz>
+Date: Sat, 22 Sep 2007 21:19:37 +0800
+Subject: [PATCH] [BUILTIN] test: little size and speed optimizations
+
+* Speed up (libc=glibc):
+
+deen:debian/src/dash-0.5.3# echo $(((7853+8631+7529+9777+9161+7552)/6))
+8417,8250 # this patch
+deen:/mnt/work/debian/src/dash-0.5.3# echo $(((9553+7789+9450+9925+7595+9590)/6))
+8983 # short
+deen:debian/src/dash-0.5.3# echo $(( (9655+7853+9733+7826+9618+10053)/6 ))
+9123 # '[' ']'
+deen:debian/src/dash-0.5.3#
+
+deen:debian/src/dash-0.5.3# echo $(((9231+9423+9365+9650+8883+8291)/6))
+9140 # unpatched
+deen:debian/src/dash-0.5.3#
+
+* Size down:
+
+olecom@deen:/mnt/debian/src/dash-0.5.3$ size src/test.o # this patchset
+ text data bss dec hex filename
+ 4142 0 16 4158 103e src/test.o
+
+olecom@deen:/mnt/debian/src/dash-0.5.3$ size src/test.o
+ text data bss dec hex filename
+ 4209 0 16 4225 1081 src/test.o
+olecom@deen:/mnt/debian/src/dash-0.5.3$
+---
+ ChangeLog | 1 +
+ src/bltin/test.c | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 5804248..b22197f 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-09-22 Oleg Verych <olecom@flower.upol.cz>
+
+ * White space fixes for test(1).
++ * Use direct comparison instead of strcmp in test(1).
+
+ 2007-09-22 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/bltin/test.c b/src/bltin/test.c
+index fd24fae..7d49569 100644
+--- a/src/bltin/test.c
++++ b/src/bltin/test.c
+@@ -157,8 +157,8 @@ testcmd(int argc, char **argv)
+ {
+ int res;
+
+- if (strcmp(argv[0], "[") == 0) {
+- if (strcmp(argv[--argc], "]"))
++ if (*argv[0] == '[') {
++ if (*argv[--argc] != ']')
+ error("missing ]");
+ argv[argc] = NULL;
+ }
+--
+1.5.5
+
+From 9b568fedfdc4ec56e52ded4c3a1a135d24c8d75b Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 24 Sep 2007 16:17:20 +0800
+Subject: [PATCH] [EXPAND] Do not quote back slashes in parameter expansions outside quotes
+
+Test case:
+
+ a=/b/c/*
+ b=\\
+ echo ${a%$b*}
+
+Old result:
+
+ /b/c/*
+
+New result:
+
+ /b/c/
+---
+ ChangeLog | 4 ++++
+ src/expand.c | 5 ++---
+ src/mksyntax.c | 5 +++--
+ src/parser.c | 4 +++-
+ 4 files changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index b22197f..dca08d5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-24 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Do not quote back slashes in parameter expansions outside quotes.
++
+ 2007-09-22 Oleg Verych <olecom@flower.upol.cz>
+
+ * White space fixes for test(1).
+diff --git a/src/expand.c b/src/expand.c
+index db67c7c..3956112 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -895,7 +895,7 @@ memtodest(const char *p, size_t len, const char *syntax, int quotes) {
+ int c = (signed char)*p++;
+ if (c) {
+ if ((quotes & QUOTES_ESC) &&
+- (syntax[c] == CCTL || syntax[c] == CBACK))
++ (syntax[c] == CCTL || syntax[c] == CDBACK))
+ USTPUTC(CTLESC, q);
+ } else if (!(quotes & QUOTES_KEEPNUL))
+ continue;
+@@ -1671,9 +1671,8 @@ _rmescapes(char *str, int flag)
+ }
+ if (*p == (char)CTLESC) {
+ p++;
+- if (notescaped && inquotes && *p != '/') {
++ if (notescaped && inquotes)
+ *q++ = '\\';
+- }
+ }
+ notescaped = globbing;
+ copy:
+diff --git a/src/mksyntax.c b/src/mksyntax.c
+index 7a8a9ae..9ecbb45 100644
+--- a/src/mksyntax.c
++++ b/src/mksyntax.c
+@@ -53,6 +53,7 @@ struct synclass synclass[] = {
+ { "CWORD", "character is nothing special" },
+ { "CNL", "newline character" },
+ { "CBACK", "a backslash character" },
++ { "CDBACK", "a backslash character in double quotes" },
+ { "CSQUOTE", "single quote" },
+ { "CDQUOTE", "double quote" },
+ { "CENDQUOTE", "a terminating quote" },
+@@ -175,7 +176,7 @@ main(int argc, char **argv)
+ init();
+ fputs("\n/* syntax table used when in double quotes */\n", cfile);
+ add("\n", "CNL");
+- add("\\", "CBACK");
++ add("\\", "CDBACK");
+ add("\"", "CENDQUOTE");
+ add("`", "CBQUOTE");
+ add("$", "CVAR");
+@@ -193,7 +194,7 @@ main(int argc, char **argv)
+ init();
+ fputs("\n/* syntax table used when in arithmetic */\n", cfile);
+ add("\n", "CNL");
+- add("\\", "CBACK");
++ add("\\", "CDBACK");
+ add("`", "CBQUOTE");
+ add("$", "CVAR");
+ add("}", "CENDVAR");
+diff --git a/src/parser.c b/src/parser.c
+index 6faff17..279d49e 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -891,7 +891,9 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs)
+ USTPUTC(CTLESC, out);
+ USTPUTC(c, out);
+ break;
+- case CBACK: /* backslash */
++ /* backslash */
++ case CBACK:
++ case CDBACK:
+ c = pgetc2();
+ if (c == PEOF) {
+ USTPUTC(CTLESC, out);
+--
+1.5.5
+
+From 82c20d9ca645ea33cbc500ad3da3b1c8d430322d Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 24 Sep 2007 16:22:25 +0800
+Subject: [PATCH] [EXPAND] Perform tilde expansion in all parameter expansion words
+
+Previously tilde expansion was not carried out for =?#% expansion words.
+This is contrary to the POSIX specification.
+
+Test case:
+
+ a=~root:~root
+ echo ${a#~root}
+
+Old result:
+
+ /root:/root
+
+New result:
+
+ :/root
+---
+ ChangeLog | 1 +
+ src/expand.c | 3 ++-
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index dca08d5..816f56d 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-09-24 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Do not quote back slashes in parameter expansions outside quotes.
++ * Perform tilde expansion in all parameter expansion words.
+
+ 2007-09-22 Oleg Verych <olecom@flower.upol.cz>
+
+diff --git a/src/expand.c b/src/expand.c
+index 3956112..1443c14 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -683,7 +683,8 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla
+ char *(*scan)(char *, char *, char *, char *, int , int);
+
+ herefd = -1;
+- argstr(p, subtype != VSASSIGN && subtype != VSQUESTION ? EXP_CASE : 0);
++ argstr(p, EXP_TILDE | (subtype != VSASSIGN && subtype != VSQUESTION ?
++ EXP_CASE : 0));
+ STPUTC('\0', expdest);
+ herefd = saveherefd;
+ argbackq = saveargbackq;
+--
+1.5.5
+
+From 08ee0731cd65a502f34718c2ac11c266daeb4c5b Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 24 Sep 2007 21:53:49 +0800
+Subject: [PATCH] [PARSER] Remove superfluous arinest test in CENDQUOTE
+
+If arinest is set then the syntax must be ARISYNTAX. As such CENDQUOTE can
+never occur while arinest is set so we don't need to test for it.
+---
+ ChangeLog | 1 +
+ src/parser.c | 5 ++---
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 816f56d..0a35741 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -2,6 +2,7 @@
+
+ * Do not quote back slashes in parameter expansions outside quotes.
+ * Perform tilde expansion in all parameter expansion words.
++ * Remove superfluous arinest test in CENDQUOTE.
+
+ 2007-09-22 Oleg Verych <olecom@flower.upol.cz>
+
+diff --git a/src/parser.c b/src/parser.c
+index 279d49e..26c9046 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -932,10 +932,9 @@ quotemark:
+ dblquote = 1;
+ goto quotemark;
+ case CENDQUOTE:
+- if (eofmark != NULL && arinest == 0 &&
+- varnest == 0) {
++ if (eofmark && !varnest)
+ USTPUTC(c, out);
+- } else {
++ else {
+ if (dqvarnest == 0) {
+ syntax = BASESYNTAX;
+ dblquote = 0;
+--
+1.5.5
+
+From ede60fbf86edd87449585781df10e091ec420a1f Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 24 Sep 2007 21:59:39 +0800
+Subject: [PATCH] [PARSER] Remove superfluous arinest test for dqvarnest
+
+dqvarnest is only used to determine whether CENDQUOTE should terminate the
+double-quote syntax. Since CENDQUOTE can never occur while arinest is set,
+we don't need to take arinest into account for dqvarnest.
+---
+ ChangeLog | 1 +
+ src/parser.c | 3 +--
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 0a35741..b311ad4 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -3,6 +3,7 @@
+ * Do not quote back slashes in parameter expansions outside quotes.
+ * Perform tilde expansion in all parameter expansion words.
+ * Remove superfluous arinest test in CENDQUOTE.
++ * Remove superfluous arinest test for dqvarnest.
+
+ 2007-09-22 Oleg Verych <olecom@flower.upol.cz>
+
+diff --git a/src/parser.c b/src/parser.c
+index 26c9046..8fac57a 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1232,9 +1232,8 @@ badsub: synerror("Bad substitution");
+ *((char *)stackblock() + typeloc) = subtype | flags;
+ if (subtype != VSNORMAL) {
+ varnest++;
+- if (dblquote || arinest) {
++ if (dblquote)
+ dqvarnest++;
+- }
+ }
+ }
+ goto parsesub_return;
+--
+1.5.5
+
+From b428e83766c7b9d0cb887f0dd582272c5e85a536 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 24 Sep 2007 22:11:59 +0800
+Subject: [PATCH] [PARSER] Remove superfluous dblquote settings when ending arith
+
+When an arithmetic expansion terminates and we restore the syntax to the
+previous one, we don't need to set dblquote because we never changed upon
+entering the arithmetic expansion.
+---
+ ChangeLog | 1 +
+ src/parser.c | 4 ----
+ 2 files changed, 1 insertions(+), 4 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index b311ad4..e5987f9 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -4,6 +4,7 @@
+ * Perform tilde expansion in all parameter expansion words.
+ * Remove superfluous arinest test in CENDQUOTE.
+ * Remove superfluous arinest test for dqvarnest.
++ * Remove superfluous dblquote settings when ending arith.
+
+ 2007-09-22 Oleg Verych <olecom@flower.upol.cz>
+
+diff --git a/src/parser.c b/src/parser.c
+index 8fac57a..791251d 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -970,10 +970,6 @@ quotemark:
+ if (--arinest == 0) {
+ USTPUTC(CTLENDARI, out);
+ syntax = prevsyntax;
+- if (syntax == DQSYNTAX)
+- dblquote = 1;
+- else
+- dblquote = 0;
+ } else
+ USTPUTC(')', out);
+ } else {
+--
+1.5.5
+
+From f28b0328dda170028c3070c69ef38cdd8d269932 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 24 Sep 2007 22:28:49 +0800
+Subject: [PATCH] [PARSER] Remove arithmetic expansion collapsing at parse time
+
+Collapsing arithmethc expansion is incorrect when the inner arithmetic
+expansion is a part of a parameter expansion.
+
+Test case:
+
+ unset a
+ echo $((3 + ${a:=$((4 + 5))}))
+ echo $a
+
+Old result:
+
+ (4 + 5)
+
+New result:
+
+ 9
+---
+ ChangeLog | 1 +
+ src/parser.c | 22 +++++++---------------
+ 2 files changed, 8 insertions(+), 15 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index e5987f9..7992485 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -5,6 +5,7 @@
+ * Remove superfluous arinest test in CENDQUOTE.
+ * Remove superfluous arinest test for dqvarnest.
+ * Remove superfluous dblquote settings when ending arith.
++ * Remove arithmetic expansion collapsing at parse time.
+
+ 2007-09-22 Oleg Verych <olecom@flower.upol.cz>
+
+diff --git a/src/parser.c b/src/parser.c
+index 791251d..e00fd4b 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -967,11 +967,9 @@ quotemark:
+ --parenlevel;
+ } else {
+ if (pgetc() == ')') {
+- if (--arinest == 0) {
+- USTPUTC(CTLENDARI, out);
++ USTPUTC(CTLENDARI, out);
++ if (!--arinest)
+ syntax = prevsyntax;
+- } else
+- USTPUTC(')', out);
+ } else {
+ /*
+ * unbalanced parens
+@@ -1373,18 +1371,12 @@ parsearith: {
+ if (++arinest == 1) {
+ prevsyntax = syntax;
+ syntax = ARISYNTAX;
+- USTPUTC(CTLARI, out);
+- if (dblquote)
+- USTPUTC('"',out);
+- else
+- USTPUTC(' ',out);
+- } else {
+- /*
+- * we collapse embedded arithmetic expansion to
+- * parenthesis, which should be equivalent
+- */
+- USTPUTC('(', out);
+ }
++ USTPUTC(CTLARI, out);
++ if (dblquote)
++ USTPUTC('"',out);
++ else
++ USTPUTC(' ',out);
+ goto parsearith_return;
+ }
+
+--
+1.5.5
+
+From 7e9ee068665eda9591126d3015badf92d7d593f7 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Tue, 25 Sep 2007 10:54:13 +0800
+Subject: [PATCH] [EXPAND] Do not expand tilde in parameter expansion within quotes
+
+Previously code was added so that tilde expansion was carried out
+parameter expansions within double quotes. This change was made
+with reference the behaviour of bash at the time. Bash has since
+be fixed so that this behaviour no longer occurs which is in line
+with most other POSIX shells.
+
+So this patch removes that behaviour in dash as well.
+
+Test case:
+
+ unset a
+ echo "${a:-~root}"
+
+Old result:
+
+ /root
+
+New result:
+
+ ~root
+---
+ ChangeLog | 4 ++++
+ src/expand.c | 10 +++-------
+ src/expand.h | 2 +-
+ 3 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 7992485..dacc9b3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-25 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Do not expand tilde in parameter expansion within quotes.
++
+ 2007-09-24 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Do not quote back slashes in parameter expansions outside quotes.
+diff --git a/src/expand.c b/src/expand.c
+index 1443c14..c9f09ff 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -278,7 +278,7 @@ argstr(char *p, int flag)
+ const char *reject = spclchars;
+ int c;
+ int quotes = flag & QUOTES_ESC;
+- int breakall = flag & EXP_WORD;
++ int breakall = (flag & (EXP_WORD | EXP_QUOTED)) == EXP_WORD;
+ int inquotes;
+ size_t length;
+ int startloc;
+@@ -296,8 +296,6 @@ argstr(char *p, int flag)
+ flag &= ~EXP_TILDE;
+ tilde:
+ q = p;
+- if (*q == (char)CTLESC && (flag & EXP_QWORD))
+- q++;
+ if (*q == '~')
+ p = exptilde(p, q, flag);
+ }
+@@ -780,10 +778,8 @@ again:
+ if (subtype == VSMINUS) {
+ vsplus:
+ if (varlen < 0) {
+- argstr(
+- p, flag | EXP_TILDE |
+- (quoted ? EXP_QWORD : EXP_WORD)
+- );
++ argstr(p, flag | EXP_TILDE | EXP_WORD |
++ (quoted ? EXP_QUOTED : 0));
+ goto end;
+ }
+ if (easy)
+diff --git a/src/expand.h b/src/expand.h
+index 6b7d607..be7ec6f 100644
+--- a/src/expand.h
++++ b/src/expand.h
+@@ -56,7 +56,7 @@ struct arglist {
+ #define EXP_RECORD 0x20 /* need to record arguments for ifs breakup */
+ #define EXP_VARTILDE2 0x40 /* expand tildes after colons only */
+ #define EXP_WORD 0x80 /* expand word in parameter expansion */
+-#define EXP_QWORD 0x100 /* expand word in quoted parameter expansion */
++#define EXP_QUOTED 0x100 /* expand word in double quotes */
+
+
+ union node;
+--
+1.5.5
+
+From 9ba0b212900e642649b4ad354a00de763bf8303f Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Tue, 25 Sep 2007 22:29:00 +0800
+Subject: [PATCH] [EXPAND] Move parse-time quote flag detection to run-time
+
+Because the parser does not recursively parse parameter expansion with respect
+to quotes, we can't accurately determine quote status at parse time. This
+patch works around this by moving the quote detection to run-time where we
+do interpret it recursively.
+
+Test case:
+
+ foo=\\
+ echo "<${foo#[\\]}>"
+
+Old result:
+
+ <\>
+
+New result:
+
+ <>
+---
+ ChangeLog | 1 +
+ src/eval.c | 2 +-
+ src/expand.c | 110 +++++++++++++++++++++++++------------------------------
+ src/expand.h | 2 +-
+ src/jobs.c | 10 +-----
+ src/mystring.c | 3 +-
+ src/mystring.h | 2 +-
+ src/parser.c | 17 ++-------
+ src/parser.h | 3 --
+ src/show.c | 3 --
+ 10 files changed, 60 insertions(+), 93 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index dacc9b3..d5c51bf 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-09-25 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Do not expand tilde in parameter expansion within quotes.
++ * Move parse-time quote flag detection to run-time.
+
+ 2007-09-24 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/eval.c b/src/eval.c
+index fed82d5..2aa8317 100644
+--- a/src/eval.c
++++ b/src/eval.c
+@@ -377,7 +377,7 @@ evalfor(union node *n, int flags)
+ setstackmark(&smark);
+ arglist.lastp = &arglist.list;
+ for (argp = n->nfor.args ; argp ; argp = argp->narg.next) {
+- expandarg(argp, &arglist, EXP_FULL | EXP_TILDE | EXP_RECORD);
++ expandarg(argp, &arglist, EXP_FULL | EXP_TILDE);
+ /* XXX */
+ if (evalskip)
+ goto out;
+diff --git a/src/expand.c b/src/expand.c
+index c9f09ff..8c6c7f9 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -82,12 +82,11 @@
+ */
+ #define RMESCAPE_ALLOC 0x1 /* Allocate a new string */
+ #define RMESCAPE_GLOB 0x2 /* Add backslashes for glob */
+-#define RMESCAPE_QUOTED 0x4 /* Remove CTLESC unless in quotes */
+ #define RMESCAPE_GROW 0x8 /* Grow strings instead of stalloc */
+ #define RMESCAPE_HEAP 0x10 /* Malloc strings instead of stalloc */
+
+ /* Add CTLESC when necessary. */
+-#define QUOTES_ESC (EXP_FULL | EXP_CASE)
++#define QUOTES_ESC (EXP_FULL | EXP_CASE | EXP_QPAT)
+ /* Do not skip NUL characters. */
+ #define QUOTES_KEEPNUL EXP_TILDE
+
+@@ -116,7 +115,7 @@ static struct arglist exparg;
+
+ STATIC void argstr(char *, int);
+ STATIC char *exptilde(char *, char *, int);
+-STATIC void expbackq(union node *, int, int);
++STATIC void expbackq(union node *, int);
+ STATIC const char *subevalvar(char *, char *, int, int, int, int, int);
+ STATIC char *evalvar(char *, int);
+ STATIC size_t strtodest(const char *, const char *, int);
+@@ -158,11 +157,8 @@ STATIC void varunset(const char *, const char *, const char *, int)
+ */
+
+ STATIC inline char *
+-preglob(const char *pattern, int quoted, int flag) {
++preglob(const char *pattern, int flag) {
+ flag |= RMESCAPE_GLOB;
+- if (quoted) {
+- flag |= RMESCAPE_QUOTED;
+- }
+ return _rmescapes((char *)pattern, flag);
+ }
+
+@@ -197,7 +193,7 @@ void
+ expandhere(union node *arg, int fd)
+ {
+ herefd = fd;
+- expandarg(arg, (struct arglist *)NULL, 0);
++ expandarg(arg, (struct arglist *)NULL, EXP_QUOTED);
+ xwrite(fd, stackblock(), expdest - (char *)stackblock());
+ }
+
+@@ -271,13 +267,11 @@ argstr(char *p, int flag)
+ CTLESC,
+ CTLVAR,
+ CTLBACKQ,
+- CTLBACKQ | CTLQUOTE,
+ CTLENDARI,
+ 0
+ };
+ const char *reject = spclchars;
+ int c;
+- int quotes = flag & QUOTES_ESC;
+ int breakall = (flag & (EXP_WORD | EXP_QUOTED)) == EXP_WORD;
+ int inquotes;
+ size_t length;
+@@ -346,21 +340,15 @@ start:
+ case CTLENDVAR: /* ??? */
+ goto breakloop;
+ case CTLQUOTEMARK:
++ inquotes ^= EXP_QUOTED;
+ /* "$@" syntax adherence hack */
+- if (
+- !inquotes &&
+- !memcmp(p, dolatstr, DOLATSTRLEN) &&
+- (p[4] == (char)CTLQUOTEMARK || (
+- p[4] == (char)CTLENDVAR &&
+- p[5] == (char)CTLQUOTEMARK
+- ))
+- ) {
+- p = evalvar(p + 1, flag) + 1;
++ if (inquotes && !memcmp(p, dolatstr + 1,
++ DOLATSTRLEN - 1)) {
++ p = evalvar(p + 1, flag | inquotes) + 1;
+ goto start;
+ }
+- inquotes = !inquotes;
+ addquote:
+- if (quotes) {
++ if (flag & QUOTES_ESC) {
+ p--;
+ length++;
+ startloc++;
+@@ -369,19 +357,27 @@ addquote:
+ case CTLESC:
+ startloc++;
+ length++;
++
++ /*
++ * Quoted parameter expansion pattern: remove quote
++ * unless inside inner quotes or we have a literal
++ * backslash.
++ */
++ if (((flag | inquotes) & (EXP_QPAT | EXP_QUOTED)) ==
++ EXP_QPAT && *p != '\\')
++ break;
++
+ goto addquote;
+ case CTLVAR:
+- p = evalvar(p, flag);
++ p = evalvar(p, flag | inquotes);
+ goto start;
+ case CTLBACKQ:
+- c = 0;
+- case CTLBACKQ|CTLQUOTE:
+- expbackq(argbackq->n, c, quotes);
++ expbackq(argbackq->n, flag | inquotes);
+ argbackq = argbackq->next;
+ goto start;
+ case CTLENDARI:
+ p--;
+- expari(quotes);
++ expari(flag | inquotes);
+ goto start;
+ }
+ }
+@@ -480,11 +476,10 @@ removerecordregions(int endoff)
+ * evaluate, place result in (backed up) result, adjust string position.
+ */
+ void
+-expari(int quotes)
++expari(int flag)
+ {
+ char *p, *start;
+ int begoff;
+- int flag;
+ int len;
+
+ /* ifsfree(); */
+@@ -522,16 +517,14 @@ expari(int quotes)
+
+ removerecordregions(begoff);
+
+- flag = p[1];
+-
+ expdest = p;
+
+- if (quotes)
+- rmescapes(p + 2);
++ if (flag & QUOTES_ESC)
++ rmescapes(p + 1);
+
+- len = cvtnum(arith(p + 2));
++ len = cvtnum(arith(p + 1));
+
+- if (flag != '"')
++ if (!(flag & EXP_QUOTED))
+ recordregion(begoff, begoff + len, 0);
+ }
+
+@@ -541,7 +534,7 @@ expari(int quotes)
+ */
+
+ STATIC void
+-expbackq(union node *cmd, int quoted, int quotes)
++expbackq(union node *cmd, int flag)
+ {
+ struct backcmd in;
+ int i;
+@@ -549,7 +542,7 @@ expbackq(union node *cmd, int quoted, int quotes)
+ char *p;
+ char *dest;
+ int startloc;
+- char const *syntax = quoted? DQSYNTAX : BASESYNTAX;
++ char const *syntax = flag & EXP_QUOTED ? DQSYNTAX : BASESYNTAX;
+ struct stackmark smark;
+
+ INTOFF;
+@@ -565,7 +558,7 @@ expbackq(union node *cmd, int quoted, int quotes)
+ if (i == 0)
+ goto read;
+ for (;;) {
+- memtodest(p, i, syntax, quotes);
++ memtodest(p, i, syntax, flag & QUOTES_ESC);
+ read:
+ if (in.fd < 0)
+ break;
+@@ -592,7 +585,7 @@ read:
+ STUNPUTC(dest);
+ expdest = dest;
+
+- if (quoted == 0)
++ if (!(flag & EXP_QUOTED))
+ recordregion(startloc, dest - (char *)stackblock(), 0);
+ TRACE(("evalbackq: size=%d: \"%.*s\"\n",
+ (dest - (char *)stackblock()) - startloc,
+@@ -669,8 +662,9 @@ scanright(
+ }
+
+ STATIC const char *
+-subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varflags, int quotes)
++subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varflags, int flag)
+ {
++ int quotes = flag & QUOTES_ESC;
+ char *startp;
+ char *loc;
+ int saveherefd = herefd;
+@@ -682,7 +676,7 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla
+
+ herefd = -1;
+ argstr(p, EXP_TILDE | (subtype != VSASSIGN && subtype != VSQUESTION ?
+- EXP_CASE : 0));
++ (flag & EXP_QUOTED ? EXP_QPAT : EXP_CASE) : 0));
+ STPUTC('\0', expdest);
+ herefd = saveherefd;
+ argbackq = saveargbackq;
+@@ -717,7 +711,7 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla
+ }
+ rmescend--;
+ str = stackblock() + strloc;
+- preglob(str, varflags & VSQUOTE, 0);
++ preglob(str, 0);
+
+ /* zero = subtype == VSTRIMLEFT || subtype == VSTRIMLEFTMAX */
+ zero = subtype >> 1;
+@@ -753,13 +747,11 @@ evalvar(char *p, int flag)
+ int startloc;
+ ssize_t varlen;
+ int easy;
+- int quotes;
+ int quoted;
+
+- quotes = flag & QUOTES_ESC;
+ varflags = *p++;
+ subtype = varflags & VSTYPE;
+- quoted = varflags & VSQUOTE;
++ quoted = flag & EXP_QUOTED;
+ var = p;
+ easy = (!quoted || (*var == '@' && shellparam.nparam));
+ startloc = expdest - (char *)stackblock();
+@@ -778,8 +770,7 @@ again:
+ if (subtype == VSMINUS) {
+ vsplus:
+ if (varlen < 0) {
+- argstr(p, flag | EXP_TILDE | EXP_WORD |
+- (quoted ? EXP_QUOTED : 0));
++ argstr(p, flag | EXP_TILDE | EXP_WORD);
+ goto end;
+ }
+ if (easy)
+@@ -790,7 +781,7 @@ vsplus:
+ if (subtype == VSASSIGN || subtype == VSQUESTION) {
+ if (varlen < 0) {
+ if (subevalvar(p, var, 0, subtype, startloc,
+- varflags, 0)) {
++ varflags, flag & ~QUOTES_ESC)) {
+ varflags &= ~VSNUL;
+ /*
+ * Remove any recorded regions beyond
+@@ -842,7 +833,7 @@ record:
+ STPUTC('\0', expdest);
+ patloc = expdest - (char *)stackblock();
+ if (subevalvar(p, NULL, patloc, subtype,
+- startloc, varflags, quotes) == 0) {
++ startloc, varflags, flag) == 0) {
+ int amount = expdest - (
+ (char *)stackblock() + patloc - 1
+ );
+@@ -859,7 +850,7 @@ end:
+ for (;;) {
+ if ((c = (signed char)*p++) == CTLESC)
+ p++;
+- else if (c == CTLBACKQ || c == (CTLBACKQ|CTLQUOTE)) {
++ else if (c == CTLBACKQ) {
+ if (varlen >= 0)
+ argbackq = argbackq->next;
+ } else if (c == CTLVAR) {
+@@ -930,7 +921,7 @@ varvalue(char *name, int varflags, int flags)
+ char sepc;
+ char **ap;
+ char const *syntax;
+- int quoted = varflags & VSQUOTE;
++ int quoted = flags & EXP_QUOTED;
+ int subtype = varflags & VSTYPE;
+ int discard = subtype == VSPLUS || subtype == VSLENGTH;
+ int quotes = (discard ? 0 : (flags & QUOTES_ESC)) | QUOTES_KEEPNUL;
+@@ -1175,7 +1166,7 @@ expandmeta(str, flag)
+ if (fflag)
+ goto nometa;
+ INTOFF;
+- p = preglob(str->text, 0, RMESCAPE_ALLOC | RMESCAPE_HEAP);
++ p = preglob(str->text, RMESCAPE_ALLOC | RMESCAPE_HEAP);
+ i = glob(p, GLOB_NOMAGIC, 0, &pglob);
+ if (p != str->text)
+ ckfree(p);
+@@ -1244,7 +1235,7 @@ expandmeta(struct strlist *str, int flag)
+ savelastp = exparg.lastp;
+
+ INTOFF;
+- p = preglob(str->text, 0, RMESCAPE_ALLOC | RMESCAPE_HEAP);
++ p = preglob(str->text, RMESCAPE_ALLOC | RMESCAPE_HEAP);
+ {
+ int i = strlen(str->text);
+ expdir = ckmalloc(i < 2048 ? 2048 : i); /* XXX */
+@@ -1475,7 +1466,7 @@ msort(struct strlist *list, int len)
+ STATIC inline int
+ patmatch(char *pattern, const char *string)
+ {
+- return pmatch(preglob(pattern, 0, 0), string);
++ return pmatch(preglob(pattern, 0), string);
+ }
+
+
+@@ -1651,7 +1642,7 @@ _rmescapes(char *str, int flag)
+ q = mempcpy(q, str, len);
+ }
+ }
+- inquotes = (flag & RMESCAPE_QUOTED) ^ RMESCAPE_QUOTED;
++ inquotes = 0;
+ globbing = flag & RMESCAPE_GLOB;
+ notescaped = globbing;
+ while (*p) {
+@@ -1661,15 +1652,14 @@ _rmescapes(char *str, int flag)
+ notescaped = globbing;
+ continue;
+ }
+- if (*p == '\\') {
+- /* naked back slash */
+- notescaped = 0;
+- goto copy;
+- }
+ if (*p == (char)CTLESC) {
+ p++;
+- if (notescaped && inquotes)
++ if (notescaped)
+ *q++ = '\\';
++ } else if (*p == '\\' && !inquotes) {
++ /* naked back slash */
++ notescaped = 0;
++ goto copy;
+ }
+ notescaped = globbing;
+ copy:
+diff --git a/src/expand.h b/src/expand.h
+index be7ec6f..4dfbc43 100644
+--- a/src/expand.h
++++ b/src/expand.h
+@@ -53,7 +53,7 @@ struct arglist {
+ #define EXP_VARTILDE 0x4 /* expand tildes in an assignment */
+ #define EXP_REDIR 0x8 /* file glob for a redirection (1 match only) */
+ #define EXP_CASE 0x10 /* keeps quotes around for CASE pattern */
+-#define EXP_RECORD 0x20 /* need to record arguments for ifs breakup */
++#define EXP_QPAT 0x20 /* pattern in quoted parameter expansion */
+ #define EXP_VARTILDE2 0x40 /* expand tildes after colons only */
+ #define EXP_WORD 0x80 /* expand word in parameter expansion */
+ #define EXP_QUOTED 0x100 /* expand word in double quotes */
+diff --git a/src/jobs.c b/src/jobs.c
+index 7285d0d..529d615 100644
+--- a/src/jobs.c
++++ b/src/jobs.c
+@@ -1377,12 +1377,7 @@ cmdputs(const char *s)
+ str = "${#";
+ else
+ str = "${";
+- if (!(subtype & VSQUOTE) != !(quoted & 1)) {
+- quoted ^= 1;
+- c = '"';
+- } else
+- goto dostr;
+- break;
++ goto dostr;
+ case CTLENDVAR:
+ str = "\"}" + !(quoted & 1);
+ quoted >>= 1;
+@@ -1391,9 +1386,6 @@ cmdputs(const char *s)
+ case CTLBACKQ:
+ str = "$(...)";
+ goto dostr;
+- case CTLBACKQ+CTLQUOTE:
+- str = "\"$(...)\"";
+- goto dostr;
+ case CTLARI:
+ str = "$((";
+ goto dostr;
+diff --git a/src/mystring.c b/src/mystring.c
+index 49201a9..7d937a8 100644
+--- a/src/mystring.c
++++ b/src/mystring.c
+@@ -55,7 +55,8 @@
+ char nullstr[1]; /* zero length string */
+ const char spcstr[] = " ";
+ const char snlfmt[] = "%s\n";
+-const char dolatstr[] = { CTLVAR, VSNORMAL|VSQUOTE, '@', '=', '\0' };
++const char dolatstr[] = { CTLQUOTEMARK, CTLVAR, VSNORMAL, '@', '=',
++ CTLQUOTEMARK, '\0' };
+ const char illnum[] = "Illegal number: %s";
+ const char homestr[] = "HOME";
+
+diff --git a/src/mystring.h b/src/mystring.h
+index 44fd7e4..f451cc2 100644
+--- a/src/mystring.h
++++ b/src/mystring.h
+@@ -39,7 +39,7 @@
+ extern const char snlfmt[];
+ extern const char spcstr[];
+ extern const char dolatstr[];
+-#define DOLATSTRLEN 4
++#define DOLATSTRLEN 6
+ extern const char illnum[];
+ extern const char homestr[];
+
+diff --git a/src/parser.c b/src/parser.c
+index e00fd4b..1a483d4 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -911,11 +911,9 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs)
+ eofmark != NULL
+ )
+ ) {
+- USTPUTC(CTLESC, out);
+ USTPUTC('\\', out);
+ }
+- if (SQSYNTAX[c] == CCTL)
+- USTPUTC(CTLESC, out);
++ USTPUTC(CTLESC, out);
+ USTPUTC(c, out);
+ quotef++;
+ }
+@@ -1221,8 +1219,6 @@ badsub: synerror("Bad substitution");
+ } else {
+ pungetc();
+ }
+- if (dblquote || arinest)
+- flags |= VSQUOTE;
+ *((char *)stackblock() + typeloc) = subtype | flags;
+ if (subtype != VSNORMAL) {
+ varnest++;
+@@ -1353,10 +1349,7 @@ done:
+ memcpy(out, str, savelen);
+ STADJUST(savelen, out);
+ }
+- if (arinest || dblquote)
+- USTPUTC(CTLBACKQ | CTLQUOTE, out);
+- else
+- USTPUTC(CTLBACKQ, out);
++ USTPUTC(CTLBACKQ, out);
+ if (oldstyle)
+ goto parsebackq_oldreturn;
+ else
+@@ -1373,10 +1366,6 @@ parsearith: {
+ syntax = ARISYNTAX;
+ }
+ USTPUTC(CTLARI, out);
+- if (dblquote)
+- USTPUTC('"',out);
+- else
+- USTPUTC(' ',out);
+ goto parsearith_return;
+ }
+
+@@ -1503,7 +1492,7 @@ expandstr(const char *ps)
+ n.narg.text = wordtext;
+ n.narg.backquote = backquotelist;
+
+- expandarg(&n, NULL, 0);
++ expandarg(&n, NULL, EXP_QUOTED);
+ return stackblock();
+ }
+
+diff --git a/src/parser.h b/src/parser.h
+index 76ec839..badbd07 100644
+--- a/src/parser.h
++++ b/src/parser.h
+@@ -40,8 +40,6 @@
+ #define CTLVAR -126 /* variable defn */
+ #define CTLENDVAR -125
+ #define CTLBACKQ -124
+-#define CTLQUOTE 01 /* ored with CTLBACKQ code if in quotes */
+-/* CTLBACKQ | CTLQUOTE == -123 */
+ #define CTLARI -122 /* arithmetic expression */
+ #define CTLENDARI -121
+ #define CTLQUOTEMARK -120
+@@ -50,7 +48,6 @@
+ /* variable substitution byte (follows CTLVAR) */
+ #define VSTYPE 0x0f /* type of variable substitution */
+ #define VSNUL 0x10 /* colon--treat the empty string as unset */
+-#define VSQUOTE 0x80 /* inside double quotes--suppress splitting */
+
+ /* values of VSTYPE field */
+ #define VSNORMAL 0x1 /* normal variable: $var or ${var} */
+diff --git a/src/show.c b/src/show.c
+index 1b58de1..14dbef3 100644
+--- a/src/show.c
++++ b/src/show.c
+@@ -222,7 +222,6 @@ sharg(union node *arg, FILE *fp)
+ putc('}', fp);
+ break;
+ case CTLBACKQ:
+- case CTLBACKQ|CTLQUOTE:
+ putc('$', fp);
+ putc('(', fp);
+ shtree(bqlist->n, -1, NULL, fp);
+@@ -314,9 +313,7 @@ trstring(char *s)
+ case '\\': c = '\\'; goto backslash;
+ case CTLESC: c = 'e'; goto backslash;
+ case CTLVAR: c = 'v'; goto backslash;
+- case CTLVAR+CTLQUOTE: c = 'V'; goto backslash;
+ case CTLBACKQ: c = 'q'; goto backslash;
+- case CTLBACKQ+CTLQUOTE: c = 'Q'; goto backslash;
+ backslash: putc('\\', tracefile);
+ putc(c, tracefile);
+ break;
+--
+1.5.5
+
+From 68cbcb7160c5b02c2184e850ff3d5c52864ba024 Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Tue, 25 Sep 2007 22:46:55 +0800
+Subject: [PATCH] [MAN] Clarify description of -nt, -ot options to test builtin
+
+Have the man page explicitely state how the test builtin behaves on
+-nt and -ot options if file2 does not exist. The case where file1
+does not exist was already documented properly.
+
+This was noticed by Sven Mueller and reported through
+ http://bugs.debian.org/373611
+---
+ ChangeLog | 4 ++++
+ src/dash.1 | 12 ++++++++++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index d5c51bf..4ea7374 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-25 Gerrit Pape <pape@smarden.org>
++
++ * Clarify description of -nt, -ot options to test builtin.
++
+ 2007-09-25 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Do not expand tilde in parameter expansion within quotes.
+diff --git a/src/dash.1 b/src/dash.1
+index 00f40bd..3aefe21 100644
+--- a/src/dash.1
++++ b/src/dash.1
+@@ -1934,12 +1934,20 @@ exists and is a socket.
+ .It Ar file1 Fl nt Ar file2
+ True if
+ .Ar file1
+-exists and is newer than
++and
++.Ar file2
++exist and
++.Ar file1
++is newer than
+ .Ar file2 .
+ .It Ar file1 Fl ot Ar file2
+ True if
+ .Ar file1
+-exists and is older than
++and
++.Ar file2
++exist and
++.Ar file1
++is older than
+ .Ar file2 .
+ .It Ar file1 Fl ef Ar file2
+ True if
+--
+1.5.5
+
+From f6ff75befa660341c839e1fa8c1a33eb61afc4c8 Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Tue, 25 Sep 2007 22:47:25 +0800
+Subject: [PATCH] [MAN] Clarify syntax of the for command
+
+Document that in a for loop 'in word ...' is optional, and if omitted,
+'in "$@"' is used.
+
+Lars Wilke noticed this, and reported through
+ http://bugs.debian.org/387441
+---
+ ChangeLog | 1 +
+ src/dash.1 | 7 +++++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 4ea7374..003a0f7 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-09-25 Gerrit Pape <pape@smarden.org>
+
+ * Clarify description of -nt, -ot options to test builtin.
++ * Clarify syntax of the for command.
+
+ 2007-09-25 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/dash.1 b/src/dash.1
+index 3aefe21..9b8ab0e 100644
+--- a/src/dash.1
++++ b/src/dash.1
+@@ -640,17 +640,20 @@ repeat until the exit status of the first list is zero.
+ .Pp
+ The syntax of the for command is
+ .Bd -literal -offset indent
+-for variable in word ...
++for variable [ in [ word ... ] ]
+ do list
+ done
+ .Ed
+ .Pp
+-The words are expanded, and then the list is executed repeatedly with the
++The words following
++.Pa in
++are expanded, and then the list is executed repeatedly with the
+ variable set to each word in turn.
+ do and done may be replaced with
+ .Dq {
+ and
+ .Dq } .
++Omitting in word ... is equivalent to in "$@".
+ .Pp
+ The syntax of the break and continue command is
+ .Bd -literal -offset indent
+--
+1.5.5
+
+From 2a419c48841ba0ed9fe95b1f95308ed6e174ac4b Mon Sep 17 00:00:00 2001
+From: Roy Marples <uberlord@gentoo.org>
+Date: Wed, 26 Sep 2007 13:59:56 +0800
+Subject: [PATCH] [EXPAND] Refresh stack pointers after makestrspace in _rmescapes
+
+dash-0.5.3 has an issue reading some line lengths [1].
+This is reproducable on amd64, but not on other arches for some reason.
+
+$ cat bug.sh
+(read line; echo "${line%%=*}") <<EOF
+TITLE=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+EOF
+printf "\
+TITLE=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+" | (read line; echo "${line%%=*}")
+$ bash bug.sh
+TITLE
+TITLE
+$ dash bug.sh
+TITLE=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+TITLE
+
+Attahced is a patch to fix the issue
+
+Thanks
+
+Roy
+
+[1] http://bugs.gentoo.org/show_bug.cgi?id=180680
+---
+ ChangeLog | 4 ++++
+ src/expand.c | 4 ++++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 003a0f7..670682b 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-26 Roy Marples <uberlord@gentoo.org>
++
++ * Refresh stack pointers after makestrspace in _rmescapes.
++
+ 2007-09-25 Gerrit Pape <pape@smarden.org>
+
+ * Clarify description of -nt, -ot options to test builtin.
+diff --git a/src/expand.c b/src/expand.c
+index 8c6c7f9..98ad718 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -1631,7 +1631,11 @@ _rmescapes(char *str, int flag)
+ size_t fulllen = len + strlen(p) + 1;
+
+ if (flag & RMESCAPE_GROW) {
++ int strloc = str - (char *)stackblock();
++
+ r = makestrspace(fulllen, expdest);
++ str = (char *)stackblock() + strloc;
++ p = str + len;
+ } else if (flag & RMESCAPE_HEAP) {
+ r = ckmalloc(fulllen);
+ } else {
+--
+1.5.5
+
+From ea180ade7ece7780de8b90b80950fef75a00654d Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Wed, 26 Sep 2007 17:14:16 +0800
+Subject: [PATCH] [PARSER] Recognise here-doc delimiters terminated by EOF
+
+Previously dash required a <newline> character to be present in order for
+a here-document delimiter to be detected. Allowing EOF in the absence of
+a <newline> to play the same purpose allows some intuitive scripts to
+succeed. POSIX seems to be silence on this so this should be OK.
+
+Test case:
+
+ eval 'cat <<- NOT
+ test
+ NOT'
+ echo OK
+
+Old result:
+
+ test
+ NOTOK
+
+New result:
+
+ test
+ OK
+---
+ ChangeLog | 4 ++++
+ src/parser.c | 10 ++++++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 670682b..cf56c9a 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-09-26 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Recognise here-doc delimiters terminated by EOF.
++
+ 2007-09-26 Roy Marples <uberlord@gentoo.org>
+
+ * Refresh stack pointers after makestrspace in _rmescapes.
+diff --git a/src/parser.c b/src/parser.c
+index 1a483d4..cac0aa5 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1049,8 +1049,14 @@ checkend: {
+ char *p, *q;
+
+ p = line;
+- for (q = eofmark + 1 ; *q && *p == *q ; p++, q++);
+- if (*p == '\n' && *q == '\0') {
++ for (q = eofmark + 1;; p++, q++) {
++ c = *p;
++ if (c == '\n')
++ c = 0;
++ if (!*q || c != *q)
++ break;
++ }
++ if (c == *q) {
+ c = PEOF;
+ plinno++;
+ needprompt = doprompt;
+--
+1.5.5
+
+From 0150a7be130d6c54e286ca9fe5d72ba80f84ccf9 Mon Sep 17 00:00:00 2001
+From: Alexey Gladkov <legion@altlinux.org>
+Date: Thu, 4 Oct 2007 14:21:44 +0800
+Subject: [PATCH] [BUILD] Add --enable-static option to configure.
+
+Add new option to build statical linked dash.
+---
+ ChangeLog | 4 ++++
+ configure.ac | 6 ++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index cf56c9a..ac717c5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-04 Alexey Gladkov <legion@altlinux.org>
++
++ * Add --enable-static option to configure.
++
+ 2007-09-26 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Recognise here-doc delimiters terminated by EOF.
+diff --git a/configure.ac b/configure.ac
+index e0a94a8..5e8f17d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -18,6 +18,12 @@ fi
+ AC_MSG_RESULT(${CC_FOR_BUILD})
+ AC_SUBST(CC_FOR_BUILD)
+
++AC_ARG_ENABLE(static, AS_HELP_STRING(--enable-static, \
++ [Build statical linked program]))
++if test "$enable_static" = "yes"; then
++ export LDFLAGS="-static -Wl,--fatal-warnings"
++fi
++
+ dnl Checks for libraries.
+
+ dnl Checks for header files.
+--
+1.5.5
+
+From d4f9f079e000e1fb04ab58cac1c3aeabc190a344 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 4 Oct 2007 22:15:10 +0800
+Subject: [PATCH] [PARSER] Fix parsing of ${##1}
+
+Previously dash treated ${##1} as a length operation. This patch fixes that.
+
+Test case:
+
+ set -- a
+ echo ${##1}OK
+
+Old result:
+
+ 1OK
+
+New result:
+
+ OK
+---
+ ChangeLog | 4 ++++
+ src/parser.c | 31 ++++++++++++++++++++++---------
+ 2 files changed, 26 insertions(+), 9 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ac717c5..3352429 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-04 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Fix parsing of ${##1}.
++
+ 2007-10-04 Alexey Gladkov <legion@altlinux.org>
+
+ * Add --enable-static option to configure.
+diff --git a/src/parser.c b/src/parser.c
+index cac0aa5..9edb824 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1167,15 +1167,9 @@ parsesub: {
+ subtype = VSNORMAL;
+ if (c == '{') {
+ c = pgetc();
+- if (c == '#') {
+- if ((c = pgetc()) == '}')
+- c = '#';
+- else
+- subtype = VSLENGTH;
+- }
+- else
+- subtype = 0;
++ subtype = 0;
+ }
++varname:
+ if (c > PEOA && is_name(c)) {
+ do {
+ STPUTC(c, out);
+@@ -1188,8 +1182,27 @@ parsesub: {
+ } while (is_digit(c));
+ }
+ else if (is_special(c)) {
+- USTPUTC(c, out);
++ int cc = c;
++
+ c = pgetc();
++
++ if (!subtype && cc == '#') {
++ subtype = VSLENGTH;
++
++ if (c == '_' || isalnum(c))
++ goto varname;
++
++ cc = c;
++ c = pgetc();
++ if (cc == '}' || c != '}') {
++ pungetc();
++ subtype = 0;
++ c = cc;
++ cc = '#';
++ }
++ }
++
++ USTPUTC(cc, out);
+ }
+ else
+ badsub: synerror("Bad substitution");
+--
+1.5.5
+
+From 903e743d0593b31c430a4182fabba1f4ed9dac4a Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 4 Oct 2007 22:20:38 +0800
+Subject: [PATCH] [PARSER] Size optimisations in parameter expansion parser
+
+Merge flags into subtype.
+Do not write subtype out twice.
+Add likely flag on ${ vs. $NAME.
+Kill unnecessary (and bogus) PEOA check.
+---
+ ChangeLog | 1 +
+ src/parser.c | 16 +++++++---------
+ 2 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 3352429..940e4b0 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-10-04 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Fix parsing of ${##1}.
++ * Size optimisations in parameter expansion parser.
+
+ 2007-10-04 Alexey Gladkov <legion@altlinux.org>
+
+diff --git a/src/parser.c b/src/parser.c
+index 9edb824..f49ee7d 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1142,7 +1142,6 @@ parseredir: {
+ parsesub: {
+ int subtype;
+ int typeloc;
+- int flags;
+ char *p;
+ static const char types[] = "}-+?=";
+
+@@ -1163,18 +1162,18 @@ parsesub: {
+ } else {
+ USTPUTC(CTLVAR, out);
+ typeloc = out - (char *)stackblock();
+- USTPUTC(VSNORMAL, out);
++ STADJUST(1, out);
+ subtype = VSNORMAL;
+- if (c == '{') {
++ if (likely(c == '{')) {
+ c = pgetc();
+ subtype = 0;
+ }
+ varname:
+- if (c > PEOA && is_name(c)) {
++ if (is_name(c)) {
+ do {
+ STPUTC(c, out);
+ c = pgetc();
+- } while (c > PEOA && is_in_name(c));
++ } while (is_in_name(c));
+ } else if (is_digit(c)) {
+ do {
+ STPUTC(c, out);
+@@ -1208,18 +1207,17 @@ varname:
+ badsub: synerror("Bad substitution");
+
+ STPUTC('=', out);
+- flags = 0;
+ if (subtype == 0) {
+ switch (c) {
+ case ':':
+- flags = VSNUL;
++ subtype = VSNUL;
+ c = pgetc();
+ /*FALLTHROUGH*/
+ default:
+ p = strchr(types, c);
+ if (p == NULL)
+ goto badsub;
+- subtype = p - types + VSNORMAL;
++ subtype |= p - types + VSNORMAL;
+ break;
+ case '%':
+ case '#':
+@@ -1238,7 +1236,7 @@ badsub: synerror("Bad substitution");
+ } else {
+ pungetc();
+ }
+- *((char *)stackblock() + typeloc) = subtype | flags;
++ *((char *)stackblock() + typeloc) = subtype;
+ if (subtype != VSNORMAL) {
+ varnest++;
+ if (dblquote)
+--
+1.5.5
+
+From ade5f31819251f8fbe9f98f4d3d7f2d9ec0d56d5 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Fri, 5 Oct 2007 23:26:45 +0800
+Subject: [PATCH] [MEMALLOC] Made grabstackblock an inline wrapper for stalloc
+
+The function grabstackblock is identical in semantics to stalloc within its
+input constraints.
+---
+ ChangeLog | 4 ++++
+ src/memalloc.c | 8 --------
+ src/memalloc.h | 6 +++++-
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 940e4b0..383332c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-05 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Made grabstackblock an inline wrapper for stalloc.
++
+ 2007-10-04 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Fix parsing of ${##1}.
+diff --git a/src/memalloc.c b/src/memalloc.c
+index 358e6ec..c8147d3 100644
+--- a/src/memalloc.c
++++ b/src/memalloc.c
+@@ -254,14 +254,6 @@ growstackblock(void)
+ }
+ }
+
+-void
+-grabstackblock(size_t len)
+-{
+- len = SHELL_ALIGN(len);
+- stacknxt += len;
+- stacknleft -= len;
+-}
+-
+ /*
+ * The following routines are somewhat easier to use than the above.
+ * The user declares a variable of type STACKSTR, which may be declared
+diff --git a/src/memalloc.h b/src/memalloc.h
+index 8a41e64..282dbb0 100644
+--- a/src/memalloc.h
++++ b/src/memalloc.h
+@@ -57,13 +57,17 @@ void stunalloc(pointer);
+ void setstackmark(struct stackmark *);
+ void popstackmark(struct stackmark *);
+ void growstackblock(void);
+-void grabstackblock(size_t);
+ void *growstackstr(void);
+ char *makestrspace(size_t, char *);
+ char *stnputs(const char *, size_t, char *);
+ char *stputs(const char *, char *);
+
+
++static inline void grabstackblock(size_t len)
++{
++ stalloc(len);
++}
++
+ static inline char *_STPUTC(int c, char *p) {
+ if (p == sstrend)
+ p = growstackstr();
+--
+1.5.5
+
+From 4c0f98546aa3f6e74a2062ed4a3dd9589f012269 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 6 Oct 2007 00:45:52 +0800
+Subject: [PATCH] [MEMALLOC] Add pushstackmark
+
+This patch gets rid of the stack mark tracking hack by allocating a little
+bit of stack memory if we're at risk of planting a stack mark which may be
+grown later. To do this a new function pushstackmark is added which lets
+the user pick a bigger amount to allocate since some users do that anyway
+after setting a stack mark.
+---
+ ChangeLog | 4 ++++
+ src/expand.c | 6 ++----
+ src/memalloc.c | 26 +++++++-------------------
+ src/memalloc.h | 2 +-
+ src/parser.c | 3 +--
+ 5 files changed, 15 insertions(+), 26 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 383332c..d3c7320 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-06 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Add pushstackmark.
++
+ 2007-10-05 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Made grabstackblock an inline wrapper for stalloc.
+diff --git a/src/expand.c b/src/expand.c
+index 98ad718..e3e5d8f 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -546,10 +546,8 @@ expbackq(union node *cmd, int flag)
+ struct stackmark smark;
+
+ INTOFF;
+- setstackmark(&smark);
+- dest = expdest;
+- startloc = dest - (char *)stackblock();
+- grabstackstr(dest);
++ startloc = expdest - (char *)stackblock();
++ pushstackmark(&smark, startloc);
+ evalbackcmd(cmd, (struct backcmd *) &in);
+ popstackmark(&smark);
+
+diff --git a/src/memalloc.c b/src/memalloc.c
+index c8147d3..8d3e2ed 100644
+--- a/src/memalloc.c
++++ b/src/memalloc.c
+@@ -106,7 +106,6 @@ struct stack_block {
+
+ struct stack_block stackbase;
+ struct stack_block *stackp = &stackbase;
+-struct stackmark *markp;
+ char *stacknxt = stackbase.space;
+ size_t stacknleft = MINSIZE;
+ char *sstrend = stackbase.space + MINSIZE;
+@@ -161,14 +160,17 @@ stunalloc(pointer p)
+
+
+
+-void
+-setstackmark(struct stackmark *mark)
++void pushstackmark(struct stackmark *mark, size_t len)
+ {
+ mark->stackp = stackp;
+ mark->stacknxt = stacknxt;
+ mark->stacknleft = stacknleft;
+- mark->marknext = markp;
+- markp = mark;
++ grabstackblock(len);
++}
++
++void setstackmark(struct stackmark *mark)
++{
++ pushstackmark(mark, stacknxt == stackp->space && stackp != &stackbase);
+ }
+
+
+@@ -178,7 +180,6 @@ popstackmark(struct stackmark *mark)
+ struct stack_block *sp;
+
+ INTOFF;
+- markp = mark->marknext;
+ while (stackp != mark->stackp) {
+ sp = stackp;
+ stackp = sp->prev;
+@@ -214,7 +215,6 @@ growstackblock(void)
+
+ if (stacknxt == stackp->space && stackp != &stackbase) {
+ struct stack_block *oldstackp;
+- struct stackmark *xmark;
+ struct stack_block *sp;
+ struct stack_block *prevstackp;
+ size_t grosslen;
+@@ -230,18 +230,6 @@ growstackblock(void)
+ stacknxt = sp->space;
+ stacknleft = newlen;
+ sstrend = sp->space + newlen;
+-
+- /*
+- * Stack marks pointing to the start of the old block
+- * must be relocated to point to the new block
+- */
+- xmark = markp;
+- while (xmark != NULL && xmark->stackp == oldstackp) {
+- xmark->stackp = stackp;
+- xmark->stacknxt = stacknxt;
+- xmark->stacknleft = stacknleft;
+- xmark = xmark->marknext;
+- }
+ INTON;
+ } else {
+ char *oldspace = stacknxt;
+diff --git a/src/memalloc.h b/src/memalloc.h
+index 282dbb0..ad6015d 100644
+--- a/src/memalloc.h
++++ b/src/memalloc.h
+@@ -40,7 +40,6 @@ struct stackmark {
+ struct stack_block *stackp;
+ char *stacknxt;
+ size_t stacknleft;
+- struct stackmark *marknext;
+ };
+
+
+@@ -54,6 +53,7 @@ pointer ckrealloc(pointer, size_t);
+ char *savestr(const char *);
+ pointer stalloc(size_t);
+ void stunalloc(pointer);
++void pushstackmark(struct stackmark *mark, size_t len);
+ void setstackmark(struct stackmark *);
+ void popstackmark(struct stackmark *);
+ void growstackblock(void);
+diff --git a/src/parser.c b/src/parser.c
+index f49ee7d..d0e0553 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1487,8 +1487,7 @@ setprompt(int which)
+ show = !el;
+ #endif
+ if (show) {
+- setstackmark(&smark);
+- stalloc(stackblocksize());
++ pushstackmark(&smark, stackblocksize());
+ out2str(getprompt(NULL));
+ popstackmark(&smark);
+ }
+--
+1.5.5
+
+From ee88381ece2dad9524f924b08e40045034eda0f5 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 6 Oct 2007 18:59:31 +0800
+Subject: [PATCH] [BUILTIN] Treat OPTIND=0 in the same way as OPTIND=1
+
+Previously setting OPTIND to 0 would cause subsequent getopts calls to fail.
+This patch makes dash reset the getopts parameters the same way as OPTIND=1.
+
+Both behaviours are allowed by POSIX but other common shells do tolerate this
+case.
+---
+ ChangeLog | 1 +
+ src/options.c | 4 +---
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index d3c7320..11cdb67 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-10-06 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Add pushstackmark.
++ * Treat OPTIND=0 in the same way as OPTIND=1.
+
+ 2007-10-05 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/options.c b/src/options.c
+index 85f1406..045345a 100644
+--- a/src/options.c
++++ b/src/options.c
+@@ -377,7 +377,7 @@ void
+ getoptsreset(value)
+ const char *value;
+ {
+- shellparam.optind = number(value);
++ shellparam.optind = number(value) ?: 1;
+ shellparam.optoff = -1;
+ }
+
+@@ -424,8 +424,6 @@ getopts(char *optstr, char *optvar, char **optfirst, int *optind, int *optoff)
+ char s[12];
+ char **optnext;
+
+- if (*optind < 1)
+- return 1;
+ optnext = optfirst + *optind - 1;
+
+ if (*optind <= 1 || *optoff < 0 || strlen(optnext[-1]) < *optoff)
+--
+1.5.5
+
+From c699fa24176e084ea93c9dd7058511d97d218e20 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 6 Oct 2007 21:18:58 +0800
+Subject: [PATCH] [VAR] Remove setvarsafe
+
+The only user of setvarsafe is getopts. However, we can achieve the same
+result by pre-setting the value of shellparam.optind.
+---
+ ChangeLog | 1 +
+ src/options.c | 48 +++++++++++++++++++++++-------------------------
+ src/var.c | 25 -------------------------
+ src/var.h | 1 -
+ 4 files changed, 24 insertions(+), 51 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 11cdb67..ea54d84 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -2,6 +2,7 @@
+
+ * Add pushstackmark.
+ * Treat OPTIND=0 in the same way as OPTIND=1.
++ * Remove setvarsafe.
+
+ 2007-10-05 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/options.c b/src/options.c
+index 045345a..568148a 100644
+--- a/src/options.c
++++ b/src/options.c
+@@ -109,7 +109,7 @@ char optlist[NOPTS];
+ STATIC void options(int);
+ STATIC void minus_o(char *, int);
+ STATIC void setoption(int, int);
+-STATIC int getopts(char *, char *, char **, int *, int *);
++STATIC int getopts(char *, char *, char **);
+
+
+ /*
+@@ -397,39 +397,40 @@ getoptscmd(int argc, char **argv)
+ sh_error("Usage: getopts optstring var [arg]");
+ else if (argc == 3) {
+ optbase = shellparam.p;
+- if (shellparam.optind > shellparam.nparam + 1) {
++ if ((unsigned)shellparam.optind > shellparam.nparam + 1) {
+ shellparam.optind = 1;
+ shellparam.optoff = -1;
+ }
+ }
+ else {
+ optbase = &argv[3];
+- if (shellparam.optind > argc - 2) {
++ if ((unsigned)shellparam.optind > argc - 2) {
+ shellparam.optind = 1;
+ shellparam.optoff = -1;
+ }
+ }
+
+- return getopts(argv[1], argv[2], optbase, &shellparam.optind,
+- &shellparam.optoff);
++ return getopts(argv[1], argv[2], optbase);
+ }
+
+ STATIC int
+-getopts(char *optstr, char *optvar, char **optfirst, int *optind, int *optoff)
++getopts(char *optstr, char *optvar, char **optfirst)
+ {
+ char *p, *q;
+ char c = '?';
+ int done = 0;
+- int err = 0;
+ char s[12];
+ char **optnext;
++ int ind = shellparam.optind;
++ int off = shellparam.optoff;
+
+- optnext = optfirst + *optind - 1;
++ shellparam.optind = -1;
++ optnext = optfirst + ind - 1;
+
+- if (*optind <= 1 || *optoff < 0 || strlen(optnext[-1]) < *optoff)
++ if (ind <= 1 || off < 0 || strlen(optnext[-1]) < off)
+ p = NULL;
+ else
+- p = optnext[-1] + *optoff;
++ p = optnext[-1] + off;
+ if (p == NULL || *p == '\0') {
+ /* Current word is done, advance */
+ p = *optnext;
+@@ -450,7 +451,7 @@ atend:
+ if (optstr[0] == ':') {
+ s[0] = c;
+ s[1] = '\0';
+- err |= setvarsafe("OPTARG", s, 0);
++ setvar("OPTARG", s, 0);
+ } else {
+ outfmt(&errout, "Illegal option -%c\n", c);
+ (void) unsetvar("OPTARG");
+@@ -467,7 +468,7 @@ atend:
+ if (optstr[0] == ':') {
+ s[0] = c;
+ s[1] = '\0';
+- err |= setvarsafe("OPTARG", s, 0);
++ setvar("OPTARG", s, 0);
+ c = ':';
+ } else {
+ outfmt(&errout, "No arg for -%c option\n", c);
+@@ -479,25 +480,22 @@ atend:
+
+ if (p == *optnext)
+ optnext++;
+- err |= setvarsafe("OPTARG", p, 0);
++ setvar("OPTARG", p, 0);
+ p = NULL;
+ } else
+- err |= setvarsafe("OPTARG", nullstr, 0);
++ setvar("OPTARG", nullstr, 0);
+
+ out:
+- *optoff = p ? p - *(optnext - 1) : -1;
+- *optind = optnext - optfirst + 1;
+- fmtstr(s, sizeof(s), "%d", *optind);
+- err |= setvarsafe("OPTIND", s, VNOFUNC);
++ ind = optnext - optfirst + 1;
++ fmtstr(s, sizeof(s), "%d", ind);
++ setvar("OPTIND", s, VNOFUNC);
+ s[0] = c;
+ s[1] = '\0';
+- err |= setvarsafe(optvar, s, 0);
+- if (err) {
+- *optind = 1;
+- *optoff = -1;
+- flushall();
+- exraise(EXERROR);
+- }
++ setvar(optvar, s, 0);
++
++ shellparam.optoff = p ? p - *(optnext - 1) : -1;
++ shellparam.optind = ind;
++
+ return done;
+ }
+
+diff --git a/src/var.c b/src/var.c
+index 3263dc5..501a279 100644
+--- a/src/var.c
++++ b/src/var.c
+@@ -168,31 +168,6 @@ initvar(void)
+ }
+
+ /*
+- * Safe version of setvar, returns 1 on success 0 on failure.
+- */
+-
+-int
+-setvarsafe(const char *name, const char *val, int flags)
+-{
+- int err;
+- volatile int saveint;
+- struct jmploc *volatile savehandler = handler;
+- struct jmploc jmploc;
+-
+- SAVEINT(saveint);
+- if (setjmp(jmploc.loc))
+- err = 1;
+- else {
+- handler = &jmploc;
+- setvar(name, val, flags);
+- err = 0;
+- }
+- handler = savehandler;
+- RESTOREINT(saveint);
+- return err;
+-}
+-
+-/*
+ * Set the value of a variable. The flags argument is ored with the
+ * flags of the variable. If val is NULL, the variable is unset.
+ */
+diff --git a/src/var.h b/src/var.h
+index c3c2ca7..ae58c6c 100644
+--- a/src/var.h
++++ b/src/var.h
+@@ -138,7 +138,6 @@ int localcmd(int, char **);
+ void poplocalvars(void);
+ int unsetcmd(int, char **);
+ int unsetvar(const char *);
+-int setvarsafe(const char *, const char *, int);
+ int varcmp(const char *, const char *);
+
+ static inline int varequal(const char *a, const char *b) {
+--
+1.5.5
+
+From 8e92ae4cb4ab07ebf88c99c9dcd6219e7ea3297f Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 6 Oct 2007 22:42:14 +0800
+Subject: [PATCH] [BUILTIN] Use intmax_t arithmetic in test
+
+This patch adds the function atomax10 and uses it in test(1) so that we
+support intmax_t comparisons.
+---
+ ChangeLog | 1 +
+ src/bltin/test.c | 31 ++++++-------------------------
+ src/mystring.c | 34 ++++++++++++++++++++++++++++++++--
+ src/mystring.h | 2 ++
+ 4 files changed, 41 insertions(+), 27 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ea54d84..1db14ac 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -3,6 +3,7 @@
+ * Add pushstackmark.
+ * Treat OPTIND=0 in the same way as OPTIND=1.
+ * Remove setvarsafe.
++ * Use intmax_t arithmetic in test.
+
+ 2007-10-05 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/bltin/test.c b/src/bltin/test.c
+index 7d49569..bc8b175 100644
+--- a/src/bltin/test.c
++++ b/src/bltin/test.c
+@@ -11,8 +11,7 @@
+ #include <sys/stat.h>
+ #include <sys/types.h>
+
+-#include <ctype.h>
+-#include <errno.h>
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+@@ -145,13 +144,17 @@ static int binop(void);
+ static int filstat(char *, enum token);
+ static enum token t_lex(char *);
+ static int isoperand(void);
+-static int getn(const char *);
+ static int newerf(const char *, const char *);
+ static int olderf(const char *, const char *);
+ static int equalf(const char *, const char *);
+ static int test_st_mode(const struct stat64 *, int);
+ static int bash_group_member(gid_t);
+
++static inline intmax_t getn(const char *s)
++{
++ return atomax10(s);
++}
++
+ int
+ testcmd(int argc, char **argv)
+ {
+@@ -396,28 +399,6 @@ isoperand(void)
+ return 0;
+ }
+
+-/* atoi with error detection */
+-static int
+-getn(const char *s)
+-{
+- char *p;
+- long r;
+-
+- errno = 0;
+- r = strtol(s, &p, 10);
+-
+- if (errno != 0)
+- error("%s: out of range", s);
+-
+- while (isspace((unsigned char)*p))
+- p++;
+-
+- if (*p)
+- error("%s: bad number", s);
+-
+- return (int) r;
+-}
+-
+ static int
+ newerf (const char *f1, const char *f2)
+ {
+diff --git a/src/mystring.c b/src/mystring.c
+index 7d937a8..df1691b 100644
+--- a/src/mystring.c
++++ b/src/mystring.c
+@@ -42,6 +42,11 @@
+ * is_number(s) Return true if s is a string of digits.
+ */
+
++#include <ctype.h>
++#include <errno.h>
++#include <inttypes.h>
++#include <limits.h>
++#include <stdint.h>
+ #include <stdlib.h>
+ #include "shell.h"
+ #include "syntax.h"
+@@ -105,6 +110,29 @@ prefix(const char *string, const char *pfx)
+
+
+ /*
++ * Convert a string into an integer of type intmax_t. Alow trailing spaces.
++ */
++intmax_t atomax10(const char *s)
++{
++ char *p;
++ intmax_t r;
++
++ errno = 0;
++ r = strtoimax(s, &p, 10);
++
++ if (errno != 0)
++ sh_error(illnum, s);
++
++ while (isspace((unsigned char)*p))
++ p++;
++
++ if (*p)
++ sh_error(illnum, s);
++
++ return r;
++}
++
++/*
+ * Convert a string of digits to an integer, printing an error message on
+ * failure.
+ */
+@@ -112,10 +140,12 @@ prefix(const char *string, const char *pfx)
+ int
+ number(const char *s)
+ {
++ intmax_t n = atomax10(s);
+
+- if (! is_number(s))
++ if (n < 0 || n > INT_MAX)
+ sh_error(illnum, s);
+- return atoi(s);
++
++ return n;
+ }
+
+
+diff --git a/src/mystring.h b/src/mystring.h
+index f451cc2..c9cade6 100644
+--- a/src/mystring.h
++++ b/src/mystring.h
+@@ -34,6 +34,7 @@
+ * @(#)mystring.h 8.2 (Berkeley) 5/4/95
+ */
+
++#include <stdint.h>
+ #include <string.h>
+
+ extern const char snlfmt[];
+@@ -47,6 +48,7 @@ extern const char homestr[];
+ void scopyn(const char *, char *, int);
+ #endif
+ char *prefix(const char *, const char *);
++intmax_t atomax10(const char *);
+ int number(const char *);
+ int is_number(const char *);
+ char *single_quote(const char *);
+--
+1.5.5
+
+From 4cfa59c5a310b4f3ed44867dba7e7afd63ada506 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 8 Oct 2007 21:32:25 +0800
+Subject: [PATCH] [PARSER] Report substition errors at expansion time
+
+On Wed, Apr 11, 2007 at 01:24:21PM -0700, Micah Cowan wrote:
+> Package: dash
+> Version: 0.5.3-3
+>
+> Bug first reported against Ubuntu at
+> https://bugs.launchpad.net/ubuntu/+source/dash/+bug/105634
+> by Paul Smith
+>
+> The description and some comments from that bug report follow.
+>
+> -----
+>
+> This operation fails on Ubuntu:
+>
+> $ /bin/sh -c 'if false; then d="${foo/bar}"; fi'
+> /bin/sh: Syntax error: Bad substitution
+>
+> When used with other POSIX shells it succeeds. While semantically the
+> variable reference ${foo/bar} is not valid, this is not a syntax error
+> according to POSIX, and since the variable assignment expression is
+> never invoked (because it's within an "if false") it should not be seen
+> as an error.
+>
+> I ran into this because after restarting my system I could no longer log
+> in. It turns out that the problem was (a) I had edited .gnomerc to
+> source my .bashrc file so that my environment would be set properly, and
+> (b) I had added some new code to my .bashrc WITHIN A CHECK FOR BASH!
+> that used bash's ${var/match/sub} feature. Even though this code was
+> within a "case $BASH_VERSION; in *[0-9]*) ... esac (so dash would never
+> execute it since that variable is not set), it still caused dash to
+> throw up.
+>
+> -----
+>
+> FYI, some relevant details from POSIX:
+>
+> Section 2.3, Token Recognition:
+>
+> 5. If the current character is an unquoted '$' or '`', the shell shall
+> identify the start of any candidates for parameter expansion ( Parameter
+> Expansion), command substitution ( Command Substitution), or arithmetic
+> expansion ( Arithmetic Expansion) from their introductory unquoted
+> character sequences: '$' or "${", "$(" or '`', and "$((", respectively.
+> The shell shall read sufficient input to determine the end of the unit
+> to be expanded (as explained in the cited sections).
+>
+> Section 2.6.2, Parameter Expansion:
+>
+> The format for parameter expansion is as follows:
+>
+> ${expression}
+>
+> where expression consists of all characters until the matching '}'. Any
+> '}' escaped by a backslash or within a quoted string, and characters in
+> embedded arithmetic expansions, command substitutions, and variable
+> expansions, shall not be examined in determining the matching '}'.
+>
+> [...]
+>
+> The parameter name or symbol can be enclosed in braces, which are
+> optional except for positional parameters with more than one digit or
+> when parameter is followed by a character that could be interpreted as
+> part of the name. The matching closing brace shall be determined by
+> counting brace levels, skipping over enclosed quoted strings, and
+> command substitutions.
+>
+> ---
+>
+> In addition to bash I've checked Solaris /bin/sh and ksh and they don't
+> report an error.
+>
+> -----
+> Micah Cowan:
+>
+> The applicable portion of POSIX is in XCU 2.10.1:
+>
+> "The WORD tokens shall have the word expansion rules applied to them
+> immediately before the associated command is executed, not at the time
+> the command is parsed."
+>
+> This seems fairly clear to me.
+
+This patch moves the error detection to expansion time.
+
+Test case:
+
+ if false; then
+ echo ${a!7}
+ fi
+ echo OK
+
+Old result:
+
+ dash: Syntax error: Bad substitution
+
+New result:
+
+ OK
+---
+ ChangeLog | 4 ++++
+ src/expand.c | 4 ++++
+ src/parser.c | 7 ++++---
+ 3 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 1db14ac..69ba464 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-08 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Report substition errors at expansion time.
++
+ 2007-10-06 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Add pushstackmark.
+diff --git a/src/expand.c b/src/expand.c
+index e3e5d8f..54fe908 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -749,6 +749,10 @@ evalvar(char *p, int flag)
+
+ varflags = *p++;
+ subtype = varflags & VSTYPE;
++
++ if (!subtype)
++ sh_error("Bad substitution");
++
+ quoted = flag & EXP_QUOTED;
+ var = p;
+ easy = (!quoted || (*var == '@' && shellparam.nparam));
+diff --git a/src/parser.c b/src/parser.c
+index d0e0553..4b8a5fe 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1204,9 +1204,8 @@ varname:
+ USTPUTC(cc, out);
+ }
+ else
+-badsub: synerror("Bad substitution");
++ goto badsub;
+
+- STPUTC('=', out);
+ if (subtype == 0) {
+ switch (c) {
+ case ':':
+@@ -1216,7 +1215,7 @@ badsub: synerror("Bad substitution");
+ default:
+ p = strchr(types, c);
+ if (p == NULL)
+- goto badsub;
++ break;
+ subtype |= p - types + VSNORMAL;
+ break;
+ case '%':
+@@ -1234,6 +1233,7 @@ badsub: synerror("Bad substitution");
+ }
+ }
+ } else {
++badsub:
+ pungetc();
+ }
+ *((char *)stackblock() + typeloc) = subtype;
+@@ -1242,6 +1242,7 @@ badsub: synerror("Bad substitution");
+ if (dblquote)
+ dqvarnest++;
+ }
++ STPUTC('=', out);
+ }
+ goto parsesub_return;
+ }
+--
+1.5.5
+
+From 1e0d45a1c6d749533b090a2d7068b9c36a1473fe Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 11 Oct 2007 22:36:28 +0800
+Subject: [PATCH] [ARITH] Add assignment and intmax_t support
+
+This patch adds assignment operator support in arithmetic expansions. It
+also changes the type used to intmax_t.
+---
+ ChangeLog | 4 +
+ src/Makefile.am | 8 +-
+ src/arith.y | 155 ---------------------------
+ src/arith_yacc.c | 298 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/arith_yacc.h | 89 ++++++++++++++++
+ src/arith_yylex.c | 114 +++++++++++++++++----
+ src/expand.c | 23 +++--
+ src/expand.h | 4 +-
+ src/mystring.c | 9 ++-
+ src/mystring.h | 1 +
+ src/shell.h | 10 ++
+ src/var.c | 20 ++++
+ src/var.h | 4 +
+ 13 files changed, 549 insertions(+), 190 deletions(-)
+ delete mode 100644 src/arith.y
+ create mode 100644 src/arith_yacc.c
+ create mode 100644 src/arith_yacc.h
+
+diff --git a/ChangeLog b/ChangeLog
+index 69ba464..895c607 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-11 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Add assignment support in arithmetic expansions.
++
+ 2007-10-08 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Report substition errors at expansion time.
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 37d6d3c..49026a3 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -18,12 +18,12 @@ COMPILE_FOR_BUILD = \
+ bin_PROGRAMS = dash
+
+ dash_CFILES = \
+- alias.c arith_yylex.c cd.c error.c eval.c exec.c expand.c \
++ alias.c arith_yacc.c arith_yylex.c cd.c error.c eval.c exec.c expand.c \
+ histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
+ mystring.c options.c parser.c redir.c show.c trap.c output.c \
+ bltin/printf.c system.c bltin/test.c bltin/times.c var.c
+ dash_SOURCES = \
+- $(dash_CFILES) arith.y \
++ $(dash_CFILES) \
+ alias.h bltin/bltin.h cd.h error.h eval.h exec.h expand.h hetio.h \
+ init.h input.h jobs.h machdep.h mail.h main.h memalloc.h miscbltin.h \
+ myhistedit.h mystring.h options.h output.h parser.h redir.h shell.h \
+@@ -32,10 +32,10 @@ dash_LDADD = builtins.o init.o nodes.o signames.o syntax.o
+
+ HELPERS = mkinit mksyntax mknodes mksignames
+
+-BUILT_SOURCES = arith.h builtins.h nodes.h syntax.h token.h
++BUILT_SOURCES = builtins.h nodes.h syntax.h token.h
+ CLEANFILES = \
+ $(BUILT_SOURCES) $(patsubst %.o,%.c,$(dash_LDADD)) \
+- arith.c $(HELPERS) builtins.def
++ $(HELPERS) builtins.def
+
+ man_MANS = dash.1
+ EXTRA_DIST = \
+diff --git a/src/arith.y b/src/arith.y
+deleted file mode 100644
+index 07b0b39..0000000
+--- a/src/arith.y
++++ /dev/null
+@@ -1,155 +0,0 @@
+-%{
+-/*-
+- * Copyright (c) 1993
+- * The Regents of the University of California. All rights reserved.
+- * Copyright (c) 1997-2005
+- * Herbert Xu <herbert@gondor.apana.org.au>. All rights reserved.
+- *
+- * This code is derived from software contributed to Berkeley by
+- * Kenneth Almquist.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- * notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- * notice, this list of conditions and the following disclaimer in the
+- * documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the University nor the names of its contributors
+- * may be used to endorse or promote products derived from this software
+- * without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+- * SUCH DAMAGE.
+- */
+-
+-#include <stdlib.h>
+-#include "expand.h"
+-#include "shell.h"
+-#include "error.h"
+-#include "output.h"
+-#include "memalloc.h"
+-
+-const char *arith_buf, *arith_startbuf;
+-
+-#ifndef YYBISON
+-int yyparse(void);
+-#endif
+-void yyerror(const char *);
+-#ifdef TESTARITH
+-int main(int , char *[]);
+-int sh_error(char *);
+-#endif
+-
+-%}
+-%token ARITH_NUM ARITH_LPAREN ARITH_RPAREN
+-
+-%left ARITH_OR
+-%left ARITH_AND
+-%left ARITH_BOR
+-%left ARITH_BXOR
+-%left ARITH_BAND
+-%left ARITH_EQ ARITH_NE
+-%left ARITH_LT ARITH_GT ARITH_GE ARITH_LE
+-%left ARITH_LSHIFT ARITH_RSHIFT
+-%left ARITH_ADD ARITH_SUB
+-%left ARITH_MUL ARITH_DIV ARITH_REM
+-%left ARITH_UNARYMINUS ARITH_UNARYPLUS ARITH_NOT ARITH_BNOT
+-%%
+-
+-exp: expr {
+- return ($1);
+- }
+- ;
+-
+-
+-expr: ARITH_LPAREN expr ARITH_RPAREN { $$ = $2; }
+- | expr ARITH_OR expr { $$ = $1 || $3; }
+- | expr ARITH_AND expr { $$ = $1 && $3; }
+- | expr ARITH_BOR expr { $$ = $1 | $3; }
+- | expr ARITH_BXOR expr { $$ = $1 ^ $3; }
+- | expr ARITH_BAND expr { $$ = $1 & $3; }
+- | expr ARITH_EQ expr { $$ = $1 == $3; }
+- | expr ARITH_GT expr { $$ = $1 > $3; }
+- | expr ARITH_GE expr { $$ = $1 >= $3; }
+- | expr ARITH_LT expr { $$ = $1 < $3; }
+- | expr ARITH_LE expr { $$ = $1 <= $3; }
+- | expr ARITH_NE expr { $$ = $1 != $3; }
+- | expr ARITH_LSHIFT expr { $$ = $1 << $3; }
+- | expr ARITH_RSHIFT expr { $$ = $1 >> $3; }
+- | expr ARITH_ADD expr { $$ = $1 + $3; }
+- | expr ARITH_SUB expr { $$ = $1 - $3; }
+- | expr ARITH_MUL expr { $$ = $1 * $3; }
+- | expr ARITH_DIV expr {
+- if ($3 == 0)
+- yyerror("division by zero");
+- $$ = $1 / $3;
+- }
+- | expr ARITH_REM expr {
+- if ($3 == 0)
+- yyerror("division by zero");
+- $$ = $1 % $3;
+- }
+- | ARITH_NOT expr { $$ = !($2); }
+- | ARITH_BNOT expr { $$ = ~($2); }
+- | ARITH_SUB expr %prec ARITH_UNARYMINUS { $$ = -($2); }
+- | ARITH_ADD expr %prec ARITH_UNARYPLUS { $$ = $2; }
+- | ARITH_NUM
+- ;
+-%%
+-int
+-arith(s)
+- const char *s;
+-{
+- long result;
+-
+- arith_buf = arith_startbuf = s;
+-
+- INTOFF;
+- result = yyparse();
+- arith_lex_reset(); /* reprime lex */
+- INTON;
+-
+- return (result);
+-}
+-
+-
+-/*************************/
+-#ifdef TEST_ARITH
+-#include <stdio.h>
+-main(argc, argv)
+- char *argv[];
+-{
+- printf("%d\n", exp(argv[1]));
+-}
+-sh_error(s)
+- char *s;
+-{
+- fprintf(stderr, "exp: %s\n", s);
+- exit(1);
+-}
+-#endif
+-
+-void
+-yyerror(s)
+- const char *s;
+-{
+-
+-#ifndef YYBISON
+- yyerrok;
+-#endif
+- yyclearin;
+- arith_lex_reset(); /* reprime lex */
+- sh_error("arithmetic expression: %s: \"%s\"", s, arith_startbuf);
+- /* NOTREACHED */
+-}
+diff --git a/src/arith_yacc.c b/src/arith_yacc.c
+new file mode 100644
+index 0000000..ad653ed
+--- /dev/null
++++ b/src/arith_yacc.c
+@@ -0,0 +1,298 @@
++/*-
++ * Copyright (c) 1993
++ * The Regents of the University of California. All rights reserved.
++ * Copyright (c) 2007
++ * Herbert Xu <herbert@gondor.apana.org.au>. All rights reserved.
++ *
++ * This code is derived from software contributed to Berkeley by
++ * Kenneth Almquist.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#include <inttypes.h>
++#include <stdint.h>
++#include <stdlib.h>
++#include "arith_yacc.h"
++#include "expand.h"
++#include "shell.h"
++#include "error.h"
++#include "output.h"
++#include "var.h"
++
++#if ARITH_BOR + 11 != ARITH_BORASS || ARITH_ASS + 11 != ARITH_EQ
++#error Arithmetic tokens are out of order.
++#endif
++
++static const char *arith_startbuf;
++
++const char *arith_buf;
++union yystype yylval;
++
++static int last_token;
++
++#define ARITH_PRECEDENCE(op, prec) [op - ARITH_BINOP_MIN] = prec
++
++static const char prec[ARITH_BINOP_MAX - ARITH_BINOP_MIN] = {
++ ARITH_PRECEDENCE(ARITH_MUL, 0),
++ ARITH_PRECEDENCE(ARITH_DIV, 0),
++ ARITH_PRECEDENCE(ARITH_REM, 0),
++ ARITH_PRECEDENCE(ARITH_ADD, 1),
++ ARITH_PRECEDENCE(ARITH_SUB, 1),
++ ARITH_PRECEDENCE(ARITH_LSHIFT, 2),
++ ARITH_PRECEDENCE(ARITH_RSHIFT, 2),
++ ARITH_PRECEDENCE(ARITH_LT, 3),
++ ARITH_PRECEDENCE(ARITH_LE, 3),
++ ARITH_PRECEDENCE(ARITH_GT, 3),
++ ARITH_PRECEDENCE(ARITH_GE, 3),
++ ARITH_PRECEDENCE(ARITH_EQ, 4),
++ ARITH_PRECEDENCE(ARITH_NE, 4),
++ ARITH_PRECEDENCE(ARITH_BAND, 5),
++ ARITH_PRECEDENCE(ARITH_BXOR, 6),
++ ARITH_PRECEDENCE(ARITH_BOR, 7),
++};
++
++static void yyerror(const char *s) __attribute__ ((noreturn));
++static void yyerror(const char *s)
++{
++ sh_error("arithmetic expression: %s: \"%s\"", s, arith_startbuf);
++ /* NOTREACHED */
++}
++
++static inline int higher_prec(int op1, int op2)
++{
++ return prec[op1 - ARITH_BINOP_MIN] < prec[op2 - ARITH_BINOP_MIN];
++}
++
++static intmax_t do_binop(int op, intmax_t a, intmax_t b)
++{
++ imaxdiv_t div;
++
++ switch (op) {
++ default:
++ case ARITH_REM:
++ case ARITH_DIV:
++ if (!b)
++ yyerror("division by zero");
++ div = imaxdiv(a, b);
++ return op == ARITH_REM ? div.rem : div.quot;
++ case ARITH_MUL:
++ return a * b;
++ case ARITH_ADD:
++ return a + b;
++ case ARITH_SUB:
++ return a - b;
++ case ARITH_LSHIFT:
++ return a << b;
++ case ARITH_RSHIFT:
++ return a >> b;
++ case ARITH_LT:
++ return a < b;
++ case ARITH_LE:
++ return a <= b;
++ case ARITH_GT:
++ return a > b;
++ case ARITH_GE:
++ return a >= b;
++ case ARITH_EQ:
++ return a == b;
++ case ARITH_NE:
++ return a != b;
++ case ARITH_BAND:
++ return a & b;
++ case ARITH_BXOR:
++ return a ^ b;
++ case ARITH_BOR:
++ return a | b;
++ }
++}
++
++static intmax_t assignment(int var, int noeval);
++
++static intmax_t primary(int token, union yystype *val, int op, int noeval)
++{
++ intmax_t result;
++
++again:
++ switch (token) {
++ case ARITH_LPAREN:
++ result = assignment(op, noeval);
++ if (last_token != ARITH_RPAREN)
++ yyerror("expecting ')'");
++ last_token = yylex();
++ return result;
++ case ARITH_NUM:
++ last_token = op;
++ return val->val;
++ case ARITH_VAR:
++ last_token = op;
++ return noeval ? val->val : lookupvarint(val->name);
++ case ARITH_ADD:
++ token = op;
++ *val = yylval;
++ op = yylex();
++ goto again;
++ case ARITH_SUB:
++ *val = yylval;
++ return -primary(op, val, yylex(), noeval);
++ case ARITH_NOT:
++ *val = yylval;
++ return !primary(op, val, yylex(), noeval);
++ case ARITH_BNOT:
++ *val = yylval;
++ return ~primary(op, val, yylex(), noeval);
++ default:
++ yyerror("expecting primary");
++ }
++}
++
++static intmax_t binop2(intmax_t a, int op, int noeval)
++{
++ for (;;) {
++ union yystype val;
++ intmax_t b;
++ int op2;
++ int token;
++
++ token = yylex();
++ val = yylval;
++
++ b = primary(token, &val, yylex(), noeval);
++
++ op2 = last_token;
++ if (op2 < ARITH_BINOP_MIN || op2 >= ARITH_BINOP_MAX)
++ return noeval ? b : do_binop(op, a, b);
++
++ if (higher_prec(op2, op)) {
++ b = binop2(b, op2, noeval);
++ return noeval ? b : do_binop(op, a, b);
++ }
++
++ a = do_binop(op, a, b);
++ op = op2;
++ }
++}
++
++static intmax_t binop(int token, union yystype *val, int op, int noeval)
++{
++ intmax_t a = primary(token, val, op, noeval);
++
++ op = last_token;
++ if (op < ARITH_BINOP_MIN || op >= ARITH_BINOP_MAX)
++ return a;
++
++ return binop2(a, op, noeval);
++}
++
++static intmax_t and(int token, union yystype *val, int op, int noeval)
++{
++ intmax_t a = binop(token, val, op, noeval);
++ intmax_t b;
++
++ op = last_token;
++ if (op != ARITH_AND)
++ return a;
++
++ token = yylex();
++ *val = yylval;
++
++ b = and(token, val, yylex(), noeval | !a);
++
++ return a && b;
++}
++
++static intmax_t or(int token, union yystype *val, int op, int noeval)
++{
++ intmax_t a = and(token, val, op, noeval);
++ intmax_t b;
++
++ op = last_token;
++ if (op != ARITH_OR)
++ return a;
++
++ token = yylex();
++ *val = yylval;
++
++ b = or(token, val, yylex(), noeval | !!a);
++
++ return a | b;
++}
++
++static intmax_t cond(int token, union yystype *val, int op, int noeval)
++{
++ intmax_t a = or(token, val, op, noeval);
++ intmax_t b;
++ intmax_t c;
++
++ if (last_token != ARITH_QMARK)
++ return a;
++
++ b = assignment(yylex(), noeval | !a);
++
++ if (last_token != ARITH_COLON)
++ yyerror("expecting ':'");
++
++ token = yylex();
++ *val = yylval;
++
++ c = cond(token, val, yylex(), noeval | !!a);
++
++ return a ? b : c;
++}
++
++static intmax_t assignment(int var, int noeval)
++{
++ union yystype val = yylval;
++ int op = yylex();
++ intmax_t result;
++
++ if (var != ARITH_VAR)
++ return cond(var, &val, op, noeval);
++
++ if (op != ARITH_ASS && (op < ARITH_ASS_MIN || op >= ARITH_ASS_MAX))
++ return cond(var, &val, op, noeval);
++
++ result = assignment(yylex(), noeval);
++ if (noeval)
++ return result;
++
++ return setvarint(val.name,
++ op == ARITH_ASS ? result :
++ do_binop(op - 11, lookupvarint(val.name), result));
++}
++
++intmax_t arith(const char *s)
++{
++ intmax_t result;
++
++ arith_buf = arith_startbuf = s;
++
++ result = assignment(yylex(), 0);
++
++ if (last_token)
++ yyerror("expecting EOF");
++
++ return result;
++}
+diff --git a/src/arith_yacc.h b/src/arith_yacc.h
+new file mode 100644
+index 0000000..ff34d52
+--- /dev/null
++++ b/src/arith_yacc.h
+@@ -0,0 +1,89 @@
++/*-
++ * Copyright (c) 1993
++ * The Regents of the University of California. All rights reserved.
++ * Copyright (c) 2007
++ * Herbert Xu <herbert@gondor.apana.org.au>. All rights reserved.
++ *
++ * This code is derived from software contributed to Berkeley by
++ * Kenneth Almquist.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#define ARITH_ASS 1
++
++#define ARITH_OR 2
++#define ARITH_AND 3
++#define ARITH_BAD 4
++#define ARITH_NUM 5
++#define ARITH_VAR 6
++#define ARITH_NOT 7
++
++#define ARITH_BINOP_MIN 8
++#define ARITH_LE 8
++#define ARITH_GE 9
++#define ARITH_LT 10
++#define ARITH_GT 11
++#define ARITH_EQ 12
++#define ARITH_REM 13
++#define ARITH_BAND 14
++#define ARITH_LSHIFT 15
++#define ARITH_RSHIFT 16
++#define ARITH_MUL 17
++#define ARITH_ADD 18
++#define ARITH_BOR 19
++#define ARITH_SUB 20
++#define ARITH_BXOR 21
++#define ARITH_DIV 22
++#define ARITH_NE 23
++#define ARITH_BINOP_MAX 24
++
++#define ARITH_ASS_MIN 24
++#define ARITH_REMASS 24
++#define ARITH_BANDASS 25
++#define ARITH_LSHIFTASS 26
++#define ARITH_RSHIFTASS 27
++#define ARITH_MULASS 28
++#define ARITH_ADDASS 29
++#define ARITH_BORASS 30
++#define ARITH_SUBASS 31
++#define ARITH_BXORASS 32
++#define ARITH_DIVASS 33
++#define ARITH_ASS_MAX 34
++
++#define ARITH_LPAREN 34
++#define ARITH_RPAREN 35
++#define ARITH_BNOT 36
++#define ARITH_QMARK 37
++#define ARITH_COLON 38
++
++union yystype {
++ intmax_t val;
++ char *name;
++};
++
++extern union yystype yylval;
++
++int yylex(void);
+diff --git a/src/arith_yylex.c b/src/arith_yylex.c
+index 4fa2051..0f46990 100644
+--- a/src/arith_yylex.c
++++ b/src/arith_yylex.c
+@@ -32,19 +32,28 @@
+ * SUCH DAMAGE.
+ */
+
++#include <inttypes.h>
+ #include <stdlib.h>
+-#include "arith.h"
++#include <string.h>
++#include "arith_yacc.h"
+ #include "expand.h"
+ #include "error.h"
++#include "shell.h"
++#include "memalloc.h"
++#include "syntax.h"
+
+-extern int yylval;
+-extern const char *arith_buf, *arith_startbuf;
++#if ARITH_BOR + 11 != ARITH_BORASS || ARITH_ASS + 11 != ARITH_EQ
++#error Arithmetic tokens are out of order.
++#endif
++
++extern const char *arith_buf;
+
+ int
+ yylex()
+ {
+ int value;
+ const char *buf = arith_buf;
++ const char *p;
+
+ for (;;) {
+ switch (*buf) {
+@@ -54,9 +63,7 @@ yylex()
+ buf++;
+ continue;
+ default:
+-err:
+- sh_error("arith: syntax error: \"%s\"", arith_startbuf);
+- /* NOTREACHED */
++ return ARITH_BAD;
+ case '0':
+ case '1':
+ case '2':
+@@ -67,13 +74,74 @@ err:
+ case '7':
+ case '8':
+ case '9':
+- yylval = strtoll(buf, (char **) &arith_buf, 0);
++ yylval.val = strtoimax(buf, (char **)&arith_buf, 0);
+ return ARITH_NUM;
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z':
++ p = buf;
++ while (buf++, is_in_name(*buf))
++ ;
++ yylval.name = stalloc(buf - p + 1);
++ *(char *)mempcpy(yylval.name, p, buf - p) = 0;
++ value = ARITH_VAR;
++ goto out;
+ case '=':
+- if (*++buf != '=') {
+- goto err;
+- }
+- value = ARITH_EQ;
++ value = ARITH_ASS;
++checkeq:
++ if (*++buf != '=')
++ goto out;
++ value += 11;
+ break;
+ case '>':
+ switch (*++buf) {
+@@ -82,7 +150,7 @@ err:
+ break;
+ case '>':
+ value = ARITH_RSHIFT;
+- break;
++ goto checkeq;
+ default:
+ value = ARITH_GT;
+ goto out;
+@@ -95,7 +163,7 @@ err:
+ break;
+ case '<':
+ value = ARITH_LSHIFT;
+- break;
++ goto checkeq;
+ default:
+ value = ARITH_LT;
+ goto out;
+@@ -104,14 +172,14 @@ err:
+ case '|':
+ if (*++buf != '|') {
+ value = ARITH_BOR;
+- goto out;
++ goto checkeq;
+ }
+ value = ARITH_OR;
+ break;
+ case '&':
+ if (*++buf != '&') {
+ value = ARITH_BAND;
+- goto out;
++ goto checkeq;
+ }
+ value = ARITH_AND;
+ break;
+@@ -133,24 +201,30 @@ err:
+ break;
+ case '*':
+ value = ARITH_MUL;
+- break;
++ goto checkeq;
+ case '/':
+ value = ARITH_DIV;
+- break;
++ goto checkeq;
+ case '%':
+ value = ARITH_REM;
+- break;
++ goto checkeq;
+ case '+':
+ value = ARITH_ADD;
+- break;
++ goto checkeq;
+ case '-':
+ value = ARITH_SUB;
+- break;
++ goto checkeq;
+ case '~':
+ value = ARITH_BNOT;
+ break;
+ case '^':
+ value = ARITH_BXOR;
++ goto checkeq;
++ case '?':
++ value = ARITH_QMARK;
++ break;
++ case ':':
++ value = ARITH_COLON;
+ break;
+ }
+ break;
+diff --git a/src/expand.c b/src/expand.c
+index 54fe908..9cb8eab 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -42,6 +42,7 @@
+ #endif
+ #include <stdlib.h>
+ #include <stdio.h>
++#include <stdint.h>
+ #include <limits.h>
+ #include <string.h>
+ #if defined(__GLIBC__)
+@@ -142,7 +143,7 @@ STATIC int pmatch(const char *, const char *);
+ #else
+ #define pmatch(a, b) !fnmatch((a), (b), 0)
+ #endif
+-STATIC int cvtnum(long);
++STATIC int cvtnum(intmax_t);
+ STATIC size_t esclen(const char *, const char *);
+ STATIC char *scanleft(char *, char *, char *, char *, int, int);
+ STATIC char *scanright(char *, char *, char *, char *, int, int);
+@@ -478,9 +479,11 @@ removerecordregions(int endoff)
+ void
+ expari(int flag)
+ {
++ struct stackmark sm;
+ char *p, *start;
+ int begoff;
+ int len;
++ intmax_t result;
+
+ /* ifsfree(); */
+
+@@ -490,8 +493,9 @@ expari(int flag)
+ * start of arithmetic.
+ */
+ start = stackblock();
+- p = expdest - 1;
+- *p = '\0';
++ p = expdest;
++ pushstackmark(&sm, p - start);
++ *--p = '\0';
+ p--;
+ do {
+ int esc;
+@@ -522,7 +526,10 @@ expari(int flag)
+ if (flag & QUOTES_ESC)
+ rmescapes(p + 1);
+
+- len = cvtnum(arith(p + 1));
++ result = arith(p + 1);
++ popstackmark(&sm);
++
++ len = cvtnum(result);
+
+ if (!(flag & EXP_QUOTED))
+ recordregion(begoff, begoff + len, 0);
+@@ -1707,12 +1714,12 @@ casematch(union node *pattern, char *val)
+ */
+
+ STATIC int
+-cvtnum(long num)
++cvtnum(intmax_t num)
+ {
+- int len;
++ int len = max_int_length(sizeof(num));
+
+- expdest = makestrspace(32, expdest);
+- len = fmtstr(expdest, 32, "%ld", num);
++ expdest = makestrspace(len, expdest);
++ len = fmtstr(expdest, len, "%jd", num);
+ STADJUST(len, expdest);
+ return len;
+ }
+diff --git a/src/expand.h b/src/expand.h
+index 4dfbc43..225b004 100644
+--- a/src/expand.h
++++ b/src/expand.h
+@@ -34,6 +34,8 @@
+ * @(#)expand.h 8.2 (Berkeley) 5/4/95
+ */
+
++#include <stdint.h>
++
+ struct strlist {
+ struct strlist *next;
+ char *text;
+@@ -68,7 +70,7 @@ char *_rmescapes(char *, int);
+ int casematch(union node *, char *);
+
+ /* From arith.y */
+-int arith(const char *);
++intmax_t arith(const char *);
+ int expcmd(int , char **);
+ #ifdef USE_LEX
+ void arith_lex_reset(void);
+diff --git a/src/mystring.c b/src/mystring.c
+index df1691b..b84b7e2 100644
+--- a/src/mystring.c
++++ b/src/mystring.c
+@@ -112,13 +112,13 @@ prefix(const char *string, const char *pfx)
+ /*
+ * Convert a string into an integer of type intmax_t. Alow trailing spaces.
+ */
+-intmax_t atomax10(const char *s)
++intmax_t atomax(const char *s, int base)
+ {
+ char *p;
+ intmax_t r;
+
+ errno = 0;
+- r = strtoimax(s, &p, 10);
++ r = strtoimax(s, &p, base);
+
+ if (errno != 0)
+ sh_error(illnum, s);
+@@ -132,6 +132,11 @@ intmax_t atomax10(const char *s)
+ return r;
+ }
+
++intmax_t atomax10(const char *s)
++{
++ return atomax(s, 10);
++}
++
+ /*
+ * Convert a string of digits to an integer, printing an error message on
+ * failure.
+diff --git a/src/mystring.h b/src/mystring.h
+index c9cade6..477cd16 100644
+--- a/src/mystring.h
++++ b/src/mystring.h
+@@ -48,6 +48,7 @@ extern const char homestr[];
+ void scopyn(const char *, char *, int);
+ #endif
+ char *prefix(const char *, const char *);
++intmax_t atomax(const char *, int);
+ intmax_t atomax10(const char *);
+ int number(const char *);
+ int is_number(const char *);
+diff --git a/src/shell.h b/src/shell.h
+index 9b67696..98edc8b 100644
+--- a/src/shell.h
++++ b/src/shell.h
+@@ -92,3 +92,13 @@ extern char nullstr[1]; /* null string */
+
+ #define likely(x) __builtin_expect(!!(x),1)
+ #define unlikely(x) __builtin_expect(!!(x),0)
++
++/*
++ * Hack to calculate maximum length.
++ * (length * 8 - 1) * log10(2) + 1 + 1 + 12
++ * The second 1 is for the minus sign and the 12 is a safety margin.
++ */
++static inline int max_int_length(int bytes)
++{
++ return (bytes * 8 - 1) * 0.30102999566398119521 + 14;
++}
+diff --git a/src/var.c b/src/var.c
+index 501a279..17d3637 100644
+--- a/src/var.c
++++ b/src/var.c
+@@ -202,6 +202,21 @@ setvar(const char *name, const char *val, int flags)
+ INTON;
+ }
+
++/*
++ * Set the given integer as the value of a variable. The flags argument is
++ * ored with the flags of the variable.
++ */
++
++intmax_t setvarint(const char *name, intmax_t val)
++{
++ int len = max_int_length(sizeof(val));
++ char buf[len];
++
++ fmtstr(buf, len, "%jd", val);
++ setvar(name, buf, 0);
++ return val;
++}
++
+
+
+ /*
+@@ -293,6 +308,11 @@ lookupvar(const char *name)
+ return NULL;
+ }
+
++intmax_t lookupvarint(const char *name)
++{
++ return atomax(lookupvar(name) ?: nullstr, 0);
++}
++
+
+
+ /*
+diff --git a/src/var.h b/src/var.h
+index ae58c6c..66443df 100644
+--- a/src/var.h
++++ b/src/var.h
+@@ -34,6 +34,8 @@
+ * @(#)var.h 8.2 (Berkeley) 5/4/95
+ */
+
++#include <stdint.h>
++
+ /*
+ * Shell variables.
+ */
+@@ -125,10 +127,12 @@ extern const char defpathvar[];
+
+ void initvar(void);
+ void setvar(const char *, const char *, int);
++intmax_t setvarint(const char *, intmax_t);
+ void setvareq(char *, int);
+ struct strlist;
+ void listsetvar(struct strlist *, int);
+ char *lookupvar(const char *);
++intmax_t lookupvarint(const char *);
+ char *bltinlookup(const char *);
+ char **listvars(int, int, char ***);
+ #define environment() listvars(VEXPORT, VUNSET, 0)
+--
+1.5.5
+
+From 7501b55f699ab71fc6cd2667716e70eebaa2868a Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 11 Oct 2007 22:38:46 +0800
+Subject: [PATCH] [ARITH] Size optimisations in arithmetic lexer
+
+Use += instead of straight assignment for token value.
+---
+ ChangeLog | 1 +
+ src/arith_yylex.c | 52 ++++++++++++++++++++++++++--------------------------
+ 2 files changed, 27 insertions(+), 26 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 895c607..1f26b83 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-10-11 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Add assignment support in arithmetic expansions.
++ * Size optimisations in arithmetic lexer.
+
+ 2007-10-08 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/arith_yylex.c b/src/arith_yylex.c
+index 0f46990..2c15657 100644
+--- a/src/arith_yylex.c
++++ b/src/arith_yylex.c
+@@ -56,7 +56,8 @@ yylex()
+ const char *p;
+
+ for (;;) {
+- switch (*buf) {
++ value = *buf;
++ switch (value) {
+ case ' ':
+ case '\t':
+ case '\n':
+@@ -137,7 +138,7 @@ yylex()
+ value = ARITH_VAR;
+ goto out;
+ case '=':
+- value = ARITH_ASS;
++ value += ARITH_ASS - '=';
+ checkeq:
+ if (*++buf != '=')
+ goto out;
+@@ -146,85 +147,84 @@ checkeq:
+ case '>':
+ switch (*++buf) {
+ case '=':
+- value = ARITH_GE;
++ value += ARITH_GE - '>';
+ break;
+ case '>':
+- value = ARITH_RSHIFT;
++ value += ARITH_RSHIFT - '>';
+ goto checkeq;
+ default:
+- value = ARITH_GT;
++ value += ARITH_GT - '>';
+ goto out;
+ }
+ break;
+ case '<':
+ switch (*++buf) {
+ case '=':
+- value = ARITH_LE;
++ value += ARITH_LE - '<';
+ break;
+ case '<':
+- value = ARITH_LSHIFT;
++ value += ARITH_LSHIFT - '<';
+ goto checkeq;
+ default:
+- value = ARITH_LT;
++ value += ARITH_LT - '<';
+ goto out;
+ }
+ break;
+ case '|':
+ if (*++buf != '|') {
+- value = ARITH_BOR;
++ value += ARITH_BOR - '|';
+ goto checkeq;
+ }
+- value = ARITH_OR;
++ value += ARITH_OR - '|';
+ break;
+ case '&':
+ if (*++buf != '&') {
+- value = ARITH_BAND;
++ value += ARITH_BAND - '&';
+ goto checkeq;
+ }
+- value = ARITH_AND;
++ value += ARITH_AND - '&';
+ break;
+ case '!':
+ if (*++buf != '=') {
+- value = ARITH_NOT;
++ value += ARITH_NOT - '!';
+ goto out;
+ }
+- value = ARITH_NE;
++ value += ARITH_NE - '!';
+ break;
+ case 0:
+- value = 0;
+ goto out;
+ case '(':
+- value = ARITH_LPAREN;
++ value += ARITH_LPAREN - '(';
+ break;
+ case ')':
+- value = ARITH_RPAREN;
++ value += ARITH_RPAREN - ')';
+ break;
+ case '*':
+- value = ARITH_MUL;
++ value += ARITH_MUL - '*';
+ goto checkeq;
+ case '/':
+- value = ARITH_DIV;
++ value += ARITH_DIV - '/';
+ goto checkeq;
+ case '%':
+- value = ARITH_REM;
++ value += ARITH_REM - '%';
+ goto checkeq;
+ case '+':
+- value = ARITH_ADD;
++ value += ARITH_ADD - '+';
+ goto checkeq;
+ case '-':
+- value = ARITH_SUB;
++ value += ARITH_SUB - '-';
+ goto checkeq;
+ case '~':
+- value = ARITH_BNOT;
++ value += ARITH_BNOT - '~';
+ break;
+ case '^':
+- value = ARITH_BXOR;
++ value += ARITH_BXOR - '^';
+ goto checkeq;
+ case '?':
+- value = ARITH_QMARK;
++ value += ARITH_QMARK - '?';
+ break;
+ case ':':
+- value = ARITH_COLON;
++ value += ARITH_COLON - ':';
+ break;
+ }
+ break;
+--
+1.5.5
+
+From cb854af0a92e82e4640df0a8152280b9c9628da8 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 11 Oct 2007 22:42:04 +0800
+Subject: [PATCH] [EXPAND] Add likely flags in expari
+
+The case where the expansion isn't quoted is the norm.
+---
+ ChangeLog | 1 +
+ src/expand.c | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 1f26b83..98c546e 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -2,6 +2,7 @@
+
+ * Add assignment support in arithmetic expansions.
+ * Size optimisations in arithmetic lexer.
++ * Add likely flags in expari.
+
+ 2007-10-08 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/expand.c b/src/expand.c
+index 9cb8eab..5c31400 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -523,7 +523,7 @@ expari(int flag)
+
+ expdest = p;
+
+- if (flag & QUOTES_ESC)
++ if (likely(flag & QUOTES_ESC))
+ rmescapes(p + 1);
+
+ result = arith(p + 1);
+@@ -531,7 +531,7 @@ expari(int flag)
+
+ len = cvtnum(result);
+
+- if (!(flag & EXP_QUOTED))
++ if (likely(!(flag & EXP_QUOTED)))
+ recordregion(begoff, begoff + len, 0);
+ }
+
+--
+1.5.5
+
+From 894c375d54ef5c0d90523d9aa06ec183e5894122 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 11 Oct 2007 22:44:40 +0800
+Subject: [PATCH] [BUILTIN] Use setvarint to set OPTIND
+
+This patch adds a flag argument to setvarint and uses it to set the OPTIND
+variable.
+---
+ ChangeLog | 1 +
+ src/arith_yacc.c | 2 +-
+ src/options.c | 5 ++---
+ src/var.c | 4 ++--
+ src/var.h | 2 +-
+ 5 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 98c546e..00c09c3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -3,6 +3,7 @@
+ * Add assignment support in arithmetic expansions.
+ * Size optimisations in arithmetic lexer.
+ * Add likely flags in expari.
++ * Use setvarint to set OPTIND.
+
+ 2007-10-08 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/arith_yacc.c b/src/arith_yacc.c
+index ad653ed..e473594 100644
+--- a/src/arith_yacc.c
++++ b/src/arith_yacc.c
+@@ -280,7 +280,7 @@ static intmax_t assignment(int var, int noeval)
+
+ return setvarint(val.name,
+ op == ARITH_ASS ? result :
+- do_binop(op - 11, lookupvarint(val.name), result));
++ do_binop(op - 11, lookupvarint(val.name), result), 0);
+ }
+
+ intmax_t arith(const char *s)
+diff --git a/src/options.c b/src/options.c
+index 568148a..f669117 100644
+--- a/src/options.c
++++ b/src/options.c
+@@ -419,7 +419,7 @@ getopts(char *optstr, char *optvar, char **optfirst)
+ char *p, *q;
+ char c = '?';
+ int done = 0;
+- char s[12];
++ char s[2];
+ char **optnext;
+ int ind = shellparam.optind;
+ int off = shellparam.optoff;
+@@ -487,8 +487,7 @@ atend:
+
+ out:
+ ind = optnext - optfirst + 1;
+- fmtstr(s, sizeof(s), "%d", ind);
+- setvar("OPTIND", s, VNOFUNC);
++ setvarint("OPTIND", ind, VNOFUNC);
+ s[0] = c;
+ s[1] = '\0';
+ setvar(optvar, s, 0);
+diff --git a/src/var.c b/src/var.c
+index 17d3637..7f9af9c 100644
+--- a/src/var.c
++++ b/src/var.c
+@@ -207,13 +207,13 @@ setvar(const char *name, const char *val, int flags)
+ * ored with the flags of the variable.
+ */
+
+-intmax_t setvarint(const char *name, intmax_t val)
++intmax_t setvarint(const char *name, intmax_t val, int flags)
+ {
+ int len = max_int_length(sizeof(val));
+ char buf[len];
+
+ fmtstr(buf, len, "%jd", val);
+- setvar(name, buf, 0);
++ setvar(name, buf, flags);
+ return val;
+ }
+
+diff --git a/src/var.h b/src/var.h
+index 66443df..e4e2cff 100644
+--- a/src/var.h
++++ b/src/var.h
+@@ -127,7 +127,7 @@ extern const char defpathvar[];
+
+ void initvar(void);
+ void setvar(const char *, const char *, int);
+-intmax_t setvarint(const char *, intmax_t);
++intmax_t setvarint(const char *, intmax_t, int);
+ void setvareq(char *, int);
+ struct strlist;
+ void listsetvar(struct strlist *, int);
+--
+1.5.5
+
+From cbf7553964832984f17c0c16ff071970e19a45c2 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 15 Oct 2007 20:24:28 +0800
+Subject: [PATCH] [EXEC] Fixed execing of scripts with no hash-bang
+
+The function tryexec used the original name instead of the path found through
+PATH search. This patch fixes that.
+
+Test case:
+
+ trap 'rm -f $TMP' EXIT
+ TMP=$(tempfile -s nosuchthing)
+
+ cat <<- EOF > $TMP
+ echo OK
+ EOF
+ chmod u+x $TMP
+
+ cd /
+ PATH=${TMP%/*} ${TMP##*/}
+
+Old result:
+
+ /bin/sh: Can't open filelgY4Fanosuchthing
+
+New result:
+
+ OK
+---
+ ChangeLog | 4 ++++
+ src/eval.c | 3 ++-
+ src/exec.c | 21 +++------------------
+ 3 files changed, 9 insertions(+), 19 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 00c09c3..60bdfb5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-15 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Fixed execing of scripts with no hash-bang.
++
+ 2007-10-11 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Add assignment support in arithmetic expansions.
+diff --git a/src/eval.c b/src/eval.c
+index 2aa8317..1e0edd9 100644
+--- a/src/eval.c
++++ b/src/eval.c
+@@ -727,7 +727,8 @@ evalcommand(union node *cmd, int flags)
+ argc++;
+ }
+
+- argv = nargv = stalloc(sizeof (char *) * (argc + 1));
++ /* Reserve one extra spot at the front for shellexec. */
++ argv = nargv = stalloc(sizeof (char *) * (argc + 2)) + 1;
+ for (sp = arglist.list ; sp ; sp = sp->next) {
+ TRACE(("evalcommand arg: %s\n", sp->text));
+ *nargv++ = sp->text;
+diff --git a/src/exec.c b/src/exec.c
+index 8a1f722..bbb70e8 100644
+--- a/src/exec.c
++++ b/src/exec.c
+@@ -149,11 +149,6 @@ shellexec(char **argv, const char *path, int idx)
+ STATIC void
+ tryexec(char *cmd, char **argv, char **envp)
+ {
+- int repeated = 0;
+-#if !defined(BSD) && !defined(linux)
+- char *p;
+-#endif
+-
+ repeat:
+ #ifdef SYSV
+ do {
+@@ -162,19 +157,9 @@ repeat:
+ #else
+ execve(cmd, argv, envp);
+ #endif
+- if (repeated++) {
+- ckfree(argv);
+- } else if (errno == ENOEXEC) {
+- char **ap;
+- char **new;
+-
+- for (ap = argv; *ap; ap++)
+- ;
+- ap = new = ckmalloc((ap - argv + 2) * sizeof(char *));
+- *ap++ = cmd = _PATH_BSHELL;
+- while ((*ap++ = *argv++))
+- ;
+- argv = new;
++ if (cmd != _PATH_BSHELL && errno == ENOEXEC) {
++ *argv-- = cmd;
++ *argv = cmd = _PATH_BSHELL;
+ goto repeat;
+ }
+ }
+--
+1.5.5
+
+From 63a0dd11d73e7b716a95373aa159f0faab557cb2 Mon Sep 17 00:00:00 2001
+From: Oleg Verych <olecom@flower.upol.cz>
+Date: Wed, 17 Oct 2007 12:34:03 +0800
+Subject: [PATCH] [BUILTIN] Disallow completely blank strings in non-arithmetic context.
+
+* NULL as a number argument:
+
+olecom@deen:/mnt/debian/src/dash-0.5.3$ time src/dash tst-01.sh
+test: 20: `': bad number
+`' eq 0: 2 must be >1, Not A Number
+test: 20: `': bad number
+`' ne 0: 2 must be >1, Not A Number
+test: 20: `': bad number
+`' gt 0: 2 must be >1, Not A Number
+test: 20: `': bad number
+`' ge 0: 2 must be >1, Not A Number
+test: 20: `': bad number
+`' lt 0: 2 must be >1, Not A Number
+test: 20: `': bad number
+`' le 0: 2 must be >1, Not A Number
+/usr/bin/test: invalid integer `'
+`' eq 0: 2 must be >1, Not A Number
+/usr/bin/test: invalid integer `'
+`' ne 0: 2 must be >1, Not A Number
+/usr/bin/test: invalid integer `'
+`' gt 0: 2 must be >1, Not A Number
+/usr/bin/test: invalid integer `'
+`' ge 0: 2 must be >1, Not A Number
+/usr/bin/test: invalid integer `'
+`' lt 0: 2 must be >1, Not A Number
+/usr/bin/test: invalid integer `'
+`' le 0: 2 must be >1, Not A Number
+
+#!/usr/bin/printf This not executable script%c\n
+
+test_arithm() {
+ for aop in eq ne gt ge lt le
+ do "$1" 0 -$aop "$NOTHING"
+ echo "\`' $aop 0:" $? " must be >1, Not A Number"
+ done
+}
+# opengroup.org/onlinepubs/000095399/utilites/test.html (nothing about long):
+test_arithm test
+test_arithm /usr/bin/test
+
+# shend
+---
+ ChangeLog | 4 ++++
+ src/mystring.c | 7 +++++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 60bdfb5..47a4bb0 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-17 Oleg Verych <olecom@flower.upol.cz>
++
++ * Disallow completely blank strings in non-arithmetic context.
++
+ 2007-10-15 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Fixed execing of scripts with no hash-bang.
+diff --git a/src/mystring.c b/src/mystring.c
+index b84b7e2..8e1200a 100644
+--- a/src/mystring.c
++++ b/src/mystring.c
+@@ -123,6 +123,13 @@ intmax_t atomax(const char *s, int base)
+ if (errno != 0)
+ sh_error(illnum, s);
+
++ /*
++ * Disallow completely blank strings in non-arithmetic (base != 0)
++ * contexts.
++ */
++ if (base && (p == s))
++ sh_error(illnum, s);
++
+ while (isspace((unsigned char)*p))
+ p++;
+
+--
+1.5.5
+
+From 044393f703ffb1b87b207ad66869d3ebb9e09eaa Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Wed, 17 Oct 2007 12:51:08 +0800
+Subject: [PATCH] [SHELL] Replace shared illnum message by badnum function.
+
+This patch adds the badnum function and uses it to mostly replace the use
+of illnum except in miscbltin where the current code turns out to be smaller
+because of the twin sh_error calls.
+---
+ ChangeLog | 4 ++++
+ src/eval.c | 2 +-
+ src/mystring.c | 14 +++++++++-----
+ src/mystring.h | 1 +
+ 4 files changed, 15 insertions(+), 6 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 47a4bb0..ba9d5d5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-10-15 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Replace shared illnum message by badnum function.
++
+ 2007-10-17 Oleg Verych <olecom@flower.upol.cz>
+
+ * Disallow completely blank strings in non-arithmetic context.
+diff --git a/src/eval.c b/src/eval.c
+index 1e0edd9..17b558d 100644
+--- a/src/eval.c
++++ b/src/eval.c
+@@ -1028,7 +1028,7 @@ breakcmd(int argc, char **argv)
+ int n = argc > 1 ? number(argv[1]) : 1;
+
+ if (n <= 0)
+- sh_error(illnum, argv[1]);
++ badnum(argv[1]);
+ if (n > loopnest)
+ n = loopnest;
+ if (n > 0) {
+diff --git a/src/mystring.c b/src/mystring.c
+index 8e1200a..ce48c82 100644
+--- a/src/mystring.c
++++ b/src/mystring.c
+@@ -108,6 +108,10 @@ prefix(const char *string, const char *pfx)
+ return (char *) string;
+ }
+
++void badnum(const char *s)
++{
++ sh_error(illnum, s);
++}
+
+ /*
+ * Convert a string into an integer of type intmax_t. Alow trailing spaces.
+@@ -121,20 +125,20 @@ intmax_t atomax(const char *s, int base)
+ r = strtoimax(s, &p, base);
+
+ if (errno != 0)
+- sh_error(illnum, s);
++ badnum(s);
+
+ /*
+ * Disallow completely blank strings in non-arithmetic (base != 0)
+ * contexts.
+ */
+- if (base && (p == s))
+- sh_error(illnum, s);
++ if (p == s && base)
++ badnum(s);
+
+ while (isspace((unsigned char)*p))
+ p++;
+
+ if (*p)
+- sh_error(illnum, s);
++ badnum(s);
+
+ return r;
+ }
+@@ -155,7 +159,7 @@ number(const char *s)
+ intmax_t n = atomax10(s);
+
+ if (n < 0 || n > INT_MAX)
+- sh_error(illnum, s);
++ badnum(s);
+
+ return n;
+ }
+diff --git a/src/mystring.h b/src/mystring.h
+index 477cd16..2e0540a 100644
+--- a/src/mystring.h
++++ b/src/mystring.h
+@@ -48,6 +48,7 @@ extern const char homestr[];
+ void scopyn(const char *, char *, int);
+ #endif
+ char *prefix(const char *, const char *);
++void badnum(const char *s) __attribute__ ((noreturn));
+ intmax_t atomax(const char *, int);
+ intmax_t atomax10(const char *);
+ int number(const char *);
+--
+1.5.5
+
+From 0db88ff47ad488680bce86defd7254f4f682e850 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 20 Oct 2007 18:26:23 +0800
+Subject: [PATCH] [EXPAND] Added configure --enable-glob and --enable-fnmatch options
+
+Debian's libc6 as of 2.6.1-6 has working glob(3)/fnmatch(3) support.
+This patch adds the options --enable-glob and --enable-fnmatch to
+the configure script. By default glob(3) and fnmatch(3) are still
+unused. However, on distros where the glibc is known to work you
+may enable these options.
+---
+ ChangeLog | 6 +++++-
+ configure.ac | 13 +++++++++++++
+ src/Makefile.am | 2 +-
+ src/expand.c | 25 ++++++++-----------------
+ 4 files changed, 27 insertions(+), 19 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ba9d5d5..a821c32 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,4 +1,8 @@
+-2007-10-15 Herbert Xu <herbert@gondor.apana.org.au>
++2007-10-20 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Added configure --enable-glob and --enable-fnmatch options.
++
++2007-10-17 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Replace shared illnum message by badnum function.
+
+diff --git a/configure.ac b/configure.ac
+index 5e8f17d..ccc4ac1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -24,6 +24,10 @@ if test "$enable_static" = "yes"; then
+ export LDFLAGS="-static -Wl,--fatal-warnings"
+ fi
+
++AC_ARG_ENABLE(fnmatch, AS_HELP_STRING(--enable-fnmatch, \
++ [Use fnmatch(3) from libc]))
++AC_ARG_ENABLE(glob, AS_HELP_STRING(--enable-glob, [Use glob(3) from libc]))
++
+ dnl Checks for libraries.
+
+ dnl Checks for header files.
+@@ -32,6 +36,15 @@ dnl Checks for library functions.
+ AC_CHECK_FUNCS(bsearch getpwnam getrlimit isalpha killpg mempcpy sigsetmask \
+ stpcpy strchrnul strsignal strtod strtoimax strtoumax sysconf)
+
++if test "$enable_fnmatch" = yes; then
++ use_fnmatch=
++ AC_CHECK_FUNCS(fnmatch, use_fnmatch=yes)
++fi
++
++if test "$use_fnmatch" = yes && test "$enable_glob" = yes; then
++ AC_CHECK_FUNCS(glob)
++fi
++
+ dnl Check for klibc signal.
+ AC_CHECK_FUNC(signal)
+ if test "$ac_cv_func_signal" != yes; then
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 49026a3..e9130eb 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -4,7 +4,7 @@ COMMON_CFLAGS = -Wall
+ COMMON_CPPFLAGS = \
+ -include $(top_builddir)/config.h \
+ -DBSD=1 -DSHELL \
+- -DGLOB_BROKEN -DFNMATCH_BROKEN -DIFS_BROKEN
++ -DIFS_BROKEN
+
+ AM_CFLAGS = $(COMMON_CFLAGS)
+ AM_CPPFLAGS = $(COMMON_CPPFLAGS)
+diff --git a/src/expand.c b/src/expand.c
+index 5c31400..c489446 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -45,16 +45,9 @@
+ #include <stdint.h>
+ #include <limits.h>
+ #include <string.h>
+-#if defined(__GLIBC__)
+-#if !defined(FNMATCH_BROKEN)
+ #include <fnmatch.h>
+-#if !defined(GLOB_BROKEN)
+ #include <glob.h>
+-#endif
+-#else
+ #include <ctype.h>
+-#endif
+-#endif
+
+ /*
+ * Routines to expand arguments to commands. We have to deal with
+@@ -127,18 +120,16 @@ STATIC void removerecordregions(int);
+ STATIC void ifsbreakup(char *, struct arglist *);
+ STATIC void ifsfree(void);
+ STATIC void expandmeta(struct strlist *, int);
+-#if defined(__GLIBC__) && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN)
++#ifdef HAVE_GLOB
+ STATIC void addglob(const glob_t *);
+ #else
+ STATIC void expmeta(char *, char *);
+-#endif
+-STATIC void addfname(char *);
+-#if !(defined(__GLIBC__) && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN))
+ STATIC struct strlist *expsort(struct strlist *);
+ STATIC struct strlist *msort(struct strlist *, int);
+ #endif
++STATIC void addfname(char *);
+ STATIC int patmatch(char *, const char *);
+-#if !defined(__GLIBC__) || defined(FNMATCH_BROKEN)
++#ifndef HAVE_FNMATCH
+ STATIC int pmatch(const char *, const char *);
+ #else
+ #define pmatch(a, b) !fnmatch((a), (b), 0)
+@@ -1159,7 +1150,7 @@ ifsfree(void)
+ * should be escapes. The results are stored in the list exparg.
+ */
+
+-#if defined(__GLIBC__) && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN)
++#ifdef HAVE_GLOB
+ STATIC void
+ expandmeta(str, flag)
+ struct strlist *str;
+@@ -1220,7 +1211,7 @@ addglob(pglob)
+ }
+
+
+-#else /* defined(__GLIBC__) && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN) */
++#else /* HAVE_GLOB */
+ STATIC char *expdir;
+
+
+@@ -1387,7 +1378,7 @@ out:
+ if (! atend)
+ endname[-1] = '/';
+ }
+-#endif /* defined(__GLIBC__) && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN) */
++#endif /* HAVE_GLOB */
+
+
+ /*
+@@ -1406,7 +1397,7 @@ addfname(char *name)
+ }
+
+
+-#if !(defined(__GLIBC__) && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN))
++#ifndef HAVE_GLOB
+ /*
+ * Sort the results of file name expansion. It calculates the number of
+ * strings to sort and then calls msort (short for merge sort) to do the
+@@ -1479,7 +1470,7 @@ patmatch(char *pattern, const char *string)
+ }
+
+
+-#if !defined(__GLIBC__) || defined(FNMATCH_BROKEN)
++#ifndef HAVE_FNMATCH
+ STATIC int ccmatch(const char *p, int chr, const char **r)
+ {
+ static const struct class {
+--
+1.5.5
+
+From f22cfbd19cbadbc9b01733cdd20ed2336b7fcb25 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sat, 20 Oct 2007 18:49:31 +0800
+Subject: [PATCH] [PARSER] Fix here-doc corruption
+
+The change
+
+ [PARSER] Recognise here-doc delimiters terminated by EOF
+
+introduced a regerssion whereby lines starting with eofmark but are not equal
+to eofmark would be corrupted. This patch fixes it.
+
+Test case:
+
+ cat << _ACEOF
+ _ASBOX
+ _ACEOF
+
+Old result:
+
+ SASBOX
+
+New result:
+
+ _ASBOX
+---
+ ChangeLog | 1 +
+ src/parser.c | 11 ++++++-----
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index a821c32..d50d36c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-10-20 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Added configure --enable-glob and --enable-fnmatch options.
++ * Fix here-doc corruption.
+
+ 2007-10-17 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/parser.c b/src/parser.c
+index 4b8a5fe..3832f0b 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1047,16 +1047,17 @@ checkend: {
+ if (c == *eofmark) {
+ if (pfgets(line, sizeof line) != NULL) {
+ char *p, *q;
++ int cc;
+
+ p = line;
+ for (q = eofmark + 1;; p++, q++) {
+- c = *p;
+- if (c == '\n')
+- c = 0;
+- if (!*q || c != *q)
++ cc = *p;
++ if (cc == '\n')
++ cc = 0;
++ if (!*q || cc != *q)
+ break;
+ }
+- if (c == *q) {
++ if (cc == *q) {
+ c = PEOF;
+ plinno++;
+ needprompt = doprompt;
+--
+1.5.5
+
+From 042874b59ff2a4264ba31e3fac68a8410f3b0d3c Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sun, 11 Nov 2007 14:21:23 +0800
+Subject: [PATCH] [PARSER] Removed noexpand/length check on eofmark
+
+On Tue, Oct 30, 2007 at 04:23:35AM +0000, Oleg Verych wrote:
+>
+> } 8<<""
+> ======================
+
+Actually this (the empty delim) only works with dash by accident.
+I've tried bash and pdksh and they both terminate on the first
+empty line which is what you would expect rather than EOF. The
+real Korn shell does something completely different.
+
+I've fixed this in dash to conform to bash/pdksh.
+
+> In [0] it's stated, that delimiter isn't evaluated (expanded), only
+> quoiting must be checked. That if() seems to be completely bogus.
+
+OK I agree. The reason it was there is because the parser would
+have already replaced the dollar sign by an internal representation.
+
+I've fixed it properly with this patch.
+
+Test case:
+
+ cat <<- $a
+ OK
+ $a
+
+ cat <<- ""
+ OK
+
+ echo OK
+
+Old result:
+
+ dash: Syntax error: Illegal eof marker for << redirection
+ OK
+
+ echo OK
+
+New result:
+
+ OK
+ OK
+ OK
+---
+ ChangeLog | 4 ++
+ src/input.c | 27 ------------------
+ src/input.h | 1 -
+ src/parser.c | 88 +++++++++++++++++++++++++--------------------------------
+ src/parser.h | 1 +
+ 5 files changed, 44 insertions(+), 77 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index d50d36c..ad98810 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-11-11 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Removed noexpand/length check on eofmark.
++
+ 2007-10-20 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Added configure --enable-glob and --enable-fnmatch options.
+diff --git a/src/input.c b/src/input.c
+index 11f7a3f..bc84e57 100644
+--- a/src/input.c
++++ b/src/input.c
+@@ -125,33 +125,6 @@ RESET {
+
+
+ /*
+- * Read a line from the script.
+- */
+-
+-char *
+-pfgets(char *line, int len)
+-{
+- char *p = line;
+- int nleft = len;
+- int c;
+-
+- while (--nleft > 0) {
+- c = pgetc2();
+- if (c == PEOF) {
+- if (p == line)
+- return NULL;
+- break;
+- }
+- *p++ = c;
+- if (c == '\n')
+- break;
+- }
+- *p = '\0';
+- return line;
+-}
+-
+-
+-/*
+ * Read a character from the script, returning PEOF on end of file.
+ * Nul characters in the input are silently discarded.
+ */
+diff --git a/src/input.h b/src/input.h
+index 1ed9ddf..1d6f528 100644
+--- a/src/input.h
++++ b/src/input.h
+@@ -50,7 +50,6 @@ extern int plinno;
+ extern int parsenleft; /* number of characters left in input buffer */
+ extern char *parsenextc; /* next character in input buffer */
+
+-char *pfgets(char *, int);
+ int pgetc(void);
+ int pgetc2(void);
+ int preadbuffer(void);
+diff --git a/src/parser.c b/src/parser.c
+index 3832f0b..2d20b00 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -59,8 +59,6 @@
+ * Shell command parser.
+ */
+
+-#define EOFMARKLEN 79
+-
+ /* values returned by readtoken */
+ #include "token.h"
+
+@@ -101,7 +99,6 @@ STATIC int peektoken(void);
+ STATIC int readtoken(void);
+ STATIC int xxreadtoken(void);
+ STATIC int readtoken1(int, char const *, char *, int);
+-STATIC int noexpand(char *);
+ STATIC void synexpect(int) __attribute__((__noreturn__));
+ STATIC void synerror(const char *) __attribute__((__noreturn__));
+ STATIC void setprompt(int);
+@@ -596,18 +593,17 @@ parsefname(void)
+ {
+ union node *n = redirnode;
+
++ if (n->type == NHERE)
++ checkkwd = CHKEOFMARK;
+ if (readtoken() != TWORD)
+ synexpect(-1);
+ if (n->type == NHERE) {
+ struct heredoc *here = heredoc;
+ struct heredoc *p;
+- int i;
+
+ if (quoteflag == 0)
+ n->type = NXHERE;
+ TRACE(("Here document %d\n", n->type));
+- if (! noexpand(wordtext) || (i = strlen(wordtext)) == 0 || i > EOFMARKLEN)
+- synerror("Illegal eof marker for << redirection");
+ rmescapes(wordtext);
+ here->eofmark = wordtext;
+ here->next = NULL;
+@@ -836,7 +832,6 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs)
+ int c = firstc;
+ char *out;
+ int len;
+- char line[EOFMARKLEN + 1];
+ struct nodelist *bqlist;
+ int quotef;
+ int dblquote;
+@@ -1036,6 +1031,9 @@ endword:
+
+ checkend: {
+ if (eofmark) {
++ int markloc;
++ char *p;
++
+ if (c == PEOA) {
+ c = pgetc2();
+ }
+@@ -1044,28 +1042,42 @@ checkend: {
+ c = pgetc2();
+ }
+ }
+- if (c == *eofmark) {
+- if (pfgets(line, sizeof line) != NULL) {
+- char *p, *q;
+- int cc;
+-
+- p = line;
+- for (q = eofmark + 1;; p++, q++) {
+- cc = *p;
+- if (cc == '\n')
+- cc = 0;
+- if (!*q || cc != *q)
+- break;
+- }
+- if (cc == *q) {
+- c = PEOF;
+- plinno++;
+- needprompt = doprompt;
+- } else {
+- pushstring(line, NULL);
++
++ markloc = out - (char *)stackblock();
++ for (p = eofmark; STPUTC(c, out), *p; p++) {
++ if (c != *p)
++ goto more_heredoc;
++
++ c = pgetc2();
++ }
++
++ if (c == '\n' || c == PEOF) {
++ c = PEOF;
++ plinno++;
++ needprompt = doprompt;
++ } else {
++ int len;
++
++more_heredoc:
++ p = (char *)stackblock() + markloc + 1;
++ len = out - p;
++
++ if (len) {
++ len -= c < 0;
++ c = p[-1];
++
++ if (len) {
++ char *str;
++
++ str = alloca(len + 1);
++ *(char *)mempcpy(str, p, len) = 0;
++
++ pushstring(str, NULL);
+ }
+ }
+ }
++
++ STADJUST((char *)stackblock() + markloc - out, out);
+ }
+ goto checkend_return;
+ }
+@@ -1148,6 +1160,7 @@ parsesub: {
+
+ c = pgetc();
+ if (
++ (checkkwd & CHKEOFMARK) ||
+ c <= PEOA ||
+ (c != '(' && c != '{' && !is_name(c) && !is_special(c))
+ ) {
+@@ -1400,29 +1413,6 @@ RESET {
+ }
+ #endif
+
+-/*
+- * Returns true if the text contains nothing to expand (no dollar signs
+- * or backquotes).
+- */
+-
+-STATIC int
+-noexpand(char *text)
+-{
+- char *p;
+- signed char c;
+-
+- p = text;
+- while ((c = *p++) != '\0') {
+- if (c == CTLQUOTEMARK)
+- continue;
+- if (c == CTLESC)
+- p++;
+- else if (BASESYNTAX[(int)c] == CCTL)
+- return 0;
+- }
+- return 1;
+-}
+-
+
+ /*
+ * Return of a legal variable name (a letter or underscore followed by zero or
+diff --git a/src/parser.h b/src/parser.h
+index badbd07..6bdf1c9 100644
+--- a/src/parser.h
++++ b/src/parser.h
+@@ -65,6 +65,7 @@
+ #define CHKALIAS 0x1
+ #define CHKKWD 0x2
+ #define CHKNL 0x4
++#define CHKEOFMARK 0x8
+
+
+ /*
+--
+1.5.5
+
+From 3bcc676119296304eaf2d73831d5ab80c4206b45 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sun, 11 Nov 2007 15:00:06 +0800
+Subject: [PATCH] [EXPAND] Removed herefd hack
+
+The herefd hack goes back more than a decade. it limits the amount of
+memory we have to allocate when expanding here-documents by writing the
+result out from time to time. However, it's no longer safe because the
+stack is used to place intermediate results too and there we certainly
+don't want to write them out should we be short on memory.
+
+In any case, with today's computers we can afford to keep the entire
+result in memory and write them out at the end.
+---
+ ChangeLog | 1 +
+ src/eval.c | 6 ------
+ src/expand.c | 4 ----
+ src/memalloc.c | 5 -----
+ src/memalloc.h | 1 -
+ 5 files changed, 1 insertions(+), 16 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ad98810..39940b9 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-11-11 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Removed noexpand/length check on eofmark.
++ * Removed herefd hack.
+
+ 2007-10-20 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/eval.c b/src/eval.c
+index 17b558d..a8feaa0 100644
+--- a/src/eval.c
++++ b/src/eval.c
+@@ -577,8 +577,6 @@ evalpipe(union node *n, int flags)
+ void
+ evalbackcmd(union node *n, struct backcmd *result)
+ {
+- int saveherefd;
+-
+ result->fd = -1;
+ result->buf = NULL;
+ result->nleft = 0;
+@@ -587,9 +585,6 @@ evalbackcmd(union node *n, struct backcmd *result)
+ goto out;
+ }
+
+- saveherefd = herefd;
+- herefd = -1;
+-
+ #ifdef notyet
+ /*
+ * For now we disable executing builtins in the same
+@@ -636,7 +631,6 @@ evalbackcmd(union node *n, struct backcmd *result)
+ result->fd = pip[0];
+ result->jp = jp;
+ }
+- herefd = saveherefd;
+ out:
+ TRACE(("evalbackcmd done: fd=%d buf=0x%x nleft=%d jp=0x%x\n",
+ result->fd, result->buf, result->nleft, result->jp));
+diff --git a/src/expand.c b/src/expand.c
+index c489446..ee699e8 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -184,7 +184,6 @@ static inline const char *getpwhome(const char *name)
+ void
+ expandhere(union node *arg, int fd)
+ {
+- herefd = fd;
+ expandarg(arg, (struct arglist *)NULL, EXP_QUOTED);
+ xwrite(fd, stackblock(), expdest - (char *)stackblock());
+ }
+@@ -663,18 +662,15 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla
+ int quotes = flag & QUOTES_ESC;
+ char *startp;
+ char *loc;
+- int saveherefd = herefd;
+ struct nodelist *saveargbackq = argbackq;
+ int amount;
+ char *rmesc, *rmescend;
+ int zero;
+ char *(*scan)(char *, char *, char *, char *, int , int);
+
+- herefd = -1;
+ argstr(p, EXP_TILDE | (subtype != VSASSIGN && subtype != VSQUESTION ?
+ (flag & EXP_QUOTED ? EXP_QPAT : EXP_CASE) : 0));
+ STPUTC('\0', expdest);
+- herefd = saveherefd;
+ argbackq = saveargbackq;
+ startp = stackblock() + startloc;
+
+diff --git a/src/memalloc.c b/src/memalloc.c
+index 8d3e2ed..e75e609 100644
+--- a/src/memalloc.c
++++ b/src/memalloc.c
+@@ -109,7 +109,6 @@ struct stack_block *stackp = &stackbase;
+ char *stacknxt = stackbase.space;
+ size_t stacknleft = MINSIZE;
+ char *sstrend = stackbase.space + MINSIZE;
+-int herefd = -1;
+
+ pointer
+ stalloc(size_t nbytes)
+@@ -264,10 +263,6 @@ void *
+ growstackstr(void)
+ {
+ size_t len = stackblocksize();
+- if (herefd >= 0 && len >= 1024) {
+- xwrite(herefd, stackblock(), len);
+- return stackblock();
+- }
+ growstackblock();
+ return stackblock() + len;
+ }
+diff --git a/src/memalloc.h b/src/memalloc.h
+index ad6015d..4b5be46 100644
+--- a/src/memalloc.h
++++ b/src/memalloc.h
+@@ -46,7 +46,6 @@ struct stackmark {
+ extern char *stacknxt;
+ extern size_t stacknleft;
+ extern char *sstrend;
+-extern int herefd;
+
+ pointer ckmalloc(size_t);
+ pointer ckrealloc(pointer, size_t);
+--
+1.5.5
+
+From 2f0c9d44f44945e49b9e079944dcf01f3477c8dc Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Sun, 11 Nov 2007 15:27:00 +0800
+Subject: [PATCH] [EXPAND] Expand here-documents in the current shell environment
+
+Previously we always expanded here-documents in a subshell. This is
+contrary to the POSIX specification and how other shells behave. What's
+more this slows down many expansions due to the extra fork (however, it
+must be said that it is possible for it speed up certain expansions by
+running it simultaneously with the command on two CPUs).
+
+This patch move the expansion into the current shell environment.
+
+Test case:
+
+ unset a
+ cat <<- EOF > /dev/null
+ ${a=NOT}
+ EOF
+ echo ${a}BAD
+
+Old result:
+
+ BAD
+
+New result:
+
+ NOTBAD
+---
+ ChangeLog | 1 +
+ src/expand.c | 12 ------------
+ src/expand.h | 1 -
+ src/redir.c | 24 ++++++++++++++----------
+ 4 files changed, 15 insertions(+), 23 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 39940b9..de37261 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -2,6 +2,7 @@
+
+ * Removed noexpand/length check on eofmark.
+ * Removed herefd hack.
++ * Expand here-documents in the current shell environment.
+
+ 2007-10-20 Herbert Xu <herbert@gondor.apana.org.au>
+
+diff --git a/src/expand.c b/src/expand.c
+index ee699e8..f3d63c4 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -178,18 +178,6 @@ static inline const char *getpwhome(const char *name)
+
+
+ /*
+- * Expand shell variables and backquotes inside a here document.
+- */
+-
+-void
+-expandhere(union node *arg, int fd)
+-{
+- expandarg(arg, (struct arglist *)NULL, EXP_QUOTED);
+- xwrite(fd, stackblock(), expdest - (char *)stackblock());
+-}
+-
+-
+-/*
+ * Perform variable substitution and command substitution on an argument,
+ * placing the resulting list of arguments in arglist. If EXP_FULL is true,
+ * perform splitting and file name expansion. When arglist is NULL, perform
+diff --git a/src/expand.h b/src/expand.h
+index 225b004..1862aea 100644
+--- a/src/expand.h
++++ b/src/expand.h
+@@ -62,7 +62,6 @@ struct arglist {
+
+
+ union node;
+-void expandhere(union node *, int);
+ void expandarg(union node *, struct arglist *, int);
+ void expari(int);
+ #define rmescapes(p) _rmescapes((p), 0)
+diff --git a/src/redir.c b/src/redir.c
+index 33dbc88..ce34db0 100644
+--- a/src/redir.c
++++ b/src/redir.c
+@@ -295,18 +295,25 @@ err:
+ STATIC int
+ openhere(union node *redir)
+ {
++ char *p;
+ int pip[2];
+ size_t len = 0;
+
+ if (pipe(pip) < 0)
+ sh_error("Pipe call failed");
+- if (redir->type == NHERE) {
+- len = strlen(redir->nhere.doc->narg.text);
+- if (len <= PIPESIZE) {
+- xwrite(pip[1], redir->nhere.doc->narg.text, len);
+- goto out;
+- }
++
++ p = redir->nhere.doc->narg.text;
++ if (redir->type == NXHERE) {
++ expandarg(redir->nhere.doc, NULL, EXP_QUOTED);
++ p = stackblock();
++ }
++
++ len = strlen(p);
++ if (len <= PIPESIZE) {
++ xwrite(pip[1], p, len);
++ goto out;
+ }
++
+ if (forkshell((struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) {
+ close(pip[0]);
+ signal(SIGINT, SIG_IGN);
+@@ -316,10 +323,7 @@ openhere(union node *redir)
+ signal(SIGTSTP, SIG_IGN);
+ #endif
+ signal(SIGPIPE, SIG_DFL);
+- if (redir->type == NHERE)
+- xwrite(pip[1], redir->nhere.doc->narg.text, len);
+- else
+- expandhere(redir->nhere.doc, pip[1]);
++ xwrite(pip[1], p, len);
+ _exit(0);
+ }
+ out:
+--
+1.5.5
+
+From 1db0b82e3cafe809be176016b1e83a05119eac08 Mon Sep 17 00:00:00 2001
+From: Steve Langasek <steve.langasek@canonical.com>
+Date: Sun, 23 Dec 2007 11:02:26 +0800
+Subject: [PATCH] [EVAL] Fix bad pointer arithmetic in evalcommand
+
+dash dies on sparc with a SIGBUS due to an arithmetic error introduced
+with commit 03b4958, this patch fixes it.
+---
+ ChangeLog | 4 ++++
+ src/eval.c | 3 ++-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index de37261..e72849c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-12-23 Steve Langasek <steve.langasek@canonical.com>
++
++ * Fixed bad pointer arithmetic in evalcommand.
++
+ 2007-11-11 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Removed noexpand/length check on eofmark.
+diff --git a/src/eval.c b/src/eval.c
+index a8feaa0..77291b4 100644
+--- a/src/eval.c
++++ b/src/eval.c
+@@ -722,7 +722,8 @@ evalcommand(union node *cmd, int flags)
+ }
+
+ /* Reserve one extra spot at the front for shellexec. */
+- argv = nargv = stalloc(sizeof (char *) * (argc + 2)) + 1;
++ nargv = stalloc(sizeof (char *) * (argc + 2));
++ argv = ++nargv;
+ for (sp = arglist.list ; sp ; sp = sp->next) {
+ TRACE(("evalcommand arg: %s\n", sp->text));
+ *nargv++ = sp->text;
+--
+1.5.5
+
+From e3806e06bd39fb62033646b812937a1712fd78ed Mon Sep 17 00:00:00 2001
+From: Richard M Kreuter <kreuter@progn.net>
+Date: Sun, 23 Dec 2007 11:24:48 +0800
+Subject: [PATCH] [BUILTIN] Add set +o support
+
+The dash(1) in Debian stable does not support "set +o" in the manner
+specified by SUSv3:
+
+|+o
+| Write the current option settings to standard output in a format
+| that is suitable for reinput to the shell as commands that
+| achieve the same options settings.
+
+(citation from
+http://www.opengroup.org/onlinepubs/009695399/utilities/set.html)
+
+Instead, dash's "set +o" prints the shell's options in a
+human-readable format.
+
+Here is a simple test program that exercises this feature; it works as
+I believe is required under bash, but not under dash.
+
+ # Save the shell's options
+ set +o > /tmp/settings-commands
+ set -o | sort > /tmp/settings-before
+ # Change some options.
+ set -v
+ set -f
+ set -x
+ set +o emacs
+ set -o vi
+ # Try to restore our options.
+ . /tmp/settings-commands
+ set -o | sort > /tmp/settings-after
+ # Compare.
+ diff /tmp/settings-before /tmp/settings-after
+
+I believe the following small patch adds this feature to dash, and
+documents it in the manual page:
+
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+---
+ ChangeLog | 4 ++++
+ src/dash.1 | 5 +++++
+ src/options.c | 16 ++++++++++++----
+ 3 files changed, 21 insertions(+), 4 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index e72849c..10ec45c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-12-23 Richard M Kreuter <kreuter@progn.net>
++
++ * Add set +o support.
++
+ 2007-12-23 Steve Langasek <steve.langasek@canonical.com>
+
+ * Fixed bad pointer arithmetic in evalcommand.
+diff --git a/src/dash.1 b/src/dash.1
+index 9b8ab0e..b4140eb 100644
+--- a/src/dash.1
++++ b/src/dash.1
+@@ -1782,6 +1782,11 @@ With no arguments, it lists the values of all shell variables.
+ If options are given, it sets the specified option
+ flags, or clears them as described in the section called
+ .Sx Argument List Processing .
++As a special case, if the option is -o or +o and no argument is
++supplied, the shell prints the settings of all its options. If the
++option is -o, the settings are printed in a human-readable format; if
++the option is +o, the settings are printed in a format suitable for
++reinput to the shell to affect the same option settings.
+ .Pp
+ The third use of the set command is to set the values of the shell's
+ positional parameters to the specified args.
+diff --git a/src/options.c b/src/options.c
+index f669117..48c9671 100644
+--- a/src/options.c
++++ b/src/options.c
+@@ -240,10 +240,18 @@ minus_o(char *name, int val)
+ int i;
+
+ if (name == NULL) {
+- out1str("Current option settings\n");
+- for (i = 0; i < NOPTS; i++)
+- out1fmt("%-16s%s\n", optnames[i],
+- optlist[i] ? "on" : "off");
++ if (val) {
++ out1str("Current option settings\n");
++ for (i = 0; i < NOPTS; i++)
++ out1fmt("%-16s%s\n", optnames[i],
++ optlist[i] ? "on" : "off");
++ } else {
++ for (i = 0; i < NOPTS; i++)
++ out1fmt("set %s %s\n",
++ optlist[i] ? "-o" : "+o",
++ optnames[i]);
++
++ }
+ } else {
+ for (i = 0; i < NOPTS; i++)
+ if (equal(name, optnames[i])) {
+--
+1.5.5
+
+From 509ca4a5a2699af4bce734dfb9efa10e2b5f631d Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Sun, 23 Dec 2007 21:24:37 +0800
+Subject: [PATCH] [ARITH] If imaxdiv() isn't available, use / and % operators
+
+Although in posix, imaxdiv() isn't implemented on Debian/alpha, causing
+dash to fail to build. So use / and % operators if imaxdiv() isn't
+available.
+
+ http://bugs.debian.org/456398
+
+Signed-off-by: Gerrit Pape <pape@smarden.org>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+---
+ ChangeLog | 4 ++++
+ configure.ac | 5 +++--
+ src/arith_yacc.c | 6 ++++++
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 10ec45c..56acd66 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-12-23 Gerrit Pape <pape@smarden.org>
++
++ * If imaxdiv() isn't available, use / and % operators.
++
+ 2007-12-23 Richard M Kreuter <kreuter@progn.net>
+
+ * Add set +o support.
+diff --git a/configure.ac b/configure.ac
+index ccc4ac1..4d739c2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -33,8 +33,9 @@ dnl Checks for libraries.
+ dnl Checks for header files.
+
+ dnl Checks for library functions.
+-AC_CHECK_FUNCS(bsearch getpwnam getrlimit isalpha killpg mempcpy sigsetmask \
+- stpcpy strchrnul strsignal strtod strtoimax strtoumax sysconf)
++AC_CHECK_FUNCS(bsearch getpwnam getrlimit imaxdiv isalpha killpg mempcpy \
++ sigsetmask stpcpy strchrnul strsignal strtod strtoimax \
++ strtoumax sysconf)
+
+ if test "$enable_fnmatch" = yes; then
+ use_fnmatch=
+diff --git a/src/arith_yacc.c b/src/arith_yacc.c
+index e473594..f4857fe 100644
+--- a/src/arith_yacc.c
++++ b/src/arith_yacc.c
+@@ -88,7 +88,9 @@ static inline int higher_prec(int op1, int op2)
+
+ static intmax_t do_binop(int op, intmax_t a, intmax_t b)
+ {
++#ifdef HAVE_IMAXDIV
+ imaxdiv_t div;
++#endif
+
+ switch (op) {
+ default:
+@@ -96,8 +98,12 @@ static intmax_t do_binop(int op, intmax_t a, intmax_t b)
+ case ARITH_DIV:
+ if (!b)
+ yyerror("division by zero");
++#ifdef HAVE_IMAXDIV
+ div = imaxdiv(a, b);
+ return op == ARITH_REM ? div.rem : div.quot;
++#else
++ return op == ARITH_REM ? a % b : a / b;
++#endif
+ case ARITH_MUL:
+ return a * b;
+ case ARITH_ADD:
+--
+1.5.5
+
+From 6b46a86991dff7af70dfd249c27767be9b7d4c97 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 27 Dec 2007 13:54:16 +1100
+Subject: [PATCH] [PARSER] Add FAKEEOFMARK for expandstr
+
+Previously expandstr used the string "" to indicate that it needs to be
+treated just like a here-doc except that there is no terminator. However,
+the string "" is in fact a valid here-doc terminator so now that we deal
+with it correctly expandstr no longer works in the presence of new-lines
+in the prompt.
+
+This patch introduces the FAKEEOFMARK macro which does not equal any
+real EOF marker but is distinct from the NULL pointer which is used to
+indicate non-here-doc contexts.
+
+Thanks to Markus Triska for reporting this regression.
+
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+---
+ ChangeLog | 4 ++++
+ src/parser.c | 14 ++++++++++++--
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 56acd66..8b392f4 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2007-12-27 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Add FAKEEOFMARK for expandstr.
++
+ 2007-12-23 Gerrit Pape <pape@smarden.org>
+
+ * If imaxdiv() isn't available, use / and % operators.
+diff --git a/src/parser.c b/src/parser.c
+index 2d20b00..3206328 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -64,6 +64,11 @@
+
+
+
++/* Used by expandstr to get here-doc like behaviour. */
++#define FAKEEOFMARK (char *)1
++
++
++
+ struct heredoc {
+ struct heredoc *next; /* next here document in list */
+ union node *here; /* redirection node */
+@@ -113,6 +118,11 @@ isassignment(const char *p)
+ return *q == '=';
+ }
+
++static inline int realeofmark(const char *eofmark)
++{
++ return eofmark && eofmark != FAKEEOFMARK;
++}
++
+
+ /*
+ * Read and parse a command. Returns NEOF on end of file. (NULL is a
+@@ -1030,7 +1040,7 @@ endword:
+ */
+
+ checkend: {
+- if (eofmark) {
++ if (realeofmark(eofmark)) {
+ int markloc;
+ char *p;
+
+@@ -1492,7 +1502,7 @@ expandstr(const char *ps)
+
+ /* XXX Fix (char *) cast. */
+ setinputstring((char *)ps);
+- readtoken1(pgetc(), DQSYNTAX, nullstr, 0);
++ readtoken1(pgetc(), DQSYNTAX, FAKEEOFMARK, 0);
+ popfile();
+
+ n.narg.type = NARG;
+--
+1.5.5
+
+From 8cbde910100fa6b708c3eeb35cfd366726034967 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 27 Dec 2007 13:57:07 +1100
+Subject: [PATCH] [PARSER] Do not show prompts in expandstr
+
+Once I fixed the previous problem it became apparent that we never dealt
+with prompts with new-lines in them correctly. The problem is that we
+showed a secondary prompt for each of them.
+
+This patch disables prompt generation in expandstr.
+
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+---
+ ChangeLog | 1 +
+ src/parser.c | 8 ++++++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 8b392f4..0030738 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2007-12-27 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Add FAKEEOFMARK for expandstr.
++ * Do not show prompts in expandstr.
+
+ 2007-12-23 Gerrit Pape <pape@smarden.org>
+
+diff --git a/src/parser.c b/src/parser.c
+index 3206328..9dd6185 100644
+--- a/src/parser.c
++++ b/src/parser.c
+@@ -1499,10 +1499,18 @@ const char *
+ expandstr(const char *ps)
+ {
+ union node n;
++ int saveprompt;
+
+ /* XXX Fix (char *) cast. */
+ setinputstring((char *)ps);
++
++ saveprompt = doprompt;
++ doprompt = 0;
++
+ readtoken1(pgetc(), DQSYNTAX, FAKEEOFMARK, 0);
++
++ doprompt = saveprompt;
++
+ popfile();
+
+ n.narg.type = NARG;
+--
+1.5.5
+
+From 8eacbcc79c48f2656127f488ef3172d69e092343 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Tue, 1 Jan 2008 13:46:01 +1100
+Subject: [PATCH] [EXPAND] Fix slash treatment in expmeta
+
+The change
+
+ [EXPAND] Do not quote back slashes in parameter expansions outside quotes
+
+triggered a latent bug in expmeta where the forward slashes when preceded
+by a blackslash weren't recognised as directory separators. This was hidden
+because a work-around was put in place for glob(3) which meant that we never
+had any backslashes immediately before forward slashes.
+
+This patch fixes the metaflag loop to recognise forward slashes even when
+they follow a backslash.
+
+Thanks to Daniel Hahler for reporting this problem.
+
+Test case:
+
+ echo "/"root*
+
+Old result:
+
+ /root*
+
+New result:
+
+ /root
+
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+---
+ ChangeLog | 4 ++++
+ src/expand.c | 15 ++++++++-------
+ 2 files changed, 12 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 0030738..4ed9125 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2008-01-01 Herbert Xu <herbert@gondor.apana.org.au>
++
++ * Fix slash treatment in expmeta.
++
+ 2007-12-27 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * Add FAKEEOFMARK for expandstr.
+diff --git a/src/expand.c b/src/expand.c
+index f3d63c4..5986236 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -1287,15 +1287,16 @@ expmeta(char *enddir, char *name)
+ break;
+ }
+ }
+- } else if (*p == '\\')
+- p++;
+- else if (*p == '/') {
+- if (metaflag)
+- goto out;
+- start = p + 1;
++ } else {
++ if (*p == '\\')
++ p++;
++ if (*p == '/') {
++ if (metaflag)
++ break;
++ start = p + 1;
++ }
+ }
+ }
+-out:
+ if (metaflag == 0) { /* we've reached the end of the file name */
+ if (enddir != expdir)
+ metaflag++;
+--
+1.5.5
+
+From c696bc5f353a57ec0f12b3e8fcecc0a2004126ec Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Mon, 7 Jan 2008 09:26:06 +0000
+Subject: [PATCH] run aclocal && autoconf && autoheader && automake
+
+---
+ Makefile.in | 133 +-
+ aclocal.m4 | 174 ++-
+ config.h.in | 9 +
+ configure | 4909 +++++++++++++++++++++++++++++++------------------------
+ src/Makefile.in | 175 +--
+ 5 files changed, 3074 insertions(+), 2326 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 943db1b..b646890 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.10 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006 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.
+@@ -13,15 +13,11 @@
+ # PARTICULAR PURPOSE.
+
+ @SET_MAKE@
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+-top_builddir = .
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+ install_sh_SCRIPT = $(install_sh) -c
+@@ -43,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+- configure.lineno configure.status.lineno
++ configure.lineno config.status.lineno
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = config.h
+ CONFIG_CLEAN_FILES =
+@@ -51,10 +47,13 @@ SOURCES =
+ DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+- install-exec-recursive install-info-recursive \
+- install-recursive installcheck-recursive installdirs-recursive \
+- pdf-recursive ps-recursive uninstall-info-recursive \
+- uninstall-recursive
++ install-dvi-recursive install-exec-recursive \
++ install-html-recursive install-info-recursive \
++ install-pdf-recursive install-ps-recursive install-recursive \
++ installcheck-recursive installdirs-recursive pdf-recursive \
++ ps-recursive uninstall-recursive
++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
++ distclean-recursive maintainer-clean-recursive
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+@@ -70,8 +69,6 @@ GZIP_ENV = --best
+ distuninstallcheck_listfiles = find . -type f -print
+ distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+-AMDEP_FALSE = @AMDEP_FALSE@
+-AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+ AUTOCONF = @AUTOCONF@
+ AUTOHEADER = @AUTOHEADER@
+@@ -91,6 +88,8 @@ ECHO_N = @ECHO_N@
+ ECHO_T = @ECHO_T@
+ EGREP = @EGREP@
+ EXEEXT = @EXEEXT@
++GREP = @GREP@
++INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -100,6 +99,7 @@ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKDIR_P = @MKDIR_P@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -113,10 +113,12 @@ SHELL = @SHELL@
+ STRIP = @STRIP@
+ VERSION = @VERSION@
+ YACC = @YACC@
++YFLAGS = @YFLAGS@
++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_STRIP = @ac_ct_STRIP@
+-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+@@ -124,24 +126,35 @@ am__tar = @am__tar@
+ am__untar = @am__untar@
+ bindir = @bindir@
+ build_alias = @build_alias@
++builddir = @builddir@
+ datadir = @datadir@
++datarootdir = @datarootdir@
++docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host_alias = @host_alias@
++htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++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_builddir = @top_builddir@
++top_srcdir = @top_srcdir@
+ SUBDIRS = src
+ all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+@@ -184,7 +197,7 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+- $(MAKE) stamp-h1; \
++ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+@@ -197,7 +210,6 @@ $(srcdir)/config.h.in: $(am__configure_deps)
+
+ distclean-hdr:
+ -rm -f config.h stamp-h1
+-uninstall-info-am:
+
+ # This directory's subdirectories are mostly independent; you can cd
+ # into them and run `make' without going through this Makefile.
+@@ -230,8 +242,7 @@ $(RECURSIVE_TARGETS):
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+-mostlyclean-recursive clean-recursive distclean-recursive \
+-maintainer-clean-recursive:
++$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+@@ -333,23 +344,22 @@ distclean-tags:
+
+ distdir: $(DISTFILES)
+ $(am__remove_distdir)
+- mkdir $(distdir)
+- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+- list='$(DISTFILES)'; for file in $$list; do \
+- case $$file in \
+- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+- esac; \
++ test -d $(distdir) || mkdir $(distdir)
++ @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; \
+- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+- dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
+- else \
+- dir=''; \
+- fi; \
+ if test -d $$d/$$file; then \
++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+@@ -363,7 +373,7 @@ distdir: $(DISTFILES)
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+- || $(mkdir_p) "$(distdir)/$$subdir" \
++ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+@@ -371,6 +381,8 @@ distdir: $(DISTFILES)
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
++ am__remove_distdir=: \
++ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+@@ -378,7 +390,7 @@ distdir: $(DISTFILES)
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
++ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+ dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+@@ -453,7 +465,7 @@ distcheck: dist
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
++ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+ distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+@@ -522,12 +534,20 @@ info-am:
+
+ install-data-am:
+
++install-dvi: install-dvi-recursive
++
+ install-exec-am:
+
++install-html: install-html-recursive
++
+ install-info: install-info-recursive
+
+ install-man:
+
++install-pdf: install-pdf-recursive
++
++install-ps: install-ps-recursive
++
+ installcheck-am:
+
+ maintainer-clean: maintainer-clean-recursive
+@@ -548,24 +568,25 @@ ps: ps-recursive
+
+ ps-am:
+
+-uninstall-am: uninstall-info-am
+-
+-uninstall-info: uninstall-info-recursive
+-
+-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+- check-am clean clean-generic clean-recursive ctags \
+- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
+- dist-tarZ dist-zip distcheck distclean distclean-generic \
+- distclean-hdr distclean-recursive distclean-tags \
+- distcleancheck distdir distuninstallcheck dvi dvi-am html \
+- html-am info info-am install install-am install-data \
+- install-data-am install-exec install-exec-am install-info \
+- install-info-am install-man install-strip installcheck \
+- installcheck-am installdirs installdirs-am maintainer-clean \
+- maintainer-clean-generic maintainer-clean-recursive \
+- mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
+- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+- uninstall-info-am
++uninstall-am:
++
++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
++ install-strip
++
++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
++ all all-am am--refresh check check-am clean clean-generic \
++ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
++ dist-shar dist-tarZ dist-zip distcheck distclean \
++ distclean-generic distclean-hdr distclean-tags distcleancheck \
++ distdir distuninstallcheck 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 installdirs-am maintainer-clean \
++ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
++ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+
+ # 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.
+diff --git a/aclocal.m4 b/aclocal.m4
+index 965df90..ce67b57 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -1,7 +1,7 @@
+-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
++# generated automatically by aclocal 1.10 -*- Autoconf -*-
+
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+-# 2005 Free Software Foundation, Inc.
++# 2005, 2006 Free Software Foundation, Inc.
+ # This file 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.
+@@ -11,7 +11,12 @@
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE.
+
+-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
++m4_if(m4_PACKAGE_VERSION, [2.61],,
++[m4_fatal([this file was generated for autoconf 2.61.
++You have another version of autoconf. If you want to use that,
++you should regenerate the build system entirely.], [63])])
++
++# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -21,14 +26,29 @@
+ # ----------------------------
+ # Automake X.Y traces this macro to ensure aclocal.m4 has been
+ # generated from the m4 files accompanying Automake X.Y.
+-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
++# (This private macro should not be called outside this file.)
++AC_DEFUN([AM_AUTOMAKE_VERSION],
++[am__api_version='1.10'
++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
++dnl require some minimum version. Point them to the right macro.
++m4_if([$1], [1.10], [],
++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
++])
++
++# _AM_AUTOCONF_VERSION(VERSION)
++# -----------------------------
++# aclocal traces this macro to find the Autoconf version.
++# This is a private macro too. Using m4_define simplifies
++# the logic in aclocal, which can simply ignore this definition.
++m4_define([_AM_AUTOCONF_VERSION], [])
+
+ # AM_SET_CURRENT_AUTOMAKE_VERSION
+ # -------------------------------
+-# Call AM_AUTOMAKE_VERSION so it can be traced.
++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+- [AM_AUTOMAKE_VERSION([1.9.5])])
++[AM_AUTOMAKE_VERSION([1.10])dnl
++_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
+
+ # AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+@@ -85,14 +105,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
+
+ # AM_CONDITIONAL -*- Autoconf -*-
+
+-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
++# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+ # Free Software Foundation, Inc.
+ #
+ # This file 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.
+
+-# serial 7
++# serial 8
+
+ # AM_CONDITIONAL(NAME, SHELL-CONDITION)
+ # -------------------------------------
+@@ -101,8 +121,10 @@ AC_DEFUN([AM_CONDITIONAL],
+ [AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+-AC_SUBST([$1_TRUE])
+-AC_SUBST([$1_FALSE])
++AC_SUBST([$1_TRUE])dnl
++AC_SUBST([$1_FALSE])dnl
++_AM_SUBST_NOTMAKE([$1_TRUE])dnl
++_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+ if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+@@ -116,15 +138,14 @@ AC_CONFIG_COMMANDS_PRE(
+ Usually this means the macro was only invoked conditionally.]])
+ fi])])
+
+-
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ # Free Software Foundation, Inc.
+ #
+ # This file 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.
+
+-# serial 8
++# serial 9
+
+ # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+ # written in clear, in which case automake, when reading aclocal.m4,
+@@ -152,6 +173,7 @@ AC_REQUIRE([AM_DEP_TRACK])dnl
+ ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
++ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+@@ -217,6 +239,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+@@ -269,7 +292,8 @@ if test "x$enable_dependency_tracking" != xno; then
+ AMDEPBACKSLASH='\'
+ fi
+ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+-AC_SUBST([AMDEPBACKSLASH])
++AC_SUBST([AMDEPBACKSLASH])dnl
++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+ ])
+
+ # Generate code to set up dependency tracking. -*- Autoconf -*-
+@@ -294,8 +318,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+- # So let's grep whole file.
+- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
++ # Grep'ing the whole file is not good either: AIX grep has a line
++ # limit of 2048, but all sed's we know have understand at least 4000.
++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+@@ -342,8 +367,8 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+
+ # Do all the work for Automake. -*- Autoconf -*-
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
++# 2005, 2006 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -366,16 +391,20 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+ # arguments mandatory, and then we can depend on a new Autoconf
+ # release and drop the old call support.
+ AC_DEFUN([AM_INIT_AUTOMAKE],
+-[AC_PREREQ([2.58])dnl
++[AC_PREREQ([2.60])dnl
+ dnl Autoconf wants to disallow AM_ names. We explicitly allow
+ dnl the ones we care about.
+ m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+ AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+-# test to see if srcdir already configured
+-if test "`cd $srcdir && pwd`" != "`pwd`" &&
+- test -f $srcdir/config.status; then
+- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
++if test "`cd $srcdir && pwd`" != "`pwd`"; then
++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
++ # is not polluted with repeated "-I."
++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
++ # test to see if srcdir already configured
++ if test -f $srcdir/config.status; then
++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
++ fi
+ fi
+
+ # test whether we have cygpath
+@@ -395,6 +424,9 @@ m4_ifval([$2],
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+ [_AM_SET_OPTIONS([$1])dnl
++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
++m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+@@ -430,6 +462,10 @@ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
++AC_PROVIDE_IFELSE([AC_PROG_OBJC],
++ [_AM_DEPENDENCIES(OBJC)],
++ [define([AC_PROG_OBJC],
++ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+ ])
+ ])
+
+@@ -465,7 +501,7 @@ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+ # Define $install_sh.
+ AC_DEFUN([AM_PROG_INSTALL_SH],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-install_sh=${install_sh-"$am_aux_dir/install-sh"}
++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+ AC_SUBST(install_sh)])
+
+ # Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+@@ -543,14 +579,14 @@ rm -f confinc confmf
+
+ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
++# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+ # Free Software Foundation, Inc.
+ #
+ # This file 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.
+
+-# serial 4
++# serial 5
+
+ # AM_MISSING_PROG(NAME, PROGRAM)
+ # ------------------------------
+@@ -566,6 +602,7 @@ AC_SUBST($1)])
+ # If it does, set am_missing_run to use it, otherwise, to nothing.
+ AC_DEFUN([AM_MISSING_HAS_RUN],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
++AC_REQUIRE_AUX_FILE([missing])dnl
+ test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+ # Use eval to expand $SHELL
+ if eval "$MISSING --run true"; then
+@@ -576,7 +613,7 @@ else
+ fi
+ ])
+
+-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -584,60 +621,23 @@ fi
+
+ # AM_PROG_MKDIR_P
+ # ---------------
+-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+-#
+-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+-# created by `make install' are always world readable, even if the
+-# installer happens to have an overly restrictive umask (e.g. 077).
+-# This was a mistake. There are at least two reasons why we must not
+-# use `-m 0755':
+-# - it causes special bits like SGID to be ignored,
+-# - it may be too restrictive (some setups expect 775 directories).
+-#
+-# Do not use -m 0755 and let people choose whatever they expect by
+-# setting umask.
+-#
+-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+-# Some implementations (such as Solaris 8's) are not thread-safe: if a
+-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+-# concurrently, both version can detect that a/ is missing, but only
+-# one can create it and the other will error out. Consequently we
+-# restrict ourselves to GNU make (using the --version option ensures
+-# this.)
++# Check for `mkdir -p'.
+ AC_DEFUN([AM_PROG_MKDIR_P],
+-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+- # We used to keeping the `.' as first argument, in order to
+- # allow $(mkdir_p) to be used without argument. As in
+- # $(mkdir_p) $(somedir)
+- # where $(somedir) is conditionally defined. However this is wrong
+- # for two reasons:
+- # 1. if the package is installed by a user who cannot write `.'
+- # make install will fail,
+- # 2. the above comment should most certainly read
+- # $(mkdir_p) $(DESTDIR)$(somedir)
+- # so it does not work when $(somedir) is undefined and
+- # $(DESTDIR) is not.
+- # To support the latter case, we have to write
+- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+- # so the `.' trick is pointless.
+- mkdir_p='mkdir -p --'
+-else
+- # On NextStep and OpenStep, the `mkdir' command does not
+- # recognize any option. It will interpret all options as
+- # directories to create, and then abort because `.' already
+- # exists.
+- for d in ./-p ./--version;
+- do
+- test -d $d && rmdir $d
+- done
+- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+- if test -f "$ac_aux_dir/mkinstalldirs"; then
+- mkdir_p='$(mkinstalldirs)'
+- else
+- mkdir_p='$(install_sh) -d'
+- fi
+-fi
+-AC_SUBST([mkdir_p])])
++[AC_PREREQ([2.60])dnl
++AC_REQUIRE([AC_PROG_MKDIR_P])dnl
++dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
++dnl while keeping a definition of mkdir_p for backward compatibility.
++dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
++dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
++dnl Makefile.ins that do not define MKDIR_P, so we do our own
++dnl adjustment using top_builddir (which is defined more often than
++dnl MKDIR_P).
++AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
++case $mkdir_p in
++ [[\\/$]]* | ?:[[\\/]]*) ;;
++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
++esac
++])
+
+ # Helper functions for option handling. -*- Autoconf -*-
+
+@@ -749,9 +749,21 @@ dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+ if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+ fi
+-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+ AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
++# Copyright (C) 2006 Free Software Foundation, Inc.
++#
++# This file 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.
++
++# _AM_SUBST_NOTMAKE(VARIABLE)
++# ---------------------------
++# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
++# This macro is traced by Automake.
++AC_DEFUN([_AM_SUBST_NOTMAKE])
++
+ # Check how to create a tarball. -*- Autoconf -*-
+
+ # Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+diff --git a/config.h.in b/config.h.in
+index 02523bc..3d94d1d 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -3,12 +3,21 @@
+ /* Define to 1 if you have the `bsearch' function. */
+ #undef HAVE_BSEARCH
+
++/* Define to 1 if you have the `fnmatch' function. */
++#undef HAVE_FNMATCH
++
+ /* Define to 1 if you have the `getpwnam' function. */
+ #undef HAVE_GETPWNAM
+
+ /* Define to 1 if you have the `getrlimit' function. */
+ #undef HAVE_GETRLIMIT
+
++/* Define to 1 if you have the `glob' function. */
++#undef HAVE_GLOB
++
++/* Define to 1 if you have the `imaxdiv' function. */
++#undef HAVE_IMAXDIV
++
+ /* Define to 1 if you have the <inttypes.h> header file. */
+ #undef HAVE_INTTYPES_H
+
+diff --git a/configure b/configure
+index 8290284..7380665 100755
+--- a/configure
++++ b/configure
+@@ -1,25 +1,54 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.59 for dash 0.5.4.
++# Generated by GNU Autoconf 2.61 for dash 0.5.4.
+ #
+-# Copyright (C) 2003 Free Software Foundation, Inc.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -29,8 +58,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -44,18 +108,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -63,157 +128,388 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
++# CDPATH.
++$as_unset CDPATH
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
++if test "x$CONFIG_SHELL" = x; then
++ if (eval ":") 2>/dev/null; then
++ as_have_required=yes
++else
++ as_have_required=no
+ fi
+
++ if test $as_have_required = yes && (eval ":
++(as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0) || { (exit 1); exit 1; }
++
++(
++ as_lineno_1=\$LINENO
++ as_lineno_2=\$LINENO
++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
++") 2> /dev/null; then
++ :
++else
++ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
++ case $as_dir in
+ /*)
+- if ("$as_dir/$as_base" -c '
++ for as_base in sh bash ksh sh5; do
++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
++ done;;
++ esac
++done
++IFS=$as_save_IFS
++
++
++ for as_shell in $as_candidate_shells $SHELL; do
++ # Try only shells that exist, to save several forks.
++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
++ { ("$as_shell") 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++_ASEOF
++}; then
++ CONFIG_SHELL=$as_shell
++ as_have_required=yes
++ if { "$as_shell" 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++(as_func_return () {
++ (exit $1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = "$1" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test $exitcode = 0) || { (exit 1); exit 1; }
++
++(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
++
++_ASEOF
++}; then
++ break
++fi
++
++fi
++
++ done
++
++ if test "x$CONFIG_SHELL" != x; then
++ for as_var in BASH_ENV ENV
++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ done
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
++fi
++
++
++ if test $as_have_required = no; then
++ echo This script requires a shell more modern than all the
++ echo shells that I found on your system. Please install a
++ echo modern shell, or manually run the script under such a
++ echo shell if you do have one.
++ { (exit 1); exit 1; }
++fi
++
++
++fi
++
++fi
++
++
++
++(eval "as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0") || {
++ echo No shell found that supports shell functions.
++ echo Please tell autoconf@gnu.org about your system,
++ echo including any error possibly output before this
++ echo message
++}
++
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
++ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -222,7 +518,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+
++exec 7<&0 </dev/null 6>&1
+
+ # Name of the host.
+ # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+ # so uname gets run too.
+ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+-exec 6>&1
+-
+ #
+ # Initializations.
+ #
+ ac_default_prefix=/usr/local
++ac_clean_files=
+ ac_config_libobj_dir=.
++LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete. It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+ # Identity of this package.
+ PACKAGE_NAME='dash'
+ PACKAGE_TARNAME='dash'
+@@ -275,42 +580,135 @@ ac_unique_file="src/main.c"
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#if HAVE_SYS_TYPES_H
++#ifdef HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#if HAVE_SYS_STAT_H
++#ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#if STDC_HEADERS
++#ifdef STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# if HAVE_STDLIB_H
++# ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#if HAVE_STRINGS_H
++#ifdef HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#if HAVE_INTTYPES_H
++#ifdef HAVE_INTTYPES_H
+ # include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-# include <stdint.h>
+-# endif
+ #endif
+-#if HAVE_UNISTD_H
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE YACC CC_FOR_BUILD CPP EGREP LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL
++PATH_SEPARATOR
++PACKAGE_NAME
++PACKAGE_TARNAME
++PACKAGE_VERSION
++PACKAGE_STRING
++PACKAGE_BUGREPORT
++exec_prefix
++prefix
++program_transform_name
++bindir
++sbindir
++libexecdir
++datarootdir
++datadir
++sysconfdir
++sharedstatedir
++localstatedir
++includedir
++oldincludedir
++docdir
++infodir
++htmldir
++dvidir
++pdfdir
++psdir
++libdir
++localedir
++mandir
++DEFS
++ECHO_C
++ECHO_N
++ECHO_T
++LIBS
++build_alias
++host_alias
++target_alias
++INSTALL_PROGRAM
++INSTALL_SCRIPT
++INSTALL_DATA
++am__isrc
++CYGPATH_W
++PACKAGE
++VERSION
++ACLOCAL
++AUTOCONF
++AUTOMAKE
++AUTOHEADER
++MAKEINFO
++install_sh
++STRIP
++INSTALL_STRIP_PROGRAM
++mkdir_p
++AWK
++SET_MAKE
++am__leading_dot
++AMTAR
++am__tar
++am__untar
++CC
++CFLAGS
++LDFLAGS
++CPPFLAGS
++ac_ct_CC
++EXEEXT
++OBJEXT
++DEPDIR
++am__include
++am__quote
++AMDEP_TRUE
++AMDEP_FALSE
++AMDEPBACKSLASH
++CCDEPMODE
++am__fastdepCC_TRUE
++am__fastdepCC_FALSE
++YACC
++YFLAGS
++CC_FOR_BUILD
++CPP
++GREP
++EGREP
++LIBOBJS
++LTLIBOBJS'
+ ac_subst_files=''
++ ac_precious_vars='build_alias
++host_alias
++target_alias
++CC
++CFLAGS
++LDFLAGS
++LIBS
++CPPFLAGS
++YACC
++YFLAGS
++CPP'
++
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -337,34 +735,48 @@ x_libraries=NONE
+ # and all the variables that are supposed to be based on exec_prefix
+ # by default will actually change.
+ # Use braces instead of parens because sh, perl, etc. also accept them.
++# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datadir='${prefix}/share'
++datarootdir='${prefix}/share'
++datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+-libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-infodir='${prefix}/info'
+-mandir='${prefix}/man'
++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
++infodir='${datarootdir}/info'
++htmldir='${docdir}'
++dvidir='${docdir}'
++pdfdir='${docdir}'
++psdir='${docdir}'
++libdir='${exec_prefix}/lib'
++localedir='${datarootdir}/locale'
++mandir='${datarootdir}/man'
+
+ ac_prev=
++ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval "$ac_prev=\$ac_option"
++ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++ case $ac_option in
++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
++ *) ac_optarg=yes ;;
++ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_option in
++ case $ac_dashdash$ac_option in
++ --)
++ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -386,33 +798,45 @@ do
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+- | --da=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
++ | --dataroo | --dataro | --datar)
++ ac_prev=datarootdir ;;
++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
++ datarootdir=$ac_optarg ;;
++
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- eval "enable_$ac_feature=no" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=no ;;
++
++ -docdir | --docdir | --docdi | --doc | --do)
++ ac_prev=docdir ;;
++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
++ docdir=$ac_optarg ;;
++
++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
++ ac_prev=dvidir ;;
++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
++ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "enable_$ac_feature='$ac_optarg'" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -439,6 +863,12 @@ do
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
++ ac_prev=htmldir ;;
++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
++ | --ht=*)
++ htmldir=$ac_optarg ;;
++
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -463,13 +893,16 @@ do
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
++ -localedir | --localedir | --localedi | --localed | --locale)
++ ac_prev=localedir ;;
++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
++ localedir=$ac_optarg ;;
++
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst \
+- | --locals | --local | --loca | --loc | --lo)
++ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -534,6 +967,16 @@ do
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
++ ac_prev=pdfdir ;;
++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
++ pdfdir=$ac_optarg ;;
++
++ -psdir | --psdir | --psdi | --psd | --ps)
++ ac_prev=psdir ;;
++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
++ psdir=$ac_optarg ;;
++
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -586,24 +1029,20 @@ do
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package| sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "with_$ac_package='$ac_optarg'" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package | sed 's/-/_/g'`
+- eval "with_$ac_package=no" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -634,8 +1073,7 @@ Try \`$0 --help' for more information." >&2
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+- eval "$ac_envvar='$ac_optarg'"
++ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+@@ -655,27 +1093,19 @@ if test -n "$ac_prev"; then
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
+-do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
+- esac
+-done
+-
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+- localstatedir libdir includedir oldincludedir infodir mandir
++# Be sure to have absolute directory names.
++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
++ datadir sysconfdir sharedstatedir localstatedir includedir \
++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
++ libdir localedir mandir
+ do
+- eval ac_val=$`echo $ac_var`
++ eval ac_val=\$$ac_var
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
++ [\\/$]* | ?:[\\/]* ) continue;;
++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -702,74 +1132,76 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias-
+ test "$silent" = yes && exec 6>/dev/null
+
+
++ac_pwd=`pwd` && test -n "$ac_pwd" &&
++ac_ls_di=`ls -di .` &&
++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
++ { echo "$as_me: error: Working directory cannot be determined" >&2
++ { (exit 1); exit 1; }; }
++test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
++ { echo "$as_me: error: pwd does not report name of working directory" >&2
++ { (exit 1); exit 1; }; }
++
++
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+- # Try the directory containing this script, then its parent.
+- ac_confdir=`(dirname "$0") 2>/dev/null ||
++ # Try the directory containing this script, then the parent directory.
++ ac_confdir=`$as_dirname -- "$0" ||
+ $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$0" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r $srcdir/$ac_unique_file; then
++ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r $srcdir/$ac_unique_file; then
+- if test "$ac_srcdir_defaulted" = yes; then
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+- { (exit 1); exit 1; }; }
+- else
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++if test ! -r "$srcdir/$ac_unique_file"; then
++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+- fi
+ fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
++ac_abs_confdir=`(
++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
++ pwd)`
++# When building in place, set srcdir=.
++if test "$ac_abs_confdir" = "$ac_pwd"; then
++ srcdir=.
++fi
++# Remove unnecessary trailing slashes from srcdir.
++# Double slashes in file names in object file debugging info
++# mess up M-x gdb in Emacs.
++case $srcdir in
++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
++esac
++for ac_var in $ac_precious_vars; do
++ eval ac_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_env_${ac_var}_value=\$${ac_var}
++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_cv_env_${ac_var}_value=\$${ac_var}
++done
+
+ #
+ # Report the --help message.
+@@ -798,9 +1230,6 @@ Configuration:
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-_ACEOF
+-
+- cat <<_ACEOF
+ Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+@@ -818,15 +1247,22 @@ Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+- --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+- --infodir=DIR info documentation [PREFIX/info]
+- --mandir=DIR man documentation [PREFIX/man]
++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
++ --infodir=DIR info documentation [DATAROOTDIR/info]
++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
++ --mandir=DIR man documentation [DATAROOTDIR/man]
++ --docdir=DIR documentation root [DATAROOTDIR/doc/dash]
++ --htmldir=DIR html documentation [DOCDIR]
++ --dvidir=DIR dvi documentation [DOCDIR]
++ --pdfdir=DIR pdf documentation [DOCDIR]
++ --psdir=DIR ps documentation [DOCDIR]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -849,6 +1285,9 @@ Optional Features:
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
++ --enable-static Build statical linked program
++ --enable-fnmatch Use fnmatch(3) from libc
++ --enable-glob Use glob(3) from libc
+
+ Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+@@ -860,128 +1299,100 @@ Some influential environment variables:
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+- headers in a nonstandard directory <include dir>
++ LIBS libraries to pass to the linker, e.g. -l<library>
++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
++ you have headers in a nonstandard directory <include dir>
++ YACC The `Yet Another C Compiler' implementation to use. Defaults to
++ the first program found out of: `bison -y', `byacc', `yacc'.
++ YFLAGS The list of arguments that will be passed by default to $YACC.
++ This script will default YFLAGS to the empty string to avoid a
++ default value of `-d' given by some make applications.
+ CPP C preprocessor
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ _ACEOF
++ac_status=$?
+ fi
+
+ if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+- ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+- test -d $ac_dir || continue
++ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+ esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+-
+- cd $ac_dir
+- # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f $ac_srcdir/configure.gnu; then
+- echo
+- $SHELL $ac_srcdir/configure.gnu --help=recursive
+- elif test -f $ac_srcdir/configure; then
+- echo
+- $SHELL $ac_srcdir/configure --help=recursive
+- elif test -f $ac_srcdir/configure.ac ||
+- test -f $ac_srcdir/configure.in; then
+- echo
+- $ac_configure --help
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
++
++ cd "$ac_dir" || { ac_status=$?; continue; }
++ # Check for guested configure.
++ if test -f "$ac_srcdir/configure.gnu"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
++ elif test -f "$ac_srcdir/configure"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+- fi
+- cd "$ac_popdir"
++ fi || ac_status=$?
++ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+ fi
+
+-test -n "$ac_init_help" && exit 0
++test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ dash configure 0.5.4
+-generated by GNU Autoconf 2.59
++generated by GNU Autoconf 2.61
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+- exit 0
++ exit
+ fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
++cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by dash $as_me 0.5.4, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
++exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1000,7 +1411,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown`
+ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+ /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+ /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+ /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+ /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+ /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+@@ -1014,6 +1425,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
++IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1035,7 +1447,6 @@ _ACEOF
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
+-ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1046,7 +1457,7 @@ do
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+@@ -1068,9 +1479,7 @@ do
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
++ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+@@ -1081,8 +1490,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log. We remove comments because anyway the quotes in there
+ # would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
++# WARNING: Use '\'' to represent an apostrophe within the trap.
++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+ trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+@@ -1095,20 +1504,34 @@ trap 'exit_status=$?
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
+ (set) 2>&1 |
+- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ sed -n \
+- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+- ;;
++ "s/'\''/'\''\\\\'\'''\''/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
++ ;; #(
+ *)
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-}
++ esac |
++ sort
++)
+ echo
+
+ cat <<\_ASBOX
+@@ -1119,22 +1542,28 @@ _ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
++## ------------------- ##
++## File substitutions. ##
++## ------------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+@@ -1146,26 +1575,24 @@ _ASBOX
+ ## ----------- ##
+ _ASBOX
+ echo
+- sed "/^$/d" confdefs.h | sort
++ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+- rm -f core *.core &&
+- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core core.conftest.* &&
++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+- ' 0
++' 0
+ for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+ done
+ ac_signal=0
+
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
++rm -f -r conftest* confdefs.h
+
+ # Predefined preprocessor variables.
+
+@@ -1196,14 +1623,17 @@ _ACEOF
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -z "$CONFIG_SITE"; then
+- if test "x$prefix" != xNONE; then
+- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+- else
+- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+- fi
++if test -n "$CONFIG_SITE"; then
++ set x "$CONFIG_SITE"
++elif test "x$prefix" != xNONE; then
++ set x "$prefix/share/config.site" "$prefix/etc/config.site"
++else
++ set x "$ac_default_prefix/share/config.site" \
++ "$ac_default_prefix/etc/config.site"
+ fi
+-for ac_site_file in $CONFIG_SITE; do
++shift
++for ac_site_file
++do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+ echo "$as_me: loading site script $ac_site_file" >&6;}
+@@ -1219,8 +1649,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -1232,12 +1662,11 @@ fi
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
++for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+- eval ac_new_val="\$ac_env_${ac_var}_value"
++ eval ac_old_val=\$ac_cv_env_${ac_var}_value
++ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+@@ -1262,8 +1691,7 @@ echo "$as_me: current value: $ac_new_val" >&2;}
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1280,11 +1708,6 @@ echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start ov
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+@@ -1309,34 +1732,45 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
++am__api_version='1.10'
+
+-am__api_version="1.9"
+ ac_aux_dir=
+-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+- if test -f $ac_dir/install-sh; then
++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
++ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f $ac_dir/install.sh; then
++ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f $ac_dir/shtool; then
++ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+ done
+ if test -z "$ac_aux_dir"; then
+- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++
++# These three variables are undocumented and unsupported,
++# and are intended to be withdrawn in a future Autoconf release.
++# They can cause serious problems if a builder's source tree is in a directory
++# whose full name contains unusual characters.
++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
++
+
+ # Find a good install program. We prefer a C program (faster),
+ # so one script is as good as another. But avoid the broken or
+@@ -1351,8 +1785,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -1374,7 +1808,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -1393,21 +1827,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -1417,8 +1852,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -1460,20 +1895,20 @@ echo "$as_me: error: newly created file is older than distributed files!
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ test "$program_prefix" != NONE &&
+- program_transform_name="s,^,$program_prefix,;$program_transform_name"
++ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
++ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm conftest.sed
++rm -f conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -1488,45 +1923,60 @@ else
+ echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+ fi
+
+-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+- # We used to keeping the `.' as first argument, in order to
+- # allow $(mkdir_p) to be used without argument. As in
+- # $(mkdir_p) $(somedir)
+- # where $(somedir) is conditionally defined. However this is wrong
+- # for two reasons:
+- # 1. if the package is installed by a user who cannot write `.'
+- # make install will fail,
+- # 2. the above comment should most certainly read
+- # $(mkdir_p) $(DESTDIR)$(somedir)
+- # so it does not work when $(somedir) is undefined and
+- # $(DESTDIR) is not.
+- # To support the latter case, we have to write
+- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+- # so the `.' trick is pointless.
+- mkdir_p='mkdir -p --'
+-else
+- # On NextStep and OpenStep, the `mkdir' command does not
+- # recognize any option. It will interpret all options as
+- # directories to create, and then abort because `.' already
+- # exists.
+- for d in ./-p ./--version;
+- do
+- test -d $d && rmdir $d
+- done
+- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+- if test -f "$ac_aux_dir/mkinstalldirs"; then
+- mkdir_p='$(mkinstalldirs)'
++{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
++echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; }
++if test -z "$MKDIR_P"; then
++ if test "${ac_cv_path_mkdir+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in mkdir gmkdir; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
++ 'mkdir (GNU coreutils) '* | \
++ 'mkdir (coreutils) '* | \
++ 'mkdir (fileutils) '4.1*)
++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
++ break 3;;
++ esac
++ done
++ done
++done
++IFS=$as_save_IFS
++
++fi
++
++ if test "${ac_cv_path_mkdir+set}" = set; then
++ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+- mkdir_p='$(install_sh) -d'
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for MKDIR_P within a source directory, because that will
++ # break other packages using the cache if that directory is
++ # removed, or if the value is a relative name.
++ test -d ./--version && rmdir ./--version
++ MKDIR_P="$ac_install_sh -d"
+ fi
+ fi
++{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5
++echo "${ECHO_T}$MKDIR_P" >&6; }
++
++mkdir_p="$MKDIR_P"
++case $mkdir_p in
++ [\\/$]* | ?:[\\/]*) ;;
++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
++esac
+
+ for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1539,54 +1989,57 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6
++ { echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$AWK" && break
+ done
+
+-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
++SHELL = /bin/sh
+ all:
+- @echo 'ac_maketemp="$(MAKE)"'
++ @echo '@@@%%%=$(MAKE)=@@@%%%'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+-if test -n "$ac_maketemp"; then
+- eval ac_cv_prog_make_${ac_make}_set=yes
+-else
+- eval ac_cv_prog_make_${ac_make}_set=no
+-fi
++case `${MAKE-make} -f conftest.make 2>/dev/null` in
++ *@@@%%%=?*=@@@%%%*)
++ eval ac_cv_prog_make_${ac_make}_set=yes;;
++ *)
++ eval ac_cv_prog_make_${ac_make}_set=no;;
++esac
+ rm -f conftest.make
+ fi
+-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -1599,12 +2052,16 @@ else
+ fi
+ rmdir .tst 2>/dev/null
+
+-# test to see if srcdir already configured
+-if test "`cd $srcdir && pwd`" != "`pwd`" &&
+- test -f $srcdir/config.status; then
+- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
++if test "`cd $srcdir && pwd`" != "`pwd`"; then
++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
++ # is not polluted with repeated "-I."
++ am__isrc=' -I$(srcdir)'
++ # test to see if srcdir already configured
++ if test -f $srcdir/config.status; then
++ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+ echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
++ fi
+ fi
+
+ # test whether we have cygpath
+@@ -1647,7 +2104,7 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+-install_sh=${install_sh-"$am_aux_dir/install-sh"}
++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+ # Installed binaries are usually stripped using `strip' when the user
+ # run `make install-strip'. However `strip' might not be the right
+@@ -1657,8 +2114,8 @@ if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1671,32 +2128,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1709,33 +2168,47 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+
+ fi
+-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+ # We need awk for the "check" target. The system "awk" is bad on
+ # some platforms.
+@@ -1751,7 +2224,7 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+- ac_config_headers="$ac_config_headers config.h"
++ac_config_headers="$ac_config_headers config.h"
+
+
+ ac_ext=c
+@@ -1762,8 +2235,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1776,32 +2249,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1814,36 +2289,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1856,74 +2346,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1937,7 +2387,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -1948,6 +2398,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -1965,22 +2416,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1993,36 +2445,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2035,29 +2489,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -2070,21 +2540,35 @@ See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+@@ -2109,47 +2593,77 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out"
+ # Try to create an executable without -o first, disregard a.out.
+ # It will help us diagnose broken compilers, and finding out an intuition
+ # of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+- (eval $ac_link_default) 2>&5
++#
++# List of possible output files, starting from the most likely.
++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
++# only as a last resort. b.out is created by i960 compilers.
++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
++#
++# The IRIX 6 linker writes into existing files which may not be
++# executable, retaining their permissions. Remove them first so a
++# subsequent execution test works.
++ac_rmfiles=
++for ac_file in $ac_files
++do
++ case $ac_file in
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
++ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
++ esac
++done
++rm -f $ac_rmfiles
++
++if { (ac_try="$ac_link_default"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- # Find the output, starting from the most likely. This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
++# in a Makefile. We should not override ac_cv_exeext if it was cached,
++# so that the user can short-circuit this test for compilers unknown to
++# Autoconf.
++for ac_file in $ac_files ''
+ do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+- ;;
+- conftest.$ac_ext )
+- # This is the source file.
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- # FIXME: I believe we export ac_cv_exeext for Libtool,
+- # but it would be cool to find out if it's true. Does anybody
+- # maintain Libtool? --akim.
+- export ac_cv_exeext
++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
++ then :; else
++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ fi
++ # We set ac_cv_exeext here because the later test for it is not
++ # safe: cross compilers may not add the suffix if given an `-o'
++ # argument, so we may need to know it at that point already.
++ # Even if this section looks crufty: it has the advantage of
++ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+ done
++test "$ac_cv_exeext" = no && ac_cv_exeext=
++
+ else
++ ac_file=''
++fi
++
++{ echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6; }
++if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -2161,19 +2675,21 @@ See \`config.log' for more details." >&2;}
+ fi
+
+ ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+ # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+ # If not cross compiling, check that we can run a simple program.
+ if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -2192,22 +2708,27 @@ See \`config.log' for more details." >&2;}
+ fi
+ fi
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
++echo "${ECHO_T}$cross_compiling" >&6; }
++
++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -2218,9 +2739,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -2234,14 +2754,14 @@ See \`config.log' for more details." >&2;}
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
++echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+ rm -f conftest.$ac_ext
+ EXEEXT=$ac_cv_exeext
+ ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+ if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2261,14 +2781,20 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
++ for ac_file in conftest.o conftest.obj conftest.*; do
++ test -f "$ac_file" || continue;
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -2286,12 +2812,12 @@ fi
+
+ rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
++echo "${ECHO_T}$ac_cv_objext" >&6; }
+ OBJEXT=$ac_cv_objext
+ ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2314,49 +2840,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -2372,37 +2898,118 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -2418,12 +3025,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -2457,12 +3064,17 @@ static char *f (char * (*g) (char **, int), char **p, ...)
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -2477,201 +3089,57 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -2679,7 +3147,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ DEPDIR="${am__leading_dot}deps"
+
+- ac_config_commands="$ac_config_commands depfiles"
++ac_config_commands="$ac_config_commands depfiles"
+
+
+ am_make=${MAKE-make}
+@@ -2689,8 +3157,8 @@ am__doit:
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -2717,22 +3185,20 @@ if test "$am__include" = "#"; then
+ fi
+
+
+-echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6
++{ echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6; }
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval="$enable_dependency_tracking"
++ enableval=$enable_dependency_tracking;
++fi
+
+-fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ fi
+-
+-
+-if test "x$enable_dependency_tracking" != xno; then
++ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+ else
+@@ -2742,11 +3208,10 @@ fi
+
+
+
+-
+ depcc="$CC" am_compiler_list=
+
+-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2810,6 +3275,7 @@ else
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+@@ -2835,13 +3301,11 @@ else
+ fi
+
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+-
+-
+-if
++ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+@@ -2862,8 +3326,8 @@ for ac_prog in 'bison -y' byacc
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_YACC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2876,40 +3340,61 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_YACC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ YACC=$ac_cv_prog_YACC
+ if test -n "$YACC"; then
+- echo "$as_me:$LINENO: result: $YACC" >&5
+-echo "${ECHO_T}$YACC" >&6
++ { echo "$as_me:$LINENO: result: $YACC" >&5
++echo "${ECHO_T}$YACC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$YACC" && break
+ done
+ test -n "$YACC" || YACC="yacc"
+
+
+-echo "$as_me:$LINENO: checking for build system compiler" >&5
+-echo $ECHO_N "checking for build system compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for build system compiler" >&5
++echo $ECHO_N "checking for build system compiler... $ECHO_C" >&6; }
+ if test "$cross_compiling" = yes; then
+ CC_FOR_BUILD=${CC_FOR_BUILD-cc}
+ else
+ CC_FOR_BUILD=${CC}
+ fi
+-echo "$as_me:$LINENO: result: ${CC_FOR_BUILD}" >&5
+-echo "${ECHO_T}${CC_FOR_BUILD}" >&6
++{ echo "$as_me:$LINENO: result: ${CC_FOR_BUILD}" >&5
++echo "${ECHO_T}${CC_FOR_BUILD}" >&6; }
++
++
++# Check whether --enable-static was given.
++if test "${enable_static+set}" = set; then
++ enableval=$enable_static;
++fi
+
++if test "$enable_static" = "yes"; then
++ export LDFLAGS="-static -Wl,--fatal-warnings"
++fi
++
++# Check whether --enable-fnmatch was given.
++if test "${enable_fnmatch+set}" = set; then
++ enableval=$enable_fnmatch;
++fi
++
++# Check whether --enable-glob was given.
++if test "${enable_glob+set}" = set; then
++ enableval=$enable_glob;
++fi
+
+
+
+@@ -2928,13 +3413,16 @@ echo "${ECHO_T}${CC_FOR_BUILD}" >&6
+
+
+
+-for ac_func in bsearch getpwnam getrlimit isalpha killpg mempcpy sigsetmask \
+- stpcpy strchrnul strsignal strtod strtoimax strtoumax sysconf
++
++
++for ac_func in bsearch getpwnam getrlimit imaxdiv isalpha killpg mempcpy \
++ sigsetmask stpcpy strchrnul strsignal strtod strtoimax \
++ strtoumax sysconf
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -2960,67 +3448,254 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
++#endif
++
++int
++main ()
++{
++return $ac_func ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ eval "$as_ac_var=yes"
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ eval "$as_ac_var=no"
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
++if test `eval echo '${'$as_ac_var'}'` = yes; then
++ cat >>confdefs.h <<_ACEOF
++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++done
++
++
++if test "$enable_fnmatch" = yes; then
++ use_fnmatch=
++
++for ac_func in fnmatch
++do
++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define $ac_func innocuous_$ac_func
++
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char $ac_func (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
++
++#ifdef __STDC__
++# include <limits.h>
+ #else
+-char (*f) () = $ac_func;
++# include <assert.h>
+ #endif
++
++#undef $ac_func
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+-}
++extern "C"
++#endif
++char $ac_func ();
++/* The GNU C library defines this for functions which it implements
++ to always fail with ENOSYS. Some functions are actually named
++ something starting with __ and the normal name is an alias. */
++#if defined __stub_$ac_func || defined __stub___$ac_func
++choke me
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ eval "$as_ac_var=yes"
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ eval "$as_ac_var=no"
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
++if test `eval echo '${'$as_ac_var'}'` = yes; then
++ cat >>confdefs.h <<_ACEOF
++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
++_ACEOF
++ use_fnmatch=yes
++fi
++done
++
++fi
++
++if test "$use_fnmatch" = yes && test "$enable_glob" = yes; then
++
++for ac_func in glob
++do
++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define $ac_func innocuous_$ac_func
++
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char $ac_func (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
++
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++
++#undef $ac_func
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char $ac_func ();
++/* The GNU C library defines this for functions which it implements
++ to always fail with ENOSYS. Some functions are actually named
++ something starting with __ and the normal name is an alias. */
++#if defined __stub_$ac_func || defined __stub___$ac_func
++choke me
++#endif
++
++int
++main ()
++{
++return $ac_func ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -3029,9 +3704,10 @@ _ACEOF
+ fi
+ done
+
++fi
+
+-echo "$as_me:$LINENO: checking for signal" >&5
+-echo $ECHO_N "checking for signal... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for signal" >&5
++echo $ECHO_N "checking for signal... $ECHO_C" >&6; }
+ if test "${ac_cv_func_signal+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3058,71 +3734,63 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef signal
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char signal ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_signal) || defined (__stub___signal)
++#if defined __stub_signal || defined __stub___signal
+ choke me
+-#else
+-char (*f) () = signal;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != signal;
++return signal ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_signal=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_signal=no
++ ac_cv_func_signal=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_signal" >&5
+-echo "${ECHO_T}$ac_cv_func_signal" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_signal" >&5
++echo "${ECHO_T}$ac_cv_func_signal" >&6; }
+
+ if test "$ac_cv_func_signal" != yes; then
+- echo "$as_me:$LINENO: checking for bsd_signal" >&5
+-echo $ECHO_N "checking for bsd_signal... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for bsd_signal" >&5
++echo $ECHO_N "checking for bsd_signal... $ECHO_C" >&6; }
+ if test "${ac_cv_func_bsd_signal+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3149,67 +3817,59 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef bsd_signal
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char bsd_signal ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_bsd_signal) || defined (__stub___bsd_signal)
++#if defined __stub_bsd_signal || defined __stub___bsd_signal
+ choke me
+-#else
+-char (*f) () = bsd_signal;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != bsd_signal;
++return bsd_signal ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_bsd_signal=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_bsd_signal=no
++ ac_cv_func_bsd_signal=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_bsd_signal" >&5
+-echo "${ECHO_T}$ac_cv_func_bsd_signal" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_bsd_signal" >&5
++echo "${ECHO_T}$ac_cv_func_bsd_signal" >&6; }
+ if test $ac_cv_func_bsd_signal = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -3220,8 +3880,8 @@ fi
+
+ fi
+
+-echo "$as_me:$LINENO: checking for stat64" >&5
+-echo $ECHO_N "checking for stat64... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for stat64" >&5
++echo $ECHO_N "checking for stat64... $ECHO_C" >&6; }
+ if test "${ac_cv_func_stat64+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3248,67 +3908,59 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef stat64
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char stat64 ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_stat64) || defined (__stub___stat64)
++#if defined __stub_stat64 || defined __stub___stat64
+ choke me
+-#else
+-char (*f) () = stat64;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != stat64;
++return stat64 ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_stat64=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_stat64=no
++ ac_cv_func_stat64=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_stat64" >&5
+-echo "${ECHO_T}$ac_cv_func_stat64" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_stat64" >&5
++echo "${ECHO_T}$ac_cv_func_stat64" >&6; }
+ if test $ac_cv_func_stat64 = yes; then
+ :
+ else
+@@ -3338,11 +3990,11 @@ fi
+
+
+
+-# Check whether --with-libedit or --without-libedit was given.
++# Check whether --with-libedit was given.
+ if test "${with_libedit+set}" = set; then
+- withval="$with_libedit"
++ withval=$with_libedit;
++fi
+
+-fi;
+ use_libedit=
+ if test "$with_libedit" = "yes"; then
+ ac_ext=c
+@@ -3350,8 +4002,8 @@ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -3385,24 +4037,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -3411,9 +4061,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3423,24 +4074,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -3451,6 +4100,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -3468,8 +4118,8 @@ fi
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
++{ echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6; }
+ ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+@@ -3492,24 +4142,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -3518,9 +4166,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3530,24 +4179,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -3558,6 +4205,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -3580,23 +4228,170 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Extract the first word of "grep ggrep" to use in msg output
++if test -z "$GREP"; then
++set dummy grep ggrep; ac_prog_name=$2
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_GREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
++ # Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_GREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++GREP="$ac_cv_path_GREP"
++if test -z "$GREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_GREP=$GREP
++fi
++
++
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
++echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
++
++
++{ echo "$as_me:$LINENO: checking for egrep" >&5
++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+- then ac_cv_prog_egrep='grep -E'
+- else ac_cv_prog_egrep='egrep'
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ # Extract the first word of "egrep" to use in msg output
++if test -z "$EGREP"; then
++set dummy egrep; ac_prog_name=$2
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_EGREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
++ # Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
+ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_EGREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++EGREP="$ac_cv_path_EGREP"
++if test -z "$EGREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++
++ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
+
+
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+ if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3620,34 +4415,31 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_header_stdc=no
++ ac_cv_header_stdc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+@@ -3703,6 +4495,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
++#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -3722,18 +4515,27 @@ main ()
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
++ return 2;
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -3746,12 +4548,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
++echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+ if test $ac_cv_header_stdc = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -3774,9 +4578,9 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -3790,37 +4594,35 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -3831,8 +4633,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking for history_init in -ledit" >&5
+-echo $ECHO_N "checking for history_init in -ledit... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for history_init in -ledit" >&5
++echo $ECHO_N "checking for history_init in -ledit... $ECHO_C" >&6; }
+ if test "${ac_cv_lib_edit_history_init+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3845,69 +4647,67 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char history_init ();
+ int
+ main ()
+ {
+-history_init ();
++return history_init ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_edit_history_init=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_edit_history_init=no
++ ac_cv_lib_edit_history_init=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_edit_history_init" >&5
+-echo "${ECHO_T}$ac_cv_lib_edit_history_init" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_edit_history_init" >&5
++echo "${ECHO_T}$ac_cv_lib_edit_history_init" >&6; }
+ if test $ac_cv_lib_edit_history_init = yes; then
+
+ if test "${ac_cv_header_histedit_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for histedit.h" >&5
+-echo $ECHO_N "checking for histedit.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for histedit.h" >&5
++echo $ECHO_N "checking for histedit.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_histedit_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_histedit_h" >&5
+-echo "${ECHO_T}$ac_cv_header_histedit_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_histedit_h" >&5
++echo "${ECHO_T}$ac_cv_header_histedit_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking histedit.h usability" >&5
+-echo $ECHO_N "checking histedit.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking histedit.h usability" >&5
++echo $ECHO_N "checking histedit.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -3918,40 +4718,37 @@ $ac_includes_default
+ #include <histedit.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking histedit.h presence" >&5
+-echo $ECHO_N "checking histedit.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking histedit.h presence" >&5
++echo $ECHO_N "checking histedit.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -3960,24 +4757,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <histedit.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -3985,9 +4780,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -4011,25 +4807,18 @@ echo "$as_me: WARNING: histedit.h: section \"Present But Cannot Be Compiled\
+ echo "$as_me: WARNING: histedit.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: histedit.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: histedit.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------- ##
+-## Report this to the dash lists. ##
+-## ------------------------------- ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for histedit.h" >&5
+-echo $ECHO_N "checking for histedit.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for histedit.h" >&5
++echo $ECHO_N "checking for histedit.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_histedit_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_histedit_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_histedit_h" >&5
+-echo "${ECHO_T}$ac_cv_header_histedit_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_histedit_h" >&5
++echo "${ECHO_T}$ac_cv_header_histedit_h" >&6; }
+
+ fi
+ if test $ac_cv_header_histedit_h = yes; then
+@@ -4053,7 +4842,7 @@ _ACEOF
+ else
+ export LIBS="$LIBS -ledit"
+ fi
+- ac_config_files="$ac_config_files Makefile src/Makefile"
++ac_config_files="$ac_config_files Makefile src/Makefile"
+
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+@@ -4073,39 +4862,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -4114,32 +4922,18 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ ]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ ]*$//;
+-}'
+-fi
+-
+ DEFS=-DHAVE_CONFIG_H
+
+ ac_libobjs=
+ ac_ltlibobjs=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+- ac_i=`echo "$ac_i" |
+- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+- # 2. Add them.
+- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
++ ac_i=`echo "$ac_i" | sed "$ac_script"`
++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
++ # will be set to the directory where LIBOBJS objects are built.
++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+ done
+ LIBOBJS=$ac_libobjs
+
+@@ -4184,17 +4978,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -4204,8 +5026,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -4219,18 +5076,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -4238,159 +5096,120 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+-
+-
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
+-fi
++# CDPATH.
++$as_unset CDPATH
+
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
++ chmod +x "$as_me.lineno" ||
++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -4399,7 +5218,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -4408,31 +5248,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+ exec 6>&1
+
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
++# Save the log message, to keep $[0] and so on meaningful, and to
+ # report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling. Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
++# values after options handling.
++ac_log="
+ This file was extended by dash $as_me 0.5.4, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -4440,30 +5263,20 @@ generated by GNU Autoconf 2.59. Invocation command line was
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
++on `(hostname || uname -n) 2>/dev/null | sed 1q`
++"
++
+ _ACEOF
+
++cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_headers"; then
+- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_links"; then
+- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
++config_files="$ac_config_files"
++config_headers="$ac_config_headers"
++config_commands="$ac_config_commands"
+
+-if test -n "$ac_config_commands"; then
+- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
++_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-
+ ac_cs_usage="\
+ \`$as_me' instantiates files from templates according to the
+ current configuration.
+@@ -4471,7 +5284,7 @@ current configuration.
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number, then exit
++ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+@@ -4490,19 +5303,22 @@ Configuration commands:
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ dash config.status 0.5.4
+-configured by $0, generated by GNU Autoconf 2.59,
+- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.61,
++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 2006 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
++
++ac_pwd='$ac_pwd'
++srcdir='$srcdir'
++INSTALL='$INSTALL'
++MKDIR_P='$MKDIR_P'
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -4513,39 +5329,24 @@ while test $# != 0
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "x$1" : 'x\([^=]*\)='`
+- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
++ ac_option=`expr "X$1" : 'X\([^=]*\)='`
++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+- -*)
++ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+- *) # This is not an option, so the user has probably given explicit
+- # arguments.
+- ac_option=$1
+- ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+- --version | --vers* | -V )
+- echo "$ac_cs_version"; exit 0 ;;
+- --he | --h)
+- # Conflict between --help and --header
+- { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; };;
+- --help | --hel | -h )
+- echo "$ac_cs_usage"; exit 0 ;;
+- --debug | --d* | -d )
++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
++ echo "$ac_cs_version"; exit ;;
++ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+@@ -4555,18 +5356,24 @@ Try \`$0 --help' for more information." >&2;}
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
++ --he | --h)
++ # Conflict between --help and --header
++ { echo "$as_me: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&2
++ { (exit 1); exit 1; }; };;
++ --help | --hel | -h )
++ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
++ -*) { echo "$as_me: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+- *) ac_config_targets="$ac_config_targets $1" ;;
++ *) ac_config_targets="$ac_config_targets $1"
++ ac_need_defaults=false ;;
+
+ esac
+ shift
+@@ -4582,38 +5389,50 @@ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
++ CONFIG_SHELL=$SHELL
++ export CONFIG_SHELL
++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ fi
+
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++exec 5>>config.log
++{
++ echo
++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
++## Running $as_me. ##
++_ASBOX
++ echo "$ac_log"
++} >&5
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS section.
++# INIT-COMMANDS
+ #
+-
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+ _ACEOF
+
+-
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
++
++# Handling of arguments.
+ for ac_config_target in $ac_config_targets
+ do
+- case "$ac_config_target" in
+- # Handling of arguments.
+- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
++ case $ac_config_target in
++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
++
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+ echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ done
+
++
+ # If the user did not use the arguments to specify the items to instantiate,
+ # then the envvar interface is used. Set only those that are not.
+ # We use the long form for the default assignment because of an extremely
+@@ -4625,578 +5444,534 @@ if $ac_need_defaults; then
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
++# simply because there is no reason against having it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
++# Hook for its removal unless debugging.
++# Note that there is a small window in which the directory will not be cleaned:
++# after its creation but before its name has been assigned to `$tmp'.
+ $debug ||
+ {
+- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
++ tmp=
++ trap 'exit_status=$?
++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
++' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+ }
+-
+ # Create a (secure) tmp directory for tmp files.
+
+ {
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./confstat$$-$RANDOM
+- (umask 077 && mkdir $tmp)
++ tmp=./conf$$-$RANDOM
++ (umask 077 && mkdir "$tmp")
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+ #
+-# CONFIG_FILES section.
++# Set up the sed scripts for CONFIG_FILES section.
+ #
+
+ # No need to generate the scripts if there are no CONFIG_FILES.
+ # This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+- # Protect against being on the right side of a sed subst in config.status.
+- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@CYGPATH_W@,$CYGPATH_W,;t t
+-s,@PACKAGE@,$PACKAGE,;t t
+-s,@VERSION@,$VERSION,;t t
+-s,@ACLOCAL@,$ACLOCAL,;t t
+-s,@AUTOCONF@,$AUTOCONF,;t t
+-s,@AUTOMAKE@,$AUTOMAKE,;t t
+-s,@AUTOHEADER@,$AUTOHEADER,;t t
+-s,@MAKEINFO@,$MAKEINFO,;t t
+-s,@install_sh@,$install_sh,;t t
+-s,@STRIP@,$STRIP,;t t
+-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+-s,@mkdir_p@,$mkdir_p,;t t
+-s,@AWK@,$AWK,;t t
+-s,@SET_MAKE@,$SET_MAKE,;t t
+-s,@am__leading_dot@,$am__leading_dot,;t t
+-s,@AMTAR@,$AMTAR,;t t
+-s,@am__tar@,$am__tar,;t t
+-s,@am__untar@,$am__untar,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@DEPDIR@,$DEPDIR,;t t
+-s,@am__include@,$am__include,;t t
+-s,@am__quote@,$am__quote,;t t
+-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+-s,@CCDEPMODE@,$CCDEPMODE,;t t
+-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+-s,@YACC@,$YACC,;t t
+-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-CEOF
++if test -n "$CONFIG_FILES"; then
+
+ _ACEOF
+
+- cat >>$CONFIG_STATUS <<\_ACEOF
+- # Split the substitutions into bite-sized pieces for seds with
+- # small command number limits, like on Digital OSF/1 and HP-UX.
+- ac_max_sed_lines=48
+- ac_sed_frag=1 # Number of current file.
+- ac_beg=1 # First line for current file.
+- ac_end=$ac_max_sed_lines # Line after last line for current file.
+- ac_more_lines=:
+- ac_sed_cmds=
+- while $ac_more_lines; do
+- if test $ac_beg -gt 1; then
+- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- else
+- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- fi
+- if test ! -s $tmp/subs.frag; then
+- ac_more_lines=false
+- else
+- # The purpose of the label and of the branching condition is to
+- # speed up the sed processing (if there are no `@' at all, there
+- # is no need to browse any of the substitutions).
+- # These are the two extra sed commands mentioned above.
+- (echo ':t
+- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+- else
+- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+- fi
+- ac_sed_frag=`expr $ac_sed_frag + 1`
+- ac_beg=$ac_end
+- ac_end=`expr $ac_end + $ac_max_sed_lines`
+- fi
+- done
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds=cat
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++SHELL!$SHELL$ac_delim
++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
++PACKAGE_NAME!$PACKAGE_NAME$ac_delim
++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
++PACKAGE_STRING!$PACKAGE_STRING$ac_delim
++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
++exec_prefix!$exec_prefix$ac_delim
++prefix!$prefix$ac_delim
++program_transform_name!$program_transform_name$ac_delim
++bindir!$bindir$ac_delim
++sbindir!$sbindir$ac_delim
++libexecdir!$libexecdir$ac_delim
++datarootdir!$datarootdir$ac_delim
++datadir!$datadir$ac_delim
++sysconfdir!$sysconfdir$ac_delim
++sharedstatedir!$sharedstatedir$ac_delim
++localstatedir!$localstatedir$ac_delim
++includedir!$includedir$ac_delim
++oldincludedir!$oldincludedir$ac_delim
++docdir!$docdir$ac_delim
++infodir!$infodir$ac_delim
++htmldir!$htmldir$ac_delim
++dvidir!$dvidir$ac_delim
++pdfdir!$pdfdir$ac_delim
++psdir!$psdir$ac_delim
++libdir!$libdir$ac_delim
++localedir!$localedir$ac_delim
++mandir!$mandir$ac_delim
++DEFS!$DEFS$ac_delim
++ECHO_C!$ECHO_C$ac_delim
++ECHO_N!$ECHO_N$ac_delim
++ECHO_T!$ECHO_T$ac_delim
++LIBS!$LIBS$ac_delim
++build_alias!$build_alias$ac_delim
++host_alias!$host_alias$ac_delim
++target_alias!$target_alias$ac_delim
++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
++INSTALL_DATA!$INSTALL_DATA$ac_delim
++am__isrc!$am__isrc$ac_delim
++CYGPATH_W!$CYGPATH_W$ac_delim
++PACKAGE!$PACKAGE$ac_delim
++VERSION!$VERSION$ac_delim
++ACLOCAL!$ACLOCAL$ac_delim
++AUTOCONF!$AUTOCONF$ac_delim
++AUTOMAKE!$AUTOMAKE$ac_delim
++AUTOHEADER!$AUTOHEADER$ac_delim
++MAKEINFO!$MAKEINFO$ac_delim
++install_sh!$install_sh$ac_delim
++STRIP!$STRIP$ac_delim
++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
++mkdir_p!$mkdir_p$ac_delim
++AWK!$AWK$ac_delim
++SET_MAKE!$SET_MAKE$ac_delim
++am__leading_dot!$am__leading_dot$ac_delim
++AMTAR!$AMTAR$ac_delim
++am__tar!$am__tar$ac_delim
++am__untar!$am__untar$ac_delim
++CC!$CC$ac_delim
++CFLAGS!$CFLAGS$ac_delim
++LDFLAGS!$LDFLAGS$ac_delim
++CPPFLAGS!$CPPFLAGS$ac_delim
++ac_ct_CC!$ac_ct_CC$ac_delim
++EXEEXT!$EXEEXT$ac_delim
++OBJEXT!$OBJEXT$ac_delim
++DEPDIR!$DEPDIR$ac_delim
++am__include!$am__include$ac_delim
++am__quote!$am__quote$ac_delim
++AMDEP_TRUE!$AMDEP_TRUE$ac_delim
++AMDEP_FALSE!$AMDEP_FALSE$ac_delim
++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
++CCDEPMODE!$CCDEPMODE$ac_delim
++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
++YACC!$YACC$ac_delim
++YFLAGS!$YFLAGS$ac_delim
++CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim
++CPP!$CPP$ac_delim
++GREP!$GREP$ac_delim
++EGREP!$EGREP$ac_delim
++LIBOBJS!$LIBOBJS$ac_delim
++LTLIBOBJS!$LTLIBOBJS$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 83; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+-fi # test -n "$CONFIG_FILES"
++done
+
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
++
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++:end
++s/|#_!!_#|//g
++CEOF$ac_eof
+ _ACEOF
++
++
++# VPATH may cause trouble with some makes, so we remove $(srcdir),
++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
++# trailing colons and then remove the whole line if VPATH becomes empty
++# (actually we leave an empty line to preserve line numbers).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/
++s/:*\${srcdir}:*/:/
++s/:*@srcdir@:*/:/
++s/^\([^=]*=[ ]*\):*/\1/
++s/:*$//
++s/^[^=]*=[ ]*$//
++}'
++fi
++
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+- case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++fi # test -n "$CONFIG_FILES"
++
++
++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
++do
++ case $ac_tag in
++ :[FHLC]) ac_mode=$ac_tag; continue;;
++ esac
++ case $ac_mode$ac_tag in
++ :[FHL]*:*);;
++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
++echo "$as_me: error: Invalid tag $ac_tag." >&2;}
++ { (exit 1); exit 1; }; };;
++ :[FH]-) ac_tag=-:-;;
++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
++ esac
++ ac_save_IFS=$IFS
++ IFS=:
++ set x $ac_tag
++ IFS=$ac_save_IFS
++ shift
++ ac_file=$1
++ shift
++
++ case $ac_mode in
++ :L) ac_source=$1;;
++ :[FH])
++ ac_file_inputs=
++ for ac_f
++ do
++ case $ac_f in
++ -) ac_f="$tmp/stdin";;
++ *) # Look for the file first in the build tree, then in the source tree
++ # (if the path is not absolute). The absolute path cannot be DOS-style,
++ # because $ac_f cannot contain `:'.
++ test -f "$ac_f" ||
++ case $ac_f in
++ [\\/$]*) false;;
++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
++ esac ||
++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
++echo "$as_me: error: cannot find input file: $ac_f" >&2;}
++ { (exit 1); exit 1; }; };;
++ esac
++ ac_file_inputs="$ac_file_inputs $ac_f"
++ done
++
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ configure_input="Generated from "`IFS=:
++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
++ if test x"$ac_file" != x-; then
++ configure_input="$ac_file. $configure_input"
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ fi
++
++ case $ac_tag in
++ *:-:* | *:-) cat >"$tmp/stdin";;
++ esac
++ ;;
+ esac
+
+- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++ ac_dir=`$as_dirname -- "$ac_file" ||
+ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir="$ac_dir"
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+ esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+
++ case $ac_mode in
++ :F)
++ #
++ # CONFIG_FILE
++ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
++ esac
++ ac_MKDIR_P=$MKDIR_P
++ case $MKDIR_P in
++ [\\/$]* | ?:[\\/]* ) ;;
++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
++_ACEOF
+
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- configure_input=
+- else
+- configure_input="$ac_file. "
+- fi
+- configure_input=$configure_input"Generated from `echo $ac_file_in |
+- sed 's,.*/,,'` by configure."
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
++cat >>$CONFIG_STATUS <<\_ACEOF
++# If the template does not know about datarootdir, expand it.
++# FIXME: This hack should be removed a few years after 2.60.
++ac_datarootdir_hack=; ac_datarootdir_seen=
+
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
++case `sed -n '/datarootdir/ {
++ p
++ q
++}
++/@datadir@/p
++/@docdir@/p
++/@infodir@/p
++/@localedir@/p
++/@mandir@/p
++' $ac_file_inputs` in
++*datarootdir*) ac_datarootdir_seen=yes;;
++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
++ ac_datarootdir_hack='
++ s&@datadir@&$datadir&g
++ s&@docdir@&$docdir&g
++ s&@infodir@&$infodir&g
++ s&@localedir@&$localedir&g
++ s&@mandir@&$mandir&g
++ s&\\\${datarootdir}&$datarootdir&g' ;;
++esac
++_ACEOF
++
++# Neutralize VPATH when `$srcdir' = `.'.
++# Shell code in configure.ac might set extrasub.
++# FIXME: do we really want to maintain this feature?
++cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+- rm -f $tmp/stdin
+- if test x"$ac_file" != x-; then
+- mv $tmp/out $ac_file
+- else
+- cat $tmp/out
+- rm -f $tmp/out
+- fi
+-
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_HEADER section.
+-#
+-
+-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+-# NAME is the cpp macro being defined and VALUE is the value it is being given.
+-#
+-# ac_d sets the value in "#define NAME VALUE" lines.
+-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+-ac_dB='[ ].*$,\1#\2'
+-ac_dC=' '
+-ac_dD=',;t'
+-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+-ac_uB='$,\1#\2define\3'
+-ac_uC=' '
+-ac_uD=',;t'
+-
+-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++s&@configure_input@&$configure_input&;t t
++s&@top_builddir@&$ac_top_builddir_sub&;t t
++s&@srcdir@&$ac_srcdir&;t t
++s&@abs_srcdir@&$ac_abs_srcdir&;t t
++s&@top_srcdir@&$ac_top_srcdir&;t t
++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
++s&@builddir@&$ac_builddir&;t t
++s&@abs_builddir@&$ac_abs_builddir&;t t
++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
++s&@INSTALL@&$ac_INSTALL&;t t
++s&@MKDIR_P@&$ac_MKDIR_P&;t t
++$ac_datarootdir_hack
++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
++
++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&5
++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&2;}
++
++ rm -f "$tmp/stdin"
+ case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++ -) cat "$tmp/out"; rm -f "$tmp/out";;
++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
+-
+- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- # Do quote $f, to prevent DOS paths from being IFS'd.
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+- # Remove the trailing spaces.
+- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+-
++ ;;
++ :H)
++ #
++ # CONFIG_HEADER
++ #
+ _ACEOF
+
+-# Transform confdefs.h into two sed scripts, `conftest.defines' and
+-# `conftest.undefs', that substitutes the proper values into
+-# config.h.in to produce config.h. The first handles `#define'
+-# templates, and the second `#undef' templates.
+-# And first: Protect against being on the right side of a sed subst in
+-# config.status. Protect against being in an unquoted here document
+-# in config.status.
+-rm -f conftest.defines conftest.undefs
+-# Using a here document instead of a string reduces the quoting nightmare.
+-# Putting comments in sed scripts is not portable.
+-#
+-# `end' is used to avoid that the second main sed command (meant for
+-# 0-ary CPP macros) applies to n-ary macro definitions.
+-# See the Autoconf documentation for `clear'.
+-cat >confdef2sed.sed <<\_ACEOF
+-s/[\\&,]/\\&/g
+-s,[\\$`],\\&,g
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+-t end
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+-: end
+-_ACEOF
+-# If some macros were called several times there might be several times
+-# the same #defines, which is useless. Nevertheless, we may not want to
+-# sort them, since we want the *last* AC-DEFINE to be honored.
+-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+-rm -f confdef2sed.sed
+-
+-# This sed command replaces #undef with comments. This is necessary, for
++# Transform confdefs.h into a sed script `conftest.defines', that
++# substitutes the proper values into config.h.in to produce config.h.
++rm -f conftest.defines conftest.tail
++# First, append a space to every undef/define line, to ease matching.
++echo 's/$/ /' >conftest.defines
++# Then, protect against being on the right side of a sed subst, or in
++# an unquoted here document, in config.status. If some macros were
++# called several times there might be several #defines for the same
++# symbol, which is useless. But do not sort them, since the last
++# AC_DEFINE must be honored.
++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
++# NAME is the cpp macro being defined, VALUE is the value it is being given.
++# PARAMS is the parameter list in the macro definition--in most cases, it's
++# just an empty string.
++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
++ac_dB='\\)[ (].*,\\1define\\2'
++ac_dC=' '
++ac_dD=' ,'
++
++uniq confdefs.h |
++ sed -n '
++ t rset
++ :rset
++ s/^[ ]*#[ ]*define[ ][ ]*//
++ t ok
++ d
++ :ok
++ s/[\\&,]/\\&/g
++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
++ ' >>conftest.defines
++
++# Remove the space that was appended to ease matching.
++# Then replace #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-cat >>conftest.undefs <<\_ACEOF
+-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+-_ACEOF
+-
+-# Break up conftest.defines because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+-echo ' :' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.defines >/dev/null
++# (The regexp can be short, since the line contains either #define or #undef.)
++echo 's/ $//
++s,^[ #]*u.*,/* & */,' >>conftest.defines
++
++# Break up conftest.defines:
++ac_max_sed_lines=50
++
++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
++# et cetera.
++ac_in='$ac_file_inputs'
++ac_out='"$tmp/out1"'
++ac_nxt='"$tmp/out2"'
++
++while :
+ do
+- # Write a limited-size here document to $tmp/defines.sed.
+- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#define' lines.
+- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
++ # Write a here document:
++ cat >>$CONFIG_STATUS <<_ACEOF
++ # First, check the format of the line:
++ cat >"\$tmp/defines.sed" <<\\CEOF
++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
++b
++:def
++_ACEOF
++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f $tmp/defines.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
++ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines
+-echo ' fi # grep' >>$CONFIG_STATUS
+-echo >>$CONFIG_STATUS
+-
+-# Break up conftest.undefs because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.undefs >/dev/null
+-do
+- # Write a limited-size here document to $tmp/undefs.sed.
+- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#undef'
+- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+- echo 'CEOF
+- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+- rm -f conftest.undefs
+- mv conftest.tail conftest.undefs
+-done
+-rm -f conftest.undefs
++rm -f conftest.defines conftest.tail
+
++echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- echo "/* Generated by configure. */" >$tmp/config.h
+- else
+- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+- fi
+- cat $tmp/in >>$tmp/config.h
+- rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ echo "/* $configure_input */" >"$tmp/config.h"
++ cat "$ac_result" >>"$tmp/config.h"
++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_file" : 'X\(//\)[^/]' \| \
+- X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+ rm -f $ac_file
+- mv $tmp/config.h $ac_file
++ mv "$tmp/config.h" $ac_file
+ fi
+ else
+- cat $tmp/config.h
+- rm -f $tmp/config.h
++ echo "/* $configure_input */"
++ cat "$ac_result"
+ fi
++ rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -5207,135 +5982,39 @@ for _am_header in $config_headers :; do
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
+ $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+- X$ac_file : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
+ echo X$ac_file |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`/stamp-h$_am_stamp_count
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_COMMANDS section.
+-#
+-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_dest" : 'X\(//\)[^/]' \| \
+- X"$ac_dest" : 'X\(//\)$' \| \
+- X"$ac_dest" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_dest" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+- ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+- .) # No --srcdir option. We are building in place.
+- ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
+- ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++ ;;
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
++echo "$as_me: executing $ac_file commands" >&6;}
++ ;;
++ esac
+
+
+- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+-echo "$as_me: executing $ac_dest commands" >&6;}
+- case $ac_dest in
+- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ case $ac_file$ac_mode in
++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -5343,20 +6022,32 @@ echo "$as_me: executing $ac_dest commands" >&6;}
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+- # So let's grep whole file.
+- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`(dirname "$mf") 2>/dev/null ||
++ # Grep'ing the whole file is not good either: AIX grep has a line
++ # limit of 2048, but all sed's we know have understand at least 4000.
++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
++ dirpart=`$as_dirname -- "$mf" ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -5378,53 +6069,79 @@ echo X"$mf" |
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`(dirname "$file") 2>/dev/null ||
++ fdir=`$as_dirname -- "$file" ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p $dirpart/$fdir
+- else
+- as_dir=$dirpart/$fdir
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir=$dirpart/$fdir
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
++
+ esac
+-done
+-_ACEOF
++done # for ac_tag
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+diff --git a/src/Makefile.in b/src/Makefile.in
+index d5fb876..2b2ba34 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.10 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006 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.
+@@ -14,17 +14,11 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(dash_SOURCES)
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+-top_builddir = ..
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+ install_sh_SCRIPT = $(install_sh) -c
+@@ -38,8 +32,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ bin_PROGRAMS = dash$(EXEEXT)
+ subdir = src
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in arith.c \
+- arith.h
++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+@@ -50,25 +43,25 @@ CONFIG_CLEAN_FILES =
+ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+ binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ PROGRAMS = $(bin_PROGRAMS)
+-am__objects_1 = alias.$(OBJEXT) arith_yylex.$(OBJEXT) cd.$(OBJEXT) \
+- error.$(OBJEXT) eval.$(OBJEXT) exec.$(OBJEXT) expand.$(OBJEXT) \
++am__objects_1 = alias.$(OBJEXT) arith_yacc.$(OBJEXT) \
++ arith_yylex.$(OBJEXT) cd.$(OBJEXT) error.$(OBJEXT) \
++ eval.$(OBJEXT) exec.$(OBJEXT) expand.$(OBJEXT) \
+ histedit.$(OBJEXT) input.$(OBJEXT) jobs.$(OBJEXT) \
+ mail.$(OBJEXT) main.$(OBJEXT) memalloc.$(OBJEXT) \
+ miscbltin.$(OBJEXT) mystring.$(OBJEXT) options.$(OBJEXT) \
+ parser.$(OBJEXT) redir.$(OBJEXT) show.$(OBJEXT) trap.$(OBJEXT) \
+ output.$(OBJEXT) printf.$(OBJEXT) system.$(OBJEXT) \
+ test.$(OBJEXT) times.$(OBJEXT) var.$(OBJEXT)
+-am_dash_OBJECTS = $(am__objects_1) arith.$(OBJEXT)
++am_dash_OBJECTS = $(am__objects_1)
+ dash_OBJECTS = $(am_dash_OBJECTS)
+ dash_DEPENDENCIES = builtins.o init.o nodes.o signames.o syntax.o
+-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
+ depcomp = $(SHELL) $(top_srcdir)/depcomp
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+ SOURCES = $(dash_SOURCES)
+ DIST_SOURCES = $(dash_SOURCES)
+ man1dir = $(mandir)/man1
+@@ -78,8 +71,6 @@ ETAGS = etags
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-AMDEP_FALSE = @AMDEP_FALSE@
+-AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+ AUTOCONF = @AUTOCONF@
+ AUTOHEADER = @AUTOHEADER@
+@@ -99,6 +90,8 @@ ECHO_N = @ECHO_N@
+ ECHO_T = @ECHO_T@
+ EGREP = @EGREP@
+ EXEEXT = @EXEEXT@
++GREP = @GREP@
++INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -108,6 +101,7 @@ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKDIR_P = @MKDIR_P@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -121,10 +115,12 @@ SHELL = @SHELL@
+ STRIP = @STRIP@
+ VERSION = @VERSION@
+ YACC = @YACC@
++YFLAGS = @YFLAGS@
++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_STRIP = @ac_ct_STRIP@
+-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+@@ -132,30 +128,41 @@ am__tar = @am__tar@
+ am__untar = @am__untar@
+ bindir = @bindir@
+ build_alias = @build_alias@
++builddir = @builddir@
+ datadir = @datadir@
++datarootdir = @datarootdir@
++docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host_alias = @host_alias@
++htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++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_builddir = @top_builddir@
++top_srcdir = @top_srcdir@
+ AM_YFLAGS = -d
+ COMMON_CFLAGS = -Wall
+ COMMON_CPPFLAGS = \
+ -include $(top_builddir)/config.h \
+ -DBSD=1 -DSHELL \
+- -DGLOB_BROKEN -DFNMATCH_BROKEN -DIFS_BROKEN
++ -DIFS_BROKEN
+
+ AM_CFLAGS = $(COMMON_CFLAGS)
+ AM_CPPFLAGS = $(COMMON_CPPFLAGS)
+@@ -166,13 +173,13 @@ COMPILE_FOR_BUILD = \
+ $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)
+
+ dash_CFILES = \
+- alias.c arith_yylex.c cd.c error.c eval.c exec.c expand.c \
++ alias.c arith_yacc.c arith_yylex.c cd.c error.c eval.c exec.c expand.c \
+ histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
+ mystring.c options.c parser.c redir.c show.c trap.c output.c \
+ bltin/printf.c system.c bltin/test.c bltin/times.c var.c
+
+ dash_SOURCES = \
+- $(dash_CFILES) arith.y \
++ $(dash_CFILES) \
+ alias.h bltin/bltin.h cd.h error.h eval.h exec.h expand.h hetio.h \
+ init.h input.h jobs.h machdep.h mail.h main.h memalloc.h miscbltin.h \
+ myhistedit.h mystring.h options.h output.h parser.h redir.h shell.h \
+@@ -180,10 +187,10 @@ dash_SOURCES = \
+
+ dash_LDADD = builtins.o init.o nodes.o signames.o syntax.o
+ HELPERS = mkinit mksyntax mknodes mksignames
+-BUILT_SOURCES = arith.h builtins.h nodes.h syntax.h token.h
++BUILT_SOURCES = builtins.h nodes.h syntax.h token.h
+ CLEANFILES = \
+ $(BUILT_SOURCES) $(patsubst %.o,%.c,$(dash_LDADD)) \
+- arith.c $(HELPERS) builtins.def
++ $(HELPERS) builtins.def
+
+ man_MANS = dash.1
+ EXTRA_DIST = \
+@@ -195,7 +202,7 @@ all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+ .SUFFIXES:
+-.SUFFIXES: .c .o .obj .y
++.SUFFIXES: .c .o .obj
+ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+@@ -227,7 +234,7 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
++ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+@@ -248,14 +255,9 @@ uninstall-binPROGRAMS:
+
+ clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+-arith.h: arith.c
+- @if test ! -f $@; then \
+- rm -f arith.c; \
+- $(MAKE) arith.c; \
+- else :; fi
+ dash$(EXEEXT): $(dash_OBJECTS) $(dash_DEPENDENCIES)
+ @rm -f dash$(EXEEXT)
+- $(LINK) $(dash_LDFLAGS) $(dash_OBJECTS) $(dash_LDADD) $(LIBS)
++ $(LINK) $(dash_OBJECTS) $(dash_LDADD) $(LIBS)
+
+ mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+@@ -264,7 +266,7 @@ distclean-compile:
+ -rm -f *.tab.c
+
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alias.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arith.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arith_yacc.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arith_yylex.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@
+@@ -292,85 +294,63 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/var.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ printf.o: bltin/printf.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT printf.o -MD -MP -MF "$(DEPDIR)/printf.Tpo" -c -o printf.o `test -f 'bltin/printf.c' || echo '$(srcdir)/'`bltin/printf.c; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/printf.Tpo" "$(DEPDIR)/printf.Po"; else rm -f "$(DEPDIR)/printf.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT printf.o -MD -MP -MF $(DEPDIR)/printf.Tpo -c -o printf.o `test -f 'bltin/printf.c' || echo '$(srcdir)/'`bltin/printf.c
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/printf.Tpo $(DEPDIR)/printf.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bltin/printf.c' object='printf.o' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o printf.o `test -f 'bltin/printf.c' || echo '$(srcdir)/'`bltin/printf.c
+
+ printf.obj: bltin/printf.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT printf.obj -MD -MP -MF "$(DEPDIR)/printf.Tpo" -c -o printf.obj `if test -f 'bltin/printf.c'; then $(CYGPATH_W) 'bltin/printf.c'; else $(CYGPATH_W) '$(srcdir)/bltin/printf.c'; fi`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/printf.Tpo" "$(DEPDIR)/printf.Po"; else rm -f "$(DEPDIR)/printf.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT printf.obj -MD -MP -MF $(DEPDIR)/printf.Tpo -c -o printf.obj `if test -f 'bltin/printf.c'; then $(CYGPATH_W) 'bltin/printf.c'; else $(CYGPATH_W) '$(srcdir)/bltin/printf.c'; fi`
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/printf.Tpo $(DEPDIR)/printf.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bltin/printf.c' object='printf.obj' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o printf.obj `if test -f 'bltin/printf.c'; then $(CYGPATH_W) 'bltin/printf.c'; else $(CYGPATH_W) '$(srcdir)/bltin/printf.c'; fi`
+
+ test.o: bltin/test.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test.o -MD -MP -MF "$(DEPDIR)/test.Tpo" -c -o test.o `test -f 'bltin/test.c' || echo '$(srcdir)/'`bltin/test.c; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/test.Tpo" "$(DEPDIR)/test.Po"; else rm -f "$(DEPDIR)/test.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test.o -MD -MP -MF $(DEPDIR)/test.Tpo -c -o test.o `test -f 'bltin/test.c' || echo '$(srcdir)/'`bltin/test.c
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/test.Tpo $(DEPDIR)/test.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bltin/test.c' object='test.o' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test.o `test -f 'bltin/test.c' || echo '$(srcdir)/'`bltin/test.c
+
+ test.obj: bltin/test.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test.obj -MD -MP -MF "$(DEPDIR)/test.Tpo" -c -o test.obj `if test -f 'bltin/test.c'; then $(CYGPATH_W) 'bltin/test.c'; else $(CYGPATH_W) '$(srcdir)/bltin/test.c'; fi`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/test.Tpo" "$(DEPDIR)/test.Po"; else rm -f "$(DEPDIR)/test.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test.obj -MD -MP -MF $(DEPDIR)/test.Tpo -c -o test.obj `if test -f 'bltin/test.c'; then $(CYGPATH_W) 'bltin/test.c'; else $(CYGPATH_W) '$(srcdir)/bltin/test.c'; fi`
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/test.Tpo $(DEPDIR)/test.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bltin/test.c' object='test.obj' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test.obj `if test -f 'bltin/test.c'; then $(CYGPATH_W) 'bltin/test.c'; else $(CYGPATH_W) '$(srcdir)/bltin/test.c'; fi`
+
+ times.o: bltin/times.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT times.o -MD -MP -MF "$(DEPDIR)/times.Tpo" -c -o times.o `test -f 'bltin/times.c' || echo '$(srcdir)/'`bltin/times.c; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/times.Tpo" "$(DEPDIR)/times.Po"; else rm -f "$(DEPDIR)/times.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT times.o -MD -MP -MF $(DEPDIR)/times.Tpo -c -o times.o `test -f 'bltin/times.c' || echo '$(srcdir)/'`bltin/times.c
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/times.Tpo $(DEPDIR)/times.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bltin/times.c' object='times.o' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o times.o `test -f 'bltin/times.c' || echo '$(srcdir)/'`bltin/times.c
+
+ times.obj: bltin/times.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT times.obj -MD -MP -MF "$(DEPDIR)/times.Tpo" -c -o times.obj `if test -f 'bltin/times.c'; then $(CYGPATH_W) 'bltin/times.c'; else $(CYGPATH_W) '$(srcdir)/bltin/times.c'; fi`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/times.Tpo" "$(DEPDIR)/times.Po"; else rm -f "$(DEPDIR)/times.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT times.obj -MD -MP -MF $(DEPDIR)/times.Tpo -c -o times.obj `if test -f 'bltin/times.c'; then $(CYGPATH_W) 'bltin/times.c'; else $(CYGPATH_W) '$(srcdir)/bltin/times.c'; fi`
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/times.Tpo $(DEPDIR)/times.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bltin/times.c' object='times.obj' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o times.obj `if test -f 'bltin/times.c'; then $(CYGPATH_W) 'bltin/times.c'; else $(CYGPATH_W) '$(srcdir)/bltin/times.c'; fi`
+-
+-.y.c:
+- $(YACCCOMPILE) $<
+- if test -f y.tab.h; then \
+- to=`echo "$*_H" | sed \
+- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
+- -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \
+- sed -e "/^#/!b" -e "s/Y_TAB_H/$$to/g" -e "s|y\.tab\.h|$*.h|" \
+- y.tab.h >$*.ht; \
+- rm -f y.tab.h; \
+- if cmp -s $*.ht $*.h; then \
+- rm -f $*.ht ;\
+- else \
+- mv $*.ht $*.h; \
+- fi; \
+- fi
+- if test -f y.output; then \
+- mv y.output $*.output; \
+- fi
+- sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@
+- rm -f y.tab.c
+-uninstall-info-am:
+ install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+- test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
++ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+@@ -463,22 +443,21 @@ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+ distdir: $(DISTFILES)
+- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+- list='$(DISTFILES)'; for file in $$list; do \
+- case $$file in \
+- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+- esac; \
++ @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; \
+- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+- dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
+- else \
+- dir=''; \
+- fi; \
+ if test -d $$d/$$file; then \
++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+@@ -495,7 +474,7 @@ check: $(BUILT_SOURCES)
+ all-am: Makefile $(PROGRAMS) $(MANS)
+ installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+- test -z "$$dir" || $(mkdir_p) "$$dir"; \
++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+ install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+@@ -523,8 +502,6 @@ distclean-generic:
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+- -rm -f arith.c
+- -rm -f arith.h
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ clean: clean-am
+
+@@ -548,12 +525,20 @@ info-am:
+
+ install-data-am: install-man
+
++install-dvi: install-dvi-am
++
+ install-exec-am: install-binPROGRAMS
+
++install-html: install-html-am
++
+ install-info: install-info-am
+
+ install-man: install-man1
+
++install-pdf: install-pdf-am
++
++install-ps: install-ps-am
++
+ installcheck-am:
+
+ maintainer-clean: maintainer-clean-am
+@@ -573,21 +558,25 @@ ps: ps-am
+
+ ps-am:
+
+-uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man
++uninstall-am: uninstall-binPROGRAMS uninstall-man
+
+ uninstall-man: uninstall-man1
+
++.MAKE: install-am install-strip
++
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic ctags distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+- install-data install-data-am install-exec install-exec-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-man1 \
++ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS \
+- uninstall-info-am uninstall-man uninstall-man1
++ uninstall-man uninstall-man1
+
+
+ token.h: mktokens
+--
+1.5.5
+
+From faf3a201e33ee8012c1f3e19bc249f9307924cf1 Mon Sep 17 00:00:00 2001
+From: Larry Doolittle <ldoolitt@recycle.lbl.gov>
+Date: Sun, 2 Mar 2008 21:14:35 +0000
+Subject: [PATCH] Fix null pointer dereference
+
+This is a real bug in upstream dash, which has existed since at
+least dash-0.5.1 (July 2004). It is a latent bug in cmdtxt()
+(which I think applies only to pipes) as it handles "if" commands.
+The attached patch fixes it for me.
+
+Test case:
+
+ dash -ic 'if true; then for x in foo; do echo bar; done; fi | cat'
+---
+ src/jobs.c | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/jobs.c b/src/jobs.c
+index 529d615..40dc8f6 100644
+--- a/src/jobs.c
++++ b/src/jobs.c
+@@ -1235,11 +1235,12 @@ donode:
+ cmdputs("if ");
+ cmdtxt(n->nif.test);
+ cmdputs("; then ");
+- n = n->nif.ifpart;
+ if (n->nif.elsepart) {
+- cmdtxt(n);
++ cmdtxt(n->nif.ifpart);
+ cmdputs("; else ");
+ n = n->nif.elsepart;
++ } else {
++ n = n->nif.ifpart;
+ }
+ p = "; fi";
+ goto dotail;
+--
+1.5.5
+
+From b02cef8334c317394bab008475659693d8447244 Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Tue, 25 Mar 2008 19:44:45 +0000
+Subject: [PATCH] Fix bitwise AND and OR operator parsing
+
+The parser used to skip a byte when parsing the & and | operators, testcase:
+
+ $ dash -c 'echo $((7&1))'
+ $ dash -c 'echo $((7& 1))'
+ $ dash -c 'echo $((7&11))'
+---
+ src/arith_yylex.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/src/arith_yylex.c b/src/arith_yylex.c
+index 2c15657..ef8e3e3 100644
+--- a/src/arith_yylex.c
++++ b/src/arith_yylex.c
+@@ -173,6 +173,7 @@ checkeq:
+ case '|':
+ if (*++buf != '|') {
+ value += ARITH_BOR - '|';
++ --buf;
+ goto checkeq;
+ }
+ value += ARITH_OR - '|';
+@@ -180,6 +181,7 @@ checkeq:
+ case '&':
+ if (*++buf != '&') {
+ value += ARITH_BAND - '&';
++ --buf;
+ goto checkeq;
+ }
+ value += ARITH_AND - '&';
+--
+1.5.5
+