]> git.pld-linux.org Git - packages/dash.git/commitdiff
- new
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 8 May 2008 07:29:15 +0000 (07:29 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    dash-debian.patch -> 1.1

dash-debian.patch [new file with mode: 0644]

diff --git a/dash-debian.patch b/dash-debian.patch
new file mode 100644 (file)
index 0000000..619f2c0
--- /dev/null
@@ -0,0 +1,13625 @@
+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
+
This page took 0.792622 seconds and 4 git commands to generate.