From 2d698b6e42d8dca191ac795ef5dba3bf62496eec Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen.hemminger@vyatta.com>
Date: Fri, 9 Apr 2010 16:13:32 -0700
Subject: Integrate bash 3.2 version

This is merge of current Debian stable (Lenny) version of Bash
with Vyatta changes.
---
 builtins/declare.def | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

(limited to 'builtins/declare.def')

diff --git a/builtins/declare.def b/builtins/declare.def
index d94118f..4d94fac 100644
--- a/builtins/declare.def
+++ b/builtins/declare.def
@@ -76,6 +76,7 @@ $END
 #include "bashgetopt.h"
 
 extern int array_needs_making;
+extern int posixly_correct;
 
 static int declare_internal __P((register WORD_LIST *, int));
 
@@ -256,8 +257,12 @@ declare_internal (list, local_var)
       else
 	making_array_special = 0;
 #endif
-	
-      if (legal_identifier (name) == 0)
+
+      /* If we're in posix mode or not looking for a shell function (since
+	 shell function names don't have to be valid identifiers when the
+	 shell's not in posix mode), check whether or not the argument is a
+	 valid, well-formed shell identifier. */
+      if ((posixly_correct || (flags_on & att_function) == 0) && legal_identifier (name) == 0)
 	{
 	  sh_invalidid (name);
 	  assign_error++;
-- 
cgit v1.2.3

