Files
bash/CWRU/old-changelogs/CWRU.chlog.v5
T

1493 lines
48 KiB
Plaintext

4/11
----
machines.h, general.c, cpp-Makefile
- wrapped the definition of strerror() inside a new machines.h
variable, HAVE_STRERROR
machines.h
- new machine definition for the Encore series 91
- removed definitions of NO_WAIT_H; let makeargs.sh decide for us
builtins.c
- the test used in cd_builtin () to decide whether or not to use
CDPATH was incorrect. It now uses CDPATH unless the directory
name begins with a slash.
cpp-Makefile, machines.h
- added SYSDEP_LDFLAGS for flags to ld, analogous to SYSDEP_CFLAGS
4/13
----
machines.h
- more changes to Encore entries from pierson@encore.com
- added -Wf,-XNl3072 to SYSDEP_CFLAGS for all machines that use the
MIPS chip and compilers. This increases the maximum size of a
string constant, which some of the help strings in builtins.c
were exceeding
jobs.c
- include trap.h only if JOB_CONTROL is defined, since nojobs.c
does not use its facilities
4/14
----
getopts.c
- changed error handling so that it obeys the Posix.2 draft 11 spec
(which is like ksh-88)
4/16
----
execute_cmd.c
- only run the exit trap in a subshell when command_subshell ==
USER_SUBSHELL, which means the user forced a subshell with ( )
cpp-Makefile
- updated the dependency information
quit.h
- changed the definition of throw_to_top_level to `extern' -- it
sometimes matters
readline/vi_mode.c
- fix to make the vi-mode `b' command work when you type it twice
in a row
4/17
----
readline/vi_mode.c
- more fixes for vi `b' and `B' commands
- fixes for vi `w' and `W' commands
- fixed `_' command to yank the correct arg from the previous history
line
readline/{vi_{mode,keymap}.c,readline.h}
- added a new function, rl_vi_fetch_history(), to implement the `G'
command. It's not totally right, but it's better than having none
at all.
4/18
----
builtins.c
- only call the with_input_from_* functions in set_minus_o_option
if the shell is interactive when doing set -o emacs or set -o vi
(this prevents core dumps when doing a "set -o emacs" from a
startup file, because none of that stuff is initialized when the
startup files are run)
bashline.c
- make sure all of the bindings are done to explicit keymaps, so
as to not randomly change the keymap the user has chosen with
a set -o in a .bashrc file. The original ones all assumed the
current keymap was the emacs keymap, and this will screw up a
vi keymap seriously.
readline.c
- .inputrc file parsing now recognizes the `$if mode=emacs' or
`$if mode=vi' construct in parser_if()
trap.c
- make sure the jmp_buf stored in top_level is valid during the
execution of run_exit_trap, or we may jump off into never-never
land.
For example, consider a script that runs until it reads eof, and
has an exit trap set that contains a call to `exit'.
parse_and_execute will be called after reader_loop (and hence the
valid definition of top_level) is already off the stack and
invalid, and the longjmp in exit_builtin will seg fault.
machines.h
- for MIPS machines in the BSD universe (-systype bsd), make sure
HAVE_UNISTD_H is undefined -- the compiler doesn't let us get to
it, even if it is there (wierd)
config.h
- made the HELP_TEXT define that enables the inclusion of the huge
documentation strings for builtins a configurable parameter defined
here. It's undefined by default, which means the long text is
not compiled in.
general.c
- rewrote strip_trailing() to make it handle all cases where the
entire string should be stripped (e.g. "\n\n\n\n" when newlines
only are to be stripped)
subst.c
- quoted results of command substitutions should have trailing
newlines stripped, not just the last newline as it was doing
builtins.c
- aliases are no longer required to be legal identifiers, as
defined by Posix.2. This originally came from 1003.2a,
draft 5, but I think it's on its way out
4/19
----
shell.c
- fixed a typo in the code that decides whether or not to source
~/.bashrc, so now it sources it when we expect it to (no more
sourcing .bashrc for `echo ls | bash'). It was a misplaced
paren.
parse.y, subst.c
- when parsing and evaluating $() and $[] constructs, bash needs
to take into account instances of `(' and `[' respectively
inside the delimiting characters and adjust the number of closing
parens or brackets that need to be read before the construct is
complete. This is so things like $( (pwd) ) or $((pwd)) will
work as expected.
4/21
----
parse.y
- consolidated two grammar rules for `function f { echo foo; }'
into one -- there was no real difference between the two
variables.c
- deleted inclusion of version.h. It was not used.
cpp-Makefile
- removed dependence of variables.o on version.h. This caused
variables.c to be unnecessarily recompiled each time
version.h changed.
trap.h
- changed the definition of IGNORE_SIG to be SIG_IGN, because
defining it as 0 made it the same as SIG_DFL, and hence
DEFAULT_SIG
jobs.c, nojobs.c
- changed the restoration of signals altered by traps to be
after SIGINT, SIGQUIT, and SIGTERM are restored to their
default state so that ignored signals remain ignored in
children
jobs.c
- SIGINT and SIGQUIT should be ignored by default for asynchronous
children
- changed all calls to signal (s, SIG_DFL) in make_child for SIGINT,
SIGQUIT, and SIGTERM to call restore_default_signal() instead
(which should really be called restore_original_signal()), because
what you really want is for children to have the values for these
signals that the shell started with.
trap.c
- make sure signals set to be ignored in the shell are set to SIG_IGN
in the child by calling ignore_signal in restore_original_signals()
- make the loop that records the original values of the signals for
the shell in initialize_traps() run from 1 to NSIG-1
4/22
----
shell.c
- make sure the `i' flag is turned on (so that it appears in $-)
before the startup scripts are run
4/23
----
general.c
- changed pathname_backup to not back up past the start of the
path it is passed looking for a `/'. It causes core dumps on
a lot of systems.
config.h
- Ultrix does dup2() wrong, so make it use the dup2() emulation
implemented with fcntl() by making sure NO_DUP2 is defined
jobs.c
- fixed a posix race condition by making the first process in a
pipeline wait for all of the processes to be created and have
their process group set correctly before returning from
make_child(). The synchronization is done around a shared pipe.
- added a function close_pgrp_pipe() that other files can call to
have the pgrp pipe closed for them
subst.c
- added call to close_pgrp_pipe from the parent half of the command
substitution code, since this code will not call start_pipeline
or stop_pipeline. Otherwise the child waits forever trying to
read the pipe.
readline/vi_mode.c
- more changes to the vi mode code, this time to rl_vi_eWord for the
`E' command
4/24
----
execute_cmd.c
- only restart an auto-resume job if the job is marked as JSTOPPED.
This fixes the `for i in 1 2 3; do who; done | sort' only running
`who' once bug.
parse.y
- removed extern declarations of index(), rindex(); they should be
taken care of in general.h
machines.h
- some changes to the mips and sgi entries
readline/readline.c
- change rl_redisplay so DEL is echoed as C-?
4/25
----
makeargs.sh
- a new implementation from Brian
jobs.h
- changed the sense of the test for the presence of sys/wait.h to
test HAVE_WAIT_H rather than NO_WAIT_H. HAVE_WAIT_H is set by
makeargs.sh
jobs.c
- don't bother calling tcsetpgrp() in give_terminal_to() if the
process group already owns the terminal
test.c
- change eaccess() so that root requires execute permission for
anyone in order to be able to execute a file
execute_cmd.c
- change executable_file() so that root can execute a file if any
of the u, g, o x-bits are turned on
documentation/features.texinfo
- fixed a typo on line 352 ({ -> })
documentation/bash.1
- some cosmetic changes to the manual page
4/26
----
parse.y
- made read_a_line handle a null character being returned from
yy_getc () in a reasonable fashion instead of falling out of
a loop and returning garbage to its caller
4/27
----
shell.c
- make the file descriptor from which we are reading the text of
a script be set to close-on-exec
execute_cmd.c
- now that Ultrix uses the dup2() emulation in general.c, the code
that sets file descriptors to open-on-exec on Ultrix systems
can be disabled
- fixed up the test for root in executable_file()
test.c
- fixed up the test for root in eaccess() so that root can read or
write any file, but only execute executable files
4/28
----
braces.c
- if the text between braces does not contain a comma, just return
the text with braces intact. This is for greater /bin/sh
compatibility
4/29
----
bashline.c
- some changes from a merge with bfox bash-1.07
execute_cmd.c
- added an extern declaration for make_command_string()
general.c
- made itos() use unsigned arithmetic so that $[ 32768*65536] works
right
4/30
----
readline/readline.c
- fixed typo for sys5 termio version of rl_prep_terminal() that
called ioctl with the wrong number of parameters
- made readline handle SIGALRM and clean up after itself when
it hits
ulimit.c, ulimit.c.new
- fixed up return value for -f on HP/UX -- the man page for
ulimit(2) lies about its return value
makeargs.sh
- need to initialize SYSDEF and SHLIB so we don't pick up any
values from the environment
readline/history.c
- fixed typo in `mode' argument in call to open(): 066 -> 0666
builtins.c
- mark HP/UX as not having resources even though it has
/usr/include/sys/resource.h
cpp-Makefile, Makefile, makeargs.sh, config.h
- changes from bfox bash-1.07
machines.h, builtins.c, general.c
- changes for bfox port to cadmus
posixstat.h
- added definitions for Posix file modes for those systems that do
not have them
5/1
---
subst.c
- added a function remove_quoted_nulls to do quote removal when we're
not doing word splitting. It's called from expand_string_unsplit
fc.c
- removed the code that handled EOF from fc_readline
- fixed possible memory leaks in fc_builtin (line returned from
fc_readline()) and fc_readline()
- fixed calls to builtin_error so they no longer include a literal
"fc" in the error string
execute_cmd.c
- fixed execute_simple_command so that commands called from the
command builtin do not have arguments re-expanded by another
call to expand_words()
readline/readline.c
- disable the ONLCR bit in the termio and termios version of
rl_prep_terminal so that pesky extra ^M is no longer sent
readline/vi_mode.c
- fixed a typo that caused a test to be reversed in rl_vi_bword()
5/2
---
shell.c
- preserve leading `-' in argv[0] (and $0) when bash is invoked
this way. Ensure that we do not infinitely recurse executing
.bash_profile if there is a shell script that bash executes or
a command substitution by incrementing shell_name past a leading
`-' when main() is invoked a second time. Initialize $0 to
"bash" if it is null or equal to "-".
builtins.c
- added symbolic mode printing and arguments (like chmod) to umask.
Now, "umask 002" and "umask a=rx,ug+w" are equivalent
- removed change to unset from Posix.2 draft 11; it is required to
use -f if trying to unset a function and it unsets a variable
otherwise
bashline.c
- make sure display_shell_version leaves the cursor at column 0
before calling rl_on_new_line()
5/3
---
jobs.c
- defined a `unifying' way to get the process group of an arbitrary
process: getpgid(p). Constructed a bunch of #defines to get it
defined correctly in terms of getpgrp(). Used in initialize_jobs
execute_cmd.c
- converted a call to statmode & S_IFDIR (which was wrong in the
first place, should have been (statmode & S_IFMT) == S_IFDIR)
into a call to S_ISDIR (statmode) in executable_file
- for systems with broken (4.2 BSD-style) dup2() calls, which do
not set the new descriptor to be open across execs, define
DUP2_BROKEN and do the explicit setting ourselves. Ordinarily,
setting NO_DUP2 and using the fcntl emulation is sufficient, but
on some systems (Sequent Dynix), fcntl(fd, F_DUPFD, fd2) is
broken this way, too.
expr.c, fc.c
- make sure NULL is defined as 0, redefining it if necessary
5/3
---
execute_cmd.c
- in execute_case_command(), make sure we call expand_word on the
case statement pattern with quoting set to Q_KEEP_BACKSLASH, so
backslashes are not treated specially depending on the character
that follows them. Here's the comment from the relevant section
of the code:
/* expand_word calls expand_word_internal, then performs word
splitting and dequotes the result. This causes parameter
expansion, command substitution, arithmetic expansion, and
quote removal to occur. What we *really* want is only
parameter expansion and " and ' removal. Calling expand_word
with Q_KEEP_BACKSLASH is the way to do part of this. The
command substitution part is still done, but that's OK. */
subst.c
- break the command substitution code off into its own function,
command_substitute()
shell.h, subst.c, execute_cmd.c
- enumerated the possible values for the `quoted' argument to the
expansion functions: Q_DOUBLE_QUOTES, which means expand as if
the string were in double quotes, Q_HERE_DOCUMENT, which means
expand the string according to the rules for expanding here-
documents, and Q_KEEP_BACKSLASH, which means to not treat back-
slashes specially at all.
readline/vi_keymap.c
- bound `*', `=', and `\' in the vi movement keymap to rl_vi_complete
readline/vi_mode.c
- If the command is cw or cW, we don't want whitespace after the
end of the word eaten, so change the w or W to e or E,
respectively
- made rl_vi_complete handle all three kinds of vi_mode completion
- changed rl_vi_char_search to check boundary conditions and avoid
going off the end or start of the current line searching for a
character
- changed rl_vi_domove to implement the `yy' command
5/6
---
subst.c
- check the return value from expand_string_internal in
expand_string_unsplit; make sure we don't try to dereference a
null value
machines.h
- new entry for NCR tower 32 running System V.3
- changes to IBM AIX entries
Changes from a merge with bfox 1.07 sources
5/7
---
cpp-Makefile
- take out some explicit `touch' commands that are taken care of
by the dependencies
- added the files created in the build process (endian, psize,
sysdefs) to the `make clean' target
nojobs.c
- don't print a message if a command was terminated by SIGINT
- removed the call to QUIT from wait_for; the builtin `wait'
command does not go through this function
- added siginterrupt calls so we can run this on a 4.2+ BSD
system without job control and interrupt `wait'
Makefile
- make the command to run to remove runs of blank lines from the
cpp output configurable (`cat -s' means nothing on System V;
there are some alternatives: ssp on HP/UX, for example)
5/8
---
test.c
- added a `posixtest()' function that implements a proposal to the
Posix.2 shell working group by David Korn. Broke the code that
handles unary and binary operators out into individual functions.
Added functions that will check whether a string is a valid test
unary or binary operator.
- changed eaccess so that the test for root and X_OK works for
both files and directories
- added a new unary operator, -a, which is true if its argument
simply exists in the file system
shell.c
- changed the test for whether or not we are running under an emacs
shell buffer to test if TERM = "emacs", rather than for the
presence of the environment variable EMACS
general.c
- added a function unset_nodelay_mode that will unset either flavor
of no-delay mode (O_NONBLOCK or O_NDELAY) for a given file
descriptor. This is called from shell.c$main() for the standard
input.
glob.c
- added code to check that a directory is really a directory before
calling opendir on it. Some systems do not check, and core dump
in readdir() (e.g. MIPS)
expr.c
- allow underscores in the names that the token reader recognizes
as variables
- set a maximum recursion level of 1024 calls to pushexp()
builtins.c
- parse_and_execute has to setjmp (top_level) (saving the old value,
of course) so that bad substitutions and the like that call
(longjmp (top_level, DISCARD)) don't jump to the `real' top level,
which leaves input still coming from the string passed to
parse_and_execute, and sometimes core dumps
shell.c
- made an option -- signal the end of the options list, as Posix
specifies
getopt.c
- a slightly modified version of the GNU getopt(). The changes
are:
o the addition of a variable optopt, which holds the option
character last processed
o The value of optarg is now specified in the case of
return values: if an illegal option is given, optarg
is NULL; if a required option argument is missing,
optarg[0] == 0
o a function to programmatically set the option order that
getopt will handle to the Posix option order:
set_posix_option_order
o changed the error messages printed to be those that
Posix.2 specifies
getopts.c
- deleted private version of getopt()
- changes to work with the modified GNU getopt as described above
5/9
---
builtins.c
- added -v option to `unset'; changed it to comply with Hal
Jesperson's latest Posix.2 draft
machines.h
- picked up a machine description for a 386 box running ISC 2.2 from
bfox
- add -DDUP2_BROKEN to the entries for Sequents running Dynix because
Dynix does not set the new file descriptor created with dup2() or
fcntl(fd, F_DUPFD, ...) to be open across execs
make_cmd.c
- Make sure all the arguments to make_command are cast to the correct
values
general.h, jobs.c, execute_cmd.c
- moved the definition of FD_CLOEXEC to general.h, which should be
included *after* <fcntl.h>
shell.c
- timeouts should happen only when the shell is interactive, so just
move all the code in read_command that deals with it inside an
if (interactive) statement.
- changed message printed by show_shell_version to be that same as
that put into the $BASH_VERSION variable
readline/readline.c
- don't destroy the value of the tty flags when trying to read with
O_NDELAY turned off in rl_gather_tyi()
Makefile, squish.awk
- For systems that do not have a -s option to cat that compresses
runs of blank lines to a single blank line, there is an awk script
supplied that will do it
parse.y
- made yy_stream_unget and yy_readline_unget return values, not
garbage
5/10
----
variables.c
- don't deallocate the old value in bind_variable until any needed
arithmetic evaluation has been done. If we're performing an
assignment statment like `even=even+2' where even has the integer
attribute, we'll need the old value to evaluate the RHS
shell.c
- make throw_to_top_level call bashline_reinitialize so all the
function pointers are restored to their correct values on an
interrupt (problem observed on a Sun running SunOS 4.1)
5/11
----
jobs.c
- replaced literal `bash:' in error messages with the name of the
shell, as given in shell_name
5/13
----
nojobs.c
- make sure the pid passed to wait_for is valid before calling
wait() by doing a kill(pid, 0)
test.c
- test -e should return true if a file exists in the file system,
according to Posix.2. Make it equivalent to -a, document it in
the man page and help text, and make -a undocumented
- all variables global to test.c should be declared as static
(e.g. test_exit_status, test_exit_buf)
- make test -f behave as Posix.2 mandates (file exists and is a
regular file) instead of trying to please both BSD and System V
makeargs.sh
- if the file /etc/xlc.cfg exists and contains the string _IBMR2,
assume we're on an RS/6000 and define RISC6000
builtins.c
- Print traps in trap_builtin only if trap_list[i] is neither of
DEFAULT_SIG or IGNORE_SIG
jobs.c
- run trap on SIGCHLD only if it is neither of DEFAULT_SIG or
IGNORE_SIG
trap.c
- make it an error if trap_handler catches a signal for which the
trap_list holds IGNORE_SIG or DEFAULT_SIG
5/14
----
execute_cmd.c
- make redirection_expand return (char *)NULL in the case where the
word expands to nothing
jobs.c
- added two functions: terminate_stopped_jobs, which walks the job
list and sends SIGTERM and SIGCONT to each stopped job, and
hangup_all_jobs, which walks the job list and sends SIGHUP and,
if necessary, SIGCONT to all jobs
shell.c
- added call to terminate_stopped_jobs() after reader_loop exits,
before the shell is about to exit
- added call to hangup_all_jobs if the shell receives a SIGHUP that
causes it to exit
test.c
- removed remaining vestiges of the special-casing of the -f operator
between System V and BSD
5/18
----
builtins.c
- traps should be printed if trap_list[i] == IGNORE_SIG
- fixed a typo in fg_bg() that would cause a seg fault when
decode_job_spec returned DUP_JOB
trap.c
- don't run a trap on EXIT if set to IGNORE_SIG
shell.c
- the initialization of traps must be done before we initialize
signals, because the shell needs to know that values of signals
that it inherited from its parent
execute_cmd.c
- broke all the stuff bash does after execve into a new function,
bash_execve, called exactly like execve. If it returns, it
returns EXECUTION_FAILURE, so the execute_simple_command code can
just do exit (bash_execve (command, argv, envp))
builtins.c
- made the exec builtin call bash_execve so executable shell scripts
can be the target of exec
5/19
----
subst.c
- added new functions that will perform quote removal only on
strings, WORD_DESCs, and WORD_LISTs.
make_cmd.c
- quote removal is the only expansion that should be performed on
the delimiter of a here document, so call the new quote removal
functions in subst.c instead of redirection_expand()
subst.c, shell.h
- changed expand_word_internal to do the right thing when given
a `quoted' argument of Q_KEEP_BACKSLASH; it means to preserve
backslashes unconditionally.
This causes a flag to be set inside expand_word_internal that it
passes to recursive invocations (like when expanding "string").
The values for the `quoted' argument have been changed to be
distinct bit values so that they can be masked and OR'd together.
execute_cmd.c
execute_cmd.c now calls expand_word with an argument of
Q_KEEP_BACKSLASH, so that only parameter expansions and "" and ''
removal are performed
5/22
----
Another big merge with bfox source
builtins.c
- restore the original values of signals before calling bash_execve
in exec_builtin
5/23
----
test.c
- Brian's change to `unop' broke it -- the function now has an
integer passed to it, not a string of the form -x
- ! with 4 arguments should not fall through to the default case;
a `break' statement was missing
config.h, machines.h, cpp-Makefile
- change NO_DUP2 to !HAVE_DUP2
general.c
- change NO_DUP2 to !HAVE_DUP2
- add a call to SET_OPEN_ON_EXEC for the new file descriptor in our
dup2() emulation using fcntl
execute_cmd.c
- removed the calls to SET_OPEN_ON_EXEC that were enabled by defining
DUP2_BROKEN; now undef HAVE_DUP2 and use the dup2 emulation in
general.c for those machines
5/24
----
subst.c
- Even if no expansion is performed in expand_word_internal, and
therefore no word splitting is done, the quoted null characters
still need to be removed from the WORD_LIST. Add a new function
word_list_remove_quoted_nulls to do the removal for each element
of the list, and call it from expand_words_1
bashline.c
- call tilde_expand on the returned $PATH components in
command_word_completion_function
More fixes and changes from a merge with bfox's source
5/25
----
execute_cmd.c
- changed some `pid' declarations to be pid_t instead of int
variables.c
- dollar_dollar_pid is still an int, so cast the return value
of getpid() when assigning to it
5/28
----
subst.c
- more quoted null character fixes -- {de,}quote_string needs to
handle quoted null strings, and list_string has to do the
right thing with them
builtins.c, execute_cmd.c
- bash_execve -> shell_execve
makeargs.sh
- typo fix: elc.cfg -> xlc.cfg
cat-s
- change the length($0) == 0 to NF == 0 so that lines with only white
space are deleted as well as blank lines
subst.c
- quote_string and dequote_string now return char * and allocate a
new string for the return value
expr.c
- have evalexp() save and restore the old value of evalbuf around
possible recursive calls
cpp-Makefile
- the failure of a `touch' command is no longer a fatal error
readline/readline.c
- only try to use ONLCR if it is defined
machines.h
- fixes to the AT&T 3B2 and IBM AIX (RT, 370) descriptions
readline/vi_mode.c
- now `p' is allowed at the end of a line
- yank-to (yw, ye) yanked one-too-few characters -- fix in
rl_vi_yank_to
- `r' command should not advance the cursor to the right
- `cw' now works like ce (and cW like cE) in that the white space
after the deleted word is not deleted
- cw now deletes the last character on the line, when point is the
last character on the line when it is executed
5/29
----
subst.c
- fixed a seg fault when trying to do parameter substitution assignment
(${a=b}) with a null string: ${UnDeFiNeD=`false`}
machines.h
- new entry for Sequent Symmetry running Dynix/ptx (System V.3.2)
builtins.c
- parse_and_execute needs to handle longjmp(top_level, EXITPROG)
(FORCE_EOF, too) by restoring the old value of top_level and
doing another longjmp. This is needed so that an exit inside a
`.' script will actually exit the shell
- make `typeset -f foo' print the definition of the function foo,
if one exists.
jobs.h
- defined NO_PID as -1, a value that cannot possibly be a pid
jobs.c
- all pid and pgrp variables are initialized to (pid_t) NO_PID
subst.c
- reorganized the ${} code into several functions
- make the brace-counting code that gathers the RHS of a ${}
parameter substitution use extract_delimited_string
- if no asynchronous commands have been executed, $! should echo
nothing
- make ${#} work like $#
- make ${#-foo} a bad substitution
- test for len_alt_opener == 0 in extract_delimited_string before
comparing the string with alt_opener
- ${special_var?} should echo the standard message ``parameter
null or not set''
- plugged some memory leaks -- memory was not freed before longjmp
calls after bad substitutions
5/30
----
subst.c
- more radical reorganization
cpp-Makefile
- redid the dependencies so that it's no longer required to `touch'
a .h file if another .h file changes
glob.c
- statbuf -> finfo
readline/tilde.c
- new file that handles the tilde expansion for the shell and readline
readline/readline.c
- tilde_expand removed from this file; now in tilde.c
general.c
- new function tilde_initialize to initialize the tilde expansion
code
- bash_tilde_expand is now in general.c, since it should work even
if readline is turned off for some reason
shell.c
- tilde_initialize called as part of shell initialization
5/31
----
parse.y
- aliases consisting entirely of digits are now allowed; simply
commented out the !all_digits test
documentation/bash.1
- the PROMPTING section should make clear the difference between
\w and \W
machines.h
- small fix to isc386 entry -- we still have alloca if we're using
gcc
- add -D_DGUX_SOURCE to the SYSDEP_CFLAGS for the DG/UX entries
- add -DNLS to the RS6000 SYSDEP_CFLAGS
cppmagic.sh
- improved the test for gcc-cpp by also looking for the word
`recognized' in the error message
readline/readline.c
- don't declare getpwuid() and getpwnam() if we're on an ISC 386
machine
machines.h, posixstat.h, execute_cmd.c
- changes from Saul Lubkin for Posix bash on ISC 2.2
6/1
---
jobs.c
- make the behavior of jobs started when job control is not active
be the following:
if the shell is interactive, set SIGTSTP, SIGTTIN, and
SIGTTOU to SIG_IGN. This way, typing ^Z to a running
process will not do anything
if the shell is non-interactive, set SIGTSTP, SIGTTIN,
and SIGTTOU to SIG_DFL, so jobs started from scripts
will stop when the script shell gets a SIGTSTP
It might work to simply not change the values of the signals if
job_control == 0, since this is how they *should* be, but that
seems too chancy.
execute_cmd.c
- make && and || constructs unstoppable, because there's no other
way to prevent the second process from executing immediately
if the first one is stopped (this is what ksh appears to do).
Make sure that we add an unwind_protect call to restore the
value of job_control if the command is interrupted.
6/3
---
subst.c
- tilde expansion should be performed if there is an unquoted tilde
anywhere in the word, so we can check for `=~' and `:~'
6/4
---
subst.c
- tilde expansion should be performed in do_assignment_internal
only if the `expand' argument is 1 and we do the other expansions
- pass the word to tilde_expand in expand_words_internal even if
its quoted bit (tlist->word->quoted) is set
jobs.c
- make set_job_control return the old value of job_control, so you
can say `old_job_control = set_job_control (0);'
unwind_prot.c
- added a structure to save the value of an integer variable. Two
new functions use it: unwind_protect_var (&var) allocates this
structure, fills it in, then calls add_unwind_protect specifying
restore_variable as the function to execute. restore_variable takes
this structure as an argument, restores the specified variable,
and frees the structure it gets
builtins.c, execute_cmd.c
- changes to use unwind_protect_var to restore variables
6/5
---
readline/readline.c
- readline now enables 8-bit input by default for termio, termios
systems (c_iflag &= ~ISTRIP)
shell.c, builtins.c
- special_source_interrupt was renamed to parse_and_execute_level
builtins.c
- parse_and_execute now uses unwind-protects to clean up after itself,
allowing these to be run from another place in the code if necessary
- special_buf is no longer used as a cleanup mechanism
- new function parse_and_execute_cleanup that can be called from
anywhere that encapsulates all the necessary unwind protects for
parse_and_execute
- period_builtin now calls parse_and_execute_cleanup to have
parse_and_execute clean up if the `return' builtin is executed
while in the middle of a `.' command and not inside a function
trap.c
- run_interrupt_trap now prevents recursive calls to itself by
making trap_list[SIGINT] null while it is executing
shell.c
- reorganized throw_to_top_level: run_interrupt_trap is now called
as the first thing, and throw_to_top_level calls
parse_and_execute_cleanup to make parse_and_execute clean up
after itself
subst.c
- fixed a bug caused by string_rest_of_args returning NULL, which
caused parameter_brace_expand_length to get a seg fault because
it didn't check the return value when expanding ${#*} with no
dollar variables
machines.h
- fixed up the HP/UX entry. HP/UX 7.0 and above (the Posix versions)
define __hpux to cpp, giving us a way to automatically tell the
difference between Posix and non-Posix implementations (whether or
not to link with -lBSD)
trap.c
- save the value of last_command_exit_value while running the exit
trap. This way any exit trap will not change the value of
`exit 5', for instance
subst.c
- added a function unquoted_member (c, s), which behaves like
member but tests whether or not c occurs in an unquoted portion
of the string
- made the test for calling tilde expansion be
((first character is a tilde) ||
(tilde appears && word not quoted) ||
(tilde appears && tilde is unquoted))
this uses unquoted_member (c, s)
shell.c
- Xenix has the middle two arguments to setvbuf different from
every other implementation in the world. Add #ifdef'd code
machines.h
- the Xenix 386 definition has to have M_OS and SYSDEP_CFLAGS
undefined because they might have already been set if i386
is defined
cpp-Makefile
- make the gcc line for making malloc.o include a -o $@, since we
know gcc can handle it
builtins.c
- preserve the value of last_command_exit_value around the
execution of ~/.bash_logout
6/6
---
subst.c
- generalized unquoted_member to unquoted_substring, and changed
the tilde expansion tests to call unquoted_substring with the
full tilde prefixes as the substrings (:~, =~)
builtins.c
- `read' now accepts a `--' argument to signal the end of the
options
6/7
---
documentation/bash.1
- added description of the `silent' error reporting mechanism of
getopts that is enabled when the first character of the option
string is a `:'
- added description of the new features of tilde expansion (:~
and =~)
subst.c
- fixed sv_optind to call getopts_reset with the value of $OPTIND
rather than resetting it to 1
getopt.c
- commented out the code executed when optind is reset to 0 that
decides on the option order. We always want REQUIRE_ORDER
getopts.c
- only call set_posix_option_order once
builtins.c
- `type' gets a -- option to signal the end of the option arguments
- `typeset/declare' gets a -- option to signal the end of the
option arguments
- `hash' gets a -- option to signal the end of the option arguments,
and gets rewritten to boot
- redid `umask' option processing code to be more regular -- fixed
the bug where `umask --' would print nothing
- added Posix.2 `-p' option to `command' builtin, also added a
`--' argument with the standard meaning
- `trap' gets a -- option to signal the end of the option arguments,
and gets rewritten to structure it like other builtins
- set_or_show_attributes was changed so that you can't just make a
read-only variable read-write by saying `readonly -n var'
6/8
---
variables.c
- if bash is executing a function (variable_context > 0), then look
in the temporary environment for a variable's value first
machines.h
- new entry for Honeywell Bull X20 from lele@idea.sublink.org
- for hp/ux versions < 7.0, we still need to link with -lPW to
get alloca
6/11
----
subst.c
- include <sys/types.h>
machines.h
- change the `catch-all' entries for things like MIPS to use
#if defined (mips) && !defined (M_MACHINE)
builtins.c
- took out the readonly -n change. Enable it for strict sh
compatibility
unwind_prot.c
- extended the saved variable code to full generality by adding a
size field to the struct. Variables bigger than a char * will
be copied into a block of memory allocated to hold their value
and restored from there
builtins.c, trap.c, execute_cmd.c
- changes to unwind_protect_var calls to add value, size arguments
shell.c, jobs.c
- only catch SIGINT with sigint_sighandler if the shell is
interactive; otherwise let termination_unwind_protect get it
shell.c
- startup files may now be aborted by using the `return' builtin
- set SIGTERM to SIG_IGN if the shell is interactive, not just if
it's a login shell. Without this, `kill 0' will kill an
interactive shell
6/12
----
jobs.c
- replace instances of M_UNIX with the more descriptive SCO
machines.h
- gather all 386 machines into one block, stop #undef'ing i386
builtins.c
- make exec_builtin not completely expand the command name and
stick it in argv[0] if the `-' flag is supplied -- instead,
tack a `-' on the front of whatever the user typed
6/13
----
jobs.c
- don't change SIGQUIT's signal handler at all in
initialize_job_signals
execute_cmd.c
- change execute_case_command to do string_list on the result of
expand_word (word) instead of just taking the first word and
assuming no splitting was done
- in execute_simple_command, make sure the call to bind_lastarg
is done before the dispose_words, because lastarg just points
at the last word, which is invalid after the dispose_words
machines.h, jobs.c
- new machine-specific variables: BSD_GETPGRP, TERMIOS_MISSING
glob.c
- make an incomplete character class (e.g. [X-]) behave as if
no class were specified instead of giving an error
filecntl.h
- new include file that encapsulates fcntl.h and the declarations
for close-on-exec stuff
execute_cmd.c, builtins.c, shell.c
- new arg for execute*command* functions that tells whether or not
to obey the -e flag and exit when a simple command exits with a
non-zero exit status
- fixed exit status of while to be success if no commands are
executed
- fixed exit status of until to be success if no commands are
executed
6/15
----
execute_cmd.c
- since while and until commands are so similar, combined the bodies
into execute_while_or_until (), which takes a type argument to
decide which one it is. execute_{while,until}_command just call
this function
- added unwind protect calls to execute_for_command to free up the
list (for word in list)
- eliminated a possible call to find_function in execute_simple_command
- added unwind protect calls to execute_simple_command
- plugged a couple of memory leaks in execute_simple_command:
o freeing the expanded command words when executing a function
or builtin with a pipe in or out
o the name of the command (`command') when executing from a
disk file
subst.c
- implemented the Posix.2-style $(( )) arithmetic substitution. I
think we'll let this remain mercifully undocumented
variables.c
- removed support for old Posix.2-style exported functions, since
Posix.2 no longer specifies exported functions
6/17
----
nojobs.c
- make wait_for_single_pid () check the validity of its pid
argument before calling wait(2), returning 127 if the pid is
invalid
jobs.c
- if wait_for_single_pid () is called with an argument that does
not match a child of the shell, return 127 as Posix.2 specifies
builtins.c
- made `set' treat `set -' and `set +xv' as equivalent, like the
Posix.2 spec mandates (though it does mark the construct as
obsolescent)
- made the strings output by `export' and `readonly' when showing
variable definitions match those specified by Posix.2
- if STRICT_POSIX_COMPATIBILITY is #defined when compiling the
shell, the shell will exit in the event that it cannot find the
file specified as the first argument to `.'
variables.c
- turned set_auto_export(var) into a two-statement macro, saving a
number of function calls
6/19
----
execute_cmd.c
- split the different parts of execute_simple_command into different
functions: execute_builtin_or_function, execute_disk_command, and
execute_subshell_builtin_or_function to make the whole mess
easier to understand
6/21
----
builtins.c
- make sure that `type' does not report directories as executable.
Call executable_file to make sure.
- have the `set' builtin check the validity of its flags arguments
before actually doing anything with them. This prevents things
like `set -help' from exiting the shell
flags.h
- added declarations for the functions exported by flags.c
- added #if defined (_FLAGS_H) protection against multiple inclusion
shell.c
- don't do the .bashrc if we're a login shell, even if we're not
doing the .profile
general.c
- uts -> ut, since UTS compilers define uts for the C preprocessor
makeargs.sh
- better treatment of machines that do not have the `hostname'
command
6/22
----
readline/readline.c
- on termio and termios systems, turn off NL -> CR and CR -> NL
input translation so bash will see the two characters distinctly
6/23
----
ulimit.c
- cleaned up the shell_ulimit code so there was not so much code
duplication (cut 70K from binary!)
- added -H, -S to use hard, soft BSD resource limits
- ulimit now allows multiple options: -d -t -c or -dtc
- ulimit can print multiple options in the same format it uses for
-a
- USG systems can use -p, -n, -a -- there is no longer a ulimit.c.new
- -n uses RLIMIT_NOFILE for getting as well as setting, and so can
use hard and soft limits
- `ulimit limit' now behaves like `ulimit -f limit'
6/25
----
execute_cmd.c
- since do_redirection () is the only place where we have the value
of the expanded redirection word, report open () failures there
- broke the #! emulation code out into a separate function and made
it handle the single argument that you can give interpreters
builtins.c
- make `command -p' use the Posix.2 configuration variable _CS_PATH
(with confstr()) or the #define CS_PATH to find the path that will
pick up all the standard utilities before falling back to using
COMMAND_MINUS_P_PATH
6/26
----
builtins.c
- make sure we include `-o' in the list of legal flags when checking
for illegal ones in the set builtin
6/29
----
fc.c
- parse and execute the entire edited file of commands when doing
`fc -e' so that compound commands work
readline/readline.c
- allow leading whitespace in lines passed to rl_parse_and_bind()
machines.h
- MIPS machines cannot handle the inclusion of /usr/include/sys/wait.h,
so #undef HAVE_WAIT_H
cpp-Makefile
- pass only a subset of the CFLAGS down to the make in readline,
because some make programs and cc's get overloaded
6/30
----
ulimit.c
- rewrote to do the 6/23 changes right
- added -- to mean end of options
execute_cmd.c
- made a number of functions static
- changed do_redirection to do_redirection_internal
cpp-Makefile, config.h, builtins.h, builtins.c, subst.c
- made the inclusion of the getopts code dependent on the definition
of GETOPTS_BUILTIN
vprint.c
- new name for misc.c, since all that it contains now are definitions
for v[fs]printf()
builtins.c
- made help for history_builtin include -s only if HISTORY_DASH_S
is defined, to match the code
- made the help for the ulimit builtin match the code, depending on
HAVE_RESOURCE being defined
- make the help builtin interruptible by adding calls to QUIT in
the loop
- `cd -' now prints the name of the directory it's changing to
- change the help text for the wait builtin to show that job specs
are allowed only on systems which support job control
- changed an fprintf(stdout, ...) to printf(...) in history_builtin
jobs.c
- make kill_pid kill the correct pid when walking through all the
pids in a job
test.c
- don't call strlen when we just want to know whether or not a string
is null; it suffices to test the first character
bashline.c
- fixed a typo in the comment text for the FIGNORE code
documentation/bash.1
- some typo fixes
documentation/features.texi
- fixed some typos
glob/glob.c
- if we're not globbing dot filenames, and the first character of the
pathname is a `.', make sure the pattern matches it exactly before
we call glob_match in glob_vector()
7/1
---
fc.c
- use maybe_execute_file instead of calling parse_and_execute
when re-executing the file of commands
builtins.c
- removed the help text #define; the savings is too small to bother
ulimit.c
- set `verbose_print' after a group of specific options is given,
so `ulimit -pdt -m' prints everything verbosely
7/3
---
getopts.c
- made it include the Gnu `getopt.h' instead of declaring its
variables as extern
getopt.c
- added a function getopt_set_posix_option_order() to set the
default option ordering to that required by Posix.2
- added a variable default_ordering to hold the default style
of option ordering that getopt() handles. Usually it is
PERMUTE, but it can be set to REQUIRE_ORDER
cpp-Makefile
- made all of the getopts files depend on GETOPTS_BUILTIN being
defined; changed some variable names for the getopts files
builtins.c
- made exit_builtin and logout_builtin return the value of
exit_and_logout() instead of expecting exit_and_logout not to
return
- the `type' builtin now prints `keyword' instead of `reserved word'
when given the `-type' option
jobs.c
- removed the final default #else clause for set_new_tty_driver();
if none of NEW_TTY_DRIVER, TERMIO_TTY_DRIVER, or TERMIOS_TTY_DRIVER
is defined, the compilation is hopeless anyway
7/4
---
jobs.c
- added support for another format for pretty_print_job: print the
information only of the job is marked as not having been notified,
then set the job as having been notified so there will not be
multiple lines of information about the same job. flush_child ()
resets this flag to 0 when a job's status changes
- made a number of private functions static
builtins.c
- added a Posix.2a-like `-n' flag to the jobs builtin to print only
those jobs that have changed status since they were last printed
documentation/bash.1
- added description of -n option to `jobs' builtin section
7/5
---
shell.c
- test help file name for nullness and emptyness (hf && *hf) before
trying to read the history from it. Make the same changes when
saving the history.
shell.c, jobs.c, quit.h
- changed the type of throw_to_top_level from type `sighandler' to
void
execute_cmd.c, builtins.c
- make sure all int-valued functions return some value
readline/readline.c
- if S_ISDIR is defined, then use it, otherwise use S_IFDIR
(Posix vs. traditional Unix)
7/6
---
builtins.c
- made the exit status of the kill builtin agree with the Posix.2
specification
documentation/bash.1
- added specifications of the return values of most of the builtins
likely to be used in scripts
7/8
---
execute_cmd.c
- set this_shell_builtin and last_shell_builtin each time we
execute a simple command. This means that this_shell_builtin
being non-null will indicate we are running a builtin
variables.c
- if we're executing a builtin, look in the temp environment first
for a variable before looking in the variable hash table
7/11
----
test.c
- fixed precedence bug by making bash adhere to traditional sh
grammar for -a and -o
readline/readline.c
- fixed a bug that would cause core dumps when trying to use ^P
to get to a line longer than rl_line_buffer_len, then trying
to insert something.
[Radical reorganization of the shell sources, inclusion of builtins/*]