commit bash-20060907 snapshot

This commit is contained in:
Chet Ramey
2011-12-03 22:52:26 -05:00
parent 2ad5056d27
commit b238140076
23 changed files with 279 additions and 103 deletions
+15
View File
@@ -13638,3 +13638,18 @@ variables.c
environment is scanned
[bash-3.2-beta frozen]
9/5
---
variables.c
- change dispose_used_env_vars to call maybe_make_export_env
immediately if we're disposing a temporary environment, since
`environ' points to the export environment and getenv() will use
that on systems that don't allow getenv() to be replaced. This
could cause the temporary environment to affect the shell. Bug
reported by Vasco Pedro <vp@di.uevora.pt>
builtins/echo.def,doc/{bash.1,bashref.texi}
- clarify that `echo -e' and echo when the `xpg_echo' shell option is
enabled require the \0 to precede any octal constant to be expanded.
Reported by Vasco Pedro <vp@di.uevora.pt>
+27
View File
@@ -13621,3 +13621,30 @@ aclocal.m4
Makefile.in
- switch the TAGS and tags targets so TAGS is the output of `etags' and
tags is the output of `ctags'. Suggested by Masatake YAMATO
8/25
----
execute_cmd.c
- change code to match documentation: set BASH_COMMAND (which takes its
value from the_printed_command_except_trap) only when not running a
trap. Rocky says the debugger is ok with this, and this is what his
original diffs did
8/29
----
variables.c
- change set_if_not to create shell_variables if it is NULL, since
-o invocation options can cause variables to be set before the
environment is scanned
[bash-3.2-beta frozen]
9/5
---
variables.c
- change dispose_used_env_vars to call maybe_make_export_env
immediately if we're disposing a temporary environment, since
`environ' points to the export environment and getenv() will use
that on systems that don't allow getenv() to be replaced. This
could cause the temporary environment to affect the shell. Bug
reported by Vasco Pedro <vp@di.uevora.pt>
+1 -1
View File
@@ -1693,7 +1693,7 @@ if test "$opt_curses" = yes; then
fi
if test -z "${DEBUGGER_START_FILE}"; then
DEBUGGER_START_FILE=${ac_default_prefix}/lib/bashdb/bashdb-main.inc
DEBUGGER_START_FILE=${datadir}/bashdb/bashdb-main.inc
fi
opt_minimal_config=no
+119 -10
View File
@@ -17,17 +17,126 @@
{
'm4_pattern_forbid' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_C_VOLATILE' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_C_VOLATILE' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_HEADER_TIME' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_STRUCT_TM' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AC_TYPE_MODE_T' => 1,
'AC_FUNC_STRTOD' => 1,
'AC_CHECK_HEADERS' => 1,
'AC_FUNC_STRNLEN' => 1,
'm4_sinclude' => 1,
'AC_PROG_CXX' => 1,
'AC_PATH_X' => 1,
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
'AC_PROG_AWK' => 1,
'_m4_warn' => 1,
'AC_HEADER_STDC' => 1,
'AC_HEADER_MAJOR' => 1,
'AC_FUNC_ERROR_AT_LINE' => 1,
'AC_PROG_GCC_TRADITIONAL' => 1,
'AC_LIBSOURCE' => 1,
'AC_FUNC_MBRTOWC' => 1,
'AC_STRUCT_ST_BLOCKS' => 1,
'AC_TYPE_SIGNAL' => 1,
'AC_TYPE_UID_T' => 1,
'AC_PROG_MAKE_SET' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'm4_pattern_allow' => 1,
'sinclude' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FUNC_STRERROR_R' => 1,
'AC_PROG_CC' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'AC_FUNC_FORK' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_FUNC_VPRINTF' => 1,
'AC_PROG_YACC' => 1,
'AC_INIT' => 1,
'AC_STRUCT_TIMEZONE' => 1,
'AC_FUNC_CHOWN' => 1,
'AC_SUBST' => 1,
'AC_FUNC_ALLOCA' => 1,
'AC_FUNC_GETPGRP' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_PROG_RANLIB' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_FUNC_SETPGRP' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_FUNC_MMAP' => 1,
'AC_FUNC_REALLOC' => 1,
'AC_TYPE_SIZE_T' => 1,
'AC_CHECK_TYPES' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CHECK_MEMBERS' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'AC_HEADER_STAT' => 1,
'AC_FUNC_STRFTIME' => 1,
'AC_C_INLINE' => 1,
'AC_PROG_CPP' => 1,
'AC_C_CONST' => 1,
'AC_PROG_LEX' => 1,
'AC_TYPE_PID_T' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'AC_PROG_INSTALL' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_CHECK_LIB' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AH_OUTPUT' => 1,
'AC_FUNC_FSEEKO' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_FUNC_MKTIME' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_PROG_LN_S' => 1,
'AC_FUNC_MEMCMP' => 1,
'm4_include' => 1,
'AC_HEADER_DIRENT' => 1,
'AC_CHECK_FUNCS' => 1
}
], 'Autom4te::Request' ),
bless( [
'1',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.in'
],
{
'm4_pattern_forbid' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_C_VOLATILE' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'AC_HEADER_TIME' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_STRUCT_TM' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_STRUCT_TM' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_TYPE_MODE_T' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AC_FUNC_STRTOD' => 1,
@@ -65,8 +174,8 @@
'AC_FUNC_CHOWN' => 1,
'AC_SUBST' => 1,
'AC_FUNC_ALLOCA' => 1,
'AC_FUNC_GETPGRP' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FUNC_GETPGRP' => 1,
'AC_PROG_RANLIB' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_FUNC_SETPGRP' => 1,
@@ -74,35 +183,35 @@
'AC_FUNC_MMAP' => 1,
'AC_FUNC_REALLOC' => 1,
'AC_TYPE_SIZE_T' => 1,
'AC_CHECK_TYPES' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CHECK_TYPES' => 1,
'AC_CHECK_MEMBERS' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'AC_FUNC_STRFTIME' => 1,
'AC_HEADER_STAT' => 1,
'AC_PROG_CPP' => 1,
'AC_C_INLINE' => 1,
'AC_PROG_CPP' => 1,
'AC_TYPE_PID_T' => 1,
'AC_PROG_LEX' => 1,
'AC_C_CONST' => 1,
'AC_PROG_LEX' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'AC_PROG_INSTALL' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_CHECK_LIB' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_CHECK_LIB' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AH_OUTPUT' => 1,
'AC_FUNC_FSEEKO' => 1,
'AM_PROG_CC_C_O' => 1,
'AC_FUNC_MKTIME' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_FUNC_MKTIME' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_FUNC_MEMCMP' => 1,
+12
View File
@@ -71,6 +71,18 @@ static char **mkseq();
static char **array_concat ();
#endif
#if 0
static void
dump_result (a)
char **a;
{
int i;
for (i = 0; a[i]; i++)
printf ("dump_result: a[%d] = -%s-\n", i, a[i]);
}
#endif
/* Return an array of strings; the brace expansion of TEXT. */
char **
brace_expand (text)
+31 -11
View File
@@ -61,7 +61,7 @@ int brace_arg_separator = ',';
static int brace_gobbler __P((char *, size_t, int *, int));
static char **expand_amble __P((char *, size_t, int));
static char **expand_seqterm __P((char *, size_t));
static char **mkseq __P((int, int, int));
static char **mkseq __P((int, int, int, int));
static char **array_concat __P((char **, char **));
#else
static int brace_gobbler ();
@@ -71,6 +71,16 @@ static char **mkseq();
static char **array_concat ();
#endif
static void
dump_result (a)
char **a;
{
int i;
for (i = 0; a[i]; i++)
printf ("dump_result: a[%d] = -%s-\n", i, a[i]);
}
/* Return an array of strings; the brace expansion of TEXT. */
char **
brace_expand (text)
@@ -88,7 +98,7 @@ brace_expand (text)
/* Find the text of the preamble. */
tlen = strlen (text);
i = 0;
#if 1
#if defined (CSH_BRACE_COMPAT)
c = brace_gobbler (text, tlen, &i, '{'); /* } */
#else
/* Make sure that when we exit this loop, c == 0 or text[i] begins a
@@ -119,8 +129,7 @@ brace_expand (text)
break;
}
while (c);
#endif
#endif /* !CSH_BRACE_COMPAT */
preamble = (char *)xmalloc (i + 1);
strncpy (preamble, text, i);
@@ -227,6 +236,8 @@ add_tack:
result = array_concat (result, tack);
strvec_dispose (tack);
dump_result (result);
return (result);
}
@@ -292,22 +303,31 @@ expand_amble (text, tlen, flags)
#define ST_CHAR 2
static char **
mkseq (start, end, type)
int start, end, type;
mkseq (start, end, incr, type)
int start, end, incr, type;
{
int n, incr, i;
int n, i;
char **result, *t;
n = abs (end - start) + 1;
result = strvec_create (n + 1);
incr = (start < end) ? 1 : -1;
if (incr == 0)
incr = 1;
if (start > end && incr > 0)
incr = -incr;
else if (start < end && incr < 0)
incr = -incr;
/* Make sure we go through the loop at least once, so {3..3} prints `3' */
i = 0;
n = start;
do
{
#if defined (SHELL)
QUIT; /* XXX - memory leak here */
#endif
if (type == ST_INT)
result[i++] = itos (n);
else
@@ -381,7 +401,7 @@ expand_seqterm (text, tlen)
rhs_v = tr;
}
result = mkseq (lhs_v, rhs_v, lhs_t);
result = mkseq (lhs_v, rhs_v, 1, lhs_t);
free (lhs);
free (rhs);
@@ -413,7 +433,7 @@ brace_gobbler (text, tlen, indx, satisfy)
DECLARE_MBSTATE;
level = quoted = pass_next = 0;
#if 1
#if defined (CSH_BRACE_COMPAT)
commas = 1;
#else
commas = (satisfy == '}') ? 0 : 1;
@@ -498,7 +518,7 @@ brace_gobbler (text, tlen, indx, satisfy)
level++;
else if (c == '}' && level)
level--;
#if 0
#if !defined (CSH_BRACE_COMPAT)
else if (satisfy == '}' && c == brace_arg_separator && level == 0)
commas++;
else if (satisfy == '}' && STREQN (text+i, BRACE_SEQ_SPECIFIER, 2) &&
+2 -1
View File
@@ -50,7 +50,8 @@ following backslash-escaped characters is turned on:
\t horizontal tab
\v vertical tab
\\ backslash
\num the character whose ASCII code is NUM (octal).
\0nnn the character whose ASCII code is NNN (octal). NNN can be
0 to 3 octal digits
You can explicitly turn off the interpretation of the above characters
with the -E option.
+2
View File
@@ -31,6 +31,8 @@ $PRODUCES echo.c
#include <stdio.h>
#include "../shell.h"
#include "common.h"
$BUILTIN echo
$FUNCTION echo_builtin
$DEPENDS_ON V9_ECHO
Vendored
+1 -1
View File
@@ -1693,7 +1693,7 @@ if test "$opt_curses" = yes; then
fi
if test -z "${DEBUGGER_START_FILE}"; then
DEBUGGER_START_FILE=${ac_default_prefix}/lib/bashdb/bashdb-main.inc
DEBUGGER_START_FILE=${datadir}/bashdb/bashdb-main.inc
fi
opt_minimal_config=no
+1 -1
View File
@@ -149,7 +149,7 @@ if test "$opt_curses" = yes; then
fi
if test -z "${DEBUGGER_START_FILE}"; then
DEBUGGER_START_FILE=${ac_default_prefix}/lib/bashdb/bashdb-main.inc
DEBUGGER_START_FILE=${datadir}/bashdb/bashdb-main.inc
fi
dnl optional shell features in config.h.in
+3 -2
View File
@@ -22,10 +22,10 @@ dnl Process this file with autoconf to produce a configure script.
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AC_REVISION([for Bash 3.2, version 3.188])dnl
AC_REVISION([for Bash 3.2, version 3.190])dnl
define(bashvers, 3.2)
define(relstatus, devel)
define(relstatus, beta)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
@@ -383,6 +383,7 @@ dnl Note that host and target machine are the same, and different than the
dnl build machine.
dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
CROSS_COMPILE=
if test "x$cross_compiling" = "xyes"; then
case "${host}" in
*-cygwin*)
+2 -6
View File
@@ -6,12 +6,12 @@
.\" Case Western Reserve University
.\" chet@po.cwru.edu
.\"
.\" Last Change: Thu May 11 14:25:48 EDT 2006
.\" Last Change: Fri Sep 8 13:43:16 EDT 2006
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2006 May 11" "GNU Bash-3.2"
.TH BASH 1 "2006 September 8" "GNU Bash-3.2"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -6642,10 +6642,6 @@ backslash
the eight-bit character whose value is the octal value \fInnn\fP
(zero to three octal digits)
.TP
.B \e\fInnn\fP
the eight-bit character whose value is the octal value \fInnn\fP
(one to three octal digits)
.TP
.B \ex\fIHH\fP
the eight-bit character whose value is the hexadecimal value \fIHH\fP
(one or two hex digits)
+9 -8
View File
@@ -6,12 +6,12 @@
.\" Case Western Reserve University
.\" chet@po.cwru.edu
.\"
.\" Last Change: Thu Jan 26 09:04:43 EST 2006
.\" Last Change: Thu May 11 14:25:48 EDT 2006
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2006 Jan 26" "GNU Bash-3.2"
.TH BASH 1 "2006 May 11" "GNU Bash-3.2"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -809,10 +809,10 @@ as for pathname expansion (see
.B Pathname Expansion
below).
The \fIword\fP is expanded using tilde
expansion, parameter and variable expansion, arithmetic substituion,
expansion, parameter and variable expansion, arithmetic substitution,
command substitution, process substitution and quote removal.
Each \fIpattern\fP examined is expanded using tilde
expansion, parameter and variable expansion, arithmetic substituion,
expansion, parameter and variable expansion, arithmetic substitution,
command substitution, and process substitution.
If the shell option
.B nocasematch
@@ -1693,7 +1693,8 @@ command history is not saved when an interactive shell exits.
.B HISTFILESIZE
The maximum number of lines contained in the history file. When this
variable is assigned a value, the history file is truncated, if
necessary, to contain no more than that number of lines. The default
necessary, by removing the oldest entries,
to contain no more than that number of lines. The default
value is 500. The history file is also truncated to this size after
writing it when an interactive shell exits.
.TP
@@ -8406,8 +8407,8 @@ the command
is executed each time a shell function or a script executed with the
\fB.\fP or \fBsource\fP builtins finishes executing.
Signals ignored upon entry to the shell cannot be trapped or reset.
Trapped signals are reset to their original values in a child
process when it is created.
Trapped signals that are not being ignored are reset to their original
values in a child process when it is created.
The return status is false if any
.I sigspec
is invalid; otherwise
@@ -8530,7 +8531,7 @@ The maximum size of a process's data segment
The maximum scheduling priority ("nice")
.TP
.B \-f
The maximum size of files created by the shell
The maximum size of files written by the shell and its children
.TP
.B \-i
The maximum number of pending signals
-3
View File
@@ -3341,9 +3341,6 @@ backslash
@item \0@var{nnn}
the eight-bit character whose value is the octal value @var{nnn}
(zero to three octal digits)
@item \@var{nnn}
the eight-bit character whose value is the octal value @var{nnn}
(one to three octal digits)
@item \x@var{HH}
the eight-bit character whose value is the hexadecimal value @var{HH}
(one or two hex digits)
+5 -4
View File
@@ -3030,8 +3030,8 @@ each time a shell function or a script executed with the @code{.} or
@code{source} builtins finishes executing.
Signals ignored upon entry to the shell cannot be trapped or reset.
Trapped signals are reset to their original values in a child
process when it is created.
Trapped signals that are not being ignored are reset to their original
values in a child process when it is created.
The return status is zero unless a @var{sigspec} does not specify a
valid signal.
@@ -3861,7 +3861,7 @@ The maximum size of a process's data segment.
The maximum scheduling priority ("nice").
@item -f
The maximum size of files created by the shell.
The maximum size of files written by the shell and its children.
@item -i
The maximum number of pending signals.
@@ -4543,7 +4543,8 @@ default value is @file{~/.bash_history}.
@item HISTFILESIZE
The maximum number of lines contained in the history file. When this
variable is assigned a value, the history file is truncated, if
necessary, to contain no more than that number of lines.
necessary, by removing the oldest entries,
to contain no more than that number of lines.
The history file is also truncated to this size after
writing it when an interactive shell exits.
The default value is 500.
+3 -3
View File
@@ -2,9 +2,9 @@
Copyright (C) 1988-2006 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Thu May 11 14:25:33 EDT 2006
@set LASTCHANGE Fri Sep 8 13:45:21 EDT 2006
@set EDITION 3.2
@set VERSION 3.2
@set UPDATED 11 May 2006
@set UPDATED-MONTH May 2006
@set UPDATED 8 September 2006
@set UPDATED-MONTH September 2006
+6 -6
View File
@@ -1,10 +1,10 @@
@ignore
Copyright (C) 1988-2005 Free Software Foundation, Inc.
Copyright (C) 1988-2006 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Fri Dec 30 10:50:51 EST 2005
@set LASTCHANGE Thu May 11 14:25:33 EDT 2006
@set EDITION 3.1
@set VERSION 3.1
@set UPDATED 30 December 2005
@set UPDATED-MONTH December 2005
@set EDITION 3.2
@set VERSION 3.2
@set UPDATED 11 May 2006
@set UPDATED-MONTH May 2006
+1 -1
View File
@@ -1,4 +1,4 @@
BUILD_DIR=/usr/local/build/chet/bash/bash-current
BUILD_DIR=/usr/local/build/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR
+1 -1
View File
@@ -27,7 +27,7 @@ f1 ()
return $status
}
before: try to assign to FUNCNAME
outside: FUNCNAME =
outside: FUNCNAME = main
before: FUNCNAME = func
FUNCNAME = func2
after: FUNCNAME = func
+1 -1
View File
@@ -132,7 +132,7 @@ func()
}
echo before: try to assign to FUNCNAME
FUCNAME=7
FUNCNAME=7
echo outside: FUNCNAME = $FUNCNAME
func
+8
View File
@@ -165,4 +165,12 @@ myfunction() {
myfunction
myfunction | cat
segv()
{
echo foo | return 5
}
segv
echo $?
exit 0
+4 -1
View File
@@ -2976,7 +2976,10 @@ void
dispose_used_env_vars ()
{
if (temporary_env)
dispose_temporary_env (propagate_temp_var);
{
dispose_temporary_env (propagate_temp_var);
maybe_make_export_env ();
}
}
/* Take all of the shell variables in the temporary environment HASH_TABLE
+25 -42
View File
@@ -155,6 +155,8 @@ int array_needs_making = 1;
int shell_level = 0;
/* Some forward declarations. */
static void create_variable_tables __P((void));
static void set_machine_vars __P((void));
static void set_home_var __P((void));
static void set_shell_var __P((void));
@@ -252,19 +254,10 @@ static void push_func_var __P((PTR_T));
static void push_exported_var __P((PTR_T));
static inline int find_special_var __P((const char *));
/* Initialize the shell variables from the current environment.
If PRIVMODE is nonzero, don't import functions from ENV or
parse $SHELLOPTS. */
void
initialize_shell_variables (env, privmode)
char **env;
int privmode;
{
char *name, *string, *temp_string;
int c, char_index, string_index, string_length;
SHELL_VAR *temp_var;
static void
create_variable_tables ()
{
if (shell_variables == 0)
{
shell_variables = global_variables = new_var_context ((char *)NULL, 0);
@@ -279,6 +272,21 @@ initialize_shell_variables (env, privmode)
if (shell_function_defs == 0)
shell_function_defs = hash_create (0);
#endif
}
/* Initialize the shell variables from the current environment.
If PRIVMODE is nonzero, don't import functions from ENV or
parse $SHELLOPTS. */
void
initialize_shell_variables (env, privmode)
char **env;
int privmode;
{
char *name, *string, *temp_string;
int c, char_index, string_index, string_length;
SHELL_VAR *temp_var;
create_variable_tables ();
for (string_index = 0; string = env[string_index++]; )
{
@@ -346,8 +354,6 @@ initialize_shell_variables (env, privmode)
else
{
temp_var = bind_variable (name, string, 0);
if (strcmp(name,"LANG") == 0)
itrace("bound LANG to %s", string);
VSETATTR (temp_var, (att_exported | att_imported));
array_needs_making = 1;
}
@@ -364,11 +370,7 @@ if (strcmp(name,"LANG") == 0)
set_pwd ();
/* Set up initial value of $_ */
#if 0
temp_var = bind_variable ("_", dollar_vars[0], 0);
#else
temp_var = set_if_not ("_", dollar_vars[0]);
#endif
/* Remember this pid. */
dollar_dollar_pid = getpid ();
@@ -1308,20 +1310,11 @@ static SHELL_VAR *
get_comp_wordbreaks (var)
SHELL_VAR *var;
{
char *p;
/* If we don't have anything yet, assign a default value. */
if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
enable_hostname_completion (perform_hostname_completion);
#if 0
FREE (value_cell (var));
p = savestring (rl_completer_word_break_characters);
var_setvalue (var, p);
#else
var_setvalue (var, rl_completer_word_break_characters);
#endif
return (var);
}
@@ -1637,6 +1630,9 @@ set_if_not (name, value)
{
SHELL_VAR *v;
if (shell_variables == 0)
create_variable_tables ();
v = find_variable (name);
if (v == 0)
v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH, 0);
@@ -1779,11 +1775,7 @@ make_new_variable (name, table)
/* Make sure we have a shell_variables hash table to add to. */
if (shell_variables == 0)
{
shell_variables = global_variables = new_var_context ((char *)NULL, 0);
shell_variables->scope = 0;
shell_variables->table = hash_create (0);
}
create_variable_tables ();
elt = hash_insert (savestring (name), table, HASH_NOSRCH);
elt->data = (PTR_T)entry;
@@ -1951,11 +1943,7 @@ bind_variable (name, value, flags)
VAR_CONTEXT *vc;
if (shell_variables == 0)
{
shell_variables = global_variables = new_var_context ((char *)NULL, 0);
shell_variables->scope = 0;
shell_variables->table = hash_create (0);
}
create_variable_tables ();
/* If we have a temporary environment, look there first for the variable,
and, if found, modify the value there before modifying it in the
@@ -2035,16 +2023,11 @@ bind_int_variable (lhs, rhs)
char *lhs, *rhs;
{
register SHELL_VAR *v;
char *t;
int isint, isarr;
isint = isarr = 0;
#if defined (ARRAY_VARS)
# if 0
if (t = xstrchr (lhs, '[')) /*]*/
# else
if (valid_array_reference (lhs))
# endif
{
isarr = 1;
v = array_variable_part (lhs, (char **)0, (int *)0);