summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJari Aalto <jari.aalto@cante.net>1998-07-23 14:37:54 +0000
committerJari Aalto <jari.aalto@cante.net>2009-09-12 16:46:52 +0000
commitbc4cd23ce958feda898c618215f94d8a4e8f4ffa (patch)
tree32fc9a13b636cb4d29873feddc533d3dfb25a917
parentcce855bc5b117cb7ae70064131120687bc69fac0 (diff)
downloadbash-bc4cd23ce958feda898c618215f94d8a4e8f4ffa.tar.gz
Imported from ../bash-2.02.1.tar.gz.
-rw-r--r--CHANGES55
-rw-r--r--INSTALL4
-rw-r--r--NOTES20
-rw-r--r--README6
-rw-r--r--bashline.c4
-rw-r--r--builtins/cd.def8
-rw-r--r--builtins/exec.def5
-rw-r--r--builtins/printf.def6
-rwxr-xr-xconfigure4
-rw-r--r--configure.in2
-rw-r--r--copy_cmd.c3
-rw-r--r--doc/FAQ48
-rw-r--r--examples/scripts.v2/repeat2
-rw-r--r--execute_cmd.c23
-rw-r--r--jobs.c6
-rw-r--r--lib/glob/fnmatch.c20
-rw-r--r--lib/malloc/malloc.c2
-rw-r--r--lib/readline/display.c7
-rw-r--r--make_cmd.c2
-rw-r--r--shell.c2
-rw-r--r--subst.c6
-rwxr-xr-xsupport/config.guess5
-rwxr-xr-xsupport/config.sub34
23 files changed, 204 insertions, 70 deletions
diff --git a/CHANGES b/CHANGES
index 71216a6f..5f293092 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,56 @@
-This document details the changes between this version, bash-2.02-beta2,
-and the previous version, bash-2.02-beta1.
+This document details the changes between this version, bash-2.02.1-release,
+and the previous version, bash-2.02-release.
+
+1. Changes to Bash
+
+a. A bug that caused the bash readline support to not compile unless aliases
+ and csh-style history were configured into the shell was fixed.
+
+b. Fixed a bug that could cause a core dump when here documents contained
+ more than 1000 characters.
+
+c. Fixed a bug that caused a CDPATH entry of "" to not be treated the same
+ as the current directory when in POSIX mode.
+
+d. Fixed an alignment problem with the memory returned by the bash malloc,
+ so returned memory is now 64-bit aligned.
+
+e. Fixed a bug that caused command substitutions executed within pipelines
+ to put the terminal in the wrong process group.
+
+f. Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop,
+ Unixware 2, and Unixware 7.
+
+g. Fixes to the pattern matching code to make it work correctly for eight-bit
+ characters.
+
+h. Fixed a problem that occasionally caused the shell to display the wrong
+ value for the new working directory when changing to a directory found
+ in $CDPATH when in physical mode.
+
+i. Fixed a bug that caused core dumps when using conditional commands in
+ shell functions.
+
+j. Fixed a bug that caused the printf builtin to loop forever if the format
+ string did not consume any of the arguments.
+
+k. Fixed a bug in the parameter expansion code that caused "$@" to be
+ incorrectly split if $IFS did not contain a space character.
+
+l. Fixed a bug that could cause a core dump when completing hostnames if
+ the number of matching hostnames was an exact multiple of 16.
+
+m. Fixed a bug that caused the shell to fork too early when a command
+ such as `%2 &' was given.
+
+2. Changes to Readline
+
+a. Fixed a problem with redisplay that showed up when the prompt string was
+ longer than the screen width and the prompt contained invisible characters.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.02-release,
+and the previous version, bash-2.02-beta2.
1. Changes to Bash
diff --git a/INSTALL b/INSTALL
index c10697cf..b3e1f4f2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -29,8 +29,8 @@ this, make sure you are using Autoconf version 2.10 or newer.
If you need to change `configure.in' or regenerate `configure', you
will need to create two files: `_distribution' and `_patchlevel'.
`_distribution' should contain the major and minor version numbers of
-the Bash distribution, for example `2.01'. `_patchlevel' should
-contain the patch level of the Bash distribution, `0' for example. The
+the Bash distribution, for example `2.02'. `_patchlevel' should
+contain the patch level of the Bash distribution, `1' for example. The
script `support/mkconffiles' has been provided to automate the creation
of these files.
diff --git a/NOTES b/NOTES
index 6695f2a9..9a7c36ab 100644
--- a/NOTES
+++ b/NOTES
@@ -3,12 +3,14 @@ Platform-Specific Configuration and Operation Notes
1. configure --without-gnu-malloc on:
- alpha running OSF/1
- alpha running Linux
+ alpha running OSF/1, Linux, or NetBSD (malloc needs 8-byte alignment;
+ bash malloc has 8-byte alignment now, but I have no alphas to test on)
next running NeXT/OS
- all machines running SunOS YP code: SunOS4, SunOS5, HP/UX
+ all machines running SunOS YP code: SunOS4, SunOS5, HP/UX, if you
+ have problems with username completion or tilde expansion for
+ usernames found via YP/NIS
linux (optional, but don't do it if you're using Doug Lea's malloc)
@@ -19,16 +21,18 @@ Platform-Specific Configuration and Operation Notes
DG/UX
Cray
- NetBSD/sparc (malloc needs 8-byte alignment; GNU malloc has 4-byte)
+ NetBSD/sparc (malloc needs 8-byte alignment; bash malloc has 8-byte
+ alignment now, but I have no NetBSD machines to test on)
- BSD/OS 2.1 if you want to use loadable builtins
+ BSD/OS 2.1, 3.x if you want to use loadable builtins
If you are using GNU libc, especially on a linux system
(Configuring --without-gnu-malloc will still result in lib/malloc/libmalloc.a
being built and linked against, but there is only a stub file in the archive.)
-2. configure using shlicc on BSD/OS 2.1 to use loadable builtins
+2. Configure using shlicc2 on BSD/OS 2.1 and BSD/OS 3.x to use loadable
+ builtins
3. Bash cannot be built in a directory separate from the source directory
using configure --srcdir=... unless the version of `make' you're using
@@ -44,8 +48,8 @@ being built and linked against, but there is only a stub file in the archive.)
fixes the problem.
5. There is a problem with Red Hat Linux's `makewhatis' script.
- Running `makewhatis' with bash-2.0 results in error messages
- like this:
+ Running `makewhatis' with bash-2.0 or later versions results
+ in error messages like this:
/usr/sbin/makewhatis: cd: manpath: No such file or directory
/usr/sbin/makewhatis: manpath/whatis: No such file or directory
diff --git a/README b/README
index 788edccb..57a70591 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
Introduction
============
-This is GNU Bash, version 2.01. Bash is the GNU Project's Bourne
+This is GNU Bash, version 2.02.1. Bash is the GNU Project's Bourne
Again SHell, a complete implementation of the POSIX.2 shell spec,
but also with interactive command line editing, job control on
architectures that support it, csh-like features such as history
@@ -49,7 +49,7 @@ more ambitious script that attempts to do a more complete job.
Reporting Bugs
==============
-Bug reports for bash-2.01 should be sent to:
+Bug reports for bash-2.02.1 should be sent to:
bug-bash@prep.ai.mit.edu
@@ -67,7 +67,7 @@ bashbug directly with `make bashbug'. If you cannot build `bashbug',
please send mail to bug-bash@prep.ai.mit.edu with the following
information:
- * the version number and release status of Bash (e.g., 2.01-release)
+ * the version number and release status of Bash (e.g., 2.02.1-release)
* the machine and OS that it is running on (look at the file
`.made' in the bash build directory)
* a list of the compilation flags or the contents of `config.h', if
diff --git a/bashline.c b/bashline.c
index a86e6625..3709050e 100644
--- a/bashline.c
+++ b/bashline.c
@@ -213,7 +213,9 @@ initialize_readline ()
#ifdef ALIAS
rl_add_defun ("alias-expand-line", (Function *)alias_expand_line, -1);
+# ifdef BANG_HISTORY
rl_add_defun ("history-and-alias-expand-line", (Function *)history_and_alias_expand_line, -1);
+# endif
#endif
/* Backwards compatibility. */
@@ -538,7 +540,7 @@ hostnames_matching (text)
continue;
/* OK, it matches. Add it to the list. */
- if (nmatch >= rsize)
+ if (nmatch >= (rsize - 1))
{
rsize = (rsize + 16) - (rsize % 16);
result = (char **)xrealloc (result, rsize * sizeof (char *));
diff --git a/builtins/cd.def b/builtins/cd.def
index ef8d8051..76ef14ba 100644
--- a/builtins/cd.def
+++ b/builtins/cd.def
@@ -263,7 +263,7 @@ cd_builtin (list)
directory name is echoed to stdout, whether or not
the shell is interactive. */
if (opt)
- printf ("%s\n", the_current_working_directory);
+ printf ("%s\n", no_symlinks ? temp : the_current_working_directory);
free (temp);
/* Posix.2 says that after using CDPATH, the resultant
@@ -276,8 +276,10 @@ cd_builtin (list)
/* POSIX.2 says that if `.' does not appear in $CDPATH, we don't
try the current directory, so we just punt now with an error
- message if POSIXLY_CORRECT is non-zero. */
- if (posixly_correct)
+ message if POSIXLY_CORRECT is non-zero. The check for cdpath[0]
+ is so we don't mistakenly treat a CDPATH value of "" as not
+ specifying the current directory. */
+ if (posixly_correct && cdpath[0])
{
builtin_error ("%s: %s", dirname, strerror (ENOENT));
return (EXECUTION_FAILURE);
diff --git a/builtins/exec.def b/builtins/exec.def
index 4e1394de..d7166d78 100644
--- a/builtins/exec.def
+++ b/builtins/exec.def
@@ -191,6 +191,11 @@ exec_builtin (list)
#endif /* JOB_CONTROL */
shell_execve (command, args, env);
+
+ /* We have to set this to NULL because shell_execve has called realloc()
+ to stuff more items at the front of the array, which may have caused
+ the memory to be freed by realloc(). We don't want to free it twice. */
+ args = (char **)NULL;
if (cleanenv == 0)
adjust_shell_level (1);
diff --git a/builtins/printf.def b/builtins/printf.def
index 43ccb56e..9d1493bc 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -129,6 +129,10 @@ printf_builtin (list)
garglist = list->next;
+ /* If the format string is empty after preprocessing, return immediately. */
+ if (format == 0 || *format == 0)
+ return (EXECUTION_SUCCESS);
+
/* Basic algorithm is to scan the format string for conversion
specifications -- once one is found, find out if the field
width or precision is a '*'; if it is, gather up value. Note,
@@ -305,7 +309,7 @@ printf_builtin (list)
fmt[1] = nextch;
}
}
- while (garglist);
+ while (garglist && garglist != list->next);
PRETURN (retval);
}
diff --git a/configure b/configure
index 9b018f01..3a27c426 100755
--- a/configure
+++ b/configure
@@ -725,7 +725,7 @@ alpha-*) opt_gnu_malloc=no ;; # alpha running osf/1 or linux
*-osf1*) opt_gnu_malloc=no ;; # other osf/1 machines
sparc-svr4*) opt_gnu_malloc=no ;; # sparc SVR4, SVR4.2
sparc-netbsd*) opt_gnu_malloc=no ;; # needs 8-byte alignment
-sgi-irix6*) opt_gnu_malloc=no ;; # needs 8-byte alignment
+#mips-irix6*) opt_gnu_malloc=no ;; # needs 8-byte alignment
sparc-linux*) opt_gnu_malloc=no ;; # sparc running linux; requires ELF
#*-freebsd*) opt_gnu_malloc=no ;; # they claim it's better
*-aix*) opt_gnu_malloc=no ;; # AIX machines
@@ -1113,7 +1113,7 @@ fi
BASHVERS=2.02
-BASHPATCH=0
+BASHPATCH=1
echo "Beginning configuration for bash-$BASHVERS for ${host_cpu}-${host_vendor}-${host_os}"
diff --git a/configure.in b/configure.in
index dee3db3d..240eb4da 100644
--- a/configure.in
+++ b/configure.in
@@ -38,7 +38,7 @@ alpha-*) opt_gnu_malloc=no ;; # alpha running osf/1 or linux
*-osf1*) opt_gnu_malloc=no ;; # other osf/1 machines
sparc-svr4*) opt_gnu_malloc=no ;; # sparc SVR4, SVR4.2
sparc-netbsd*) opt_gnu_malloc=no ;; # needs 8-byte alignment
-sgi-irix6*) opt_gnu_malloc=no ;; # needs 8-byte alignment
+#mips-irix6*) opt_gnu_malloc=no ;; # needs 8-byte alignment
sparc-linux*) opt_gnu_malloc=no ;; # sparc running linux; requires ELF
#*-freebsd*) opt_gnu_malloc=no ;; # they claim it's better
*-aix*) opt_gnu_malloc=no ;; # AIX machines
diff --git a/copy_cmd.c b/copy_cmd.c
index e28e6f07..2ccea518 100644
--- a/copy_cmd.c
+++ b/copy_cmd.c
@@ -229,7 +229,8 @@ copy_cond_command (com)
new_cond = (COND_COM *)xmalloc (sizeof (COND_COM));
new_cond->flags = com->flags;
new_cond->line = com->line;
- new_cond->op = copy_word (com->op);
+ new_cond->type = com->type;
+ new_cond->op = com->op ? copy_word (com->op) : com->op;
new_cond->left = com->left ? copy_cond_command (com->left) : (COND_COM *)NULL;
new_cond->right = com->right ? copy_cond_command (com->right) : (COND_COM *)NULL;
diff --git a/doc/FAQ b/doc/FAQ
index 9ef5aa14..d191cb4e 100644
--- a/doc/FAQ
+++ b/doc/FAQ
@@ -1,4 +1,4 @@
-This is the Bash FAQ, version 2.11, for Bash version 2.02.
+This is the Bash FAQ, version 2.13, for Bash version 2.02.
This document contains a set of frequently-asked questions concerning
Bash, the GNU Bourne-Again Shell. Bash is a freely-available command
@@ -150,9 +150,10 @@ More information appears in the file `INSTALL' in the distribution.
5) Will bash run on operating systems other than Unix?
Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution. Previous versions of
-bash have been ported to Minix, but I don't believe anyone has
-built bash-2.x on Minix yet.
+LynxOS are included in the distribution. Bash-2.02 should
+compile and run on Minix 2.0 (patches were contributed), but I
+don't believe anyone has built bash-2.x on earlier Minix versions
+yet.
Bash has been ported to versions of Windows implementing the Win32
programming interface. This includes Windows 95 and Windows NT.
@@ -174,9 +175,9 @@ The Cygnus port works only on Intel machines. There is a port of bash
ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz
-Softway Systems has ported bash-2.01.1 to their OpenNT system, a
-Unix subsystem for NT that replaces the Microsoft POSIX subsystem.
-Check out http://www.opennt.com for more information.
+Softway Systems has ported bash-2.01.1 to their Interix (nee OpenNT)
+system, a Unix subsystem for NT that replaces the Microsoft POSIX
+subsystem. Check out http://www.interix.com for more information.
D. J. Delorie has ported bash-1.14.7 to run under MS-DOS, as part of
the DJGPP project. For more information on the project, see
@@ -403,6 +404,8 @@ Things bash has that sh does not:
the select compound command and reserved word
new $'...' and $"..." quoting
the $(...) form of command substitution
+ the $(<filename) form of command substitution, equivalent to
+ $(cat filename)
the ${#param} parameter value length operator
the ${!param} indirect parameter expansion operator
the ${param:length[:offset]} parameter substring operator
@@ -413,7 +416,7 @@ Things bash has that sh does not:
TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
- HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE,
+ HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
SHELLOPTS, OPTERR, HOSTFILE, TMOUT, histchars, auto_resume
DEBUG trap
@@ -436,6 +439,7 @@ Things bash has that sh does not:
brace expansion
tilde expansion
arithmetic expansion with $((...)) and `let' builtin
+ the `[[...]]' extended conditional command
process substitution
aliases and alias/unalias builtins
local variables in functions and `local' builtin
@@ -444,9 +448,14 @@ Things bash has that sh does not:
csh-like history expansion
other new bash builtins: bind, command, builtin, declare/typeset,
dirs, enable, fc, help, history, logout,
- popd, pushd, disown, shopt
+ popd, pushd, disown, shopt, printf
exported functions
filename generation when using output redirection (command >a*)
+ POSIX.2-style globbing character classes
+ POSIX.2-style globbing equivalence classes
+ POSIX.2-style globbing collating symbols
+ egrep-like extended pattern matching operators
+ case-insensitive pattern matching and globbing
variable assignments preceding commands affect only that command,
even for builtins and functions
posix mode
@@ -493,7 +502,7 @@ Things bash has or uses that ksh88 does not:
HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
- histchars, auto_resume
+ GROUPS, histchars, auto_resume
prompt expansion with backslash escapes and command substitution
redirection: &> (stdout and stderr)
more extensive and extensible editing and completion
@@ -504,15 +513,18 @@ Things bash has or uses that ksh88 does not:
-o histexpand/-o interactive-comments/-o notify/-o physical/
-o posix/-o hashall/-o onecmd/-h/-B/-C/-b/-H/-P, set +o,
suspend, trap -l, type, typeset -a/-F/-p, ulimit -u,
- umask -S, alias -p, shopt, disown
+ umask -S, alias -p, shopt, disown, printf
`!' csh-style history expansion
+ POSIX.2-style globbing character classes
+ POSIX.2-style globbing equivalence classes
+ POSIX.2-style globbing collating symbols
+ egrep-like extended pattern matching operators
+ case-insensitive pattern matching and globbing
+ `**' arithmetic operator to do exponentiation
Things ksh88 has or uses that bash does not:
- new version of test: [[...]]
tracked aliases
- $(<file)
variables: ERRNO, FPATH, COLUMNS, LINES, EDITOR, VISUAL
- extended pattern matching with egrep-style pattern lists
co-processes (|&, >&p, <&p)
weirdly-scoped functions
typeset +f to list all function names without definitions
@@ -547,7 +559,7 @@ New things in ksh-93 not in bash-2.02:
variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, HISTEDIT,
.sh.version, .sh.name, .sh.subscript, .sh.value
backreferences in pattern matching
- print -f (bash has a loadable version)
+ print -f (bash has a loadable version of print and the printf builtin)
`fc' has been renamed to `hist'
read -t/-d
`.' can execute shell functions
@@ -712,12 +724,8 @@ Most, however, can be emulated with very little trouble.
ksh-88 feature Bash equivalent
-------------- ---------------
-[[...]] can usually use [...]; minor differences (no
- pattern matching, for one)
compiled-in aliases set up aliases in .bashrc; some ksh aliases are
bash builtins (hash, history, type)
-$(<file) $(cat file)
-extended patterns no good substitute
coprocesses named pipe pairs (one for read, one for write)
typeset +f declare -F
cd, print, whence function substitutes in examples/functions/kshenv
@@ -1146,7 +1154,7 @@ is 1-56592-147-X. Look for it in fine bookstores near you. This book
covers bash-1.14, but has an appendix describing some of the new features
in bash-2.0.
-A second edition of this book is available, just published in January, 1998.
+A second edition of this book is available, published in January, 1998.
The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores
or on the web.
diff --git a/examples/scripts.v2/repeat b/examples/scripts.v2/repeat
index 7e76007c..315d36ee 100644
--- a/examples/scripts.v2/repeat
+++ b/examples/scripts.v2/repeat
@@ -77,6 +77,7 @@ case "$1" in
# Start value only
count=${1%-}
forever=1
+ end="-1";
;;
-[0-9]*-[0-9]*|[0-9]*-[0-9]*)
# Start and end value
@@ -92,6 +93,7 @@ case "$1" in
;;
-)
forever=1
+ end="-1";
;;
*)
echo "$name: bad count parameter: $1" 1>&2
diff --git a/execute_cmd.c b/execute_cmd.c
index e3da9bfb..8f9d9a7e 100644
--- a/execute_cmd.c
+++ b/execute_cmd.c
@@ -2276,7 +2276,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
{
WORD_LIST *words, *lastword;
char *command_line, *lastarg, *temp;
- int first_word_quoted, result, builtin_is_special, already_forked;
+ int first_word_quoted, result, builtin_is_special, already_forked, dofork;
pid_t old_last_command_subst_pid;
Function *builtin;
SHELL_VAR *func;
@@ -2298,8 +2298,23 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
old_last_command_subst_pid = last_command_subst_pid;
- already_forked = 0;
- if (pipe_in != NO_PIPE || pipe_out != NO_PIPE || async)
+ already_forked = dofork = 0;
+
+ /* If we're in a pipeline or run in the background, set DOFORK so we
+ make the child early, before word expansion. This keeps assignment
+ statements from affecting the parent shell's environment when they
+ should not. */
+ dofork = pipe_in != NO_PIPE || pipe_out != NO_PIPE || async;
+
+ /* Something like `%2 &' should restart job 2 in the background, not cause
+ the shell to fork here. */
+ if (dofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE &&
+ simple_command->words && simple_command->words->word &&
+ simple_command->words->word->word &&
+ (simple_command->words->word->word[0] == '%'))
+ dofork = 0;
+
+ if (dofork)
{
/* XXX memory leak if expand_words() error causes a jump_to_top_level */
command_line = savestring (the_printed_command);
@@ -2312,7 +2327,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
do_piping (pipe_in, pipe_out);
pipe_in = pipe_out = -1;
- subshell_environment = SUBSHELL_ASYNC;
+ subshell_environment = async ? SUBSHELL_ASYNC : SUBSHELL_FORK;
}
else
{
diff --git a/jobs.c b/jobs.c
index 59fcc03d..e1340c4d 100644
--- a/jobs.c
+++ b/jobs.c
@@ -925,9 +925,9 @@ print_pipeline (p, job_index, format, stream)
else
{
if (WIFSTOPPED (show->status))
- temp = strsignal (WSTOPSIG (show->status));
+ temp = (char *)strsignal (WSTOPSIG (show->status));
else if (WIFSIGNALED (show->status))
- temp = strsignal (WTERMSIG (show->status));
+ temp = (char *)strsignal (WTERMSIG (show->status));
else if (WIFEXITED (show->status))
{
temp = retcode_name_buffer;
@@ -1191,7 +1191,7 @@ make_child (command, async_p)
if (pipeline_pgrp == mine)
{
#endif
- if (async_p == 0)
+ if (async_p == 0 && pipeline_pgrp != shell_pgrp)
give_terminal_to (pipeline_pgrp);
#if defined (PGRP_PIPE)
diff --git a/lib/glob/fnmatch.c b/lib/glob/fnmatch.c
index b5fdcc16..134676ba 100644
--- a/lib/glob/fnmatch.c
+++ b/lib/glob/fnmatch.c
@@ -37,9 +37,6 @@ static int extmatch ();
/* Note that these evaluate C many times. */
-#define ISUPPER(c) (isascii (c) && isupper (c))
-#define ISLOWER(c) (isascii (c) && islower (c))
-
#ifndef isblank
# define isblank(c) ((c) == ' ' || (c) == '\t')
#endif
@@ -52,7 +49,10 @@ static int extmatch ();
# define isxdigit(c) (((c) >= '0' && (c) <= '9') || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
#endif
-# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
+/* The result of FOLD is an `unsigned char' */
+# define FOLD(c) ((flags & FNM_CASEFOLD) && isupper ((unsigned char)c) \
+ ? tolower ((unsigned char)c) \
+ : ((unsigned char)c))
#ifndef STREQ
#define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0)
@@ -190,7 +190,7 @@ gmatch (string, se, pattern, pe, flags)
return FNM_NOMATCH;
c = FOLD (c);
}
- if (FOLD (sc) != c)
+ if (FOLD (sc) != (unsigned char)c)
return FNM_NOMATCH;
break;
@@ -240,9 +240,9 @@ gmatch (string, se, pattern, pe, flags)
/* General case, use recursion. */
{
- char c1;
+ unsigned char c1;
- c1 = ((flags & FNM_NOESCAPE) == 0 && c == '\\') ? *p : c;
+ c1 = (unsigned char)((flags & FNM_NOESCAPE) == 0 && c == '\\') ? *p : c;
c1 = FOLD (c1);
for (--p; n < se; ++n)
/* Only call fnmatch if the first character indicates a
@@ -272,7 +272,7 @@ gmatch (string, se, pattern, pe, flags)
break;
default:
- if (c != FOLD (sc))
+ if ((unsigned char)c != FOLD (sc))
return (FNM_NOMATCH);
}
@@ -378,7 +378,7 @@ brackmatch (p, test, flags)
else if (STREQN (p+1, "graph:]", 7))
{ pc = isgraph (test); p += 8; }
else if (STREQN (p+1, "lower:]", 7))
- { pc = ISLOWER (test); p += 8; }
+ { pc = islower (test); p += 8; }
else if (STREQN (p+1, "print:]", 7))
{ pc = isprint (test); p += 8; }
else if (STREQN (p+1, "punct:]", 7))
@@ -386,7 +386,7 @@ brackmatch (p, test, flags)
else if (STREQN (p+1, "space:]", 7))
{ pc = isspace (test); p += 8; }
else if (STREQN (p+1, "upper:]", 7))
- { pc = ISUPPER (test); p += 8; }
+ { pc = isupper (test); p += 8; }
else if (STREQN (p+1, "xdigit:]", 8))
{ pc = isxdigit (test); p += 9; }
else if (STREQN (p+1, "ascii:]", 7))
diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c
index c42ca3cc..ef570204 100644
--- a/lib/malloc/malloc.c
+++ b/lib/malloc/malloc.c
@@ -184,7 +184,7 @@ struct bucket_stats {
enough room in the block for the new size. Range checking is always
done. */
union mhead {
- union mhead *mh_align;
+ double mh_align;
struct {
char mi_alloc; /* ISALLOC or ISFREE */ /* 1 */
char mi_index; /* index in nextf[] */ /* 1 */
diff --git a/lib/readline/display.c b/lib/readline/display.c
index edb5b20d..f7ec69b2 100644
--- a/lib/readline/display.c
+++ b/lib/readline/display.c
@@ -423,7 +423,14 @@ rl_redisplay ()
contents of the command line? */
while (lpos >= screenwidth)
{
+#if 0
temp = ((newlines + 1) * screenwidth) - ((newlines == 0) ? wrap_offset : 0);
+#else
+ /* XXX - possible fix from Darin Johnson <darin@acuson.com> for prompt
+ string with invisible characters that is longer than the screen
+ width. */
+ temp = ((newlines + 1) * screenwidth) + ((newlines == 0) ? wrap_offset : 0);
+#endif
inv_lbreaks[++newlines] = temp;
lpos -= screenwidth;
}
diff --git a/make_cmd.c b/make_cmd.c
index 6ce7e4c1..d0991ca0 100644
--- a/make_cmd.c
+++ b/make_cmd.c
@@ -492,7 +492,7 @@ make_here_document (temp)
len = strlen (line);
if (len + document_index >= document_size)
{
- document_size = document_size ? 2 * (document_size + len) : 1000;
+ document_size = document_size ? 2 * (document_size + len) : len + 2;
document = xrealloc (document, document_size);
}
diff --git a/shell.c b/shell.c
index 5304b6e4..e4f649c6 100644
--- a/shell.c
+++ b/shell.c
@@ -1390,9 +1390,7 @@ shell_initialize ()
char hostname[256];
/* Line buffer output for stderr and stdout. */
-#if defined (SunOS5)
if (shell_initialized == 0)
-#endif
{
setlinebuf (stderr);
setlinebuf (stdout);
diff --git a/subst.c b/subst.c
index cdc37d6e..94c230f7 100644
--- a/subst.c
+++ b/subst.c
@@ -5033,7 +5033,11 @@ add_string:
{
if (list->next)
{
- temp = string_list (quote_list (list));
+ /* Testing quoted_dollar_at makes sure that "$@" is
+ split correctly when $IFS does not contain a space. */
+ temp = quoted_dollar_at
+ ? string_list_dollar_at (list, Q_DOUBLE_QUOTES)
+ : string_list (quote_list (list));
dispose_words (list);
goto add_string;
}
diff --git a/support/config.guess b/support/config.guess
index 0e11ad86..2f152ff8 100755
--- a/support/config.guess
+++ b/support/config.guess
@@ -737,6 +737,11 @@ EOF
i?86:DYNIX/ptx:4*:*)
echo i386-sequent-sysv4
exit 0 ;;
+# added by chet for bash based on usenet posting from <hops@sco.com> and
+# documentation on SCO's web site -- UnixWare 7 (SVR5)
+ i?86:UnixWare:5*:*)
+ echo ${UNAME_MACHINE}-pc-sysv5uw${UNAME_VERSION}
+ exit 0 ;;
i?86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
diff --git a/support/config.sub b/support/config.sub
index 7541a125..419d3326 100755
--- a/support/config.sub
+++ b/support/config.sub
@@ -102,7 +102,7 @@ case $os in
os=-hiuxwe2
;;
-sco5)
- os=sco3.2v5
+ os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
@@ -175,7 +175,8 @@ case $basic_machine in
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
| none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
| hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
- | alpha-* | we32k-* | cydra-* | ns16k-* \
+ | alpha-* | alphaev5-* | alphaev56-* | alphapca56-* | alphaev6-* \
+ | we32k-* | cydra-* | ns16k-* \
| pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
| pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-* | f301-* \
@@ -454,6 +455,14 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
+ osr5 | sco5) # SCO Open Server
+ basic_machine=i386-pc
+ os=-sco3.2v5
+ ;;
+ odt | odt3 | odt4) # SCO Open Desktop
+ basic_machine=i386-pc
+ os=-sco3.2v4
+ ;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
@@ -584,6 +593,14 @@ case $basic_machine in
basic_machine=a29k-nyu
os=-sym1
;;
+ uw2 | unixware | unixware2)
+ basic_machine=i386-pc
+ os=-sysv4.2uw2.1
+ ;;
+ uw7 | unixware7)
+ basic_machine=i386-pc
+ os=-sysv5uw7
+ ;;
vaxv)
basic_machine=vax-dec
os=-sysv
@@ -683,9 +700,15 @@ case $os in
-solaris)
os=-solaris2
;;
- -unixware* | svr4*)
+ svr4*)
os=-sysv4
;;
+ -unixware | -uw | -unixware2* | -uw2*)
+ os=-sysv4.2uw2.1
+ ;;
+ -unixware7* | -uw7*)
+ os=-sysv5uw7
+ ;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
@@ -759,7 +782,10 @@ case $os in
-sysvr4)
os=-sysv4
;;
- # This must come after -sysvr4.
+ -sysvr5)
+ os=-sysv5
+ ;;
+ # This must come after -sysvr[45].
-sysv*)
;;
-xenix)