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

5063 lines
152 KiB
Plaintext

[work begins on post-netwide-1.12 release.]
1/30
----
machines.h, general.c, nojobs.c
- changes for AIX/RT 2.2.1
lib/readline/vi_mode.c
- fixed a bug with vi mode, `cw' and whitespace that removed the
last character of the previous word
lib/readline/readline.c
- readline did not correctly save the value of last_readline_init_file
across things like `bind'. Now it does the following:
last_readline_init_file initialized to NULL
readline_initialize_everything calls rl_read_init_file with
an explicit argument of ~/.inputrc
rl_read_init_file sets last_readline_init_file to
savestring(filename) so it saves a fresh copy
getcwd.c
- new version from Roland McGrath, with changes for the bash build
environment
execute_cmd.c, variables.c
- bash was not looking for $PATH in the temp environment when
looking up a command. Now, find_variable looks in the temp
environment if subshell_environment is set. This will be
set when bash is looking a command up in the path (it's set in
find_user_command_internal while looking up the path string to
pass to find_user_command_in_path)
1/31
----
make_cmd.c
- removed useless call to alloca, replaced with a static array
definition
2/3
---
machines.h
- Cray machine description
2/4
---
builtins/getopt.[ch]
- upgraded to a more recent version from the Gnu C library
jobs.c
- added a call to init_signal_handler to replace equivalent in-line
code in initialize_jobs
trap.c
- new function: maybe_call_trap_handler (sig) calls a trap function
for signal SIG if one exists
jobs.c
- bash now (effectively) ignores SIGINT while waiting for a job run
from a script. We don't want to die if a SIGINT is received while
running another process, only if that job dies due to SIGINT. This
lets interactive processes run from scripts that want to catch
SIGINT and handle it do so without disturbing the shell that's
interpreting the script. All other versions of sh behave this way.
The implementation is fairly straightforward. In wait_for, the
parent shell sets the SIGINT handler to wait_sigint_handler, which
allows the wait builtin to be interrupted and sloughs off everything
else. flush_child controls the behavior when a `foreground' process
dies due to SIGINT: it calls a trap handler if one exists;
otherwise it calls either sigint_sighandler (interactive) or
termination_unwind_protect (non-interactive). It then resets the
SIGINT signal handler to what it was before wait_for changed it.
wait_for does reset the sighandler before returning if flush_child
does not, so the SIGINT does not stay ignored.
There is a race condition between the time that make_child creates
a child and sets it to run and the time the parent calls wait_for.
This is handled by having old_sigint_handler, which holds the
value of the `real' SIGINT signal handler, be NULL except when the
shell is in wait_for, and only operate on the SIGINT handler state
if this variable is non-null.
Should the stuff be unwind-protected? I don't think so; u-p gets
run on interrupts, and we're controlling the interrupt handler.
2/5
---
trap.c
- new function signal_is_trapped (sig) returns 1 if a trap handler
has been established for SIG
shell.c
- have throw_to_top_level call longjmp(top_level, DISCARD) if the
shell is non-interactive and a SIGINT occurred and was trapped
cpp-Makefile, machines.h
- instead of running `basename ...` to discover the name of the
alloca object file, use a new variable $ALLOCA_OBJECT. It's set
to alloca.o if we're using the C emulation, and to ALLOCA_OBJ,
which must be defined in the machines.h entry, for an
architecture defining ALLOCA_ASM
cpp-Makefile
- BSD make of 4.3-tahoe and later already defines MACHINE and does
not allow it to be overridden, so replace it with Machine.
endian.c
- added changes from Cray to configure endianness correctly on
machines with 8-byte longs
parse.y
- added '&' to no_semi_successors in bash_add_history so bash will
not add a semicolon after it appears
2/6
---
subst.c
- since string_extract_verbatim was overloaded, added a new function
string_extract_single_quoted to call when extracting strings in
''
lib/readline/history.c
- changed call to string_extract_verbatim to a call to
string_extract_single_quoted
lib/readline/vi_mode.c
- rl_vi_subst was not calling rl_end_undo_group properly (i.e. at all)
execute_cmd.c
- On systems without job control, async commands (`&') have an
extra redirection added before calling execute_command_internal
that redirects /dev/null to standard input. This redirection
must be removed right after execute_command_internal returns,
because the loop functions call execute_command_internal multiple
times with the same command struct. If we keep tacking redirections
onto the front of it, eventually we'll run out of file descriptors
on a big enough loop.
jobs.c
- some functions were not correctly blocking SIGCHLD while running:
delete_all_jobs, map_over_jobs, start_job when it calls
reset_current
2/7
---
print_cmd.c
- an extra space was being printed at the end of a redirection list.
This caused exporting of functions with embedded here-documents to
fail, since the end marker would not be matched
2/8
---
nojobs.c
- change reap_zombie_children to keep calling waitpid while it returns
something > 0 (a valid pid)
- add a call to reap_zombie_children if we get a valid pid after
waiting in wait_for
variables.c
- include pwd.h after sys/types.h. It matters on some systems.
shell.c
- added a function to encapsulate the differences between systems
in setting a file pointer to line-buffered: line_buffer_file
2/9
---
shell.c
- unbuffer stdin when it's not a tty and bash is reading a script
from stdin
2/10
----
machines.h, cpp-Makefile
- a new machine description variable HAVE_DIRENT, passed down to
makes in libraries
support/mksysdefs
- check for the existance of /usr/include/dirent.h, define
HAVE_DIRENT_H if there
2/11
----
machines.h
- add #define USE_TERMCAP_EMULATION to HP-UX machine description
- added #define HAVE_DIRENT to a number of entries
jobs.h
- added missing definitions for WSTOPSIG, WTERMSIG, WEXITSTATUS
for Posix systems that do not have them and do not have the
`union wait' defined
builtins/suspend.def, unwind_prot.c, longest_sig.c
- include <sys/types.h> before <signal.h> -- some systems require
it
support/mksysdefs
- For HP machines running HPUX, SYSDEF is set to one of hpux8, hpux7,
hpux6, or hpux, corresponding to different releases of HP-UX.
- if `uname -m' returns something starting with XD88, the machine is
a Tektronix XD88
2/12
----
variables.c
- stop core dumping on startup if SHLVL is not set
lib/glob/glob.c
- make sure we always recurse and glob the entire filename so the
quoting characters added in shell_glob_filename get removed
correctly
jobs.c
- new function end_job_control to terminate stopped jobs and
give the terminal back to the original pgrp
- new function restart_job_control to re-initialize the job
control state
builtins/exec.def
- call end_job_control before we try to execve the command so
we're back in the original process group for the new process
and restart_job_control if the shell_execve fails and we're
not exiting
shell.c
- change the code that resets the pgrp just before exiting to
call end_job_control instead
lib/readline/chardefs.h
- new define, MACRO_CHAR
lib/readline/readline.c
- changed rl_generic bind to correctly handle binding keys > 128
by using the appropriate meta keymap (map[ESC].function as a
keymap)
- changed rl_dispatch, rl_show_char, and rl_bind_key to use
UNMETA instead of substracting 128 and to use META_CHAR to
check for a character's `meta-ness'
2/13
----
lib/readline/readline.c, lib/glob/glob.c
- define HAVE_DIRENT if it's not defined but HAVE_DIRENT_H is
lib/readline/history.c
- instead of calling write(2) twice for each history line, build
a big buffer of all the history data to write, fill it, and
call write(2) once
subst.c
- wrapped up the eight-bit changes by making the single-quoted
strings and double-quoted strings code in expand_word_internal
simply discard a word if it's "" or '' and that's not the
entire word. This preserves sh semantics.
parse.y
- If process substitution is compiled into the shell, there was
a mistake by which <[ and >[ were treated the same as $[
lib/glob/glob.c, lib/readline/readline.c
- Reorganized the twisty maze of defines for HAVE_DIRENT
2/14
----
posixstat.h
- removed lines consisting of only a single #. Some ANSI cpps
don't like lines like that
execute_cmd.c
- added a call to QUIT between commands in cmd1 ; cmd2 sequence
test.c
- removed redundant declaration of expr() in test_command()
2/16
----
builtins/Makefile
- added dependencies on the header files in the main shell directory
jobs.c, jobs.h, builtins/fg_bg.def, builtins/kill.def
- replaced the notified, foreground, and job_control members of the
job structure with a flags field and bits J_NOTIFIED, J_FOREGROUND,
and J_JOBCONTROL
subst.c
- fixed a typo (result[0] == '\0') in EIGHT_BIT version of
dequote_string
cpp-Makefile
- added dependencies for the builtin object files
execute_cmd.c
- complete fix from 2/14 -- add QUIT calls to &&, ||, and `;' when
executing a command and ignoring the return value
jobs.c
- if a job is suspended while running in a loop, break out of the
loop
nojobs.c
- made the same wait_sigint_handler and wait_for changes as those
made to jobs.c
shell.c
- moved the code that adds 128 to last_command_exit_value before
any SIGINT trap handler is run
subst.c
- if a word is enclosed completely in "" or '', set the quoted
flag when the word is returned from expand_word_internal. This
keeps the globbing routines from being called
2/17
----
shell.c
- use shell_name instead of (++argv[0]) when testing for a
restricted shell
2/18
----
general.c
- redid the defines for index and rindex to define and use
HAVE_INDEX and HAVE_RINDEX, respectively
machines.h
- added HAVE_DIRENT to the AIXRT machine description
jobs.c
- define and use INVALID_SIGNAL_HANDLER as something old_sigint_handler
cannot be set to
2/19
----
config.h
- made restricted shell mode configurable, #define RESTRICTED_SHELL
shell.c, flags.c, execute_cmd.c, builtins/cd.def
- add code to implement ksh/sh restricted shell mode
shell.c
- new function maybe_make_restricted (name) which turns the shell
into a restricted shell if name == `rbash'
lib/readline/readline.c
- fixed rl_key_sequence_length problem when meta-ized characters are
read (one too short). This left extra characters in macros when
end-kbd-macro was bound to a meta-ized character
builtins/common.c
- added set_working_directory (name) as analog of
get_working_directory
variables.h
- added `imported' variable attribute
2/20
----
Makefile
- DESTDIR -> bindir
- aix-Makefile -> ansi-Makefile because an ANSI C compiler like that
in SunOS5 (hah!) need not accept /**/# as a directive
bashline.c
- added code from bfox to do completion into brace expansions
- use BUILTIN_ENABLED flag
builtins.h
- added a flags field to struct builtin to replace the `enabled'
structure member
cpp-Makefile
- set SHELL=MAKE_SHELL if MAKE_SHELL is defined
- added support for the LD_HAS_NO_DASH_L definition from machines.h
- PROGRAM -> Program
- support for the new LD_HAS_NO_DASH_L machine defintion variable
execute_cmd.c
- removed the subshell_environment variable
- find_user_command_internal now calls find_variable_internal
general.c
- moved init_signal_handler here, changed name to set_signal_handler
general.h
- added definition for set_signal_handler for non-Posix systems
jobs.c
- now print `Done' when a background job exits with status 0
machines.h
- combined all of the Sun machine descriptions into one
- new descriptions for SunOS5, Alliant, Motorola Delta 68k
- completely redid the HPUX description, making M_MACHINE much more
specific rather than just `hpux'
nojobs.c
- change all instances of signal() to set_signal_handler()
shell.c
- removed definition of init_signal_handler
- changed more instances of signal to set_signal_handler
subst.c
- monster reformat
variables.c
- added a function find_variable_internal that can be explictly told
to search the temporary environment, changed find_variable to call
it
- changed all variables and functions from the initial shell
environment to have the `imported' attribute
- made set_func_auto_export return the pointer to the function struct
builtins/Makefile
- ar clq --> ar cq
builtins/cd.def
- `pushd_silent' is gone
builtins/common.c
- there is no more `enabled' member of a builtin struct;
test with BUILTIN_ENABLED instead
builtins/enable.def, builtins/help.def
- use BUILTIN_ENABLED bitmask
builtins/mkbuiltins.c
- initialize all builtins to be BUILTIN_ENABLED | STATIC_BUILTIN
lib/glob/Makefile
- ar clq -> ar cq
lib/glob/glob.c
- added another shell interruption point
- reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H
lib/readline/readline.c, lib/readline/funmap.c
- put rl_arrow_keys back in
lib/readline/Makefile
- ar clq -> ar cq
lib/readline/readline.c
- reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H
- made the search string for i-searches dynamically allocated and
expandable rather than using alloca
- turned on USE_XON_XOFF again
- RL_DEFAULT_INPUT_FILE -> DEFAULT_INPUTRC
support/cppmagic
- added `legal' to the list of unknown flags
support/getcppsyms
- now recognizes _M88KBCS_TARGET
support/mksysdefs
- code to distinguish SunOS5 from SunOS4
- aix-Makefile -> ansi-Makefile
lib/readline/vi_mode.c
- after completing with `*' or `\', Posix.2a says to go into
insertion mode
- for c[wW], don't move back any farther than we started to
emulate c[eE] -- Posix.2 says the cursor position should not
change
variables.c
- if we get PWD from the environment, and it's the same directory
as `.' (calling same_file) set the_current_working_directory
to that value
builtins.h
- added a #define for SPECIAL_BUILTIN
mksysdefs
- Xenix systems now have one of XENIX_22, XENIX_23, or XENIX_32
defined based on the OS release level
- test for /dev/fd being a directory and /dev/fd/0 being readable
to decide whether or not we have the /dev/fd way of naming open
files
2/24
----
builtins/common.c
- set_working_directory is now a void
general.c
- new implementation of canonicalize_pathname from bfox
(+ bug fixes, of course)
bashline.c
- make bash_symbolic_link_hook call canonicalize_pathname
variables.c
- set_func_auto_export no longer returns a SHELL_VAR *
lib/readline/readine.c
- added code to determine whether or not the terminal has a
meta key and to use it while editing if one is available
subst.c
- minor bug fix to remove_quoted_escapes (logic bomb :-)
2/25
----
machines.h
- cleaned up the hpux section. Cannot define M_OS as HPUX_X,
because HPUX_X is already defined as expanding to nothing;
this results in a blank M_OS
- attempted to rationalize Xenix support. Depending on the
XENIX_nn define provided by support/mksysdefs, configure in
-DREVERSED_SETVBUF_ARGS, -xenix, -lx, -ldir, and HAVE_DIRENT
Xenix 2.2: -DREVERSED_SETVBUF_ARGS
cc -lx
Xenix 2.3: HAVE_DIRENT
cc -ldir
Xenix 3.2: HAVE_DIRENT
cc -xenix -ldir
2/26
----
builtins/source.def
- POSIX_PENDANTIC -> POSIX_PEDANTIC
2/27
----
support/getcppsyms.c
- consolidated HP definitions to be of the form
#if defined (__hp9000s300) || defined (hp9000s300)
printf (" -Dhp9000s300")
#endif /* __hp9000s300 || hp9000s300 */
machines.h
- changed the way the hp9000s300 tests for hp9000s200 being defined
support/mksysdefs
- changed the XENIX_nn defines a little bit
input.c
- new input buffering package -- like stdio but allows syncing with
the underlying file descriptor when creating child processes, and
provides a fd-stream mapping.
input.h, shell.c, jobs.c
- changes for the input buffering package, using default_buffered_input
in place of default_input
general.c
- fix canonicalize_pathname to keep from running off the end of the
result string (check result[i] before assigning start = i++)
jobs.c
- change some calls to signal to call set_signal_handler instead
2/29
----
shell.c
- only initialize default_buffered_input to the input file
descriptor if the shell is not interactive
builtins/getopt.c
- cast the arguments properly in calls to my_bcopy
execute_cmd.c
- added code to do_redirection_internal to change buffered streams
if one of the file descriptors corresponding to a buffered input
stream is modified. This lets the shell do proper buffering if
the file descriptor from which the shell is reading input is
modified by a redirection (e.g., exec 0</etc/passwd)
input.c, shell.c, parse.y, jobs.c, nojobs.c
- changed default_buffered_input to an integer file descriptor that
is mapped to a buffered stream via the `buffers' array
input.c
- the `buffers' array is now lazily dynamically allocated
- added functions to duplicate buffered streams so that things like
exec 0<&4 will work right
- added functions to access the buffered stream functionality given
a file descriptor argument, indexed through the `buffers' array.
- unbuffered streams now have bp->b_size == 1, so that no special-
case code is needed when reads are done.
input.h
- the member of the BASH_INPUT union in effect if it describes a
buffered stream is now a file descriptor
jobs.c
- SCO 3.2.4 has fixed the sigsuspend() bug, so don't execute the
hack workaround if SCOv4 is defined
3/1
---
builtins/common.c
- made shell_builtin_compare perform some tests itself before
calling strcmp to cut down the number of strcmp calls
- did the same thing for builtin_address_internal
parse.y
- removed calls to strcmp from read_token, just test if token[0] == }
and !token[1]
- only call clearerr if bash_input.type == st_stream in shell_getc
- removed a call to strcpy from shell_getc that only added a newline;
changed it to two assignment statements
- used token_index instead of a call to strlen at the end of
read_token where the word is being constructed and returned
unwind_prot.c
- changed a strcmp to a STREQ in unwind_frame_run_internal
variables.c
- removed some dead code that had been #if'd out
- added a variable to avoid a call to strlen in
initialize_shell_variables
- change a call to strncmp to a STREQN in initialize_shell_variables
- changed strcmp to STREQ in non_unsettable
3/2
---
jobs.c
- rearranged the code that calls flush_child (0) for SCO so it is
easier to do something like SCO && !SCOv4
- changed flush_child so that the loop is performed in a blocking
fashion only if SCO && !SCOv4
3/3
---
signames.c
- new standalone program to create a signames.h file that contains
the initialization code for the signal_names array
trap.h
- removed the signal_names array initialization code
- include "signames.h"
cpp-Makefile
- make sure signames.aux builds signames.h correctly
input.c
- changed fd_is_seekable and bufstream_getc into macros
mksysdefs
- changes to define SCOv4 if uname returns the right info
machines.h
- changes to define BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL
for various SCO systems
jobs.c
- check for BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL instead
of using SCO
3/4
---
general.c
- make set_signal_handler return the old signal handler again
shell.c
- set SIGINT handler to sigint_sighandler for non-interactive shells
- remove SIGQUIT from list of terminating signals
3/5
---
builtins/trap.def
- added special SIGINT handling for the case of reverting a signal
handler to the default
shell.c
- added SIGINT back to the list of terminating signals for
non-interactive shells
variables.c
- initialize mail variables in initialize_shell_variables only if
interactive_shell is true
- only check for command_oriented_history if interactive shell
- only initialize the history variables if history expansion is
being performed (remember_on_history == 1)
- only make PS1 and PS2 non-unsettable if the shell is interactive
3/6
---
variables.c
- set up a new temporary environment, FUNCTION_ENV, which is the
temporary environment provided to a function
- make find_tempenv_variable search both temporary_env and
function_env, searching function_env if variable_context > 0
- change maybe_make_export_env to add variables from function_env
to the environment
- new function dispose_function_env to deallocate the temporary
function environment and cause a new export_env to be made
- added code to qsort_string_compare to compare the first
characters of the strings passed before calling strcmp
general.c
- new function copy_array (char **array) returns a newly-allocated
copy of ARRAY
execute_cmd.c
- added code to execute_builtin_or_function that initializes the
temporary function environment and takes care of disposing of
it on normal or abnormal exit
- dispose of temporary environment after we initialize the function
environment
- added same code to execute_subshell_builtin_or_function
- since the trap code now restores the SIGCHLD handler to the
original, any time make_child is called and the shell needs to
run in the child process, set_sigchld_handler should be called
to reinstall the proper SIGCHLD handler
jobs.c
- new function set_sigchld_handler to reinstall flush_child as the
SIGCHLD signal handler
3/9
---
bashline.c
- swapped code around to avoid calling savestring (this_fignore)
when this_fignore is null
3/10
----
jobs.c
- make sure the code in flush_child that calls the SIGCHLD trap
handler saves last_made_pid and the_pipeline using unwind-protects
lib/readline/readline.c
- make sure the code that uses VLNEXT is protected by #ifdef
TERMIOS_TTY_DRIVER
shell.c
- add a `beenhere' flag to avoid executing $ENV more than once
parse.y
- added a new token ASSIGNMENT_WORD
- made read_token return ASSIGNMENT_WORD if in a simple command
position, token contains `=', the `=' is not the first character,
and the characters before `=' are a legal identifier (as Posix.2
specifies)
- a simple_command_element can now also be an ASSIGNMENT_WORD
- alias expansion is attempted if the last token was an
ASSIGNMENT_WORD, as Posix.2a specifies
3/11
----
execute_cmd.c
- moved the code that checks command words for `/' down into
execute_disk_command, and made it check only the first command
word, like sh and ksh
- vfree() is no longer static, so other code that needs to add
unwind-protects that use free can use it
trap.c
- added a function set_sigchld_trap (command) to set the SIGCHLD
trap handler to `command', because unwind-protects cannot take
two arguments
jobs.c
- changed the code in flush_child to set up and use and unwind-protect
frame to protect the things it needs to while running the SIGCHLD
trap commands
3/12
----
nojobs.c
- added the BUFFERED_INPUT code to make_child
subst.c
- folded the test and increment of the string pointer into
string_extract_double_quoted and string_extract_single_quoted
- made string_extract_verbatim and string_extract static
lib/readline/history.c
- changed code that calls string_extract_single_quoted to not
increment the string pointer after the call
variables.c
- added code to qsort_var_comp to compare the first character of
the variable names before calling strcmp
3/13
----
parse.y
- include string.h or strings.h
lib/readline/readline.c, lib/glob/glob.c
- removed the code that defined HAVE_DIRENT_H if _POSIX_VERSION
was defined -- it breaks on apollos, and is a bad idea
anyway
input.c
- make sure close_buffered_fd closes the fd, whether or not it
was a buffered stream
3/16
----
machines.h
- added a #define LD_HAS_NO_DASH_L to the Sequent Dynix entries
trap.c
- made trap_list[SIGINT] == IMPOSSIBLE_TRAP_HANDLER while running
the interrupt trap, so we can tell if the trap handler sets
another trap and not restore the original handler if so
3/17
----
trap.c
- a new function set_sigint_handler, which subshells doing `shellsy'
things like command substitution and ( cmd ) call to make sure
they handle interrupts right
execute_cmd.c, subst.c
- added calls to set_sigint_handler in the appropriate spots
3/18
----
hash.c
- replaced the old hash function with the one from Gnu cpp, which has
a much better distribution
jobs.c
- make end_job_control call setpgid to reset the pgrp to the original
only if original_pgrp >= 0
builtins/exec.c
- remove the calls to restore_default_signal; restore_original_signals
now does all the necessary work
3/19
----
jobs.c, nojobs.c
- make sure that make_child resets default_buffered_input to -1
after closing it with close_buffered_fd
3/23
----
lib/glob/tilde.c
- had an extern declaration for malloc rather than xmalloc
general.h
- added #define for REVERSE_LIST, a macro which calls reverse_list
on a list only if the pointer is valid and there is more than one
element
parse.y
- removed calls to legal_assignment in read_token; assignment()
already does those checks
general.c
- reformatted reverse_list
copy_cmd.c
- changed calls to reverse_list in copy_word_list and copy_redirects
to calls to REVERSE_LIST
subst.c
- changed a call to reverse_list in expand_word_internal to one to
REVERSE_LIST
3/24
----
builtins/common.c
- replaced a call to sscanf with code to skip leading whitespace and
calls to all_digits and atoi
mailcheck.c
- did the same for a call to sscanf in time_to_check_mail
3/26
----
variables.c
- made find_variable_internal call find_tempenv_variable only if
temporary_env or function_env exists
[gprof.int.4]
alias.c, alias.h
- rewrote the alias code so that it now uses a hash table instead
of looking things up in a linear list
subst.c
- removed the inclusion of alias.h
parse.y
- added inclusion of alias.h
cpp-Makefile
- removed alias.h from subst.o's dependencies
- added alias.h to y.tab.o's dependencies
bashline.c, builtins/alias.def
- rewrote code that knew about the internal alias data structure
to use an array of alias structures to search, match, and print
3/27
----
test.c
- group_member() needs to check against gid and egid regardless
of whether or not the system has getgroups(2); Posix.1 does not
require that the primary group id show up in the group list,
and some systems do not put it there
3/30
----
parse.y
- add `|' to the list of tokens that should not have a semicolon
following them when adding a line to the history when command-
oriented history is active
lib/readline/readline.c
- fixed up the control character display by making the code print
c ^ 0x40
support/cppmagic
- add support for recognizing the s5r4 c pre-processor,
/usr/ccs/lib/cpp
lib/readline/vi_mode.c
- made rl_vi_delete_to pay attention to whether or not we're redoing,
and to use the last motion key if we are
- made rl_vi_char_search use the last char searched for if we're
redoing
3/31
----
parse.y
- removed the check for non-interactive-ness when doing shell
comments
4/1
---
lib/readline/readline.c
- completion with tilde expansion needs to have any `/' present at
the end of the user's directory name re-inserted manually, because
pathname canonicalization strips any trailing `/', before tacking
on the expanded filename
subst.c
- fixed a bug in dequote_string that caused reading beyond the end
of the string if the last character in the string was an (unquoted)
CTLESC
- made list_string obey the setting of `quoted' and not do the
initial strip of whitespace from the beginning and end of the
word if it was set
- expand_word_internal calls list_string with quoting == 1 if splitting
a word after expanding "$@"
error.c
- new function itrace for interactive traces
subst.c
- command_substitute should give the terminal back to pipeline_pgrp
only if the shell is interactive
execute_cmd.c
- execute_disk_command should turn off interactive while performing
redirections for an asynchronous command. The problem was a race
condition with command_subst. A command like
date > `hostname` &
would leave the subshell begun to run date and the primary shell
fighting over the terminal. After the subshell did the command
substitution, it wanted to give the terminal back to pipeline_pgrp,
which was its own pid. Since it was in the background, though,
that was wrong, and ended up taking the terminal away from the
primary (interactive) shell, which thought it had the thing.
lib/readline/readline.c
- if SYSTEM_CALL_RESTART is not defined, declare c as an integer
4/3
---
bashline.c
- put code into command_word_completion_func to skip all but pathname
completion checks if the hint given is an absolute pathname
- fix strncmp of basename against hint text (??); this always failed
unless there was no pathname given
4/7
---
bashline.c
- fixed the cases where the simple `last character is a command
separator' test fails for distinguishing between program name
completion and filename completion: the tokens >&, >|, and <&.
- corrected fix of 4/3 to handle command word completion with and
without leading paths
4/8
---
lib/readline/readline.c
- break the declaration and initialization of a variable with a call
to setjmp into a declaration and separate assignment statement (for
Cray)
4/10
----
subst.c
- A word that uses both "" and '' to do quoting will not be marked
as fully quoted by expand_word_internal. Wrote a
fully_quoted_word () predicate function to solve that.
- Quoted patterns with globbing characters are sent to the
globbing functions because glob_pattern_p doesn't understand
shell quoting. Wrote a new function unquoted_glob_pattern_p,
to fix that.
4/13
----
shell.c
- make sure default_input is valid and being used for an interactive
shell started without line editing
4/15
----
builtins/common.c
- redid part of the new get_numeric_argument code to avoid a call to
atoi and just do everything ourselves
variables.c
- only call set_if_not on PS1 and PS2 in initialize_shell_variables
if the shell is not interactive
- check the variable returned by looking up PWD to make sure it's
non-null before trying to use it in initialize_shell_variables
jobs.c
- add a descriptive tag to the call to get_working_directory in
job_working_directory
4/17
----
test.c
- fixed a typo in group_member: gid -> pgid in assignment statement
- in the normal Sun compilation environment, getgroups returns an
array of ints, not gid_ts. getgid and getegid also return ints.
stat structures contain a gid_t, though.
Need to reorder the includes so that stat.h is included first, then
uid_t and gid_t are redefined to int, then the rest of the files
are included.
Also need to cast the values from a stat structure to gid_t and
uid_t before comparing them to the results of getgid and getuid
when implementing -O and -G
4/21
----
lib/readline/readline.c
- added code to rl_getc to handle EWOULDBLOCK/EAGAIN and turning off
no-delay mode
4/22
----
builtins/cd.def
- made change_to_directory canonicalize the pathname before attempting
to chdir(2) if follow_symbolic_links is set
4/23
----
builtins/type.def
- made type handle absolute program names by just echoing the name
builtins/alias.def
- made single_quote correctly handle single quotes in aliases
4/28
----
trap.c
- made ignore_sig and restore_default_signal check that the value
of the original signal handler (in original_signals) was valid
before trying to use it. Bug noticed with `trap "" 1 2 3' as
first line in script.
4/29
----
lib/readline/readline.c
- made rl_signal_handler only unblock the signal it just received
on BSD and Posix systems
5/5
---
builtins/type.def
- don't look up the function with find_function until we actually
need the info
execute_cmd.c
- in do_redirection_internal, don't do unnecessary work. For instance,
>&1 ends up duplicating fd 1 as itself (then adding a close for it,
which is a bug)
5/8
---
general.h
- don't attempt to declare index and rindex if `index' is defined
(with #define)
lib/readline/vi_mode.c
- fixed the `c' command so that cl and c<space> are equivalent --
formerly the c<space> changed two characters instead of one.
The same fix was made to rl_vi_change_to, rl_vi_delete_to, and
rl_vi_yank_to
parse.y
- bash_add_history did not correctly handle lines that ended with
an escaped newline. It would insert semicolons in the locations
where the line breaks occurred.
5/12
----
documentation/bash.1
- removed references to pushd_silent
- added setion on process substitution
subst.c
- fixed a bug in expand_word_internal that caused $xxx"" to expand
to nothing when `xxx' was unset. The code now explicitly turns
a partially quoted string that expands to nothing (istring[0] == 0)
into a QUOTED_NULL (istring[0] = CTLNUL) before returning the
word list.
5/15
----
documentation/bash.1
- added a missing .PD in the builtins section after the line
summarizing `:'
- added text describing the effect of additional arguments to the
`.' command
subst.c, general.c, jobs.c, nojobs.c, error.c, getcwd.c
- only declare errno as `extern int' if it's not #defined
builtins/{bind,exec,fc,kill,source}.def, lib/readline/{readline,history}.c
- ditto with errno
lib/glob/fnmatch.c
- ditto with errno
5/17
----
execute_cmd.c
- shells compiled with job control active should perform the implicit
`</dev/null' redirection for asynchronous commands when it is not
active
builtins/mkbuiltins.c
- added a `-nodocument' option to inhibit the output of the `xxx_doc'
array that is a builtin's long documentation. Saves between 26
and 27K in the bash executable on the RT, 32K on the Sun-4
5/22
----
print_cmd.c
- added code to make group commands print better
builtins/common.c
- new function remove_hashed_filename to remove a filename from the
table of hashed commands
execute_cmd.c
- make sure the filename found in the hash table actually exists and
is executable. If not, remove it from the hash table and look it
up in $PATH.
general.c
- make sure to #include <signal.h> before defining set_signal_handler
(on Posix systems)
builtins/command.def
- change HPUX_7 to hpux_7
5/27
----
builtins/times.def
- added USGr3 to the list of systems that should have HAVE_RESOURCE
undefined even though <sys/resource.h> exists
5/28
----
machines.h
- added a description for 386/486 boxes running BSDI BSD/386
support/mksysdefs
- looks for <limits.h> and writes a define to sysdefs.h if it's
found
maxpath.h
- rewritten -- now includes limits.h if HAVE_LIMITS_H is defined,
then tries to define MAXPATHLEN as PATH_MAX
5/29
----
lib/readline/history.c
- added definition for rl_string_extract_single_quoted so the
code inhibiting history expansion inside quotes does not depend
on the shell
- change to use rl_string_extract_single_quoted
- removed code that would have inhibited history expansion in
double-quoted strings
subst.c
- make string_extract_{single,double}_quoted static again
6/1
---
trap.c
- systems with _POSIX_VERSION defined need not reset the signal handler
inside trap_handler
- set_signal should use set_signal_handler() to install the signal
handler rather than signal()
- initialize_traps needs to use set_signal_handler for SIGINT and
SIGQUIT rather than signal()
- restore_default_signal needs to use set_signal_handler
parse.y
- the readline interface code needs to use set_signal_handler to
install the SIGINT handler
lib/readline/readline.c
- new function rl_set_sighandler, which is the readline analogue of
the bash set_signal_handler
- rl_set_signals and rl_clear_signals need to use rl_set_sighandler
for SIGINT and SIGALRM
6/2
---
signames.c
- fixed a typo (signame_names -> signal_names)
6/3
---
subst.c, general.c
- AIX machines need to use sysv_getc rather than getc when reading
from the command substitution pipe -- read(2) is not restarted
automatically when interrupted by a signal and returns EINTR
6/5
---
documentation/bash.1
- removed documentation of M-C-j command in emacs editing mode
- added description of M-{ (complete-into-braces)
- added description of M-! and C-x ! command completion
- added description of M-TAB dynamic history completion
lib/readline/search.c
- new file containing code to perform non-incremental history
searches. Functions to call are rl_noninc_forward_search
and rl_noninc_backward_search
lib/readline/emacs_keymap.c
- bound M-^R to non-incremental-search-backward, M-^S to
non-incremental-search-forward
lib/readline/readline.h
- extern defintions for rl_noninc_{forward,backward}_search
lib/readline/funmap.c
- added names `non-incremental-forward-search-history' and
`non-incremental-reverse-search-history'
lib/readline/vi_mode.c
- rl_vi_yank_arg should put readline into insertion mode when
it is done
lib/readline/vi_keymap.c
- ^I should just insert when in vi insertion mode, rather than
attempt completion
6/6
---
lib/readline/funmap.c
- removed the `vi-dosearch' bindable string, since rl_vi_dosearch
is really a private function for vi_mode.c. It does not fit
the calling conventions of the bindable readline functions
(and I've since removed it)
lib/readline/readline.h
- removed the extern definition for rl_vi_dosearch
lib/readline/search.c
- added new functions rl_noninc_forward_search_again and
rl_noninc_backward_search_again to search for the last saved
search string from the current `noninc' history position
lib/readline/vi_mode.c
- removed the vi history search code and changed rl_vi_search
and rl_vi_search_again to call the non-incremental search code
from search.c
6/8
---
[changes from bfox version dated 5/10]
bashline.c
- changed the conditional clause that decides whether a token is
in a command position for command name completion to be a little
simpler
bracecomp.c
- new version from bfox
config.h
- moved BUFFERED_INPUT define here
flags.c
- new flag for interactive comments
- reformatted find_flag
flags.h
- added interactive_comments and an extern declaration of restricted
machines.h
- new cray definition from bfox
maxpath.h
- don't include limits.h if BUILDING_MAKEFILE is defined
shell.c
- moved the check for restricted to immediately after the sourcing
or .profile
test.c
- now includes shell.h in the initial block of includes
trap.c
- new function get_original_signal to take care of the bookkeeping
of correctly setting up original_signals[sig]
trap.h
- signal_decode -> decode_signal
builtins/exec.def
- adjusted the help text to make it clear that only non-interactive
shells check the no_exit_on_failed_exec variable and exit if the
execve fails
builtins/set.def
- added description and code to implement set -o interactive_comments
lib/glob/glob.c
- if PAT is empty when glob_vector is called, skip the loop and
return one empty filename. This is how to make echo */ echo
only directory names
lib/readline/parens.c
- new file from bfox implementing parenthesis matching for readline
lib/readline/emacs_keymap.c
- if PAREN_MATCHING is defined, perform `show-matching' on `)', `}',
and `]'
lib/readline/history.c
- add `$' to the list of separating characters in history_tokenize
so that two-character `$' tokens ($$, $!, $() are parsed correctly
lib/readline/readline.c
- Make an argument of 1 to rl_rubout and rl_delete work the same
as if any other argument had been given by saving the text on
the kill ring
- in rl_getc, check that the value returned from read == sizeof
unsigned char
lib/readline/readline.h
- added declaration of rl_event_hook, which is the address of a
function to call periodically while readline is awaiting
character input
support/cppmagic
- new implementation from bfox, now returns a full cpp specification,
complete with system dependent flags
support/mksysdefs
- added a variable MAKE_ANSI which, if set to true, causes the
ansi Makefile to be generated
- added code to recognize various types of cray/unicos machines
[end of fixes from bfox]
getcwd.c
- integrated changes that allow getcwd to handle paths longer
than PATH_MAX by shifting to using a dynamically-allocated
buffer
builtins/set.def
- make the check for emacs or vi check to make sure the shell is
interactive
6/10
----
builtins/common.c
- the dollar_arg_stack was never being reallocated in push_dollar_vars
because of a stray `if (!dollar_arg_stack)' before the realloc call
6/12
----
cpp-Makefile
- added some missing $(RM) $@ in explicit targets for objects (the
ones that don't go through the default rules) as well as the
targets for the auxiliary programs
subst.c
- redid the way bash handles assignment statements on command lines
to fix two bugs:
1) variable assignments are not supposed to affect expansion
performed on the same line, if a command is to be run
2) if the words left after removing the variable and environment
assignments don't expand to a command word, the assignments
should affect the shell's environment
new function: separate_out_assignments
removes variable assignments that precede other words and puts
them on VARLIST
removes environment assignments in the rest of the words, if
set -k is in effect, and puts them on ENVLIST
just before expand_words_internal returns, it checks varlist and
envlist (if it is doing expansion) and performs the assignments, if
any. If it's returning a null list, these assignments affect the
shell's environment
6/13
----
subst.c
- eliminated ENVLIST; VARLIST can serve for both variable and
environment assignments
- sped up expand_words_internal's section for brace expansion by
eliminating unnecessary copies -- original word is used unless brace
expansion occurred, in which case the original word is linked to
a list of words to dispose when brace expansion is completed
- sped up the word expansions section of expand_words_internal by
(possibly) eliminating a call to reverse_list on the results of
word expansion and splitting on $IFS, because the most common
case will expand to only a single word
- `expanded' needs to be freed only if expansion and word splitting
took place, no moving the call to dispose_words up after the call
to word_list_split means that the common case no longer needs to
copy the list
- sped up globbing by eliminating copying as was done for brace
expansion -- keeping a list of `disposable' words and using the
original list contents if expansion failed or was not performed
- in the case that we're not globbing a word because it has no
unquoted globbing characters, eliminated the copy and creation of
a brand new list
- added a define GLOB_FAILED that handles the cases of using and
not using the GNU libc Posix.2 globbing library
- moved the code that dequotes the original word so it's executed
only if the glob fails
- wrapped the code that performs globbing inside an if (new_list)
clause
- call REVERSE_LIST only if we're actually doing globbing; otherwise
dequote the list and go on to performing assignments
6/15
----
lib/glob/glob.c
- if the directory portion of a pathname to be globbed contains
quoted globbing characters, the quotes (backslashes) need to be
removed before the code tries to open and read that directory
6/17
----
execute_cmd.c
- index -> indx in extract_colon_unit
nojobs.c
- make wait_for_single_pid return the status of the pid it's waited
for, instead of throwing it away
- added a simple pid-status array to avoid multiple calls to
wait_for and calling wait on dead processes. make_child adds
pids to this array, and the status of a pid is updated when
it's returned from wait(2) or waitpid(2)
- removed the checks for whether or not the pid is valid (using
kill(2)) in favor of using the information in the pid_list
parse.y
- call cleanup_dead_jobs on non-job-control systems to clean up the
pid_list
6/18
----
subst.c
- include config.h before trying to include string.h or strings.h
so USG is properly defined
6/19
----
support/mksysdefs
- look for /usr/include/string.h and define HAVE_STRING_H if
found. This is the file mandated by ANSI C.
cpp-Makefile
- look for the HAVE_STRING_H definition from sysdefs.h and define
it as part of SYSTEM_FLAGS if found
- added the HAVE_STRING_H to LIBRARY_CFLAGS, so readline can
decide what to include
general.c, parse.y, subst.c
- use the HAVE_STRING_H define in deciding which flavor of the
include file to use
builtins/common.c
- include strings.h or string.h, depending on the definition of
HAVE_STRING_H
- added extern declaration of rindex and index at file scope
- removed extern declaration of rindex in find_hashed_filename
lib/readline/rldefs.h
- removed the messy #ifdef clauses and such from readline.c and
moved them to this new file
- added a section on string functions (string.h vs. strings.h,
whether or not index and rindex need to be defined)
lib/readline/readline.c
- removed the messy #ifdef clauses that attempt to parameterize
things and define constants on a system-specific basis
- removed the definition of the unused variable xoff_state
flags.c
- corrected a typo in the comment describing jobs_m_flag
jobs.c
- new function, current_working_directory (), which returns the
cwd without calling malloc to allocate memory, even indirectly.
This can safely be called from a signal handler, like when
flush_child calls notify_of_job_status if async notification is on
- changed call to job_working_directory in pretty_print_job to call
current_working_directory
- moved assignment to DIR in notify_of_job_status after the calls
to sigprocmask to block SIGCHLD and SIGTTOU
- in notify_of_job_status, DIR is now assigned via a call to
current_working_directory and hence does not need to be freed
- notify_of_job_status now initializes DIR to NULL and calls
current_working_directory only if it needs to
- changed a call to reverse_list in stop_pipeline to REVERSE_LIST,
because most pipelines will be only one process long
builtins/jobs.def
- make an illegal jobspec cause a failure instead of returning 0 all
the time
builtins/times.def
- times now ignores any arguments for sh and ksh compatibility
6/20
----
execute_cmd.c
- fixed execute_until_or_while to actually return the status of the
last command executed in the body rather than
last_command_exit_value, which is the status of the test (which
has just failed)
6/23
----
execute_cmd.c
- fixed execute_subshell_builtin_or_function to exit with
last_command_exit_value if a builtin longjmps to top_level
with value EXITPROG, rather than with EXITPROG (3)
6/25
----
cpp-Makefile
- added rldefs.h to READLINE_SOURCE
builtins/type.def
- `type' now returns 0 if no arguments are given
jobs.c
- make wait_sigint_handler obey interrupt_immediately as well
as whether the wait builtin is the current command (XXX - in
the future remove the check for wait_builtin entirely and
just use interrupt_immediately, because this_shell_builtin
could be changed by the code that runs from a SIGCHLD trap)
- make the code that runs commands from SIGCHLD traps set
interrupt_immediately to 1 each time through the loop
6/26
----
builtins/common.c
- declare extern void vfree and use it in the add unwind protect
call, to avoid having to declare what type free returns
execute_cmd.c, builtins/common.c
- removed all references to builtin_pipe_in_hack, which is no
longer used
parse.y
- removed all references to current_token_being_expanded and
pending_token_being_expanded, since their function is subsumed
by expanded_token_stack. Also no need to save this on the
pushed string stack, so that element is removed from the
struct.
(current_token_being_expanded == expanded_token_stack->saved_token)
builtin/jobs.def
- removed immediate return if job_control == 0. This makes it work
in command substitution subshells
6/29
----
expr.c
- added unary `+'
- added bitwise not (`~') at same precedence as logical not (`!')
- added left and right shifts (<<, >>) between +,- and the comparisons
- added bitwise and, or, xor (&, |, ^)
- added logical and, or (&&, ||)
- changed exp1 to allow multiple consecutive ! and ~ (in the same way
that exp0 allows multiple consecutive leading - and +
lib/readline/history.c
- close memory leak -- in history_do_write, free the output filename
before returning
- close same memory leak in read_history_range
builtins/enable.def
- make `enable' with no arguments print only the enabled builtins, and
`enable -n' with no other arguments print only the disabled builtins
builtins/setattr.def
- make readonly and export return failure when given -f with an
argument that is not a function name
- added -n to the documentation for readonly
execute_cmd.c
- cleaned up the code that checks for #! and binary files some: made
sure the file descriptor was always closed, made sure sample_len
was > 0 before checking the first two characters, collapsed two
if statements into one
jobs.c
- changed call to job_working_directory in start_job to call to
current_working_directory
- changed input_tty to a macro
- changed the call to QUIT in wait_for after the wait_loop
label to depend on whether job_control is enabled; the test
against the terminal process group is superfluous now that
we use wait_sigint_handler
builtins/fg_bg.def
- Posix.2a specifies that fg and bg should return failure if
run when job control is disabled
7/2
---
variables.c
- when an existing variable is given a new value by bind_variable,
turn off the invisible attribute
shell.c
- dup default_buffered_input using fcntl(fd, F_DUPFD, 10) to put
it above the shell's user-manipulatable range
execute_cmd.c
- in add_undo_redirect, make the redirection added a
r_duplicating_input so buffered streams get duplicated as
necessary. It makes no difference for the non-buffered-stream
code
7/3
---
subst.c
- command_substitute needs to set interactive = 0 and leave
interactive_shell reflecting the interactive state of the
parent shell
signames.c
- prevent SIGGRANT and SIGRETRACT from overriding other already-defined
signal names, since, on the RT at least, they override SIGUSR2
and SIGEMT, respectively, which are much more common
jobs.c
- in notify_of_job_status, if job control is not enabled, do not
print the status messages. Mark dead jobs as notified so they
get cleaned up properly
braces.c
- when checking for `,' if a closing brace was not found, make
sure the , is unquoted
- make sure we found an unquoted , before attempting to perform
the expansion -- since brace_gobbler purports to understand
quoting with \, the rest of the code should support it
- disabled the code that caused a failure longjmp if a matching
closing brace was not found -- the pattern should be left
unchanged, as with any other failed expansion
trap.c
- new function maybe_set_sigchld_trap, which sets the trap on
SIGCHLD if and only if the signal is not currently trapped
jobs.c
- call maybe_set_sigchld_trap after running SIGCHLD trap commands
on the death of a child to restore the trap handler, so if the
trap handler calls `trap xxx CHLD' it will not be overwritten
lib/glob/fnmatch.c
- fnmatch must treat [ without a matching ] as a `regular' character
to be matched against the string so that the Posix.2 rules for
case command matching are not broken
shell.c
- change the call to fcntl that sets default_buffered_input to one
to dup2(fd, getdtablesize() - 1) to hopefully get the highest
file descriptor
7/6
---
parse.y
- if read_token reads a character that matches the current delimiter
character, it should make sure the character is `"' before
checking delimited_paren_level and blindly accepting it. There
are other values for `delimiter' besides `"'.
shell.c
- turn on no_line_editing for non-interactive shells
builtins/set.def
- removed test against interactive_shell when deciding whether or
not emacs or vi is `on' [backed out of fix from 6/8]
7/8
---
lib/readline/history.c
- changed get_history_event so that shell metacharacters (;&()|<>)
can terminate an event spec
subst.c
- the TERM and TERMCAP variables need special handling only if
READLINE is defined
- ditto for history_completion_file
machines.h
- new description for HPs running OSF/1
7/9
---
lib/readline/readline.c
- new variable `eight-bit-input'. If this is on, readline disables
ISTRIP for the Posix or sysv tty drivers
execute_cmd.c, variables.c
- new variable `subshell_environment' set in children right after
forking and reset in shell_reinitialize. It means to look in
the temporary environment first when looking up variables and
functions
7/13
----
config.h, parse.y
- changed CSH_HISTORY_EXPANSION to BANG_HISTORY_EXPANSION
shell.c
- made all the history-related code #ifdef HISTORY
- made maybe_save_shell_history be called only if the shell is
interactive and we're remembering history lines
parse.y, flags.c, flags.h, subst.c, variables.c
- made all the history-related code #ifdef HISTORY
- assignment_acceptable and command_token_position no longer are
dependent on ALIAS being defined, since they are used to return
ASSIGNMENT_WORD tokens
builtins/bind.def
- removed inclusion of readline/history.h
builtins/exec.def, builtins/common.c
- made all the history-related code #ifdef HISTORY
builtins/fc.def, builtins/history.def
- added a $DEPENDS_ON HISTORY line
builtins/mkbuitins.c
- line_error should not try to print error_directory without checking
to see whether it is NULL
builtins/Makefile
- add $(DIRECTDEFINE) to the command line that builds builtins.c
lib/glob/tilde.c
- use getpwuid(getuid()) to look up the home directory of the user
executing the shell for tilde expansion ~/foo if $HOME unset
cpp-Makefile, subst.c, config.h
- Fixes to make brace expansion a configuration option, on by default
7/14
----
builtins/set.def
- fixed unset so an attempt to unset a readonly variable or function
is an error (as Posix.2 specifies)
general.h
- removed extern declarations of index, rindex
- added extern declarations for strchr, strrchr
- changed `member' to use strchr
subst.c, general.c, bashline.c, execute_cmd.c, parse.y, test.c
- changed calls to index to calls to strchr, calls to rindex to calls
to strrchr
builtins/echo.def, builtins/fc.def, builtins/common.c
- changed calls to index to calls to strchr, calls to rindex to calls
to strrchr
lib/glob/glob.c
- changed calls to index to calls to strchr, calls to rindex to calls
to strrchr
lib/readline/history.c, lib/readline/readline.c, lib/readline/vi_mode.c
- changed calls to index to calls to strchr, calls to rindex to calls
to strrchr
lib/readline/vi_mode.c
- changed calls to strchr to inline checks, since we're only checking
for two characters
7/15
----
variables.c
- If PPID is imported, turn off export status
7/17
----
general.h
- for USG and Posix systems, define NO_READ_RESTART_ON_SIGNAL
general.c
- sysv_getc --> getc_with_restart
- compile in getc_with_restart if NO_READ_RESTART_ON_SIGNAL is
defined
subst.c
- call getc_with_restart in command_substitute if on a system
with NO_READ_RESTART_ON_SIGNAL defined
parse.y
- call getc_with_restart in yy_stream_get if NO_READ_RESTART_ON_SIGNAL
is defined
input.c
- change b_fill_buffer to restart reads on EINTR
general.h
- wrap the declarations of strchr and strrchr inside an #ifdef strchr
because some ANSI C compilers (e.g., RS/6000) make them defines in
/usr/include/string.h
7/20
----
lib/readline/readline.c
- wrap the declarations of strchr and strrchr inside an #ifdef strchr
because some ANSI C compilers (e.g., RS/6000) make them defines in
/usr/include/string.h
7/21
----
lib/readline/parens.c
- wrap all parameters and variables associated with the select call
into #ifdef FD_SET
execute_cmd.c
- added tilde expansion to the pattern list members of case statement
clauses, as specified by Posix.2 d11.3
lib/readline/readline.c
- when comparing members of the c_cc array directly against
_POSIX_VDISABLE, cast both sides to unsigned char
support/getcppsyms.c
- recognized __svr4__
machines.h
- for Sun machines, if __svr4__ is defined and USGr4 is not, define
USGr4
shell.c
- some machines need sys/types.h included before stdio.h (mostly for
size_t)
lib/malloc/malloc.c
- add SunOS5 to the list of systems that do no redefine valloc (?)
7/22
----
make_cmd.c
- save and restore the value of line_number around reading a
here-document
lib/glob/glob.c
- change to use HAVE_STRING_H to decide which version of the
header files to include
7/25
----
execute_cmd.c
- fixed execute_command_internal so that failure to perform
redirections attached to a shell compound command like if
or while causes the command to return failure right away
- eliminated use of redir_result in execute_builtin_or_function
- changed execute_while_or_until so that body_status is
initialized to EXECUTION_SUCCESS, and then directly returned
without a check for commands_executed, so that the Posix.2
behavior of returning success when no body commands are
executed is preserved
7/27
----
jobs.c
- make sure that trap_list[SIGCHLD] is not set to IGNORE_SIG
before trying to run commands when a SIGCHLD is caught
test.c
- define and use UID_T and GID_t, which are equivalent to uid_t
and gid_t on all systems but SunOS 4.1.?, because SunOS makes
`int' the return value of all the uid and gid functions (except
stat!)
7/28
----
shell.c
- call end_job_control in termination_unwind_protect
variables.c
- if PWD is imported from the environment and it is wrong (i.e.,
not the same as the current directory), rebind it to the current
directory (as obtained by get_working_directory)
7/29
----
lib/readline/history.c
- do not history expand ! when immediately preceded by [, assuming
it's the globbing pattern negation character
execute_cmd.c
- plug some memory leaks -- redirectee_word needs to be freed
before returning from do_redirection_internal
- changed the noclobber code to open the file with O_EXCL after
verifying that it's not there with stat to shorted possible
race conditions (this doesn't help over NFS)
7/30
----
lib/readline/history.c
- treat a negative arg to stifle_history as 0
lib/readline/readline.c
- #undef PC before declaring it as a variable because some systems
(Solaris2) define it in system header files
- changed type of insert_some_chars, update_line, and delete_chars
to void
- added a check when doing filename completion in
filname_completion_function to see if the first characters of the
filename and directory entry match before calling strncmp
(inline expansion of STREQN)
7/31
----
lib/readline/vi_keymap.c
- Make arrow keys work for history in vi command mode by binding
`o' and `[' in vi_escape keymap to rl_arrow_keys
8/6
---
subst.c
- broke the code that quotes strings for the globbing functions
into a separate function: quote_string_for_globbing (), so
there are not two copies of it
execute_cmd.c
- rewrote execute_case_command so that quote_string_for_globbing
is called for the patterns in a pattern list and reordered some
other code for clarity
- execute_case_command now turns quoted null strings into empty
strings because quote_string_for_globbing does not do it
8/7
---
lib/readline/readline.c
- added generic code to init_terminal_io to fetch the termcap
codes for the arrow keys (ku, kd, kl, kr) and bind the right
functions to them
lib/readline/vi_keymap.c, lib/readline/emacs_keymap.c
- removed bindings to `rl_arrow_keys' from all keymaps
8/13
----
subst.c
- command_substitute: only close fildes[1] if it's > 2
8/26
----
lib/readline/readline.c
- rewrote get_y_or_n to get rid of label and goto
- added code to the completion listing function that makes it
skip padding the line out with blanks after writing what will
be the last filename on the line
machines.h
- added -DHAVE_SETDTABLESIZE to SYSDEP_CFLAGS for Sequents
running Dynix/ptx
8/28
----
machines.h
- added a machine description for the BBN Butterfly from
Kaveh Ghazi
variables.c
- HPOSF1 machines cannot redefine getenv()
support/getcppsyms.c
- recognize __hp_osf
parse.y
- allow reserved word recognition after done, fi, and esac
Posix.2 section 3.4 seems to allow this
lib/readline/readline.c
- include <sys/ioctl.h> on OSF/1 machines for TIOCGWINSZ
subst.c
- in command_substitute, when checking to see that we're not
overflowing `istring', allow for the insertion of two characters
in the check to account for possible quoting
9/3
---
builtins/bashgetopt.c
- force reset_internal_getopt to set loptend to NULL
- force internal_getopt to set loptend to NULL when the list it
gets is NULL, and when it detects that it's been called with
a different word list
9/8
---
variables.c
- make adjust_shell_level clamp the value of $SHLVL at 1
[Fixes from bfox 1.13]
bashline.c
- remove `%' from list of readline special prefixes
config.h
- BANG_HISTORY_EXPANSION -> BANG_HISTORY
cpp-Makefile
- add HAVE_STRCHR
- changes to macros that build libraries
- reorganized library declarations and support
execute_cmd.c
- indx -> p_index in extract_colon_unit
general.c
- provide definitions of strchr, strrchr for systems that do not
have them
machines.h
- define `Solaris' for Suns running Solaris 2.x
- turn all the definitions of M_OS into strings
parse.y
- replace delimiter and old_delimiter with a stack of delimiters
encountered while parsing the current token
subst.c
- removed all traces of EIGHT_BIT
variables.c
- new function dispose_temporary_vars, for both dispose_used_env_vars
and dispose_function_env
lib/readline/readline.c
- `eight-bit-input' -> `meta-flag'
lib/tilde
- new directory for the tilde expansion library code
[end of bfox changes]
cpp-Makefile
- pass $(RM) down to makes in libraries
9/10
----
parse.y
- remove the bfox change that set CMD_FORCE_SUBSHELL for async
commands
9/14
----
builtins/bind.def
- surround the code with #ifdef READLINE
builtins/fg_bg.def
- surround the body of the code with #ifdef JOB_CONTROL
builtins/getopts.def
- surround the body of the code with #ifdef GETOPTS_BUILTIN
builtins/alias.def
- surround the body of the code with #ifdef ALIAS
9/15
----
lib/readline/emacs_keymap.c
- bind rl_noninc_reverse_search to M-P and rl_noninc_forward_search
to M-N, respectively
lib/readline/readline.c
- made name_key_alist struct static
- added new functions to manipulate keymaps:
rl_get_keymap_by_name()
rl_get_keymap()
rl_set_keymap()
lib/readline/keymaps.h
- added declarations for the new keymap functions
builtins/bind.def
- added -m map option to allow bind commands to specify the keymap
to be used when binding key sequences to readline commands
9/16
----
builtins/alias.def
- in single_quote, allocate a new string three times as big as the
old to handle the possible quoting characters
bashline.c
- set last_fignore to null after freeing it in setup_ignore_patterns
9/17
----
parse.y
- added code to handle the functionality of `ignoreboth' as a
value for history_control (ignore both lines beginning with
spaces and duplicates of the last history entry)
- don't use history_control for the second and subsequent lines
of a multi-line command when command_oriented_history is in
effect
9/18
----
bashline.c
- fix attempt_shell_completion to call command_word_completion_function
even if the supplied text begins with `/'
- fix command_word_completion_function to make sure that absolute
program names passed are executable before returning them as
possible matches
9/20
----
parse.y
- If we read a blank line (shell_input_line[0] == 0) and we have
reached EOF (shell_input_line_terminator == EOF) then don't echo
the line, even if -v has been turned on
9/23
----
lib/malloc/malloc.c
- changed to use USG rather than SYSV
- changed BSD42 to BSD4_2 like emacs malloc.c
- removed conditional compilation code dealing with VMS
- include getpagesize.h only if BSD4_2 is not defined
- changed conditionally compiled code dealing with BSD, since
BSD is not defined by bash and malloc.c does not include
sys/param.h, which defines BSD on 4.x BSD systems
lib/malloc/getpagesize.h
- new implementation, inspired by gdb 4.6
uses _SC_PAGESIZE, if present
defaults to 4096
lib/readline/vi_keymap.c
- when in insert mode, Posix.2a says that \ is quoted-insert
- remove the binding to vi_escape_keymap; Posix.2a says that
ESC in movement mode does nothing (vi description)
9/24
----
shell.c
- shell should send SIGHUP to all it's jobs when it receives
SIGHUP only if it is an interactive login shell
execute_cmd.c
- systems running the Andrew File System don't use the Unix file
mode bits to decide whether or not a file is executable (they're
unused, since AFS as ACLs), so executable_file needs to call
access (file, X_OK) if running on AFS
9/25
----
jobs.c
- make sure a non-interactive shell initializes original_pgrp to
NO_PID, so it does not attempt to give the terminal back to that
pgrp when it exits or calls the `exec' builtin
10/3
----
machines.h
- add -DHAVE_RESOURCE to the NeXT machine description as SYSDEP_CFLAGS
- add -DHAVE_GETDTABLSIZE and -DHAVE_SETDTABLESIZE to Dynix/ptx
description
shell.c
- make a non-interactive script shell call dup2 on the fd it has
open to the script file to move the descriptor to one that hopefully
user programs will not attempt to use
general.c
- make the definition of getdtablesize() depend on HAVE_GETDTABLESIZE
not being defined. Auto-define that for non-USG systems (or HPUX).
This allows a SYSDEP_CFLAGS entry to override it
builtins/ulimit.def
- new function canraise(cmd, curlim, newlim) to call on systems
without HAVE_RESOURCE to decide whether or not the limit can be
raised. Maybe we should remove the test altogether and let the
system call fail instead
10/8
----
execute_cmd.c
- If a command is not found, make the exit status 127 like Posix.2
says
10/14
-----
print_cmd.c
- changed cprintf(s) to cnprintf(args_length, s) and made cnprintf
malloc the buffer it uses for vsprintf to avoid overrun of the
5000-character temp buffer used previously. args_length is the
expected total length of all the arguments
10/15
-----
jobs.c
- set last_command_exit_value before calling a trap handler for
SIGINT: new function process_exit_status(), changes to use it
10/18
-----
print_cmd.c
- removed `cnprintf' changes
- re-implemented cprintf as a miniature vsprintf interpreting %s,
%d, and %c and using a dynamically-allocated buffer
support/mksysdefs
- look for /usr/include/varargs.h and define HAVE_VARARGS_H if
found
cpp-Makefile
- pass HAVE_VARARGS_H down to the makes in the various libraries
10/26
-----
lib/glob/glob.c
- free `result' before using temp_results to return the value
of glob_dir_to_array -- plugs a small memory leak
11/2
----
[Fixes from bfox version dated 10/18]
bashline.c
- separated definitions of BRACE_COMPLETION and the extern declaration
of the brace completion functions
config.h
- make PROCESS_SUBSTITUTION depend on the value of MKFIFO_MISSING
cpp-Makefile
- add posixstat.h, tilde.[ch], xmalloc.c to the readline library
sources (also the corresponding object files)
- make the definition of HAVE_TILDE_SOURCE depend on the definition
of HAVE_READLINE_SOURCE
lib/posixheaders
- new directory, for posix support functions and header files
- various cleanups to the library support rules
execute_cmd.c
- make the practice of checking hashed filenames for executability
dependent on $POSIXLY_CORRECT
general.c
- The `hppa' running hpux-8 does not have `getdtablesize'
general.h
- make the extern declaration of strchr and strrchr go away if
__STDC__ is defined
jobs.h
- test for and define all of the W* macros individually
machines.h
- completely new alliant description from bfox
- add -DMKFIFO_MISSING to NeXT SYSDEP_CFLAGS
- add description for Siemens MX500 running `sinix'
builtins/common.c
- move code that depends on BANG_HISTORY being defined inside #ifdef
HISTORY blocks, since you can't have BANG_HISTORY without HISTORY
builtins/echo.def
- make -E work all the time, not just on sys5 systems
builtins/enable.def
- add -all option (with synonym of -a)
- change `DISABLED' to 2 and make argument to list_some_builtins a
bitmask
builtins/kill.def
- it is an error if `signum' == NSIG
documentation/bash.1
- added -E flag to `echo'
- added description of -all to enable
lib/readline/tilde.c, lib/readline/xmalloc.c
- links to these files for standalone readline lib
lib/readline/{funmap.c,history.c,keymaps.c,readline.c}
- make xmalloc and xrealloc static again and dependent on the
definition of STATIC_MALLOC
lib/readline/readline.c
- include <sys/file.h> only if NO_SYS_FILE is not defined
- add support for a `stat' char after filenames when listing completion
alternatives if VISIBLE_STATS is defined
- add support for _GO32_ definition (PC)
- add LibraryVersion internal variable
- initialize rl_instream and rl_outstream to NULL, because all of a
sudden stdin and stdout may no longer be constants
- make readline_default_bindings `static void'
- add support for quoting a portion of the input line to make it
immune from completion
support/getcppsyms.c
- recognize `alliant'
support/mksysdefs
- presence of /bin/fxc.info indicates that the machine is an alliant
support/{FAQ,PORTING,mklinks,fixdist}
- new files
[end of changes from bfox]
machines.h
- added support for HP-UX 9.0 (hpux_9)
11/12
-----
machines.h
- added -lsocket to the REQUIRED_LIBRARIES define for ICL RS6000
- removed the `#undef HAVE_WAIT_H' from the isc386 description
lib/readline/rltty.c
- split off almost all tty-related code from readline.c to this file
11/13
-----
lib/readline/rltty.c
- changed the way the bsd tty code works to use a `struct bsdtty'
that encapsulates all of the bsd tty state into a single structure
that can be passed around by reference
- changed the bsd tty setup and teardown code to be more like the
ce version of things
lib/readline/rldefs.h
- added code to define HAVE_USG_SIGHOLD for svr3 machines. The
prepping and deprepping code uses them to block SIGINT while
getting and setting the tty attributes
11/14
-----
lib/readline/rltty.c
- encapsulated the system-specific code for setting up the terminal
into a function: `prepare_terminal_settings'. This means that the
code for rl_prep_terminal and rl_deprep_terminal is basically
identical between tty driver versions
- changed the BSD version of rltty_set_default_bindings to use a
struct bsdtty and get_tty_settings
- rl_prep_terminal and rl_deprep terminal are now non tty-driver
specific -- there is only one version of each function. The
tty-driver specific code is now in {set,get}_tty_settings and
prepare_terminal_settings
11/24
-----
general.c
- make the function definitions for bcopy and bzero depend on a
HAVE_BCOPY define
machines.h
- define HAVE_BCOPY for RS/6000s, RTs running AIX, and Linux
- new description for Linux
shell.c, variables.c
- don't declare getpwuid for Linux systems
support/getcppsyms.c
- recognize `linux' and `__linux__'
builtins/psize.c
- don't redefine memset() for USG machines
general.c
- add extern declaration of getdtablesize() to dup2() replacement
- don't compile in bcopy and bzero on Linux machines
test.c
- don't declare getgid, getegid, or geteuid on Linux
lib/readline/rldefs.h
- don't try to include <sys/stream.h> on Linux machines
lib/readline/readline.c
- only call rl_parse_and_bind on non-empty lines when reading
~/.inputrc
- allow backslash to quote characters in the key sequence to be
bound, which allows you to bind C-x \ for example
- allow delimiter characters in the body of a macro, quoted with
a backslash
- changed rl_function_dumper so that it outputs backslash-quoted
" and \ when called by bind -d
lib/readline/funmap.c
- fixed a typo in the entry for `vi-replace'
subst.c
- make sure the $(( xxx )) case sets this_command_name to NULL so
there are no confusing garbled error messages
- fix a memory leak in $[ xxx ] code (free temp)
- make $(( xxx )) case do the same variable expansion that the
$[ xxx ] case does
11/25
-----
parse.y
- removed CMD_FORCE_SUBSHELL assignments
command.h
- add a new flag for commands: CMD_NO_FORK
shell.c
- added a function run_one_command for -c shells that just sets up
the top_level stuff for longjmp and calls parse_and_exec. This
is controlled by the definition of ONESHOT
execute_cmd.c
- execute_disk_command takes an extra argument: nofork. If non-zero,
this tells it to not fork for a command without pipes in or out
- set NO_FORK for a simple command run in a subshell with
want_subshell ( `( xxx )' )
builtins/common.c
- if the from_file argument to parse_and_execute is "-c", then
assume this is a one-shot -c command and set NO_FORK for simple
commands. This is controlled by the definition of ONESHOT
12/1
----
support/getcppsyms.c
- add defines for bsdi and __386BSD__
machines.h
- add a section for 386bsd
12/2
----
input.c
- added a new function check_bash_input (fd) which checks whether
or not file descriptor fd is the buffered fd which bash is using
to read a script, and, if so, swaps the buffered fd to a new
file descriptor and reinits bash_input
- input buffering now solves these problems:
parent-child synchronization
using the script fd in a user redirection
auto-restart of interrupted reads on all systems
speed
execute_cmd.c
- call check_bash_input from do_redirection_internal before a call
to dup2 and a call to duplicate_buffered_fd
12/3
----
builtins/getopt.c
- only redefine `const' if it is not already #defined
lib/readline/rltty.c
- make sure HANDLE_SIGNALS is defined here as it is in readline.c
12/7
----
lib/malloc/malloc.c
- change the conditional around get_lim_data to be HAVE_RESOURCE
(ulimit if not defined, getrlimit if it is)
- removed the 4.1BSD version of get_lim_data
- conditionalize the inclusion of sys/resource.h on the definition
of HAVE_RESOURCE
12/11
-----
lib/readline/readline.c
- changed the name of strpbrk to rl_strpbrk to avoid any conflicts
with OS include files and libraries
12/15
-----
bashline.c
- changed initialize_readline to type void
execute_cmd.c
- execute_for_command called expand_words with an extra argument
jobs.c
- changed stop_pipeline to use xrealloc instead of realloc
lib/readline/readline.c
- changed rl_complete_internal to call xmalloc instead of malloc
variables.c
- dispose_used_env_vars, non_unsettable declared void
builtins/common.c
- include <sys/stat.h> because we cast things to struct stat *
builtins/exit.def
- change exit_or_logout to be declared static
builtins/psize.c
- removed call to memset and therefore the need to #ifdef it's
definition
builtins/bind.def, builtins/ulimit.def
- add extern declaration for strerror()
builtins/exec.def
- add extern declaration for strerror()
- add extern declaration for full_pathname() and remove casts to
char *
- add extern declaration for make_word_array() and remove casts to
char **
builtins/fc.def, copy_cmd.c, shell.c, parse.y
- add extern declaration for reverse_list()
builtins/read.def
- change free to vfree so systems don't complain about the extern
declaration (type clashes, etc.)
lib/tilde/tilde.c
- include string.h or strings.h as appropriate to get the correct
declaration of strcpy before the savestring macro uses it
parse.y
- add extern declaration for sub_append_string and remove casts to
char *
- add extern declaration for add_string_to_list and remove casts to
WORD_LIST *
12/16
-----
lib/malloc/malloc.c
- move the check for RLIMIT_DATA after the inclusion of
<sys/resource.h> (duh!)
bashline.c
- added extern declaration for get_working_directory
jobs.c
- added extern declaration for polite_directory_format
execute_cmd.c
- added extern declaration for copy_redirects
subst.c
- added extern declaration for reverse_list
machines.h
- new entry for KSR1 running KSROS (OSF/1)
support/getcppsyms.c
- recognize `ksr1'
general.h
- make sure that strcpy is declared before the definition of
savestring
alias.c, bashline.c, bracecomp.c, braces.c, copy_cmd.c, execute_cmd.c,
expr.c, general.c, hash.c, jobs.c, mailcheck.c, make_cmd.c, print_cmd.c,
trap.c, variables.c, parse.y
- make sure that string.h or strings.h is included before general.h
(which is included by shell.h)
builtins/mkbuiltins.c
- add extern declaration of strcpy if __STDC__ and strcpy not defined
- include <string.h> or <strings.h> as needed
builtins/cd.def, builtins/shift.def, builtins/source.def, builtins/test.def,
builtins/command.def, builtins/declare.def, builtins/fc.def,
builtins/getopts.def, builtins/hash.def
- include <string.h> or <strings.h> before definition of savestring
lib/tilde/tilde.c, lib/readline/chardefs.h
- include <string.h> or <strings.h> before definition of savestring
lib/readline/readline.c
- made glean_key_from_name cast NAME to unsigned char * before
dereferencing it to better handle 8-bit character sets
12/17
-----
subst.c
- made command_substitute set up top_level with setjmp so that shells
running command substitution won't longjmp all the way back to
main() if they're interrupted and call throw_to_top_level
12/18
-----
lib/readline/readline.c
- split the code that handles setting the screen size off into a new
function: set_screen_size
- changed init_terminal_io to call set_screen_size
- changed rl_handle_sigwinch to call set_screen_size instead of
totally reinitializing the world on each SIGWINCH
- added a new function cr() that simply puts the cursor at physical
column 0
- changed rl_handle_sigwinch to call cr() and
rl_forced_update_display() after resetting its idea of the screen
size
12/20
-----
lib/readline/history.c
- changed the way history_expand treats `\' to make it a general
quoting character like the shell treats it so that allows single
quotes to be quoted
12/23
-----
machines.h
- changed M_OS define in BSDI description to BSD386, since cpp
doesn't like BSD/386
12/28
-----
execute_cmd.c
- changed execute_case_command so that expand_word_no_split is called
on the `word', as Posix.2 specifies
1/5
---
machines.h
- new machine description for Dec Alpha running Dec OSF/1
support/getcppsyms.c
- recognize alpha, __alpha, osf, and __osf__
1/7
---
lib/readline/readline.c
- removed definition of HANDLE_SIGNALS
- changed rl_signal_handler so that systems with HAVE_POSIX_SIGNALS
defined will not set the SIGINT handler to SIG_IGN
- include <sys/ioctl.h> for _386BSD and BSD386 for TIOCGWINSZ
lib/readline/rldefs.h
- added definition of HANDLE_SIGNALS
lib/readline/rltty.c
- added GETATTR and SETATTR macros for termios/termio systems for
use by get_tty_settings and set_tty_settings
1/9
---
shell.c
- new variable: startup_state. Set to 0 for scripts, 1 for
interactive shells, and 2 for -c command shells. Superset of
the functionality provided by the `interactive_shell' variable
builtins/common.c
- changed parse_and_execute to use startup_state to detect that
it's being called as a result of -c command, rather than the
ad-hoc method previously employed
1/11
----
support/getcppsyms.c
- recognize `m88k'
machines.h
- new description for Motorola M88K Delta running SVR4
support/mksysdefs
- moved the defaulting of `SYSDEF' to `cadmus' until just before
the definition is written out
shell.c
- changed ambiguous assignment to `login_shell' by introducing a
dummy variable (~line 400: login_shell = -++login_shell)
lib/malloc/malloc.c
- moved the code that decides whether or not to define USG or
BSD4_2 inside checks for USG and USGr4, since USGr4 passes
the tests for the various signals
alias.c
- changed a call to index() to strchr()
1/12
----
lib/readline/readline.c
- moved inclusion of posixstat.h before inclusion of rldefs.h
(rldefs.h requires that stat.h be included before it)
- don't test whether or not a file is a symlink or a socket
in stat_char unless S_ISLNK and S_ISSOCK are defined,
respectively
1/13
----
machines.h
- added -I/usr/ucbinclude to SYSDEP_CFLAGS and a #define
USE_GNU_TERMCAP for the ICL DRS6000 description
support/bashbug.c
- added definition for gethostname() for systems that do not have
it (USG except for SGI and HP)
1/14
----
test.c
- made the #define of uid_t also dependent on HAVE_UID_T being
undefined. That way, hosts which have trouble can add a
-DHAVE_UID_T to SYSDEP_CFLAGS in the machines.h entry
- made the extern declaration of getgid() be conditionalized out
on Sony non-Posix machines
machines.h
- added -DHAVE_UID_T to SYSDEP_CFLAGS in the Sony/BSD entry
1/15
----
parse.y
- made type of `report_syntax_error' be static void
- made type of `handle_eof_input_unit' be static void
- added an error message when EOF is reached unexpectedly
(if EOF_Reached is 1 when report_syntax_error is called)
- added `extern void make_here_document ();'
make_cmd.c
- made type of make_here_document be void
execute_cmd.c
- added declarations of set_clexec to function prologues for
do_redirection and do_redirection_internal
variables.c
- added `extern long atol()' to assign_seconds ()
jobs.c
- changed type of `making_children ()' to void
- removed unused label `wait_exit' in wait_for()
- changed `sigset_t set' to `sigset_t suspend_set' inside the
BROKEN_SIGSUSPEND definition because `set' shadows the
definition used in BLOCK_CHILD and UNBLOCK_CHILD
mailcheck.c
- changed type of add_mail_file to void
alias.c
- changed type of delete_all_aliases to void
- changed block-local declaration of `tl' to `tlen', because
`tl' shadows a function-scope variable
input.c
- made duplicate_buffered_stream return new fd (like dup2) when
it finishes
- made free_buffered_stream() a void-valued function
bashline.c
- cleaned up the precedence of the expression that checks whether
or not the ignore patterns have changed in setup_ignore_patterns
lib/readline/readline.c
- made rl_gather_tyi a void-valued function
- made rl_dispatch a void-valued function
- made rl_redisplay a void-valued function
- made free_history_entry a void-valued function
- removed unused label `some_matches' from rl_complete_internal
lib/readline/vi_mode.c
- removed check of return value from rl_dispatch in rl_vi_redo,
since rl_dispatch never returned one anyway
lib/readline/history.c
- removed unused label `search_won' in get_history_event
- removed unused label `read_which' in get_history_event
- removed unused label `bad_word_spec' in history_expand
- removed unused label `error_exit' in history_expand
- changed block-local declaration of `len' to `slen' in
history_expand because len shadows a function-local variable
- changed block-local declaration of `l' to `ll' in
history_expand because len shadows a function-local variable
- removed unused label `get_first' in get_history_word_specifier
1/18
----
parse.y
- fixed up the support for `unexpected EOF' errors by making
read_token set `EOF_Reached' to 1 before returning yacc_EOF
when it reads EOF while looking for the start of a token
- added better messages for unexpected eof to report_syntax_error
- added better messages for unexpected tokens to report_syntax_error
- made handle_eof_input_unit reset EOF_Reached to 0 if the
shell is interactive
- made report_syntax_error reset EOF_Reached to 0 if the
shell is interactive
- changed the non-interactive error messages to add `line' before
printing the line number rather than simply use filename:digit:
1/19
----
builtins/type.def
- changed code so that simple `type' (-all not specified) takes
the same path as a regular command search (find_user_command()
rather than user_command_matches())
1/20
----
shell.c
- new variable `passwd_shell' set from the pw_shell field in the
password file
- new variable `passwd_dir' set from the pw_dir field in the
password file
variables.c
- used passwd_shell and passwd_dir to eliminate the calls to the
getpw* functions
- if $SHELL is unset at shell startup, it is set to the value of
passwd_shell
1/21
----
support/mksysdefs
- look for sys/ptem.h, define HAVE_SYS_PTEM_H if found
- look for sys/pte.h, define HAVE_SYS_PTE_H if found
cpp-Makefile
- pass HAVE_SYS_PTEM_H and HAVE_SYS_PTE_H to the readline make
lib/readline/rldefs.h
- include sys/ptem.h and sys/pte.h depending on the above two
definitions
lib/readline/readline.c
- include <sys/ioctl.h> if on an AIX system to get TIOCGWINSZ and
struct winsize
machines.h
- added #undef HAVE_ALLOCA to hpux_6 description. alloca seems
to have problems when passing alloca'd memory to other functions
(esp. in the globbing code, passing directory_name)
1/22
----
machines.h
- make the cadmus definition active only of M_MACHINE is not defined
when the code gets there
2/1
---
builtins/set.def
- changed the reference to $9 in the help string
- added `-' to the help string listing the options
documentation/bash.1
- changed the reference to $9 in the set builtin description
- added `-' to the set builtin synopsis listing the options
2/2
---
machines.h
- added REQUIRED_LIBARIES = -lPW -lc_s to SCO unix description
when not using gcc
variables.c
- new variable builtin_env; builtin analogue of function_env
- new function dispose_builtin_env to free up all strings in
builtin_env
- find_tempenv_variable now looks in builtin_env after the
temporary environment
execute_cmd.c
- execute_builtin_or_function and execute_subshell_builtin_or_function
now set up builtin_env for the `source' builtin so that things like
this work:
foo contains:
echo XXX=$XXX
echo XXX=$XXX
and you run
XXX=aaa . foo
which should output
XXX=aaa
XXX=aaa
(bug report by mfg@castle.ed.ac.uk)
2/3
---
execute_cmd.c
- when a command is forced into a subshell with ( ), turn off its
INVERT_RETURN bit in the flags so the exit status of the subshell
is not inverted. In execute_command_internal
2/5
---
[work to make readline configurably 8-bit clean]
lib/readline/readline.c
- added variable convert_meta_chars_to_ascii, which controls
whether meta characters are converted into ESC-prefixed
key sequences. Set to 1 by default
- added a readline variable `convert-meta', settable in a
.inputrc, that controls the value of convert_meta_chars_to_ascii
lib/readline/keymaps.h
- changed the hard-coded keymap size of 128 to a #define
of KEYMAP_SIZE, which is initially 128
lib/readline/keymaps.c
- changed all instances of 128 to KEYMAP_SIZE
- changed rl_make_keymap to initialize positions 128-256 to
rl_insert if KEYMAP_SIZE > 128
lib/readline/chardefs.h
- properly define _CHARDEFS_ to protect against multiple inclusion
documentation/bash.1
- documented new `convert-meta' readline variable
2/7
---
lib/readline/keymaps.h
- increased KEYMAP_SIZE to 256
lib/readline/emacs_keymap.c
- added entries to make the keymaps 256 entries. The entries in
emacs_standard_keymap are the ISO Latin-1 characters
lib/readline/vi_keymap.c
- added entries to make the keymaps 256 entries. The entries in
vi_insertion_keymap are the ISO Latin-1 characters
2/8
---
lib/readline/readline.c
- make sure that rl_display checks that there is room for 8 more
characters when deciding whether or not to realloc the line,
since we might have to insert a tab
- rl_display_search should not use MESSAGE as a printf format
string, since it might contain %
- reversed arguments in calls to rl_kill_text in
rl_unix_word_rubout so that killed text is prepended to the
undo data rather than appended
2/9
---
builtins/alias.def
- moved single_quote() to builtins/common.c and made it global
builtins/trap.def
- made sure that the output of `trap' is suitable for re-input
to the shell as a trap definition by using proper single-quoting
of the command
lib/readline/readline.c
- new readline variable `completion-query-items' to control the
value of rl_completion_query_items (initially and by default
100)
- new function rl_insert_completions which performs a call to
rl_complete_internal ('*')
lib/readline/readline.h
- added extern declaration for rl_insert_completions ()
lib/readline/funmap.c
- added bindable command name `insert-completions' that maps to a
call to rl_insert_completions ()
documentation/bash.1
- added documentation for new `completion-query-items' readline
variable
- added documentation for new `insert-completions' readline
command
2/10
----
subst.c
- made ${xxx} behave correctly when the -u option was on and xxx
was not set
- made $xxx with -u enabled and xxx unset set $? to 1
lib/malloc/malloc.c
- made free() a void function, like ANSI and Posix say to
support/mksydefs
- look for /usr/include/stdlib.h and define HAVE_STDLIB_H if found
cpp-Makefile
- pass HAVE_STDLIB_H to all makes
ansi_stdlib.h
- new file containing the extern function declarations that ANSI
puts into <stdlib.h> that bash uses; really a link to
lib/posixheaders/ansi_stdlib.h
lib/posixheaders/ansi_stdlib.h
- real copy of ansi_stdlib.h
alias.c, bashline.c, variables.c, shell.c, error.c, hash.c, signames.c,
expr.c, general.c, input.c, builtins/mkbuiltins.c, builtins/fc.def,
lib/glob/glob.c, lib/tilde/tilde.c, lib/malloc/xmalloc.c
- include <stdlib.h> if HAVE_STDLIB_H is defined, include
ansi_stdlib.h if not
general.h, alias.h
- removed extern declarations for malloc and realloc
lib/readline/{readline,history,funmap,keymaps,vi_mode}.c
- include <stdlib.h> or ansi_stdlib.h
- remove extern char *getenv() declarations
cpp-Makefile
- added dependencies on ansi_stdlib.h
support/fixdist
- changes to make things work with ansi_stdlib.h (basically just
dupliating the lines for posixstat.h)
alias.h, braces.c, expr.c, general.h, hash.h, vprint.c,
builtins/fc.def, builtins/getopts.def, lib/glob/glob.c,
lib/tilde/tilde.c
- define NULL as ((void *)0) if NULL undefined and compiling in an
ANSI C environment (__STDC__)
2/11
----
lib/readline/readline.c
- moved declaration of convert_meta_chars_to_ascii into the `forward'
declarations section, before its first use
2/13
----
expr.c
- if x is a char *, don't compare *x to NULL, use '\0' instead
2/15
----
lib/readline/readline.c
- add a call to rl_initialize_funmap at the beginning of
rl_named_function to make sure all of the function names will
be found
2/16
----
parse.y
- handle double-quoted ${...} words like the Posix.2 spec says --
count braces and skip command substitutions and quoted strings
to find the end of the pattern: new variables delimited_brace_level
and dollar_brace_level
- add new variable embedded_quoted_string so that the parser can
skip embedded quoted strings while parsing $() and ${}
constructs
subst.c
- new function: extract_dollar_brace_string () which implements
the Posix.2 rules about ${...} extraction: counting braces while
skipping quoted strings and command substitutions. Called from
extract_string_double_quoted and expand_word_internal
- changed the way pattern removal was done: the pattern is now
run through tilde expansion, parameter expansion, command
substitution, and arithmetic substitution, then quoted in a
way acceptable to fnmatch with quote_string_for_globbing
- add code so that expansions like ${HOME:`xxxx`} are errors, as
they should be, and put the full expansion string in the error
message
2/17
----
subst.c
- changed expand_word_internal to call parameter_brace_expand_rhs
with the `quoted' parameter set to 0 except when the separator
between PARAM and WORD is `+'. This makes things like
echo "${undef-"foo bar"}"
echo `foo bar' without the quotes. I'm still not sure this is
right, but it is compatible with other versions of sh
2/18
----
parse.y
- add code to reserved_word_acceptable so that bash will parse a
reserved word after a `}'
getcwd.c
- make it compilable on machines without dirent.h and struct direct
or unistd.h (like the NeXT) using the proper conditional inclusion
with HAVE_DIRENT_H and HAVE_UNISTD_H
general.c
- moved the getwd() replacement out from inside #ifdef USG and just
protected it with #ifdef HAVE_GETWD
machines.h
- added #undef HAVE_GETWD and #undef HAVE_GETCWD to the NeXT
machine description
subst.c
- added `forward' declarations for tilde_expand and
expand_string_unsplit and removed the function-local extern
declarations
2/19
----
getcwd.c
- changed to do conditional inclusion of limits.h, stdlib.h, string.h
2/22
----
builtins/cd.def
- if the chdir to the canonicalized form of the pathname in
change_to_directory fails, try what the user passed. If that
succeeds, reinitialize the_current_working_directory to what
getwd() returns, and return success. Fix for pathological
cases like
mkdir x
cd x
( cd .. ; mv x y )
cd .
2/24
----
command.h
- added extern declarations for make_word_array, make_command,
make_bare_simple_command, and make_here_document
- added extern declarations for functions in copy_command.c:
copy_command, copy_word, copy_word_list, copy_redirect,
copy_redirects
copy_cmd.c
- made all functions not used outside this file static
execute_cmd.c
- removed extern declaration of make_word_array
2/25
----
shell.c
- made non-interactive shell look for $BASH_ENV startup file rather
than $ENV (conflict with Posix.2)
command.h
- broke the `union redirectee' out of the struct redirect, made
the union it's own typedef (REDIRECTEE), then added
REDIRECTEE redirectee to the struct redirect
- made the `dest' member of a REDIRECTEE a long. It matters on
some machines (sizeof(long) == sizeof(pointer) != sizeof(int)
and works on those machines with all those sizes being 32 bits
(this should really be a typedef rather than a long)
execute_cmd.c, parse.y
- changed all calls to make_redirection to pass a WORD_DESC * or
a long as the third argument to make_redirection
[this should conclude the changes needed for the alpha]
3/2
---
subst.c, variables.c
- moved some function-scope extern function declarations to file
scope
subst.c
- changed paramter_brace_expand_pattern to call expand_string_internal
on the removal pattern, since we do not want word splitting
jobs.c
- call get_tty_state or set_tty_state in wait_for() depending on
a job's exit status when interactive_shell is set, rather
than testing interactive. This makes stty commands in scripts
executed with `.' `stick'
nojobs.c
- make sure we only call {set,get}_tty_state when interactive_shell
is set
3/3
---
unwind_prot.c
- make sure there is actually something on unwind_protect_list
before calling without_interrupts to run something on it or
delete something from it
jobs.c
- make sure job_slots is not empty in cleanup_dead_jobs and
delete_all_jobs before actually doing something
3/4
---
machines.h
- add #undef HAVE_GETWD to Xenix286 machine description
lib/readline/history.c
- fixed an off-by-one error in the history expansion code: if
the length of the result string after adding the current piece
is (allocated_len - 1), the strcpy will write over the first
marker placed there by the malloc debugging code.
- changed the history realloc code to work in 256-character chunks
rather than 255-character ones
3/8
---
execute_cmd.c
- new variable exec_redirection_undo_list that holds redirections
that must be undone even when `exec' throws away
redirection_undo_list. These are copies of open files for
constructs like 7<&1. Set in add_undo_redirect and used in
execute_builtin_or_function. Disposed of otherwise.
3/9
---
execute_cmd.c
- fixed a memory leak in execute_builtin_or_function by adding an
unwind_protect to dispose of saved_undo_list
- anywhere do_redirections is called with INTERNAL==1 (which means
we make redirection_undo_list), arrange to clean up
exec_redirection_undo_list
print_cmd.c
- massive namespace cleanups -- made almost all functions static
- new function `colon' to be called in place of `cprintf(";")'
to ensure that we don't print a `;' right after a `&' from
compound command printing functions (if, while, until, for)
[put code out for FTP on 3/10]
3/11
----
documentation/bash.1
- removed the description of >&word as a way to redirect both
standard output and standard error
endian.c
- moved new-endian.c to this. This handles 64-bit machines
directly
lib/readline/readline.c
- rl_copy -> rl_copy_text to avoid clashes with Sun's libraries
- moved the completion code to a new file
lib/readline/complete.c
- new file with the completion code from readline
lib/readline/Makefile, cpp-Makefile
- added complete.c and complete.o to the necessary make variables
subst.c
- added an entry to special_vars to make a change to $TERMINFO
cause readline to reset itself (sv_terminal())
3/12
----
builtins/exec.def
- free `command' if the exec fails
machines.h
- change sgi machine description to define HAVE_GETWD
lib/readline/history.c
- fixed a memory leak in read_history_range -- need to free
`buffer' before returning
- if read(2) returns <= 0 in history_truncate_file, then
immediately exit
- start checking at buffer[chars_read - 1] for newlines
lib/readline/readline.c
- fixed a memory leak in rl_read_init_file -- `buffer' must
be freed before we return
- rearranged code in update_line so that we check for ols and
nls being in bounds before trying to compare their values
parse.y
- fixed memory leak in read_token -- don't need to save `token'
into a fresh variable before calling push_string because
push_string does its own savestring in save_expansion
subst.c
- fixed memory leak in expand_words_internal -- the word_list
allocated by the `@' case when expanding $@ needs to
be freed after turning it into a string with string_list
- fixed memory leak in expand_word_internal -- the string
returned by extract_dollar_brace_string needs to be freed
- fixed memory leak in expand_word_internal -- the string
returned by substring() in the `default:' case needs to be
freed
variables.c
- fixed a free-memory reference in makunbound -- have to save the
value of `name' before calling dispose_variable, because it
might directly reference old_var->name. If so, then
stupidly_hack_special_variables will refer to freed memory
dispose_cmd.c
- fixed a memory leak in dispose_command: if a group_command is
being disposed, need to free command->value.Group after
calling dispose_command (command->value.Group->command);
- fixed a memory leak in dispose_command: if a case command is
being disposed, need to free command->value.Case after
freeing everything else
mailcheck.c
- fixed memory leak in remember_mail_dates -- need to
free the value returned by get_mailpaths()
- fixed memory leak in remember_mail_dates -- need to
free the value returned by extract_colon_unit()
3/13
----
bashline.c
- fixed memory leak in bash_symbolic_link_hook --
get_working_directory always returns newly-allocated memory
that must be freed
- fixed memory leak in bash_symbolic_link_hook --
if `*dirname' is going to be replaced, the current contents
have to be freed (if non-null)
- make bash_symbolic_link_hook call get_working_directory with
a non-empty string for the value of `for_whom'
execute_cmd.c
- make sure that execute_command cleans up after itself by
disposing the fd_bitmap it allocates
shell.c
- fixed memory leak in reader_loop -- if throw_to_top_level is
called with DISCARD, the current command needs to be disposed
lib/readline/complete.c
- when we return NULL to indicate the end of a set of completion
matches, free dirname, filename, and users_dirname -- there's
no reason to let them persist between calls, consuming memory
3/16
----
shell.c
- when moving the `script' fd to the highest available fd, check
for getdtablesize returning -1 and default to 20 in that case
jobs.c
- if getdtablesize returns something < 0, default to 20
- check that getdtablesize() leaves `nds' set to something valid
before trying to dup2 shell_tty to it
machines.h
- changed M_OS in KSR/1 description to OSF1
maxpath.h
- include sys/param.h if __ksr1__ defined
parse.y
- changed declaration of the_time from long to time_t
lib/readline/readline.c
- changed extern declarations for rl_basic_word_break_characters
and rl_completer_word_break_characters to file scope rather
than block scope
- changed declaration of chars_avail (param to FIONREAD ioctl) to
int, which it should have been all along
3/17
----
jobs.c
- clamp nfds in initialize_jobs at 256
shell.c
- clamp the value returned by getdtablesize() to 256
3/19
----
execute_cmd.c
- make find_user_command_in_path return a pathname if it exists
and the caller wants FS_EXISTS files. This affects the `.'
builtin and files as script arguments to the shell (shell.c)
- clamp the highest-numbered file descriptior at 256 in
close_all_files().
jobs.c
- make get_tty_info print error message on tcgetattr failure only
if interactive != 0 (that is, we're really interactive now)
lib/readline/rltty.c
- changed SETATTR macro to call tcsetattr with TCSANOW flag, since
this call is being used to affect an input file descriptor.
Ditto for the sys5 tty driver code and TCSETA (was TCSADRAIN and
TCSETAW, respectively)
- added a flag for ksr1 machines `ksrflow' which is the state of
suspended output for this process. If 1, this process has called
tcflow (tty, TCOOFF) to suspend output and tcflow(tty, TCOON)
may be called safely
- temporarily (?) disabled the code that simulates at ^Q at the end
of set_tty_settings. Let's see if it makes any difference
3/22
----
execute_cmd.c
- new global variable (yucch) `current_fds_to_close' that is set to
the fd_bitmap passed to execute_simple_command while expand_words
is being executed so that this information is available to the
process substitution code
- set current_fds_to_close to NULL at start of execute_command
subst.c
- change call to close_all_files in process_substitute to call
close_fd_bitmap (current_fds_to_close)
- fixed memory leak in parameter_brace_expand_length() -- need to
free the memory used to expand the PS1 in something like ${#PS1}
- fixed memory leak in expand_word_internal ${3:+posix} did not
free the memory used to expand the $3
documentation/bash.1
- && and || have equal precedence; fixed up man page to reflect
this
3/23
----
[fixes from bfox version of 1.13 dated 3/21/93 from eos.ucsb.edu]
config.h
- #undef alloca before redefining it as __builtin_alloca
cpp-Makefile
- compile newversion.c with $(CFLAGS) instead of $(DEBUG_FLAGS)
general.h
- new #define: maybe_free(x)
jobs.c
- alliant has same problem as NeXT wrt /usr/etc/rlogind and /dev/tty
- make delete_all_jobs be static void
builtins/cd.def
- use maybe_free define
builtins/common.c
- HAVE_VPRINTF --> HAVE_VFPRINTF
builtins/test.def
- document -h as a synonym for -L
lib/readline/history.c, lib/readline/rldefs.h
- #undef alloca before redefining it as __builtin_alloca
lib/readline/history.c
- new functions history_get_state and history_set_state
lib/readline/tilde.c
- put in #pragma alloca if on AIX machine
support/getcppsyms.c
- recognize __GNUC__ and __STDC__ and pass them along as output
3/24
----
subst.c
- removed fully_quoted_word(), since it was unused
execute_cmd.c
- added extern declarations for functions in dispose_cmd.c
- removed extern declaration of atol()
parse.y
- added extern declaration for dispose_words()
documentation/bash.1
- re-added the description of >&filename as a way to redirect
both stdout and stderr to filename
machines.h
- slight changes to the alpha description
shell.c
- moved all the extern function declarations to have file scope
print_cmd.c
- colon --> semicolon
parse.y
- in read_token, if we're parsing an embedded quoted string, don't
bother with special processing of `$' and characters following
3/25
----
print_cmd.c
- added a new function the_printed_command_resize to expand the
printed command buffer in cprintf()
builtins/bind.def
- removed the unwind-protect code, because unwind_protect_pointer
is not guaranteed to work on a FILE *
lib/readline/readline.c
- assign in_stream and out_stream immediately, because they may
be used before readline_internal is called
3/26
----
cpp-Makefile
- allow for use of different compress programs with the use of
$(COMPRESS) and $(COMPRESS_EXT)
3/29
----
general.c
- new function set_lines_and_columns to set $LINES and $COLUMNS in
response to a SIGWINCH
lib/readline/readline.c
- call set_lines_and_columns() in set_screen_size() to set the
right environment variables on a SIGWINCH (code needed to be
rearranged a bit to make this happen)
jobs.c
- add a SIGWINCH handler to set $LINES and $COLUMNS if readline is
not being compiled into the shell and TIOCGWINSZ and SIGWINCH
are defined
subst.c
- made dequote_string extern so `read' can use it
builtins/read.def
- added CTLESC characters to represent escapes instead of doing
backslash processing internally
braces.c
- fixed the brace expansion code so that backslash can correctly
act as an escape character, and escape `"' in a double-quoted
string
3/31
----
make_cmd.c
- the `<>' redirection needs to open the file O_RDWR|O_CREAT
for Posix.2 compatibility
4/1
---
parse.y
- the function read_a_line was changed to take a flag telling it
whether or not to remove quoted newlines
- read_secondary_line was changed to call read_a_line with an arg
of 1, telling it to strip \<newline> pairs
These two changes fix two bugs with here documents:
1. delimiter check occurs after \<newline> stripping
2. leading tab deletion occurs after \<newline> stripping
lib/readline/rldefs.h
- include <termcap.h> if on Linux
lib/readline/readline.c
- don't declare PC, BC, and UP if on Linux (??)
- change the conditional parsing code that handles the `$if term='
construct to test the name given in the if command against both
the `long' and `short' forms of rl_terminal_name. For instance,
if `rl_terminal_name' were `sun-cmd', it would be tested with
stricmp against both `sun' and `sun-cmd'
machines.h
- add HAVE_VFPRINTF to the Linux description
unwind_prot.h
- change the unwind_protect_int macro to cast the second argument to
unwind_protect_var to a (char *), which is what unwind_protect_var
expects
unwind_prot.c
- change unwind_protect_var to allocate memory and do a bcopy if the
size of the variable passed to save is not sizeof(int). That's
what restore_variable expects
lib/readline/complete.c
- fixed rl_complete_internal so that it pays attention to the value
of rl_completer_quote_characters and quotes a match if the match
contains a word break character
bashline.c
- set rl_completer_quote_characters to ' and "
4/5
---
lib/readline/complete.c
- changed rl_complete_internal so that an `attempted completion
function' may tell readline not to perform filename completion
if it fails by returning (char **) -1
bashline.c
- attempt_shell_completion should return (char **) -1 if doing
command word completion and no matches are found. This will
tell readline not to perform filename completion
4/6
---
builtins/common.c
- fixed the error message printer by get_working_directory:
`for_whom', shell_name, or `bash: ' is printed first; the
first non-empty one being printed. Explanatory text is
added to the error message
4/7
---
machines.h
- in the Sun section, define Solaris of either `USGr4' or __svr4__
is defined
- Solaris 2 systems have sys_siglist, so don't #undef HAVE_SYS_SIGLIST
jobs.c
- don't declare sys_siglist if on Solaris 2
4/8
---
lib/readline/rldefs.h
- do not define USE_XON_XOFF. This causes output to be swallowed
when using bash over a relatively slow line (like a modem line).
This means that ^S and ^Q don't work on termio/termios systems;
use ^V to quote characters instead
variables.c
- don't perform a get_working_directory on startup unless we did
not inherit $PWD or the inherited value of $PWD is wrong
trap.c
- new functions: free_trap_strings and reset_original_signals.
Together they do the same thing as restore_original_signals()
jobs.c, nojobs.c
- removed call to restore_original_signals from make_child. Now
callers have to handle this themselves
execute_cmd.c
- added a call to restore_original_signals after make_child in the
child process everywhere make_child is called
subst.c
- added call to restore_original_signals after make_child in
process_substitute
- added call to reset_signal_handlers after make_child in
command_substitute for the child process
[THERE IS A PROBLEM WITH A TRAP on `0' -- it is inherited in the
child process started to run the command substitution]
[These are fixes to make savetraps="$(trap)" work as Posix.2 specifies]
4/11
----
bashline.c
- supply a value for rl_completer_word_break_characters; `$' is
not a shell word break character
4/13
----
lib/readline/complete.c
- only look at adding quote characters to completion matches if
we're doing filename completion
bashline.c
- don't supply a value for rl_completer_word_break_characters
4/14
----
documentation/bash.1
- clarify what the readline function shell-expand-line does
jobs.c
- clean up dead jobs in wait_for even in non-interactive shells
rather than waiting for the next call to the parser
4/15
----
bashline.c
- reorganized the shell_expand_line code; broke it up into several
discrete functions
- added new functions: history_and_alias_expand_line,
history_expand_line
- added a new emacs-mode command, M-!, bound to history-expand-line
4/18
----
unwind_prot.c
- more fixes to the save-variable and restore-variable code,
mostly to make things work better on machines like the alpha
where sizeof(int) != sizeof(char *):
save and restore now use identical logic and nearly
identical code to decide whether or not to use malloc and
bcopy or assignment
builtins/common.c
- new functions to manage the state of the dollar variables:
dollar_vars_changed - return 1 if the dollar variables have
been changed
set_dollar_vars_changed - set the state of dollar variable
modification to `changed'
set_dollar_vars_unchanged - set the state of dollar variable
modification to `unchanged'
builtins/source.def
- new function: maybe_pop_dollar_vars. This is called so that the
`.' command will restore the dollar variables only if the script
run with . has not changed them. If the script changed $@, the
new values should stay in place
- changes to source_builtin to set the state of the dollar
variables to `unchanged' before executing the script, and calling
maybe_pop_dollar_vars() to decide whether or not to restore the
dollar variables and to do so if warranted
machines.h
- new description for NEC EWS4800, from m-hirano@sra.co.jp via
hikichi@sra.co.jp
4/19
----
support/mksysdefs
- check for both /hp-ux and /bin/uname before deciding a machine
should be checked for an HP/UX revision level
4/22
----
input.h, general.h, lib/readline/readline.h, lib/tilde/tilde.h
- added typedefs for CPFunction (pointer to function returning
pointer to char) and CPPFunction (pointer to function returning
pointer to pointer to char)
execute_cmd.c
- replaced all instances of (int)redirectee in do_redirection_internal
with a variable redir_fd, which is set to redirectee.dest
print_cmd.c
- replaced all instances of (int)redirectee in print_redirection
with a variable redir_fd, which is set to redirectee.dest
maxpath.h
- #include <sys/param.h> on OSF/1 systems
subst.c
- added extern declaration for list_append
- changed sv_allow_null_glob_expansion to compare the return value
from find_variable to NULL to set the value of
allow_null_glob_expansion
parse.y
- fix the assignment_acceptable macro so we cannot return
ASSIGNMENT_WORD while in the middle of a case statement pattern
list (in_case_pattern_list != 0)
general.c
- Linux has gethostname() and does not need the emulation
jobs.c
- Linux has a declaration for sys_siglist that conflicts with the
extern declaration; use the one from the standard include file
- the sigprocmask emulation did not handle NULL arguments in
oldset and newset; check them before using
4/23
----
lib/readline/complete.c
- use single_quote() to quote a completion replacement with
embedded occurrences of characters from rl_completer_quote_characters
4/26
----
print_cmd.c
- redid cprintf() for systems without varargs to be what bfox has
(using char * where bfox has void *)
parse.y
- make read_secondary_line take an argument telling it whether or
not to have read_a_line remove quoted newlines
make_cmd.c
- pass an argument to read_secondary_line saying whether or not to
remove quoted newlines, set to 1 if the delimiter of a here
document is unquoted
4/28
----
builtins/ulimit.def
- added -u option to set and get the max number of processes
available to a user; available on systems which define
RLIMIT_NPROC
- added better handling of getrlimit failures to ulimit_builtin
cpp-Makefile
- made $(HOSTTYPE_DECL) appear on the cc command line before the
$(CPPFLAGS) when making variables.o
4/29
----
lib/readline/complete.c
- added an extern declaration for getpwent() for isc386 machines
where __STDC__ is not defined and _POSIX_SOURCE is
4/30
----
general.c
- new function legal_identifier, which returns 1 if a string
passed is a legal shell identifier and 0 otherwise. Used
to decide what is and is not a legal variable name for the
expansion functions
subst.c
- make expand_word_internal check that a ${ } expression
that starts with a digit is composed of all digits before
deciding that a variable starting with a digit is special
(setting var_is_special to 1)
- new function valid_brace_expansion_word (name, var_is_special)
returns 1 if name is a legal lhs of a brace expansion
expression
- make expand_word_internal check an identifier for validity
before passing it off to parameter_brace_expand_word by calling
valid_brace_expansion_word ()
- new function valid_length_expression (name) returns 1 if NAME is
something that can be passed to parameter_brace_expand_length();
called from expand_word_internal before calling
parameter_brace_expand_length()
These fix the following:
${#<digit><alpha>} was treated as x=$<digit><alpha>, ${#x}
${<digit><alpha>} was treated as ${<digit>}<alpha>
${<illegal-id>} was not flagged as an error
${#<illegal-id>} was not flagged as an error
5/2
---
input.c
- make check_bash_input change the value of default_buffered_fd
if it moves the input fd to a new fd as the result of a
redirection
execute_cmd.c
- don't make do_piping try the dup2 and close if pipe_out ==
REDIRECT_BOTH (-2) -- it's useless work
- add error checking to do_piping to see if the dup2 calls fail
and why
error.c
- new function internal_error for shell internal error messages
jobs.c
- changed some fprintf(stderr, ...) calls to internal_error()
calls
5/3
---
execute_cmd.c
- do not change the buffered stream associated with a file descriptor
when processing an r_inputa_direction redirection in
do_redirection_internal
jobs.c, nojobs.c
- don't sync the buffered stream associated with default_buffered_input
in make_child if the shell is reading input from fd 0 and running an
asynchronous command
5/4
---
execute_cmd.c
- if the shell is not interactive, clean up the dead jobs each time
we call execute_command ()
jobs.c
- new function, mark_dead_jobs_as_notified
- if the shell is not interactive, mark all dead jobs as notified in
notify_and_cleanup so that cleanup_dead_jobs frees up the slot in
the jobs array
nojobs.c
- make cleanup_dead_jobs call reap_zombie_children on Posix systems,
so the shell doesn't keep growing in size as more jobs accumulate
before a call to wait_for()
5/6
---
jobs.c
- take the code that resets the signal handler out of flush_child;
it should be done in wait_for
- new function reap_dead_jobs to be run by non-interactive shells
that marks all dead jobs as notified and cleans up the job list
- removed the code from notify_and_cleanup that marks dead jobs as
notified if the shell is not interactive
execute_cmd.c
- took the code that cleaned up dead jobs out of execute_command
There is a problem when this is run as the result of a trap on
SIGINT and the trap command is called directly from flush_child --
a job slot can disappear out from underneath flush_child and
wait_for and cause the shell to abort
- added a new define REAP that causes a non-interactive shell to
clean out the job table by calling reap_dead_jobs or
cleanup_dead_jobs
- added calls to reap to execute_for_command and
execute_until_or_while
nojobs.c
- changed wait_sigint_handler to not do anything when it is called,
not even run a signal handler
- changed wait_for to call the old sigint handler if a foreground
process exits due to a SIGINT
[these make nojobs.c behave like jobs.c when waiting for a job in
a non-interactive shell]
config.h.mini
- new `minimal' configuration file
5/7
---
subst.c
- make sure that command_substitute closes the pipe file descriptors
if there is a goto error_exit
5/10
----
nojobs.c
- add a SIGWINCH handler to set $LINES and $COLUMNS if readline is
not being compiled into the shell and TIOCGWINSZ and SIGWINCH
are defined
[code put out for FTP on slc2.ins.cwru.edu]
5/11
----
braces.c
- commas within backquotes inside matching braces are now treated as
quoted (e.g., echo {`echo foo:bar | sed s/:/,/`})
lib/readline/search.c
- added extern declarations for xmalloc, xrealloc
5/12
----
lib/malloc/malloc.c
- added a #define wrapper around the sbrk() declaration so that it's
not declared as char * if hpux_8 or VOID_STAR_SBRK are defined
subst.c
- changed sense of #ifdef so that unless KSH_INCOMPATIBLE is defined
${#@} and ${#*} are equivalent to $#
5/13
----
execute_cmd.c
- don't create the export env unless we are running a command with
shell_execve (in execute_disk_command)
jobs.c, nojobs.c
- don't create the export env in make_child (why were we doing this
in the first place?)
hash.c
- removed declaration of initialize_hashed_filenames, which is unused
subst.c
- make list_rest_of_args, list_string, and the brace expansion code
in expand_words_internal use the REVERSE_LIST macro rather than a
call to reverse_list()
make_cmd.c, copy_cmd.c
- change uses of reverse_list to REVERSE_LIST
5/17
----
execute_cmd.c
- make execute_disk_command look in the temp environment for an
assignment to PATH, and disable hash lookup for the command if
such an assignment is present
5/18
----
parse.y
- changed read_a_line so that a backslash can quote a \<newline>
pair and prevent its removal when remove_quoted_newline is 1
5/19
----
siglist.h
- new file, to encapsulate the declarations of sys_siglist and
provide a `strsignal' macro
jobs.h, siglist.c, longest_sig.c
- include siglist.h
jobs.c, nojobs.c
- removed declaration of sys_siglist
5/20
----
execute_cmd.c
- don't set up the loop_redirections unwind-protect unless there
are actually some redirections
- combined the AND_AND and OR_OR cases of execute_command_internal
to remove some duplicated code
- folded two tests together in the simple command case of
execute_command_internal to remove a layer of indentation and
braces
- don't set up the unwind_protect in execute_simple_command unless
the command actually expands to something
- broke the code that executes functions and builtins out into new
functions (execute_function and execute_builtin) and changed
execute_builtin_or_function and execute_subshell_builtin_or_function
to call them
- replaced the async_redirections unwind-protect in
execute_disk_command, since there's no reason to do it if we're
already in a subshell and simply going to exit if the redirections
fail
- set up the unwind-protect on saved_undo_list in
execute_builtin_or_function only if there are redirections saved
in saved_undo_list
- only call do_redirections in execute_disk_command if there are
redirections to perform -- no need for the side effects since
we're in a subshell
5/21
----
parse.y
- make read_a_line, shell_getc, decode_prompt_string, prompt_again,
bash_add_history, reset_readline_prompt, read_token, discard_until,
shell_ungetc static functions
- eliminated the after_preprocess label in shell_getc
- broke the prompt command execution code out into a separate
function: execute_prompt_command
subst.c
- combined some common code in extract_string_double_quoted for the
$( ) and ${ } cases
- changed the allocation scheme in string_list_internal to hopefully
reduce the number of allocations
- added a new define SET_INT_VAR and changed all of the sv_*
functions that set a variable depending on whether or not a
variable exists to use it
variables.c
- declare argument to getenv as `const char *' on Linux
machines.h
- Linux has the fixed include files if gcc is being used to compile
the shell
5/23
----
subst.c
- only call rl_reset_terminal in sv_term if no_line_editing is 0
(which means we're actually using readline)
5/25
----
execute_cmd.c
- changed execute_for_command to explicitly call the functions that
were to be called by the unwind-protect code (e.g., dispose_words),
and changed the run_unwind_frame call to a call to
dispose_unwind_frame. This is to avoid using the kernel to block
interrupts as much as possible
- did the same for execute_case_command and execute_builtin
jobs.c
- only run traps on SIGCHLD if job_control != 0
6/3
---
unwind_prot.c
- have without_interrupts call QUIT only if interrupt_immediately
is set to 1
6/7
---
machines.h, jobs.h, lib/readline/chardefs.h, maxpath.h
- changes for Solaris 2 with gcc from Greg Onufer
lib/malloc/malloc.c
- define NO_SBRK_DECL if hpux_8 or Solaris
- declare sbrk as extern char * unless NO_SBRK_DECL is defined.
VOID_STAR_SBRK has been removed
lib/readline/readline.c
- changed a call to alloca to a call to xmalloc to avoid problems
on the DEC alpha (can't pass memory allocated with alloca to
another function)
- moved key binding and startup file code to bind.c
lib/readline/rldefs.h
- created common definitions for emacs_mode and vi_mode
lib/readline/bind.c
- new file containing the key binding and startup file code.
6/8
---
lib/readline/readline.c
- changed rl_message to use varargs, if HAVE_VARARGS_H is defined
lib/readline/rldefs.h
- include <varargs.h> if HAVE_VARARGS_H is defined
lib/readline/{readline.c,bind.c,rltty.c,vi_mode.c,search.c}
- cleaned up the namespace by prefixing all pseudo-global readline
variables (variables private to the library but used in multiple
files) with _rl_
6/10
----
[changes from bfox]
bashansi.h
- new file, including both string.h and ansi_stdlib.h
dispose_cmd.h, make_cmd.h, subst.h
- new files containing extern function declarations
endian.c
- for machines with sizeof(long)==8, shift by 31, then 1 to fake
out gcc 2.4, which complains when you shift by 32
general.h
- added an include of string.h or strings.h
- changed the declarations of the savestring() and member() macros
shell.c
- changed the structure of the long_args struct to be more portable
subst.c
- made dequote_string and dequote_list static
[end of changes from bfox]
general.h
- added extern declarations for all of the non-int functions
defined in general.c
<most files>
- removed extern declarations that appear in one of the bash header
files
6/15
----
lib/readline/readline.c
- incorporated a patch to rl_transpose_chars from Tom Tromey
which allows C-t to be undone
- fixed rl_rubout so the fast screen fixup when deleting the
last character on the line handles characters that are more
than one screen position wide by erasing the right number of
physical characters
6/16
----
siglist.h
- don't declare sys_siglist on 4.4 BSD
builtins/mkbuiltins.c, lib/readline/history.c
- include <unistd.h> if HAVE_UNISTD_H is defined
6/19
----
machines.h
- new description for the Intel Paragon running OSF/1
support/getcppsyms.c
- new variables for the paragon (__i860__, __PARAGON__, etc.)
documentation/bash.1
- make it clear the the -noprofile switch disables the sourcing
of ~/.bash_login and ~/.profile as well as /etc/profile and
~/.bash_profile
6/23
----
shell.c
- instead of calling maybe_execute_file on "/etc/profile",
use a #define for SYS_PROFILE, which is initially defined
to be "/etc/profile" by default
lib/readline/isearch.c
- new file, with the isearch code
lib/readline/display.c
- new file, with the incremental redisplay code
lib/readline/readline.c
- removed the isearch, display code
6/24
----
lib/readline/readline.c
- removed the signal-handling code
lib/readline/signals.c
- new file with the signal-handling code
7/1
----
test.c
- changed the `advance' macro to get around some picky compilers
machines.h
- machine description for hp9000 running 4.4 BSD
support/getcppsyms.c
- recognize __BSD_4_4__ for 4.4 BSD machines
builtins/souirce.def
- cast the st_size stat struct member to int because it's
64 bits on 4.4 BSD
lib/readline/signals.c
- include <sys/ioctl.h> if compiling on a 4.4 BSD machine
7/2
---
builtins/read.def
- if $IFS is unset it defaults to "" when splitting the line
read into words (so no splitting is performed)
7/5
---
shell.c
- remove SIGKILL from terminating_signals[] -- it can't be caught
or ignored
- make terminating_signals[] static
- make terminating_signals[] an array of structs that hold the signal
number and the original handler
- change initialize_terminating_signals to use the new struct termsig
and to set the original handlers for all the terminating_signals
- new function reset_terminating_signals to restore original handlers
for all terminating signals in terminating_signals[]
trap.c
- new function signal_is_special, returns 1 if a signal is one of
the signals the shell treats specially
- call reset_terminating_signals from restore_original_signals
getcwd.c
- changed call to `stat' to call `lstat' to keep symlinks that
point to non-existant files from causing getcwd to fail
- if S_ISLNK is not defined after inclusing `posixstat.h', use
a cpp #define lstat stat
machines.h
- new entry for Symmetric 375 running 4.2 BSD
support/getcppsyms.c
- recognize and pass along `scs' for the Symmetric 375
lib/readline/bind.c
- new function: rl_set_keymap_from_edit_mode, which sets the
keymap appropriately depending on the editing mode as if we
were about to edit a command line
7/6
---
lib/termcap
- new code from the GNU termcap library distribution 1.02
endian.c
- include bashansi.h
shell.c
- fall back to sourcing $ENV if $BASH_ENV is not found
variables.c
- make add_or_supercede search `array' only if it is non-null
7/7
---
subst.c
- made do_assignment_internal an int function that returns 1 if
the assignment was made correctly and 0 if it was not
- do_assignment and do_assignment_no_expand now return the value
from do_assignment_internal
variables.c
- made assign_in_env return 1 if everything appeared to go
successfully (which it always does)
cpp-Makefile
- add variables.c as an explicit dependency for variables.o; there
appears to be a bug in Gnu make
braces.c
- removed static version of copy_array since there's already one
in general.c, declared extern in general.h
lib/malloclib
- updated to sources from Gnu libc 1.06
7/9
---
shell.h
- new struct: user_info, containing uid, gid and passwd file info
about the current user
shell.c
- new variable current_user of type struct user_info
- eliminated passwd_shell, passwd_dir, and current_user_name
subst.c
- rewrote sv_uids to use the info in current_user.uid and .euid
and to use itos rather than sprintf
variables.c, mailcheck.c, test.c, execute_cmd.c, parse.y
- changed to use current_user.user_name rather than current_user_name
and to use current_user.shell and current_user.home_dir instead of
passwd_shell and passwd_dir, respectively
flags.c, flags.h
- new flag, `-p' for `privileged', a la ksh. This is set automatically
if uid != euid || gid != egid
- if +p, set the real and effective uids and gids to the real uid and
gid
flags.c
- include shell.h for the current_user struct and don't explicitly
include header files included by shell.h
builtins/set.def
- code to handle -p and -o privileged
documentation/bash.1
- added documentation for set -p/set -o privileged
- added documentation for bind -m keymap
- added documentation to readline section for non-inc search bindings
builtins/bind.def
- documented the -m keymap option
7/10
----
machines.h
- new description for NeXTstep running on intel 486
lib/tilde/tilde.c
- fixed up definition of savestring macro
bashline.c
- changed attempt_shell_completion so that when completing command
words and no matches are found, it tells readline to perform
filename completion but sets the completion ignore function
to one that will ignore all filenames matched, leaving only
directories in the list of matches
- generalized the ignore processing, breaking the body of the
existing ignore function into a generic function that takes as an
argument a pointer to a function used to test each filename in the
match list for `acceptability'
- added a new ignore function to support the `ignore filenames'
behavior described above
7/12
----
machines.h
- add #undef HAVE_GETCWD to Motorola M88100 description
[put code out for FTP on slc2.ins.cwru.edu]
7/13
----
builtins/type.def
- broke the code that does the work of the type builtin out into a
separate function and added a couple of other display options,
for eventual use by command -v and -V
builtins/bashgetopt.c
- added a new function `report_bad_option'
builtins/jobs.def, bultins/histctl.def
- changed to use report_bad_option
builtins/command.def
- added the Posix.2 -v and -V options
7/14
----
execute_cmd.c
- make sure that execute_command_internal sets redirection_undo_list
and exec_redirection_undo_list to NULL after making local copies
so things don't get undone twice. This can happen as the result
of an `fc' redoing a command with redirections:
wc subst.c > xxx &
r
[bug report from Ian Watson]
builtins/setattr.def
- converted to use internal_getopt, so export and readonly both use
it
builtins/bashgetopt.c
- changed the default error messages a little bit
shell.h
- new exit values: EX_NOEXEC, for when a command name is not
executable (126), and EX_NOTFOUND, for when a command is not
found (127)
execute_cmd.c
- change to use EX_NOEXEC and EX_NOTFOUND
parse.y
- broke function definitions off into their own production,
function_def
7/15
----
builtins/kill.def
- added code so that signals are listed by kill -l in the manner
specified by Posix.2 if the POSIXLY_CORRECT variable exists in
the environment
- Posix.2 UPE says kill can take % job control arguments even if
job control is disabled, so let interactive shells use them
parse.y
- decode_prompt_string now performs the Posix.2 ! expansion for
$PS1 and $PS2, if POSIXLY_CORRECT is turned on
builtins/exec.def
- changed exit status to be in line with Posix.2 specification
(127 for not found, 126 for not executable)
builtins/wait.def
- unknown jobs should cause wait to return 127
shell.c
- change the behavior of sh -c so that if POSIXLY_CORRECT is in the
environment, the first argument after -c command is assigned to
$0, and the rest of the arguments, if any, are bound to $1 ... $n
Posix.2 4.56.3 specifies this behavior
- move the code that does -c command out of the !local_skip_execution
block. I can't see why it was there in the first place
- made some of the private variables static to clean up the name
space
- moved the code that runs the startup files into a separate
function: run_startup_files. This is called with an argument
telling it whether or not to use the Posix.2 startup file sequence
($ENV). This argument is 1 if POSIXLY_CORRECT is found in the
environment at startup
builtins/fg_bg.def
- bg needs to set last_asynchronous_pid when restarting a job in
the background, as per Posix.2, 5.4.2
jobs.c
- make sure the status of exited jobs is printed as Done(n) where
`n' is the exit status, if POSIXLY_CORRECT is specified
7/16
----
general.c
- fixed a problem with canonicalize_pathname which made it get
confused with xxx/./yyy if yyy was `.' or `..'
parse.y
- broke the code in read_token that checked for reserved words
into a macro: CHECK_FOR_RESERVED_WORD
- if posixly_correct is 1, read_token does not allow reserved words
to be aliased (checks for reserved words before doing alias
expansion). See Posix.2 3.3.1
- changed the function_def production to make redirections
specified with a function definition bind to the function
rather than to the definition. This introduced 66 (!)
bison shift/reduce conflicts. From Posix.2 3.9.5
- if `posixly_correct' is set, <>word will open word for read/write
on fd 0, rather than fd 0 and fd 1 as normal
builtins/source.def
- removed the ALLOW_RIGID_POSIX_COMPLIANCE define; the check for
POSIXLY_CORRECT will always be performed
shell.c
- new long option: -posix, sets posixly_correct to 1
- posixly_correct set to 1 in main if POSIXLY_CORRECT found in
shell environment
subst.c
- new function sv_strict_posix, sets value of posixly_correct
depending on $POSIXLY_CORRECT
- if posixly_correct is set, don't do tilde expansion on
=~ in words that are not shell assignment statements
execute_cmd.c, jobs.c
- removed calls to getenv("POSIXLY_CORRECT") with checks of
posixly_correct
- if posixly_correct is set, don't translate >&x into >x 2>&1
expr.c
- implemented the OP= Posix.2 arithmetic assignment operators
(see Posix.2 table 2.15, section 2.9.2.1, and section 3.6.4)
documentation/bash.1
- added documentation of new arithmetic evaluation assignment
operators
- documented the new -posix long option
7/17
----
builtins/setattr.def
- made set_or_show_attributes correctly quote the values of shell
variables it prints so the output of `export' or `readonly' can
be used as input to the shell
builtins/fc.def
- made fc write its output as Posix.2 5.12.6.1 specifies: when not
numbering, the command should still be output with a leading tab
variables.c
- if `posixly_correct' is true, bash uses ~/.sh_history as the
default value of $HISTFILE
shell.c, subst.c
- if posixly_correct is true, turn on interactive comments, since
that's what Posix.2 says to do
7/20
----
lib/malloclib/{malloc.c,free.c,malloc.h}
- bug fix from Mike Haertel
builtins/mkbuiltins.c
- added code so that the Posix.2 `special' builtins have
SPECIAL_BUILTIN added to the flags in their entry in the
builtins array defined in builtins.c
shell.c
- declare `restricted' as `extern int', since it's already
declared in flags.c
lib/readline/bind.c
- only try to set the keymap to vi_insertion_keymap in
rl_set_keymap_from_edit_mode if VI_MODE is #defined
lib/malloc/malloc.c
- define NO_SBRK_DECL for hpux_9
machines.h
- hpux_9 needs to link with libPW.a to pick up alloca(), which
has reportedly been fixed
lib/tilde/Makefile
- add a definition for RM to the makefile
7/21
----
documentation/Makefile
- added info, dvi targets
- changed `squeaky-clean' to `distclean'
- use $(MAKEINFO) in recipes rather than `makeinfo'
bashline.c
- fixed memory leak in cleanup_expansion_error
- fixed up some extern declarations of pre_process_line
cpp-Makefile
- define HAVE_FIXED_INCLUDES by default if we're using gcc
7/27
----
machines.h
- add -ldgc to the DG/UX description if we're not building an
`M88KBCS_TARGET'
7/28
----
shell.c
- always initialize top_level_mask from what the shell inherits,
even for login shells
lib/tilde/tilde.c
- declare the getpw functions only for USG systems
7/30
----
lib/readline/readline.c
- new function: _rl_kill_kbd_macro () to cancel any keyboard
macros being defined on a SIGINT
lib/readline/signals.c
- call _rl_kill_kbd_macro on a SIGINT
bashline.c
- don't bind anything with a META via rl_add_defun; change those to
add the definition unbound, then explicitly bind it into
emacs_meta_keymap
8/3
---
bashline.c
- save and restore the value of rl_startup_hook when using it in
special editing functions
8/4
---
general.c
- new global variable: global_error_list, returned instead of -1
from functions returning lists
- changed delete_element to return &global_error_list instead of
(char **)-1
braces.c, general.c, expr.c
- removed the conditional definition of NULL; it should be defined
in general.h
lib/glob/glob.c
- new global variable: glob_error_return, returned instead of
(char **)-1 to signal a glob error
- changed functions to return &glob_error_return instead of
(char **)-1
subst.c
- fix the GLOB_FAILED macro to test against &glob_error_return
rather than (char **)-1
builtins/ulimit.def
- cleaned up the casts like (long) -1; changed to -1L, which is
equivalent and more correct
lib/readline/complete.c
- use the address of a new local variable `dead_slot' to mark
dead slots in the list of completion matches rather than
(char *)-1, which doesn't work everywhere
lib/readline/history.c
- have get_history_word_specifier return the address of a static
variable `error_pointer' in case of error, rather than (char *)-1
lib/readline/signals.c
- if SHELL is defined, don't mess with SIGTSTP, SIGTTIN, or SIGTTOU
lib/readline/vi_mode.c
- make rl_vi_change_case skip over characters that are neither
upper nor lower case
8/5
---
lib/readline/funmap.c
- made qsort_string_compare compare the first characters of the
two strings before calling strcmp()
builtins/bind.def
- rewrote to use internal_getopt
- map specifications made with -m now affect all other options
and binding specifications
- no processing is done until all the options have been processed
- the -q option is now limited to a single argument, as the
documentation has always stated
lib/readline/vi_mode.c
- fixed the `r' command so that the replacement is saved, and it
is redoable
command.h
- add `line' members to the simple_command and command structs to
keep track of the line number the command appears on for $LINENO
make_cmd.c
- save line number when making a `bare' simple command to the value
of line_number
- save the first line of a function definition in make_function_def
copy_cmd.c
- make sure that the line number information is copied with a command
execute_cmd.c
- use the line number attached to the start of a function definition
and the line number of commands to update line_number while a
function is executing
8/6
---
config.h, config.h.mini, cpp-Makefile
- made ONESHOT a configuration option rather than a cpp define in
cpp-Makefile
builtins/fc.def, builtins/getopts.def
- removed the code that defines NULL if undefined -- these files
include general.h, which already does that
lib/posixheaders/stdc.h
- new file containing macros so that functions can be defined with
prototypes using the __P macro and compile on both ANSI C and
`traditional' C compilers
lib/malloc/malloc.c
- changed the ASSERT macro to use a new __STRING define when calling
botch(), so that ANSI C systems see the correct error string
rather than `p' (unfortunately, the MAGICx constants are expanded
in the string passed to botch())
8/7
---
bashline.c, execute_cmd.c, variables.c, parse.y, make_cmd.c, jobs.c
- removed extern declarations of functions already declared as extern
in bash header files
execute_cmd.c
- include lib/tilde/tilde.h
- include builtins/common.h
- include builtins/builtext.h for the extern declarations for the
shell builtins
- moved vfree() to general.c
builtins/common.c
- made dotted_filename static
- made builtin_address_internal static
builtins/common.h
- new file with extern declarations for all functions defined in
common.c
variables.h
- added extern declaration of qsort_string_compare, assign_in_env
mailcheck.c
- removed full_pathname (), since it is a function of general use
general.c
- moved full_pathname () here from mailcheck.c
- moved vfree() here from execute_cmd.c
general.h
- added extern declaration for full_pathname
subst.h
- added extern declaration for dequote_string
jobs.h
- added external declarations for wait_for_background_pids and
wait_for_single_pid
parse.y
- new function: find_reserved_word
builtins/{alias,builtin,cd,exec,exit,hash,read,setattr,shift,trap,wait}.def
- removed extern declarations, replaced with inclusion of common.h
builtins/type.def
- include common.h, remove extraneous extern declarations
- call find_reserved_word instead of searching word_token_alist
builtins/bashgetopt.h
- new file, extern declarations for stuff defined in bashgetopt.c
builtins/{bind,command,fc,histctl,jobs,setattr}.def
- include bashgetopt, removed internal getopt extern declarations
cpp-Makefile, builtins/Makefile
- add dependencies on bashgetopt.h to builtins
- add dependencies on common.h to builtins
nojobs.c
- wait_for_background_pids should be void
8/9
---
builtins/common.c
- new function, double_quote(), to double-quote strings
documentation/bash.1
- added text specifying return value of `command -[vV]'
- added description of the -E option to echo
- added text specifying that `enable' accepts -a in place of -all
8/10
----
shell.c
- since non-Posix systems with job control use top_level_mask,
it needs to be initialized correctly by
initialize_terminating_signals
mailcheck.c
- fixed mailpath-parsing code to correctly handle backslash-quoted
`?' and `%' in the $MAILPATH entries by adding a function
parse_mailpath_spec to return a pointer to the first unquoted
`?' or `%' and having remember_mail_dates and check_mail call it
documentation/bash_builtins.1
- new man page for bash builtins, from jaws@pangaea.dme.nt.gov.au
(implemented by using number registers as flags and sourcing
bash.1)
8/16
----
bashline.c
- have maybe_make_readline_line use rl_delete_text rather than
rl_kill_text because the text need not be saved on the kill
ring
8/17
----
jobs.h
- don't include extern declarations for fork(), getpid(), or
getpgrp() if __SVR4_2__ is defined (Unixware, SVR4.2).
__SVR4_2__ used as in siglist.h
test.c
- don't include extern declarations for getegid(), getgid(),
or geteuid() if __SVR4_2__ is defined (Unixware, SVR4.2)
8/18
----
execute_cmd.c
- don't check that the current directory in the path is `.' if
we've already found `.' in the path in find_user_command_internal
- new function make_full_pathname, to glue `path' and `name'
together in find_user_command_internal rather than using sprintf,
which is very slow
8/19
----
support/mksysdefs
- packaged all of the uname calls into one block at the top of the
script; uname sets up some script variables:
UNAME
UNAME_R
UNAME_M
RELEASE
LEVEL
- make sure machines running SVR4.2 have __SVR4_2__ defined
machines.h
- for i386 machines running SVR4.2, make sure that __SVR4_2__ is
added to SYSDEP_CFLAGS
test.c
- changed the test_exit define to use the do { ... } while(0) idiom
- made GID_T and UID_T be int for BSD/386, since that's what
getgroups() returns
- cast both sides of a test to UID_T or GID_T to make sure we're
on the same page when testing
lib/readline/bind.c, lib/readline/readline.c
- fixes to deal with the Cray's pointers of different sizes --
pointers to functions are a different size than pointers to
structs
8/20
----
machines.h, test.c, jobs.h, siglist.h, support/mksysdefs
- changed __SVR4_2__ to USGr4_2
support/getcppsyms.c
- added support for recognizing __SVR4_2__ and USGr4_2
8/23
----
variables.c
- added a static variable that keeps track of whether or not
function local variables have been created with the `local'
or `typeset' builtins and short-circuits the call to
kill_all_local_variables if none have been created
lib/readline/vi_mode.c
- extern declaration for rl_vi_check and rl_digit_loop1
- declare `count' argument to rl_vi_delete
- made rl_vi_set_last a void function
lib/readline/bind.c
- declare `count' argument to strnicmp
lib/readline/readline.c
- made rl_add_undo, free_undo_list void functions
lib/readline/readline.c, lib/readline/bind.c, lib/readline/search.c,
lib/readline/vi_mode.c
- changed return; to return 0; and added explicit returns to many
`int' returning functions that didn't return a value
8/24
----
builtins/ulimit.def
- check for RLIMIT_RSS being defined before trying to use it
machines.h
- fixes to cray machine description from Bill Jones
builtins/common.c
- make all of the dollar_arg_stack stuff static
lib/malloc/alloca.c
- new version, from emacs 19
8/26
----
lib/readline/complete.c
- use double quotes to quote replacement text with word breaks
rather than single quotes, which inhibit tilde expansion
lib/readline/vi_keymap.c
- changed TAB to default to completion for the VI insert keymap
bashline.c
- new function: posix_readline_initialize to make any changes
to the readline keymaps when switching into and out of Posix.2
mode
- call posix_readline_initialize from initialize_readline
subst.c
- call posix_readline_initialize from sv_strict_posix
8/27
----
subst.c
- changed USE_GLOB_LIBRARY to USE_POSIX_GLOB_LIBRARY to make the
intent clear
shell.c
- new function, issock(fd) returns 1 if FD is a socket according
to fstat(2) -- note that this only works if S_ISSOCK is defined
in posixstat.h
- run_startup_files calls issock to see whether or not to run
the .bashrc
input.c
- include general.h for declarations of xmalloc, xrealloc
lib/tilde/tilde.c, lib/tilde/tilde.h
- tilde_expansion_failure_hook is now a pointer to a CPFunction,
since that's how it's used
lib/readline/history.c
- include <string.h> or <strings.h> as appropriate
8/29
----
machines.h
- avoid `M_MACHINE redefined' messages in the hpux description
8/30
----
jobs.h
- added #defines for sigfillset, sigdelset, and sigismember to fill
out the Posix.1 signal functions
general.h
- add an extern declaration for getwd()
general.c
- NeXT machines already have a vfree() with a declaration in stdlib.h,
so don't define our vfree() on those systems
cpp-Makefile
- NeXT machines don't have a link to `gcc', so make sure that
HAVE_GCC is not defined on those machines, even if __GNUC__ is
lib/readline/readline.h, lib/readline/complete.c
- rl_attempted_completion_function is now declared as a pointer to
a CPPFunction, since that's how it is used
bashline.c, bracecomp.c
- fixed assignments to rl_attempted_completion_function, since it's
now a pointer to a CPPFunction
lib/readline/keymaps.h
- fleshed out declarations of function types inside __FUNCTION_DEF
macro to match other files
lib/readline/readline.h
- removed typedefs for function pointer types, since they are now
declared in keymaps.h
8/31
----
lib/readline/complete.c
- if there is more than one match, don't quote the replacement
text unless the matching prefix has a word break character. The
old code quoted the replacement if any of the possible replacements
had a word break character
builtins/alias.def
- fixed memory leak -- free the array returned by all_aliases when
alias is called without arguments
builtins/read.def
- fixed memory leak -- need to free return value from
string_list_dollar_star
builtins/fc.def
- fixed memory leak -- need to free return value from fc_readline
builtins/hash.def
- fixed memory leak -- need to free return value from
find_user_command
builtins/alias.def
- fixed memory leak -- remove_alias needs to free the key in the
hash table entry it deletes
execute_cmd.c
- fixed memory leak in find_user_command_in_path: if we're not
returning full_path, we need to free it
lib/readline/bind.def
- fixed memory leak -- need to free the returned arrays from
recursive calls to invoking_keyseqs_in_map
9/1
---
builtins/bind.def
- return failure immediately if no_line_editing is set
builtins/shift.def
- fixed memory leak -- make sure all of the word list element from
rest_of_args is freed when shifting it into dollar_vars[9]
builtins/hash.def
- fixed memory leak -- only need to save the key for a particular
hash item once in remember_filename
expr.c
- fixed memory leak -- free `tokstr' after performing the assignment
statement and before assigning to it with savestring
execute_cmd.c
- fixed memory leak -- need to free the copy of the command line
passed to make_child in execute_disk_command if the command is
not found
lib/readline/display.c
- fixed call to tgoto in delete_chars -- caused the delete to fail
when using term_DC on some systems
[code made available via ftp -- first redistributable version]