commit bash-20090129 snapshot

This commit is contained in:
Chet Ramey
2011-12-07 09:36:36 -05:00
parent a927e02930
commit c1d39fb8cf
16 changed files with 1409 additions and 1138 deletions
+28
View File
@@ -7457,3 +7457,31 @@ configure.in
config.h.in
- empty define for sig_atomic_t
- empty define for volatile
1/27
----
subst.c
- audit calls to add_character and change to add_ifs_character (which
quotes characters in $IFS). Affects primarily `:', `=', and `~'.
Fixes bug reported by Jan Schampera <jan.schampera@web.de>; fix
suggested by Stephane Chazelas <stephane_chazelas@yahoo.fr>
2/1
---
configure.in
- call AC_C_RESTRICT
config.h.in
- add empty defintion for `restrict'
pcomplete.c
- use unwind_protects around call to execute_shell_function in
gen_shell_function_matches to prevent data corruption if
throw_to_top_level is called. Bug report and fix from
werner@suse.de.
execute_cmd.c
- don't clamp CPU usage at 100% in print_formatted_time. Bug reported
by Linda Walsh <bash@tlinx.org>
[bash-4.0-release frozen]
+31
View File
@@ -7452,3 +7452,34 @@ aclocal.m4
configure.in
- call BASH_TYPE_SIG_ATOMIC_T
- call AC_C_VOLATILE
config.h.in
- empty define for sig_atomic_t
- empty define for volatile
1/27
----
subst.c
- audit calls to add_character and change to add_ifs_character (which
quotes characters in $IFS). Affects primarily `:', `=', and `~'.
Fixes bug reported by Jan Schampera <jan.schampera@web.de>; fix
suggested by Stephane Chazelas <stephane_chazelas@yahoo.fr>
2/1
---
configure.in
- call AC_C_RESTRICT
config.h.in
- add empty defintion for `restrict'
pcomplete.c
- use unwind_protects around call to execute_shell_function in
gen_shell_function_matches to prevent data corruption if
throw_to_top_level is called. Bug report and fix from
werner@suse.de.
execute_cmd.c
- don't clamp CPU usage at 100% in print_formatted_time. Bug reported
by Linda Walsh <bash@tlinx.org>
+87 -11
View File
@@ -1,7 +1,7 @@
@%:@! /bin/sh
@%:@ From configure.in for Bash 4.0, version 4.011.
@%:@ From configure.in for Bash 4.0, version 4.012.
@%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.62 for bash 4.0-rc1.
@%:@ Generated by GNU Autoconf 2.62 for bash 4.0-release.
@%:@
@%:@ Report bugs to <bug-bash@gnu.org>.
@%:@
@@ -597,8 +597,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
PACKAGE_VERSION='4.0-rc1'
PACKAGE_STRING='bash 4.0-rc1'
PACKAGE_VERSION='4.0-release'
PACKAGE_STRING='bash 4.0-release'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
ac_unique_file="shell.h"
@@ -1410,7 +1410,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures bash 4.0-rc1 to adapt to many kinds of systems.
\`configure' configures bash 4.0-release to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1475,7 +1475,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of bash 4.0-rc1:";;
short | recursive ) echo "Configuration of bash 4.0-release:";;
esac
cat <<\_ACEOF
@@ -1648,7 +1648,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
bash configure 4.0-rc1
bash configure 4.0-release
generated by GNU Autoconf 2.62
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1662,7 +1662,7 @@ 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 bash $as_me 4.0-rc1, which was
It was created by bash $as_me 4.0-release, which was
generated by GNU Autoconf 2.62. Invocation command line was
$ $0 $@
@@ -2072,7 +2072,7 @@ ac_config_headers="$ac_config_headers config.h"
BASHVERS=4.0
RELSTATUS=rc1
RELSTATUS=release
case "$RELSTATUS" in
alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -7029,6 +7029,82 @@ _ACEOF
fi
{ $as_echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
if test "${ac_cv_c_restrict+set}" = set; then
$as_echo_n "(cached) " >&6
else
ac_cv_c_restrict=no
# The order here caters to the fact that C++ does not require restrict.
for ac_kw in __restrict __restrict__ _Restrict restrict; do
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
typedef int * int_ptr;
int foo (int_ptr $ac_kw ip) {
return ip[0];
}
int
main ()
{
int s[1];
int * $ac_kw t = s;
t[0] = 0;
return foo(t)
;
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 ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$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
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_c_restrict=$ac_kw
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
test "$ac_cv_c_restrict" != no && break
done
fi
{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
$as_echo "$ac_cv_c_restrict" >&6; }
case $ac_cv_c_restrict in
restrict) ;;
no) cat >>confdefs.h <<\_ACEOF
@%:@define restrict /**/
_ACEOF
;;
*) cat >>confdefs.h <<_ACEOF
@%:@define restrict $ac_cv_c_restrict
_ACEOF
;;
esac
MKINSTALLDIRS=
@@ -30353,7 +30429,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by bash $as_me 4.0-rc1, which was
This file was extended by bash $as_me 4.0-release, which was
generated by GNU Autoconf 2.62. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -30406,7 +30482,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
bash config.status 4.0-rc1
bash config.status 4.0-release
configured by $0, generated by GNU Autoconf 2.62,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+11 -11
View File
@@ -15,25 +15,25 @@
'configure.in'
],
{
'_LT_AC_TAGCONFIG' => 1,
'AM_PROG_F77_C_O' => 1,
'AC_INIT' => 1,
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'_AM_COND_IF' => 1,
'AC_INIT' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_SUBST' => 1,
'_AM_COND_IF' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_FC_SRCEXT' => 1,
'AC_SUBST' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FC_SRCEXT' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_CONFIG_LINKS' => 1,
'm4_sinclude' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'LT_SUPPORTED_TAG' => 1,
'm4_sinclude' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'_m4_warn' => 1,
@@ -49,13 +49,13 @@
'AC_CANONICAL_BUILD' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'sinclude' => 1,
'm4_pattern_allow' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AM_PROG_CC_C_O' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'm4_pattern_allow' => 1,
'sinclude' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'm4_include' => 1,
+1100 -1084
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -180,6 +180,8 @@
#undef inline
#undef restrict
#undef volatile
/* Define if cpp supports the ANSI-C stringizing `#' operator */
+2
View File
@@ -180,6 +180,8 @@
#undef inline
#undef volatile
/* Define if cpp supports the ANSI-C stringizing `#' operator */
#undef HAVE_STRINGIZE
Vendored
+87 -11
View File
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.in for Bash 4.0, version 4.011.
# From configure.in for Bash 4.0, version 4.012.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.62 for bash 4.0-rc1.
# Generated by GNU Autoconf 2.62 for bash 4.0-release.
#
# Report bugs to <bug-bash@gnu.org>.
#
@@ -597,8 +597,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
PACKAGE_VERSION='4.0-rc1'
PACKAGE_STRING='bash 4.0-rc1'
PACKAGE_VERSION='4.0-release'
PACKAGE_STRING='bash 4.0-release'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
ac_unique_file="shell.h"
@@ -1410,7 +1410,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures bash 4.0-rc1 to adapt to many kinds of systems.
\`configure' configures bash 4.0-release to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1475,7 +1475,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of bash 4.0-rc1:";;
short | recursive ) echo "Configuration of bash 4.0-release:";;
esac
cat <<\_ACEOF
@@ -1648,7 +1648,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
bash configure 4.0-rc1
bash configure 4.0-release
generated by GNU Autoconf 2.62
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1662,7 +1662,7 @@ 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 bash $as_me 4.0-rc1, which was
It was created by bash $as_me 4.0-release, which was
generated by GNU Autoconf 2.62. Invocation command line was
$ $0 $@
@@ -2072,7 +2072,7 @@ ac_config_headers="$ac_config_headers config.h"
BASHVERS=4.0
RELSTATUS=rc1
RELSTATUS=release
case "$RELSTATUS" in
alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -7029,6 +7029,82 @@ _ACEOF
fi
{ $as_echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
if test "${ac_cv_c_restrict+set}" = set; then
$as_echo_n "(cached) " >&6
else
ac_cv_c_restrict=no
# The order here caters to the fact that C++ does not require restrict.
for ac_kw in __restrict __restrict__ _Restrict restrict; do
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
typedef int * int_ptr;
int foo (int_ptr $ac_kw ip) {
return ip[0];
}
int
main ()
{
int s[1];
int * $ac_kw t = s;
t[0] = 0;
return foo(t)
;
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 ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$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
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_c_restrict=$ac_kw
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
test "$ac_cv_c_restrict" != no && break
done
fi
{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
$as_echo "$ac_cv_c_restrict" >&6; }
case $ac_cv_c_restrict in
restrict) ;;
no) cat >>confdefs.h <<\_ACEOF
#define restrict /**/
_ACEOF
;;
*) cat >>confdefs.h <<_ACEOF
#define restrict $ac_cv_c_restrict
_ACEOF
;;
esac
MKINSTALLDIRS=
@@ -30353,7 +30429,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by bash $as_me 4.0-rc1, which was
This file was extended by bash $as_me 4.0-release, which was
generated by GNU Autoconf 2.62. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -30406,7 +30482,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
bash config.status 4.0-rc1
bash config.status 4.0-release
configured by $0, generated by GNU Autoconf 2.62,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+3 -2
View File
@@ -21,10 +21,10 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_REVISION([for Bash 4.0, version 4.011])dnl
AC_REVISION([for Bash 4.0, version 4.012])dnl
define(bashvers, 4.0)
define(relstatus, rc1)
define(relstatus, release)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
@@ -638,6 +638,7 @@ AC_C_LONG_DOUBLE
AC_C_PROTOTYPES
AC_C_CHAR_UNSIGNED
AC_C_VOLATILE
AC_C_RESTRICT
dnl initialize GNU gettext
AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
+3 -1
View File
@@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_REVISION([for Bash 4.0, version 4.011])dnl
AC_REVISION([for Bash 4.0, version 4.012])dnl
define(bashvers, 4.0)
define(relstatus, rc1)
@@ -637,6 +637,8 @@ AC_C_STRINGIZE
AC_C_LONG_DOUBLE
AC_C_PROTOTYPES
AC_C_CHAR_UNSIGNED
AC_C_VOLATILE
AC_C_RESTRICT
dnl initialize GNU gettext
AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
+3
View File
@@ -1056,8 +1056,11 @@ print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu)
else if (s[1] == 'P')
{
s++;
#if 0
/* clamp CPU usage at 100% */
if (cpu > 10000)
cpu = 10000;
#endif
sum = cpu / 100;
sum_frac = (cpu % 100) * 10;
len = mkfmt (ts, 2, 0, sum, sum_frac);
-4
View File
@@ -1717,11 +1717,8 @@ coproc_reap ()
cp = &sh_coproc;
if (cp && (cp->c_flags & COPROC_DEAD))
{
itrace("coproc_reap: disposing %d", cp->c_pid);
coproc_dispose (cp);
}
}
void
coproc_rclose (cp, fd)
@@ -1812,7 +1809,6 @@ coproc_pidchk (pid, status)
cp->c_status = status;
cp->c_flags |= COPROC_DEAD;
cp->c_flags &= ~COPROC_RUNNING;
itrace("coproc_pidchk: marked cproc with pid %d as COPROC_DEAD", pid);
#if 0
coproc_dispose (cp);
#endif
+10 -2
View File
@@ -1006,6 +1006,7 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw)
WORD_LIST *cmdlist;
int fval;
sh_parser_state_t ps;
sh_parser_state_t * restrict pps;
#if defined (ARRAY_VARS)
ARRAY *a;
#endif
@@ -1030,9 +1031,16 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw)
cmdlist = build_arg_list (funcname, text, lwords, cw);
save_parser_state (&ps);
pps = &ps;
begin_unwind_frame ("gen-shell-function-matches");
add_unwind_protect (restore_parser_state, (char *)pps);
add_unwind_protect (dispose_words, (char *)cmdlist);
add_unwind_protect (unbind_compfunc_variables, (char *)0);
fval = execute_shell_function (f, cmdlist);
restore_parser_state (&ps);
discard_unwind_frame ("gen-shell-function-matches");
restore_parser_state (pps);
/* Now clean up and destroy everything. */
dispose_words (cmdlist);
+15 -6
View File
@@ -941,11 +941,12 @@ unbind_compfunc_variables (exported)
$0 == function or command being invoked
$1 == command name
$2 = word to be completed (possibly null)
$3 = previous word
$2 == word to be completed (possibly null)
$3 == previous word
Functions can access all of the words in the current command line
with the COMP_WORDS array. External commands cannot. */
with the COMP_WORDS array. External commands cannot; they have to
make do with the COMP_LINE and COMP_POINT variables. */
static WORD_LIST *
build_arg_list (cmd, text, lwords, ind)
@@ -1005,6 +1006,7 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw)
WORD_LIST *cmdlist;
int fval;
sh_parser_state_t ps;
sh_parser_state_t * restrict pps;
#if defined (ARRAY_VARS)
ARRAY *a;
#endif
@@ -1029,9 +1031,16 @@ gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw)
cmdlist = build_arg_list (funcname, text, lwords, cw);
save_parser_state (&ps);
fval = execute_shell_function (f, cmdlist);
restore_parser_state (&ps);
pps = &ps;
begin_unwind_frame ("gen-shell-function-matches");
add_unwind_protect (restore_parser_state, (char *)pps);
add_unwind_protect (dispose_words, (char *)cmdlist);
add_unwind_protect (unbind_compfunc_variables, (char *)0);
fval = execute_shell_func`tion (f, cmdlist);
discard_unwind_frame ("gen-shell-function-matches");
restore_parser_state (pps);
/* Now clean up and destroy everything. */
dispose_words (cmdlist);
+26 -5
View File
@@ -7363,7 +7363,12 @@ add_string:
assignment statements. We now do tilde expansion on such words
even in POSIX mode. */
if (word->flags & (W_ASSIGNRHS|W_NOTILDE))
goto add_character;
{
if (isexp == 0 && isifs (c))
goto add_ifs_character;
else
goto add_character;
}
/* If we're not in posix mode or forcing assignment-statement tilde
expansion, note where the `=' appears in the word and prepare to
do tilde expansion following the first `='. */
@@ -7379,16 +7384,28 @@ add_string:
string[sindex+1] == '~')
word->flags |= W_ITILDE;
#endif
goto add_character;
if (isexp == 0 && isifs (c))
goto add_ifs_character;
else
goto add_character;
case ':':
if (word->flags & W_NOTILDE)
goto add_character;
{
if (isexp == 0 && isifs (c))
goto add_ifs_character;
else
goto add_character;
}
if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS|W_TILDEEXP)) &&
string[sindex+1] == '~')
word->flags |= W_ITILDE;
goto add_character;
if (isexp == 0 && isifs (c))
goto add_ifs_character;
else
goto add_character;
case '~':
/* If the word isn't supposed to be tilde expanded, or we're not
@@ -7399,7 +7416,10 @@ add_string:
(quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
{
word->flags &= ~W_ITILDE;
goto add_character;
if (isexp == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
goto add_ifs_character;
else
goto add_character;
}
if (word->flags & W_ASSIGNRHS)
@@ -7739,6 +7759,7 @@ add_twochars:
default:
/* This is the fix for " $@ " */
add_ifs_character:
if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c)))
{
if (string[sindex]) /* from old goto dollar_add_string */
+1 -1
View File
@@ -1,4 +1,4 @@
BUILD_DIR=/usr/local/build/bash/bash-current
BUILD_DIR=/usr/local/build/chet/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR